diff --git a/demo/[tests] distance-field.html b/demo/[tests] distance-field.html index 19b51e2..9efcaed 100644 --- a/demo/[tests] distance-field.html +++ b/demo/[tests] distance-field.html @@ -26,10 +26,10 @@ - + diff --git a/demo/canvasify-a-html-document.html b/demo/canvasify-a-html-document.html index d35d408..7005cab 100644 --- a/demo/canvasify-a-html-document.html +++ b/demo/canvasify-a-html-document.html @@ -100,7 +100,7 @@ diff --git a/demo/cross-iframe-xanadu-links.html b/demo/cross-iframe-xanadu-links.html index c8cec3d..45a0074 100644 --- a/demo/cross-iframe-xanadu-links.html +++ b/demo/cross-iframe-xanadu-links.html @@ -63,7 +63,7 @@ diff --git a/demo/distance-field-visualization.html b/demo/distance-field-visualization.html index 27ae6e0..761b076 100644 --- a/demo/distance-field-visualization.html +++ b/demo/distance-field-visualization.html @@ -42,8 +42,8 @@ diff --git a/demo/embeddable-llm-with-propagators.html b/demo/embeddable-llm-with-propagators.html index 3b49a24..acc185c 100644 --- a/demo/embeddable-llm-with-propagators.html +++ b/demo/embeddable-llm-with-propagators.html @@ -98,7 +98,8 @@ source="folk-llm" target="folk-timer" triggers="started" - expression="$target.reset(); $target.start()" + expression="reset(): true +start(): true" > @@ -106,14 +107,14 @@ source="folk-llm" target="folk-timer" triggers="finished" - expression="$target.stop();" + expression="stop(): true" > diff --git a/demo/event-propagators.html b/demo/event-propagators.html index 2bfc982..a3df733 100644 --- a/demo/event-propagators.html +++ b/demo/event-propagators.html @@ -45,8 +45,8 @@ rotation: from.x" > diff --git a/demo/folk-interface-for-qr-codes.html b/demo/folk-interface-for-qr-codes.html index dcc7ce0..3274ec7 100644 --- a/demo/folk-interface-for-qr-codes.html +++ b/demo/folk-interface-for-qr-codes.html @@ -72,8 +72,8 @@ diff --git a/demo/propagator-toolbar.html b/demo/propagator-toolbar.html index d909dad..339a6db 100644 --- a/demo/propagator-toolbar.html +++ b/demo/propagator-toolbar.html @@ -44,9 +44,9 @@ diff --git a/demo/proximity-based-communication-and-event-propagators.html b/demo/proximity-based-communication-and-event-propagators.html index df79ecd..f689671 100644 --- a/demo/proximity-based-communication-and-event-propagators.html +++ b/demo/proximity-based-communication-and-event-propagators.html @@ -83,12 +83,14 @@ > diff --git a/demo/space-morph.html b/demo/space-morph.html index 74359dc..ca8a7c4 100644 --- a/demo/space-morph.html +++ b/demo/space-morph.html @@ -43,15 +43,10 @@ diff --git a/demo/spreadsheet-graph-projection.html b/demo/spreadsheet-graph-projection.html index 49fb466..05ef4f5 100644 --- a/demo/spreadsheet-graph-projection.html +++ b/demo/spreadsheet-graph-projection.html @@ -166,9 +166,9 @@ diff --git a/demo/sticky-html-rope.html b/demo/sticky-html-rope.html index c20eb46..5397be2 100644 --- a/demo/sticky-html-rope.html +++ b/demo/sticky-html-rope.html @@ -38,8 +38,8 @@ diff --git a/demo/visualizing-set-relations.html b/demo/visualizing-set-relations.html index 5cb5ff9..89f3bfa 100644 --- a/demo/visualizing-set-relations.html +++ b/demo/visualizing-set-relations.html @@ -36,8 +36,8 @@ diff --git a/demo/xanadu-link.html b/demo/xanadu-link.html index 942c90a..76fa8de 100644 --- a/demo/xanadu-link.html +++ b/demo/xanadu-link.html @@ -201,8 +201,8 @@ diff --git a/src/abstract-arrow.ts b/src/abstract-arrow.ts index 29d3d20..020113d 100644 --- a/src/abstract-arrow.ts +++ b/src/abstract-arrow.ts @@ -12,6 +12,8 @@ export class AbstractArrow extends HTMLElement { static tagName = 'abstract-arrow'; static define() { + if (customElements.get(this.tagName)) return; + FolkShape.define(); customElements.define(this.tagName, this); } diff --git a/src/distance-field.ts b/src/distance-field.ts index 632753c..6b31ab9 100644 --- a/src/distance-field.ts +++ b/src/distance-field.ts @@ -1,6 +1,6 @@ import { frag, vert } from './common/tags.ts'; import { WebGLUtils } from './common/webgl.ts'; -import type { FolkShape } from './folk-shape.ts'; +import { FolkShape } from './folk-shape.ts'; /** * The DistanceField class calculates a distance field using the Jump Flooding Algorithm (JFA) in WebGL. @@ -31,6 +31,7 @@ export class DistanceField extends HTMLElement { static define() { if (customElements.get(this.tagName)) return; + FolkShape.define(); customElements.define(this.tagName, this); } @@ -569,5 +570,3 @@ void main() { vec2 seedCoord = gl_FragCoord.xy / u_canvasSize; outColor = vec4(seedCoord, v_shapeID, 0.0); // Seed coords (x, y), shape ID (z), initial distance (a) }`; - -DistanceField.define(); diff --git a/src/folk-connection.ts b/src/folk-connection.ts index 99499c0..f896cb4 100644 --- a/src/folk-connection.ts +++ b/src/folk-connection.ts @@ -85,5 +85,3 @@ export class FolkConnection extends AbstractArrow { this.style.backgroundColor = 'black'; } } - -FolkConnection.define(); diff --git a/src/folk-event-propagator.ts b/src/folk-event-propagator.ts index 6fa00f0..351a174 100644 --- a/src/folk-event-propagator.ts +++ b/src/folk-event-propagator.ts @@ -244,5 +244,3 @@ function parseAst(functionBody: string) { console.log('Properties accessed on to:', Array.from(toProps)); console.log('Properties accessed on from:', Array.from(fromProps)); } - -FolkEventPropagator.define(); diff --git a/src/folk-hull.ts b/src/folk-hull.ts index 4ca3ed1..6f27bd1 100644 --- a/src/folk-hull.ts +++ b/src/folk-hull.ts @@ -110,5 +110,3 @@ export function makeHull(rects: DOMRectReadOnly[]): Point[] { return upperHull.concat(lowerHull); } - -FolkHull.define(); diff --git a/src/folk-ink.ts b/src/folk-ink.ts index 6b995ae..11df4f2 100644 --- a/src/folk-ink.ts +++ b/src/folk-ink.ts @@ -33,6 +33,7 @@ export class FolkInk extends HTMLElement { static tagName = 'folk-ink'; static define() { + if (customElements.get(this.tagName)) return; customElements.define(this.tagName, this); } @@ -211,5 +212,3 @@ export class FolkInk extends HTMLElement { return d.join(' '); } } - -FolkInk.define(); diff --git a/src/folk-llm.ts b/src/folk-llm.ts index 079a821..0f38f77 100644 --- a/src/folk-llm.ts +++ b/src/folk-llm.ts @@ -103,5 +103,3 @@ declare global { ai: any; } } - -FolkLLM.define(); diff --git a/src/folk-map.ts b/src/folk-map.ts index 9beb32c..b90a800 100644 --- a/src/folk-map.ts +++ b/src/folk-map.ts @@ -95,5 +95,3 @@ export class FolkMap extends HTMLElement { } }; } - -FolkMap.define(); diff --git a/src/folk-metronome.ts b/src/folk-metronome.ts index 710baa9..f70826a 100644 --- a/src/folk-metronome.ts +++ b/src/folk-metronome.ts @@ -70,5 +70,3 @@ export class FolkMetronome extends HTMLElement { this.textContent = this.#beat.toString(); }; } - -FolkMetronome.define(); diff --git a/src/folk-proximity.ts b/src/folk-proximity.ts index 0d5197e..07fe207 100644 --- a/src/folk-proximity.ts +++ b/src/folk-proximity.ts @@ -133,6 +133,8 @@ export class FolkProximity extends HTMLElement { static define() { if (customElements.get(this.tagName)) return; + FolkShape.define(); + FolkCluster.define(); customElements.define(this.tagName, this); } @@ -193,6 +195,3 @@ export class FolkProximity extends HTMLElement { return null; } } - -FolkCluster.define(); -FolkProximity.define(); diff --git a/src/folk-rope.ts b/src/folk-rope.ts index e28baf4..611efc0 100644 --- a/src/folk-rope.ts +++ b/src/folk-rope.ts @@ -257,5 +257,3 @@ function applyConstraint(p1: RopePoint, p2: RopePoint) { p2.pos = Vector.sub(p2.pos, adjustment); } } - -FolkRope.define(); diff --git a/src/folk-set.ts b/src/folk-set.ts index 68b7c8d..01b0366 100644 --- a/src/folk-set.ts +++ b/src/folk-set.ts @@ -79,5 +79,3 @@ export class FolkSet extends HTMLElement { update() {} } - -FolkSet.define(); diff --git a/src/folk-shape.ts b/src/folk-shape.ts index 6a7c15e..d0ff7dc 100644 --- a/src/folk-shape.ts +++ b/src/folk-shape.ts @@ -786,5 +786,3 @@ export class FolkShape extends HTMLElement { this.height = Math.abs(unrotatedAnchor.y - unrotatedHandle.y); } } - -FolkShape.define(); diff --git a/src/folk-space.ts b/src/folk-space.ts index f70e31b..da0f0d4 100644 --- a/src/folk-space.ts +++ b/src/folk-space.ts @@ -71,5 +71,3 @@ export class FolkSpace extends HTMLElement { space?.classList.toggle('rotate'); } } - -FolkSpace.define(); diff --git a/src/folk-spreadsheet.ts b/src/folk-spreadsheet.ts index 49cc40a..0dde578 100644 --- a/src/folk-spreadsheet.ts +++ b/src/folk-spreadsheet.ts @@ -154,6 +154,7 @@ export class FolkSpreadsheet extends HTMLElement { static define() { if (customElements.get(this.tagName)) return; + // order of registering is important FolkSpreadSheetCell.define(); FolkSpreadsheetHeader.define(); customElements.define(this.tagName, this); @@ -516,5 +517,3 @@ export class FolkSpreadSheetCell extends HTMLElement { } } } - -FolkSpreadsheet.define(); diff --git a/src/folk-timer.ts b/src/folk-timer.ts index 3cf74c8..0d799fe 100644 --- a/src/folk-timer.ts +++ b/src/folk-timer.ts @@ -40,5 +40,3 @@ export class FolkTimer extends HTMLElement { this.textContent = (time / 1000).toFixed(1); }; } - -FolkTimer.define(); diff --git a/src/folk-toolbar.ts b/src/folk-toolbar.ts index e5faa9b..4a68064 100644 --- a/src/folk-toolbar.ts +++ b/src/folk-toolbar.ts @@ -126,6 +126,3 @@ export class FolkToolbar extends HTMLElement { return element.id; } } - -FolkEventPropagator.define(); -FolkToolbar.define(); diff --git a/src/folk-weather.ts b/src/folk-weather.ts index ae3d054..19ff2dc 100644 --- a/src/folk-weather.ts +++ b/src/folk-weather.ts @@ -69,5 +69,3 @@ export class FolkWeather extends HTMLElement { `; } } - -FolkWeather.define(); diff --git a/src/folk-xanadu.ts b/src/folk-xanadu.ts index 0944a78..df063e6 100644 --- a/src/folk-xanadu.ts +++ b/src/folk-xanadu.ts @@ -100,5 +100,3 @@ function computeInlineVertices(rects: DOMRect[]): Point[] { return vertices; } - -FolkXanadu.define(); diff --git a/src/standalone/distance-field.ts b/src/standalone/distance-field.ts new file mode 100644 index 0000000..a4e572b --- /dev/null +++ b/src/standalone/distance-field.ts @@ -0,0 +1,3 @@ +import { DistanceField } from '../distance-field'; + +DistanceField.define(); diff --git a/src/standalone/folk-connection.ts b/src/standalone/folk-connection.ts new file mode 100644 index 0000000..a9e50c0 --- /dev/null +++ b/src/standalone/folk-connection.ts @@ -0,0 +1,3 @@ +import { FolkConnection } from '../folk-connection'; + +FolkConnection.define(); diff --git a/src/standalone/folk-event-propagator.ts b/src/standalone/folk-event-propagator.ts new file mode 100644 index 0000000..c1c130d --- /dev/null +++ b/src/standalone/folk-event-propagator.ts @@ -0,0 +1,3 @@ +import { FolkEventPropagator } from '../folk-event-propagator'; + +FolkEventPropagator.define(); diff --git a/src/standalone/folk-hull.ts b/src/standalone/folk-hull.ts new file mode 100644 index 0000000..65120e7 --- /dev/null +++ b/src/standalone/folk-hull.ts @@ -0,0 +1,3 @@ +import { FolkHull } from '../folk-hull'; + +FolkHull.define(); diff --git a/src/standalone/folk-ink.ts b/src/standalone/folk-ink.ts new file mode 100644 index 0000000..31e6f91 --- /dev/null +++ b/src/standalone/folk-ink.ts @@ -0,0 +1,3 @@ +import { FolkInk } from '../folk-ink'; + +FolkInk.define(); diff --git a/src/standalone/folk-llm.ts b/src/standalone/folk-llm.ts new file mode 100644 index 0000000..fb530b0 --- /dev/null +++ b/src/standalone/folk-llm.ts @@ -0,0 +1,3 @@ +import { FolkLLM } from '../folk-llm'; + +FolkLLM.define(); diff --git a/src/standalone/folk-map.ts b/src/standalone/folk-map.ts new file mode 100644 index 0000000..e06d9a9 --- /dev/null +++ b/src/standalone/folk-map.ts @@ -0,0 +1,3 @@ +import { FolkMap } from '../folk-map'; + +FolkMap.define(); diff --git a/src/standalone/folk-metronome.ts b/src/standalone/folk-metronome.ts new file mode 100644 index 0000000..bc29bc4 --- /dev/null +++ b/src/standalone/folk-metronome.ts @@ -0,0 +1,3 @@ +import { FolkMetronome } from '../folk-metronome'; + +FolkMetronome.define(); diff --git a/src/standalone/folk-proximity.ts b/src/standalone/folk-proximity.ts new file mode 100644 index 0000000..4f8f45e --- /dev/null +++ b/src/standalone/folk-proximity.ts @@ -0,0 +1,3 @@ +import { FolkProximity } from '../folk-proximity'; + +FolkProximity.define(); diff --git a/src/standalone/folk-rope.ts b/src/standalone/folk-rope.ts new file mode 100644 index 0000000..c9f3558 --- /dev/null +++ b/src/standalone/folk-rope.ts @@ -0,0 +1,3 @@ +import { FolkRope } from '../folk-rope'; + +FolkRope.define(); diff --git a/src/standalone/folk-shape.ts b/src/standalone/folk-shape.ts new file mode 100644 index 0000000..053782f --- /dev/null +++ b/src/standalone/folk-shape.ts @@ -0,0 +1,3 @@ +import { FolkShape } from '../folk-shape'; + +FolkShape.define(); diff --git a/src/standalone/folk-space.ts b/src/standalone/folk-space.ts new file mode 100644 index 0000000..8385cf1 --- /dev/null +++ b/src/standalone/folk-space.ts @@ -0,0 +1,3 @@ +import { FolkSpace } from '../folk-space'; + +FolkSpace.define(); diff --git a/src/standalone/folk-spreadsheet.ts b/src/standalone/folk-spreadsheet.ts new file mode 100644 index 0000000..5db8030 --- /dev/null +++ b/src/standalone/folk-spreadsheet.ts @@ -0,0 +1,3 @@ +import { FolkSpreadsheet } from '../folk-spreadsheet'; + +FolkSpreadsheet.define(); diff --git a/src/standalone/folk-timer.ts b/src/standalone/folk-timer.ts new file mode 100644 index 0000000..eb84946 --- /dev/null +++ b/src/standalone/folk-timer.ts @@ -0,0 +1,3 @@ +import { FolkTimer } from '../folk-timer'; + +FolkTimer.define(); diff --git a/src/standalone/folk-toolbar.ts b/src/standalone/folk-toolbar.ts new file mode 100644 index 0000000..7c82a9d --- /dev/null +++ b/src/standalone/folk-toolbar.ts @@ -0,0 +1,4 @@ +import './folk-event-propagator'; +import { FolkToolbar } from '../folk-toolbar'; + +FolkToolbar.define(); diff --git a/src/standalone/folk-weather.ts b/src/standalone/folk-weather.ts new file mode 100644 index 0000000..c2d0ecc --- /dev/null +++ b/src/standalone/folk-weather.ts @@ -0,0 +1,3 @@ +import { FolkWeather } from '../folk-weather'; + +FolkWeather.define(); diff --git a/src/standalone/folk-xanadu.ts b/src/standalone/folk-xanadu.ts new file mode 100644 index 0000000..14521ee --- /dev/null +++ b/src/standalone/folk-xanadu.ts @@ -0,0 +1,3 @@ +import { FolkXanadu } from '../folk-xanadu'; + +FolkXanadu.define();