@toyz/loom 0.17.2 → 0.17.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Loom — @clipboard decorator
3
+ *
4
+ * Method decorator for declarative clipboard read/write.
5
+ *
6
+ * ```ts
7
+ * // Write: method returns the text to copy
8
+ * @clipboard("write")
9
+ * copyLink() { return this.shareUrl; }
10
+ *
11
+ * // Read: method receives pasted text as argument
12
+ * @clipboard("read")
13
+ * onPaste(text: string) { this.content = text; }
14
+ * ```
15
+ */
16
+ type ClipboardMode = "read" | "write";
17
+ /**
18
+ * @clipboard(mode) — Method decorator
19
+ *
20
+ * - `"write"`: Calling the method copies its return value to the clipboard.
21
+ * - `"read"`: Binds a `paste` event listener; the method receives the pasted text.
22
+ */
23
+ export declare function clipboard(mode: ClipboardMode): (method: Function, context: ClassMethodDecoratorContext) => ((this: any, ...args: unknown[]) => any) | undefined;
24
+ export {};
25
+ //# sourceMappingURL=clipboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/element/clipboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,KAAK,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC;AAEtC;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,IAC1B,QAAQ,QAAQ,EAAE,SAAS,2BAA2B,aAG5C,GAAG,WAAW,OAAO,EAAE,sBAkCnD"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Loom — @clipboard decorator
3
+ *
4
+ * Method decorator for declarative clipboard read/write.
5
+ *
6
+ * ```ts
7
+ * // Write: method returns the text to copy
8
+ * @clipboard("write")
9
+ * copyLink() { return this.shareUrl; }
10
+ *
11
+ * // Read: method receives pasted text as argument
12
+ * @clipboard("read")
13
+ * onPaste(text: string) { this.content = text; }
14
+ * ```
15
+ */
16
+ import { CONNECT_HOOKS } from "../decorators/symbols";
17
+ /**
18
+ * @clipboard(mode) — Method decorator
19
+ *
20
+ * - `"write"`: Calling the method copies its return value to the clipboard.
21
+ * - `"read"`: Binds a `paste` event listener; the method receives the pasted text.
22
+ */
23
+ export function clipboard(mode) {
24
+ return function (method, context) {
25
+ if (mode === "write") {
26
+ // Wrap the method — calling it copies its return value
27
+ return function (...args) {
28
+ const text = method.call(this, ...args);
29
+ if (text != null && navigator.clipboard) {
30
+ navigator.clipboard.writeText(String(text)).catch(() => {
31
+ // Fallback: legacy execCommand
32
+ const ta = document.createElement("textarea");
33
+ ta.value = String(text);
34
+ ta.style.position = "fixed";
35
+ ta.style.opacity = "0";
36
+ document.body.appendChild(ta);
37
+ ta.select();
38
+ document.execCommand("copy");
39
+ ta.remove();
40
+ });
41
+ }
42
+ return text;
43
+ };
44
+ }
45
+ // mode === "read" — listen for paste events on the element
46
+ context.addInitializer(function () {
47
+ if (!this[CONNECT_HOOKS.key])
48
+ this[CONNECT_HOOKS.key] = [];
49
+ this[CONNECT_HOOKS.key].push((el) => {
50
+ const handler = (e) => {
51
+ const text = e.clipboardData?.getData("text/plain") ?? "";
52
+ method.call(el, text, e);
53
+ };
54
+ el.addEventListener("paste", handler);
55
+ return () => el.removeEventListener("paste", handler);
56
+ });
57
+ });
58
+ };
59
+ }
60
+ //# sourceMappingURL=clipboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/element/clipboard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAItD;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,IAAmB;IAC3C,OAAO,UAAU,MAAgB,EAAE,OAAoC;QACrE,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,uDAAuD;YACvD,OAAO,UAAqB,GAAG,IAAe;gBAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;gBACxC,IAAI,IAAI,IAAI,IAAI,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;oBACxC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;wBACrD,+BAA+B;wBAC/B,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;wBAC9C,EAAE,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;wBACxB,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;wBAC5B,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;wBACvB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;wBAC9B,EAAE,CAAC,MAAM,EAAE,CAAC;wBACZ,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;wBAC7B,EAAE,CAAC,MAAM,EAAE,CAAC;oBACd,CAAC,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC;QACJ,CAAC;QAED,2DAA2D;QAC3D,OAAO,CAAC,cAAc,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YAE3D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAe,EAAE,EAAE;gBAC/C,MAAM,OAAO,GAAG,CAAC,CAAiB,EAAE,EAAE;oBACpC,MAAM,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;oBAC1D,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC3B,CAAC,CAAC;gBAEF,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACtC,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Loom — @draggable / @dropzone decorators
3
+ *
4
+ * Declarative HTML5 Drag and Drop API wrappers.
5
+ *
6
+ * ```ts
7
+ * // Make the component draggable — serializes data for transfer
8
+ * @draggable({ type: "card" })
9
+ * getDragData() { return JSON.stringify({ id: this.cardId }); }
10
+ *
11
+ * // Accept drops — receives transferred data
12
+ * @dropzone({ accept: "card" })
13
+ * onDrop(data: string) { this.items.push(JSON.parse(data)); }
14
+ *
15
+ * // With JSX overlay during drag-over
16
+ * @dropzone({ accept: "card", over: () => <div class="drop-hint">Drop here!</div> })
17
+ * onDrop(data: string) { ... }
18
+ * ```
19
+ */
20
+ export interface DraggableOptions {
21
+ /** MIME-like type key for dataTransfer, default "text/plain" */
22
+ type?: string;
23
+ /** Drag effect, default "move" */
24
+ effect?: DataTransfer["effectAllowed"];
25
+ }
26
+ export interface DropzoneOptions {
27
+ /** MIME-like type key to accept, default "text/plain" */
28
+ accept?: string;
29
+ /** Drop effect, default "move" */
30
+ effect?: DataTransfer["dropEffect"];
31
+ /** CSS class to add when dragging over, default "drag-over" */
32
+ overClass?: string;
33
+ /**
34
+ * Optional JSX overlay rendered into the element's shadow DOM (or light DOM)
35
+ * during dragover. Removed on dragleave/drop. Accepts a function that returns
36
+ * a DOM node (JSX), or a string that creates a simple text overlay.
37
+ */
38
+ over?: (() => Node | string) | string;
39
+ }
40
+ /**
41
+ * @draggable(opts?) — Method decorator
42
+ *
43
+ * Makes the host element draggable. The decorated method returns the drag
44
+ * data string. Sets `draggable="true"`, wires `dragstart`/`dragend` events.
45
+ */
46
+ export declare function draggable(opts?: DraggableOptions): (method: Function, context: ClassMethodDecoratorContext) => void;
47
+ /**
48
+ * @dropzone(opts?) — Method decorator
49
+ *
50
+ * Makes the host element a drop target. The decorated method receives
51
+ * the transferred data string and the DragEvent. Wires `dragover`,
52
+ * `dragleave`, `drop` events with proper `preventDefault()`.
53
+ *
54
+ * When `opts.over` is provided, a JSX overlay is rendered into the
55
+ * element during dragover and removed on dragleave/drop.
56
+ */
57
+ export declare function dropzone(opts?: DropzoneOptions): (method: Function, context: ClassMethodDecoratorContext) => void;
58
+ //# sourceMappingURL=dnd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dnd.d.ts","sourceRoot":"","sources":["../../src/element/dnd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,MAAM,WAAW,gBAAgB;IAC/B,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,MAAM,CAAC,EAAE,YAAY,CAAC,eAAe,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,MAAM,CAAC,EAAE,YAAY,CAAC,YAAY,CAAC,CAAC;IACpC,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,IAAI,CAAC,EAAE,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;CACvC;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,gBAAgB,IAI9B,QAAQ,QAAQ,EAAE,SAAS,2BAA2B,UA6BxE;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,IAM5B,QAAQ,QAAQ,EAAE,SAAS,2BAA2B,UA+DxE"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Loom — @draggable / @dropzone decorators
3
+ *
4
+ * Declarative HTML5 Drag and Drop API wrappers.
5
+ *
6
+ * ```ts
7
+ * // Make the component draggable — serializes data for transfer
8
+ * @draggable({ type: "card" })
9
+ * getDragData() { return JSON.stringify({ id: this.cardId }); }
10
+ *
11
+ * // Accept drops — receives transferred data
12
+ * @dropzone({ accept: "card" })
13
+ * onDrop(data: string) { this.items.push(JSON.parse(data)); }
14
+ *
15
+ * // With JSX overlay during drag-over
16
+ * @dropzone({ accept: "card", over: () => <div class="drop-hint">Drop here!</div> })
17
+ * onDrop(data: string) { ... }
18
+ * ```
19
+ */
20
+ import { CONNECT_HOOKS } from "../decorators/symbols";
21
+ /**
22
+ * @draggable(opts?) — Method decorator
23
+ *
24
+ * Makes the host element draggable. The decorated method returns the drag
25
+ * data string. Sets `draggable="true"`, wires `dragstart`/`dragend` events.
26
+ */
27
+ export function draggable(opts) {
28
+ const mimeType = opts?.type ?? "text/plain";
29
+ const effect = opts?.effect ?? "move";
30
+ return function (method, context) {
31
+ context.addInitializer(function () {
32
+ if (!this[CONNECT_HOOKS.key])
33
+ this[CONNECT_HOOKS.key] = [];
34
+ this[CONNECT_HOOKS.key].push((el) => {
35
+ el.draggable = true;
36
+ const onStart = (e) => {
37
+ const data = method.call(el);
38
+ e.dataTransfer?.setData(mimeType, String(data ?? ""));
39
+ if (e.dataTransfer)
40
+ e.dataTransfer.effectAllowed = effect;
41
+ el.classList.add("dragging");
42
+ };
43
+ const onEnd = () => {
44
+ el.classList.remove("dragging");
45
+ };
46
+ el.addEventListener("dragstart", onStart);
47
+ el.addEventListener("dragend", onEnd);
48
+ return () => {
49
+ el.removeEventListener("dragstart", onStart);
50
+ el.removeEventListener("dragend", onEnd);
51
+ el.draggable = false;
52
+ };
53
+ });
54
+ });
55
+ };
56
+ }
57
+ /**
58
+ * @dropzone(opts?) — Method decorator
59
+ *
60
+ * Makes the host element a drop target. The decorated method receives
61
+ * the transferred data string and the DragEvent. Wires `dragover`,
62
+ * `dragleave`, `drop` events with proper `preventDefault()`.
63
+ *
64
+ * When `opts.over` is provided, a JSX overlay is rendered into the
65
+ * element during dragover and removed on dragleave/drop.
66
+ */
67
+ export function dropzone(opts) {
68
+ const mimeType = opts?.accept ?? "text/plain";
69
+ const dropEffect = opts?.effect ?? "move";
70
+ const overClass = opts?.overClass ?? "drag-over";
71
+ const overFn = opts?.over;
72
+ return function (method, context) {
73
+ context.addInitializer(function () {
74
+ if (!this[CONNECT_HOOKS.key])
75
+ this[CONNECT_HOOKS.key] = [];
76
+ this[CONNECT_HOOKS.key].push((el) => {
77
+ let overlayEl = null;
78
+ const showOverlay = () => {
79
+ if (!overFn || overlayEl)
80
+ return;
81
+ const content = typeof overFn === "function" ? overFn() : overFn;
82
+ if (content instanceof Node) {
83
+ overlayEl = content;
84
+ }
85
+ else {
86
+ const div = document.createElement("div");
87
+ div.setAttribute("data-loom-dropzone-overlay", "");
88
+ div.textContent = String(content);
89
+ overlayEl = div;
90
+ }
91
+ // Append to shadow root if available, otherwise light DOM
92
+ const root = el.shadowRoot ?? el;
93
+ root.appendChild(overlayEl);
94
+ };
95
+ const hideOverlay = () => {
96
+ if (overlayEl) {
97
+ overlayEl.parentNode?.removeChild(overlayEl);
98
+ overlayEl = null;
99
+ }
100
+ };
101
+ const onOver = (e) => {
102
+ e.preventDefault();
103
+ if (e.dataTransfer)
104
+ e.dataTransfer.dropEffect = dropEffect;
105
+ el.classList.add(overClass);
106
+ showOverlay();
107
+ };
108
+ const onLeave = () => {
109
+ el.classList.remove(overClass);
110
+ hideOverlay();
111
+ };
112
+ const onDrop = (e) => {
113
+ e.preventDefault();
114
+ el.classList.remove(overClass);
115
+ hideOverlay();
116
+ const data = e.dataTransfer?.getData(mimeType) ?? "";
117
+ method.call(el, data, e);
118
+ };
119
+ el.addEventListener("dragover", onOver);
120
+ el.addEventListener("dragleave", onLeave);
121
+ el.addEventListener("drop", onDrop);
122
+ return () => {
123
+ el.removeEventListener("dragover", onOver);
124
+ el.removeEventListener("dragleave", onLeave);
125
+ el.removeEventListener("drop", onDrop);
126
+ hideOverlay();
127
+ };
128
+ });
129
+ });
130
+ };
131
+ }
132
+ //# sourceMappingURL=dnd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dnd.js","sourceRoot":"","sources":["../../src/element/dnd.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Loom — @fullscreen decorator
3
+ *
4
+ * Accessor decorator that binds a boolean field to the Fullscreen API.
5
+ * Setting to `true` calls `requestFullscreen()`, `false` calls `exitFullscreen()`.
6
+ * Listens for `fullscreenchange` events to keep the field in sync.
7
+ *
8
+ * ```ts
9
+ * @fullscreen()
10
+ * accessor isFullscreen = false;
11
+ *
12
+ * // With options
13
+ * @fullscreen({ navigationUI: "hide" })
14
+ * accessor isFullscreen = false;
15
+ * ```
16
+ */
17
+ export interface FullscreenOptions {
18
+ /** Navigation UI preference for requestFullscreen */
19
+ navigationUI?: "auto" | "hide" | "show";
20
+ }
21
+ /**
22
+ * @fullscreen(opts?) — Accessor decorator
23
+ *
24
+ * Binds a boolean accessor to the Fullscreen API.
25
+ * Toggling the field enters/exits fullscreen. The field stays in sync
26
+ * with external fullscreen changes (e.g., user presses Escape).
27
+ */
28
+ export declare function fullscreen(opts?: FullscreenOptions): (_target: ClassAccessorDecoratorTarget<any, boolean>, context: ClassAccessorDecoratorContext) => ClassAccessorDecoratorResult<any, boolean>;
29
+ //# sourceMappingURL=fullscreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fullscreen.d.ts","sourceRoot":"","sources":["../../src/element/fullscreen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CACzC;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,iBAAiB,IAE/C,SAAS,4BAA4B,CAAC,GAAG,EAAE,OAAO,CAAC,EACnD,SAAS,6BAA6B,KACrC,4BAA4B,CAAC,GAAG,EAAE,OAAO,CAAC,CAoD9C"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Loom — @fullscreen decorator
3
+ *
4
+ * Accessor decorator that binds a boolean field to the Fullscreen API.
5
+ * Setting to `true` calls `requestFullscreen()`, `false` calls `exitFullscreen()`.
6
+ * Listens for `fullscreenchange` events to keep the field in sync.
7
+ *
8
+ * ```ts
9
+ * @fullscreen()
10
+ * accessor isFullscreen = false;
11
+ *
12
+ * // With options
13
+ * @fullscreen({ navigationUI: "hide" })
14
+ * accessor isFullscreen = false;
15
+ * ```
16
+ */
17
+ import { CONNECT_HOOKS } from "../decorators/symbols";
18
+ /**
19
+ * @fullscreen(opts?) — Accessor decorator
20
+ *
21
+ * Binds a boolean accessor to the Fullscreen API.
22
+ * Toggling the field enters/exits fullscreen. The field stays in sync
23
+ * with external fullscreen changes (e.g., user presses Escape).
24
+ */
25
+ export function fullscreen(opts) {
26
+ return function (_target, context) {
27
+ const fieldName = context.name;
28
+ const storageKey = `__fs_${fieldName}`;
29
+ context.addInitializer(function () {
30
+ if (!this[CONNECT_HOOKS.key])
31
+ this[CONNECT_HOOKS.key] = [];
32
+ this[CONNECT_HOOKS.key].push((el) => {
33
+ // Sync field when fullscreen changes externally (e.g., Escape key)
34
+ const handler = () => {
35
+ const isFs = document.fullscreenElement === el;
36
+ this[storageKey] = isFs;
37
+ this.scheduleUpdate?.();
38
+ };
39
+ document.addEventListener("fullscreenchange", handler);
40
+ return () => {
41
+ document.removeEventListener("fullscreenchange", handler);
42
+ // Exit fullscreen if component disconnects while fullscreen
43
+ if (document.fullscreenElement === el) {
44
+ document.exitFullscreen?.();
45
+ }
46
+ };
47
+ });
48
+ });
49
+ return {
50
+ init(_value) {
51
+ return false;
52
+ },
53
+ set(value) {
54
+ const prev = this[storageKey];
55
+ this[storageKey] = value;
56
+ if (value && !prev) {
57
+ // Entering fullscreen
58
+ this.requestFullscreen?.(opts);
59
+ }
60
+ else if (!value && prev) {
61
+ // Exiting fullscreen
62
+ if (document.fullscreenElement === this) {
63
+ document.exitFullscreen?.();
64
+ }
65
+ }
66
+ },
67
+ get() {
68
+ return this[storageKey] ?? false;
69
+ },
70
+ };
71
+ };
72
+ }
73
+ //# sourceMappingURL=fullscreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fullscreen.js","sourceRoot":"","sources":["../../src/element/fullscreen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAOtD;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,IAAwB;IACjD,OAAO,UACL,OAAmD,EACnD,OAAsC;QAEtC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAc,CAAC;QACzC,MAAM,UAAU,GAAG,QAAQ,SAAS,EAAE,CAAC;QAEvC,OAAO,CAAC,cAAc,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YAE3D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAe,EAAE,EAAE;gBAC/C,mEAAmE;gBACnE,MAAM,OAAO,GAAG,GAAG,EAAE;oBACnB,MAAM,IAAI,GAAG,QAAQ,CAAC,iBAAiB,KAAK,EAAE,CAAC;oBAC/C,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;oBACxB,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC1B,CAAC,CAAC;gBAEF,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;gBAEvD,OAAO,GAAG,EAAE;oBACV,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;oBAC1D,4DAA4D;oBAC5D,IAAI,QAAQ,CAAC,iBAAiB,KAAK,EAAE,EAAE,CAAC;wBACtC,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC;oBAC9B,CAAC;gBACH,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,IAAI,CAAC,MAAe;gBAClB,OAAO,KAAK,CAAC;YACf,CAAC;YAED,GAAG,CAAY,KAAc;gBAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC9B,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;gBAEzB,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;oBACnB,sBAAsB;oBACrB,IAAoB,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,CAAC;gBAClD,CAAC;qBAAM,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;oBAC1B,qBAAqB;oBACrB,IAAI,QAAQ,CAAC,iBAAiB,KAAK,IAAI,EAAE,CAAC;wBACxC,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC;oBAC9B,CAAC;gBACH,CAAC;YACH,CAAC;YAED,GAAG;gBACD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC;YACnC,CAAC;SACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -25,4 +25,10 @@ export { provide, consume, ContextRequestEvent } from "./context";
25
25
  export type { ContextCallback } from "./context";
26
26
  export { portal } from "./portal";
27
27
  export type { PortalOptions } from "./portal";
28
+ export { media } from "./media";
29
+ export { fullscreen } from "./fullscreen";
30
+ export type { FullscreenOptions } from "./fullscreen";
31
+ export { clipboard } from "./clipboard";
32
+ export { draggable, dropzone } from "./dnd";
33
+ export type { DraggableOptions, DropzoneOptions } from "./dnd";
28
34
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/element/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AASxC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGlE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG9D,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGjC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAG7G,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAGjE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,YAAY,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG3D,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG/B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGtD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAG3D,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC/E,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAG5D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAClE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGjD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/element/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AASxC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGlE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG9D,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAGjC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAG7G,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAGjE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,YAAY,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG3D,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG/B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGtD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAG3D,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC/E,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAG5D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAClE,YAAY,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAGjD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGtD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC"}
@@ -37,4 +37,12 @@ export { log, LogTransport, ConsoleTransport, resetLogTransport } from "./log";
37
37
  export { provide, consume, ContextRequestEvent } from "./context";
38
38
  // Portal: teleport content to external DOM targets
39
39
  export { portal } from "./portal";
40
+ // Media: reactive media query binding
41
+ export { media } from "./media";
42
+ // Fullscreen: toggle fullscreen API
43
+ export { fullscreen } from "./fullscreen";
44
+ // Clipboard: declarative copy/paste
45
+ export { clipboard } from "./clipboard";
46
+ // Drag & Drop: declarative DnD
47
+ export { draggable, dropzone } from "./dnd";
40
48
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/element/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,kEAAkE;AAClE,gEAAgE;AAChE,0DAA0D;AAC1D,8DAA8D;AAC9D,4DAA4D;AAE5D,qBAAqB;AACrB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAElE,uBAAuB;AACvB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE9D,kBAAkB;AAClB,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,qBAAqB;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,oBAAoB;AACpB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAA8B,MAAM,UAAU,CAAC;AAE7G,iBAAiB;AACjB,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,yBAAyB;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE3D,iBAAiB;AACjB,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,uBAAuB;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,mBAAmB;AACnB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,4BAA4B;AAC5B,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAG/E,oDAAoD;AACpD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGlE,mDAAmD;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/element/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,kEAAkE;AAClE,gEAAgE;AAChE,0DAA0D;AAC1D,8DAA8D;AAC9D,4DAA4D;AAE5D,qBAAqB;AACrB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAElE,uBAAuB;AACvB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE9D,kBAAkB;AAClB,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,qBAAqB;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,oBAAoB;AACpB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAA8B,MAAM,UAAU,CAAC;AAE7G,iBAAiB;AACjB,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,yBAAyB;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE3D,iBAAiB;AACjB,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAE/B,uBAAuB;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,mBAAmB;AACnB,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,4BAA4B;AAC5B,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAG/E,oDAAoD;AACpD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAGlE,mDAAmD;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC,sCAAsC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,oCAAoC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,oCAAoC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,+BAA+B;AAC/B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/element/lazy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,QAAA,MAAM,WAAW,kCAA8B,CAAC;AAChD,QAAA,MAAM,SAAS,sCAA2C,CAAC;AAC3D,QAAA,MAAM,WAAW,kCAAuC,CAAC;AACzD,QAAA,MAAM,SAAS,kCAA8B,CAAC;AAE9C,MAAM,WAAW,WAAW;IAC1B,sFAAsF;IACtF,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;IAChC,mFAAmF;IACnF,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,wBAAgB,IAAI,CAClB,MAAM,EAAE,MAAM,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,EACrD,IAAI,CAAC,EAAE,WAAW,IAED,OAAO,QAAQ,EAAE,UAAU,qBAAqB,UAkQlE;AAED,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"lazy.d.ts","sourceRoot":"","sources":["../../src/element/lazy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,QAAA,MAAM,WAAW,kCAA8B,CAAC;AAChD,QAAA,MAAM,SAAS,sCAA2C,CAAC;AAC3D,QAAA,MAAM,WAAW,kCAAuC,CAAC;AACzD,QAAA,MAAM,SAAS,kCAA8B,CAAC;AAE9C,MAAM,WAAW,WAAW;IAC1B,sFAAsF;IACtF,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;IAChC,mFAAmF;IACnF,KAAK,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,wBAAgB,IAAI,CAClB,MAAM,EAAE,MAAM,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,EACrD,IAAI,CAAC,EAAE,WAAW,IAED,OAAO,QAAQ,EAAE,UAAU,qBAAqB,UAgVlE;AAED,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC"}
@@ -100,6 +100,15 @@ export function lazy(loader, opts) {
100
100
  origScheduleUpdate?.call(this);
101
101
  };
102
102
  ctor.prototype.connectedCallback = async function () {
103
+ // Set up .ready promise — resolves when impl is fully mounted
104
+ let readyResolve;
105
+ let readyReject;
106
+ this.ready = new Promise((res, rej) => {
107
+ readyResolve = res;
108
+ readyReject = rej;
109
+ });
110
+ // Suppress unhandled rejection if nobody awaits .ready on error
111
+ this.ready.catch(() => { });
103
112
  // Already loaded — mount the impl for this (possibly new) instance
104
113
  if (ctor[LAZY_LOADED.key]) {
105
114
  origConnected?.call(this);
@@ -107,8 +116,50 @@ export function lazy(loader, opts) {
107
116
  if (!this[LAZY_IMPL.key] || !this[LAZY_IMPL.key].isConnected) {
108
117
  ctor.__mountLazyImpl.call(this);
109
118
  }
119
+ readyResolve(this);
110
120
  return;
111
121
  }
122
+ // Install a Proxy on the instance prototype to auto-queue method
123
+ // calls made before the impl loads. Unknown method calls are buffered
124
+ // and replayed after mount. Each queued call returns a Promise that
125
+ // resolves to the real return value.
126
+ const origProto = Object.getPrototypeOf(this);
127
+ const lazyQueue = [];
128
+ const queueProxy = new Proxy(origProto, {
129
+ get: (target, prop, receiver) => {
130
+ // Symbols and known properties — pass through normally
131
+ if (typeof prop === "symbol" || prop in target) {
132
+ return Reflect.get(target, prop, receiver);
133
+ }
134
+ // Skip Promise protocol, conversion methods, and internals
135
+ if (prop === "then" || prop === "catch" || prop === "finally" ||
136
+ prop === "toJSON" || prop === "valueOf" || prop === "toString" ||
137
+ prop === "toLocaleString" || prop === "constructor" ||
138
+ prop === "nodeType" || prop === "nodeName" ||
139
+ prop.startsWith("_")) {
140
+ return undefined;
141
+ }
142
+ // Unknown string property — return a queuing function
143
+ return (...args) => {
144
+ return new Promise(resolve => {
145
+ lazyQueue.push({ method: prop, args, resolve });
146
+ });
147
+ };
148
+ },
149
+ });
150
+ Object.setPrototypeOf(this, queueProxy);
151
+ // Helper: restore prototype and replay queued calls
152
+ const replayQueue = () => {
153
+ Object.setPrototypeOf(this, origProto);
154
+ const impl = this[LAZY_IMPL.key];
155
+ if (impl) {
156
+ for (const { method, args, resolve } of lazyQueue) {
157
+ const fn = impl[method];
158
+ resolve(typeof fn === "function" ? fn.call(impl, ...args) : fn);
159
+ }
160
+ }
161
+ lazyQueue.length = 0;
162
+ };
112
163
  // Show loading indicator
113
164
  if (opts?.loading) {
114
165
  const loadingEl = typeof opts.loading === "function"
@@ -256,10 +307,27 @@ export function lazy(loader, opts) {
256
307
  proto = Object.getPrototypeOf(proto);
257
308
  }
258
309
  };
310
+ // Restore original prototype BEFORE mount so that property reads
311
+ // inside __mountLazyImpl (e.g., prop forwarding checking this.heading)
312
+ // don't get intercepted by the queue proxy.
313
+ Object.setPrototypeOf(this, origProto);
259
314
  ctor.__mountLazyImpl.call(this);
315
+ // Replay any method calls that were queued while loading
316
+ const impl = this[LAZY_IMPL.key];
317
+ if (impl && lazyQueue.length > 0) {
318
+ for (const { method, args, resolve } of lazyQueue) {
319
+ const fn = impl[method];
320
+ resolve(typeof fn === "function" ? fn.call(impl, ...args) : fn);
321
+ }
322
+ lazyQueue.length = 0;
323
+ }
260
324
  bus.emit(new LazyLoadEnd(tag, true, performance.now() - t0));
325
+ readyResolve(this);
261
326
  }
262
327
  catch (err) {
328
+ // Clean up proxy without replaying
329
+ Object.setPrototypeOf(this, origProto);
330
+ lazyQueue.length = 0;
263
331
  console.error("[Loom @lazy] Failed to load module:", err);
264
332
  bus.emit(new LazyLoadEnd(tag, false, performance.now() - t0, err));
265
333
  this.shadow.innerHTML = "";
@@ -272,6 +340,7 @@ export function lazy(loader, opts) {
272
340
  else {
273
341
  this.shadow.innerHTML = `<p style="color:red">Failed to load component</p>`;
274
342
  }
343
+ readyReject(err);
275
344
  }
276
345
  };
277
346
  };
@@ -1 +1 @@
1
- {"version":3,"file":"lazy.js","sourceRoot":"","sources":["../../src/element/lazy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lazy.js","sourceRoot":"","sources":["../../src/element/lazy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Loom — @media decorator
3
+ *
4
+ * Reactive media-query binding for accessor fields.
5
+ * Creates a `matchMedia` listener on connect, cleans up on disconnect.
6
+ * The field auto-updates when the media query match state changes.
7
+ *
8
+ * ```ts
9
+ * @media("(max-width: 768px)")
10
+ * accessor isMobile = false;
11
+ *
12
+ * @media("(prefers-color-scheme: dark)")
13
+ * accessor prefersDark = false;
14
+ *
15
+ * @media("(min-width: 1024px) and (orientation: landscape)")
16
+ * accessor isDesktop = false;
17
+ * ```
18
+ */
19
+ /**
20
+ * @media(query) — Accessor decorator
21
+ *
22
+ * Binds a boolean accessor to a CSS media query via `matchMedia`.
23
+ * The field is set to `true`/`false` on connect and updated reactively
24
+ * whenever the match state changes. Cleanup is automatic on disconnect.
25
+ */
26
+ export declare function media(query: string): (_target: ClassAccessorDecoratorTarget<any, boolean>, context: ClassAccessorDecoratorContext) => ClassAccessorDecoratorResult<any, boolean>;
27
+ //# sourceMappingURL=media.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../src/element/media.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,IAE/B,SAAS,4BAA4B,CAAC,GAAG,EAAE,OAAO,CAAC,EACnD,SAAS,6BAA6B,KACrC,4BAA4B,CAAC,GAAG,EAAE,OAAO,CAAC,CAyC9C"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Loom — @media decorator
3
+ *
4
+ * Reactive media-query binding for accessor fields.
5
+ * Creates a `matchMedia` listener on connect, cleans up on disconnect.
6
+ * The field auto-updates when the media query match state changes.
7
+ *
8
+ * ```ts
9
+ * @media("(max-width: 768px)")
10
+ * accessor isMobile = false;
11
+ *
12
+ * @media("(prefers-color-scheme: dark)")
13
+ * accessor prefersDark = false;
14
+ *
15
+ * @media("(min-width: 1024px) and (orientation: landscape)")
16
+ * accessor isDesktop = false;
17
+ * ```
18
+ */
19
+ import { CONNECT_HOOKS } from "../decorators/symbols";
20
+ /**
21
+ * @media(query) — Accessor decorator
22
+ *
23
+ * Binds a boolean accessor to a CSS media query via `matchMedia`.
24
+ * The field is set to `true`/`false` on connect and updated reactively
25
+ * whenever the match state changes. Cleanup is automatic on disconnect.
26
+ */
27
+ export function media(query) {
28
+ return function (_target, context) {
29
+ const fieldName = context.name;
30
+ const storageKey = `__media_${fieldName}`;
31
+ context.addInitializer(function () {
32
+ if (!this[CONNECT_HOOKS.key])
33
+ this[CONNECT_HOOKS.key] = [];
34
+ this[CONNECT_HOOKS.key].push((_el) => {
35
+ const mql = window.matchMedia(query);
36
+ // Set initial value from current match state
37
+ this[storageKey] = mql.matches;
38
+ this.scheduleUpdate?.();
39
+ // Listen for changes
40
+ const handler = (e) => {
41
+ this[storageKey] = e.matches;
42
+ this.scheduleUpdate?.();
43
+ };
44
+ mql.addEventListener("change", handler);
45
+ // Return cleanup — runs on disconnectedCallback
46
+ return () => mql.removeEventListener("change", handler);
47
+ });
48
+ });
49
+ return {
50
+ init(_value) {
51
+ return false; // Will be set from matchMedia on connect
52
+ },
53
+ set(value) {
54
+ this[storageKey] = value;
55
+ },
56
+ get() {
57
+ return this[storageKey] ?? false;
58
+ },
59
+ };
60
+ };
61
+ }
62
+ //# sourceMappingURL=media.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.js","sourceRoot":"","sources":["../../src/element/media.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CAAC,KAAa;IACjC,OAAO,UACL,OAAmD,EACnD,OAAsC;QAEtC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAc,CAAC;QACzC,MAAM,UAAU,GAAG,WAAW,SAAS,EAAE,CAAC;QAE1C,OAAO,CAAC,cAAc,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YAE3D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAgB,EAAE,EAAE;gBAChD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBAErC,6CAA6C;gBAC7C,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;gBAC/B,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;gBAExB,qBAAqB;gBACrB,MAAM,OAAO,GAAG,CAAC,CAAsB,EAAE,EAAE;oBACzC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;oBAC7B,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;gBAC1B,CAAC,CAAC;gBAEF,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAExC,gDAAgD;gBAChD,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,IAAI,CAAC,MAAe;gBAClB,OAAO,KAAK,CAAC,CAAC,yCAAyC;YACzD,CAAC;YAED,GAAG,CAAY,KAAc;gBAC3B,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK,CAAC;YAC3B,CAAC;YAED,GAAG;gBACD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC;YACnC,CAAC;SACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toyz/loom",
3
- "version": "0.17.2",
3
+ "version": "0.17.4",
4
4
  "type": "module",
5
5
  "description": "Decorator-driven web component framework with reactive state, DOM morphing, DI, and JSX",
6
6
  "license": "MIT",