@toyz/loom 0.15.11 → 0.15.12
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.
- package/dist/element/observers.d.ts +13 -4
- package/dist/element/observers.d.ts.map +1 -1
- package/dist/element/observers.js +14 -5
- package/dist/element/observers.js.map +1 -1
- package/dist/router/link.d.ts +6 -0
- package/dist/router/link.d.ts.map +1 -1
- package/dist/router/link.js +21 -1
- package/dist/router/link.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Loom — @observer decorator
|
|
3
3
|
*
|
|
4
4
|
* Auto-managed DOM observers with lifecycle cleanup.
|
|
5
|
-
* Creates the observer on connect, observes `this
|
|
5
|
+
* Creates the observer on connect, observes `this` (or a resolved target), disconnects on unmount.
|
|
6
6
|
*
|
|
7
7
|
* ```ts
|
|
8
8
|
* @observer("resize")
|
|
@@ -20,9 +20,18 @@
|
|
|
20
20
|
* onChildChange(record: MutationRecord) {
|
|
21
21
|
* this.recount();
|
|
22
22
|
* }
|
|
23
|
+
*
|
|
24
|
+
* // With target resolver — observe a different node
|
|
25
|
+
* @observer("mutation", { childList: true, subtree: true }, el => el.getRootNode())
|
|
26
|
+
* onParentChange(record: MutationRecord) {
|
|
27
|
+
* this.rescan();
|
|
28
|
+
* }
|
|
23
29
|
* ```
|
|
24
30
|
*/
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
export declare function observer(type: "
|
|
31
|
+
/** Resolver that selects the observe target from the component instance. */
|
|
32
|
+
type TargetResolver = (el: HTMLElement) => Node | Element | null | undefined;
|
|
33
|
+
export declare function observer(type: "resize", options?: ResizeObserverOptions, target?: TargetResolver): (method: Function, context: ClassMethodDecoratorContext) => void;
|
|
34
|
+
export declare function observer(type: "intersection", options?: IntersectionObserverInit, target?: TargetResolver): (method: Function, context: ClassMethodDecoratorContext) => void;
|
|
35
|
+
export declare function observer(type: "mutation", options: MutationObserverInit, target?: TargetResolver): (method: Function, context: ClassMethodDecoratorContext) => void;
|
|
36
|
+
export {};
|
|
28
37
|
//# sourceMappingURL=observers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observers.d.ts","sourceRoot":"","sources":["../../src/element/observers.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"observers.d.ts","sourceRoot":"","sources":["../../src/element/observers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAIH,4EAA4E;AAC5E,KAAK,cAAc,GAAG,CAAC,EAAE,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAW7E,wBAAgB,QAAQ,CACtB,IAAI,EAAE,QAAQ,EACd,OAAO,CAAC,EAAE,qBAAqB,EAC/B,MAAM,CAAC,EAAE,cAAc,GACtB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,2BAA2B,KAAK,IAAI,CAAC;AAEpE,wBAAgB,QAAQ,CACtB,IAAI,EAAE,cAAc,EACpB,OAAO,CAAC,EAAE,wBAAwB,EAClC,MAAM,CAAC,EAAE,cAAc,GACtB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,2BAA2B,KAAK,IAAI,CAAC;AAEpE,wBAAgB,QAAQ,CACtB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,oBAAoB,EAC7B,MAAM,CAAC,EAAE,cAAc,GACtB,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,2BAA2B,KAAK,IAAI,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Loom — @observer decorator
|
|
3
3
|
*
|
|
4
4
|
* Auto-managed DOM observers with lifecycle cleanup.
|
|
5
|
-
* Creates the observer on connect, observes `this
|
|
5
|
+
* Creates the observer on connect, observes `this` (or a resolved target), disconnects on unmount.
|
|
6
6
|
*
|
|
7
7
|
* ```ts
|
|
8
8
|
* @observer("resize")
|
|
@@ -20,16 +20,25 @@
|
|
|
20
20
|
* onChildChange(record: MutationRecord) {
|
|
21
21
|
* this.recount();
|
|
22
22
|
* }
|
|
23
|
+
*
|
|
24
|
+
* // With target resolver — observe a different node
|
|
25
|
+
* @observer("mutation", { childList: true, subtree: true }, el => el.getRootNode())
|
|
26
|
+
* onParentChange(record: MutationRecord) {
|
|
27
|
+
* this.rescan();
|
|
28
|
+
* }
|
|
23
29
|
* ```
|
|
24
30
|
*/
|
|
25
31
|
import { CONNECT_HOOKS } from "../decorators/symbols";
|
|
26
32
|
// ── Implementation ──
|
|
27
|
-
export function observer(type, options) {
|
|
33
|
+
export function observer(type, options, target) {
|
|
28
34
|
return (method, context) => {
|
|
29
35
|
context.addInitializer(function () {
|
|
30
36
|
if (!this[CONNECT_HOOKS.key])
|
|
31
37
|
this[CONNECT_HOOKS.key] = [];
|
|
32
38
|
this[CONNECT_HOOKS.key].push((el) => {
|
|
39
|
+
const observeTarget = target ? target(el) : el;
|
|
40
|
+
if (!observeTarget)
|
|
41
|
+
return;
|
|
33
42
|
const callback = (entries) => {
|
|
34
43
|
for (const entry of entries) {
|
|
35
44
|
method.call(el, entry);
|
|
@@ -39,19 +48,19 @@ export function observer(type, options) {
|
|
|
39
48
|
switch (type) {
|
|
40
49
|
case "resize": {
|
|
41
50
|
const ro = new ResizeObserver(callback);
|
|
42
|
-
ro.observe(
|
|
51
|
+
ro.observe(observeTarget, options);
|
|
43
52
|
obs = ro;
|
|
44
53
|
break;
|
|
45
54
|
}
|
|
46
55
|
case "intersection": {
|
|
47
56
|
const io = new IntersectionObserver(callback, options);
|
|
48
|
-
io.observe(
|
|
57
|
+
io.observe(observeTarget);
|
|
49
58
|
obs = io;
|
|
50
59
|
break;
|
|
51
60
|
}
|
|
52
61
|
case "mutation": {
|
|
53
62
|
const mo = new MutationObserver(callback);
|
|
54
|
-
mo.observe(
|
|
63
|
+
mo.observe(observeTarget, options);
|
|
55
64
|
obs = mo;
|
|
56
65
|
break;
|
|
57
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observers.js","sourceRoot":"","sources":["../../src/element/observers.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"observers.js","sourceRoot":"","sources":["../../src/element/observers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAgCtD,uBAAuB;AAEvB,MAAM,UAAU,QAAQ,CACtB,IAAO,EACP,OAA+B,EAC/B,MAAuB;IAEvB,OAAO,CAAC,MAAgB,EAAE,OAAoC,EAAE,EAAE;QAChE,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,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/C,IAAI,CAAC,aAAa;oBAAE,OAAO;gBAE3B,MAAM,QAAQ,GAAG,CAAC,OAAc,EAAE,EAAE;oBAClC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;wBAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;oBACzB,CAAC;gBACH,CAAC,CAAC;gBAEF,IAAI,GAA2B,CAAC;gBAEhC,QAAQ,IAAI,EAAE,CAAC;oBACb,KAAK,QAAQ,CAAC,CAAC,CAAC;wBACd,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;wBACxC,EAAE,CAAC,OAAO,CAAC,aAAwB,EAAE,OAAgC,CAAC,CAAC;wBACvE,GAAG,GAAG,EAAE,CAAC;wBACT,MAAM;oBACR,CAAC;oBACD,KAAK,cAAc,CAAC,CAAC,CAAC;wBACpB,MAAM,EAAE,GAAG,IAAI,oBAAoB,CAAC,QAAQ,EAAE,OAAmC,CAAC,CAAC;wBACnF,EAAE,CAAC,OAAO,CAAC,aAAwB,CAAC,CAAC;wBACrC,GAAG,GAAG,EAAE,CAAC;wBACT,MAAM;oBACR,CAAC;oBACD,KAAK,UAAU,CAAC,CAAC,CAAC;wBAChB,MAAM,EAAE,GAAG,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAC;wBAC1C,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,OAA+B,CAAC,CAAC;wBAC3D,GAAG,GAAG,EAAE,CAAC;wBACT,MAAM;oBACR,CAAC;gBACH,CAAC;gBAED,gDAAgD;gBAChD,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YAChC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/router/link.d.ts
CHANGED
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
* Declarative navigation link. Renders an <a> that adapts
|
|
5
5
|
* its href to the current router mode (hash vs history).
|
|
6
6
|
* Adds `.active` class when the current route matches.
|
|
7
|
+
*
|
|
8
|
+
* Consumer CSS overrides:
|
|
9
|
+
* const inline = css`a { display: inline; }`;
|
|
10
|
+
* <loom-link to="/foo" styles={[inline]}>Foo</loom-link>
|
|
7
11
|
*/
|
|
8
12
|
import { LoomElement } from "../element/element";
|
|
9
13
|
declare class LoomLink extends LoomElement {
|
|
@@ -12,6 +16,8 @@ declare class LoomLink extends LoomElement {
|
|
|
12
16
|
accessor name: string;
|
|
13
17
|
/** Params for named route substitution (JSON string or object via JSX) */
|
|
14
18
|
accessor params: string;
|
|
19
|
+
/** Optional CSSStyleSheets to adopt — overrides default anchor styles */
|
|
20
|
+
accessor styles: CSSStyleSheet[];
|
|
15
21
|
accessor anchor: HTMLAnchorElement;
|
|
16
22
|
private get router();
|
|
17
23
|
connectedCallback(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/router/link.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/router/link.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AASjD,cACM,QAAS,SAAQ,WAAW;IAC1B,QAAQ,CAAC,EAAE,SAAO;IACxB,oEAAoE;IAC9D,QAAQ,CAAC,IAAI,SAAM;IACzB,0EAA0E;IACpE,QAAQ,CAAC,MAAM,SAAM;IAC3B,yEAAyE;IACnE,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,CAAM;IAEhC,QAAQ,CAAC,MAAM,EAAG,iBAAiB,CAAC;IAEhD,OAAO,KAAK,MAAM,GAEjB;IAED,iBAAiB;IAuCjB,6CAA6C;IAC7C,OAAO,CAAC,OAAO;IAWf,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,KAAK;CASd;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
package/dist/router/link.js
CHANGED
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
* Declarative navigation link. Renders an <a> that adapts
|
|
5
5
|
* its href to the current router mode (hash vs history).
|
|
6
6
|
* Adds `.active` class when the current route matches.
|
|
7
|
+
*
|
|
8
|
+
* Consumer CSS overrides:
|
|
9
|
+
* const inline = css`a { display: inline; }`;
|
|
10
|
+
* <loom-link to="/foo" styles={[inline]}>Foo</loom-link>
|
|
7
11
|
*/
|
|
8
12
|
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
9
13
|
var useValue = arguments.length > 2;
|
|
@@ -63,6 +67,9 @@ let LoomLink = (() => {
|
|
|
63
67
|
let _params_decorators;
|
|
64
68
|
let _params_initializers = [];
|
|
65
69
|
let _params_extraInitializers = [];
|
|
70
|
+
let _styles_decorators;
|
|
71
|
+
let _styles_initializers = [];
|
|
72
|
+
let _styles_extraInitializers = [];
|
|
66
73
|
let _anchor_decorators;
|
|
67
74
|
let _anchor_initializers = [];
|
|
68
75
|
let _anchor_extraInitializers = [];
|
|
@@ -74,11 +81,13 @@ let LoomLink = (() => {
|
|
|
74
81
|
_to_decorators = [prop];
|
|
75
82
|
_name_decorators = [prop];
|
|
76
83
|
_params_decorators = [prop];
|
|
84
|
+
_styles_decorators = [prop];
|
|
77
85
|
_anchor_decorators = [query("a")];
|
|
78
86
|
__onRouteChanged_decorators = [on(RouteChanged)];
|
|
79
87
|
__esDecorate(this, null, _to_decorators, { kind: "accessor", name: "to", static: false, private: false, access: { has: obj => "to" in obj, get: obj => obj.to, set: (obj, value) => { obj.to = value; } }, metadata: _metadata }, _to_initializers, _to_extraInitializers);
|
|
80
88
|
__esDecorate(this, null, _name_decorators, { kind: "accessor", name: "name", static: false, private: false, access: { has: obj => "name" in obj, get: obj => obj.name, set: (obj, value) => { obj.name = value; } }, metadata: _metadata }, _name_initializers, _name_extraInitializers);
|
|
81
89
|
__esDecorate(this, null, _params_decorators, { kind: "accessor", name: "params", static: false, private: false, access: { has: obj => "params" in obj, get: obj => obj.params, set: (obj, value) => { obj.params = value; } }, metadata: _metadata }, _params_initializers, _params_extraInitializers);
|
|
90
|
+
__esDecorate(this, null, _styles_decorators, { kind: "accessor", name: "styles", static: false, private: false, access: { has: obj => "styles" in obj, get: obj => obj.styles, set: (obj, value) => { obj.styles = value; } }, metadata: _metadata }, _styles_initializers, _styles_extraInitializers);
|
|
82
91
|
__esDecorate(this, null, _anchor_decorators, { kind: "accessor", name: "anchor", static: false, private: false, access: { has: obj => "anchor" in obj, get: obj => obj.anchor, set: (obj, value) => { obj.anchor = value; } }, metadata: _metadata }, _anchor_initializers, _anchor_extraInitializers);
|
|
83
92
|
__esDecorate(this, null, __onRouteChanged_decorators, { kind: "method", name: "_onRouteChanged", static: false, private: false, access: { has: obj => "_onRouteChanged" in obj, get: obj => obj._onRouteChanged }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
84
93
|
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
@@ -97,7 +106,11 @@ let LoomLink = (() => {
|
|
|
97
106
|
/** Params for named route substitution (JSON string or object via JSX) */
|
|
98
107
|
get params() { return this.#params_accessor_storage; }
|
|
99
108
|
set params(value) { this.#params_accessor_storage = value; }
|
|
100
|
-
#
|
|
109
|
+
#styles_accessor_storage = (__runInitializers(this, _params_extraInitializers), __runInitializers(this, _styles_initializers, []));
|
|
110
|
+
/** Optional CSSStyleSheets to adopt — overrides default anchor styles */
|
|
111
|
+
get styles() { return this.#styles_accessor_storage; }
|
|
112
|
+
set styles(value) { this.#styles_accessor_storage = value; }
|
|
113
|
+
#anchor_accessor_storage = (__runInitializers(this, _styles_extraInitializers), __runInitializers(this, _anchor_initializers, void 0));
|
|
101
114
|
get anchor() { return this.#anchor_accessor_storage; }
|
|
102
115
|
set anchor(value) { this.#anchor_accessor_storage = value; }
|
|
103
116
|
get router() {
|
|
@@ -116,6 +129,13 @@ let LoomLink = (() => {
|
|
|
116
129
|
gap: inherit;
|
|
117
130
|
}
|
|
118
131
|
`;
|
|
132
|
+
// Adopt consumer style overrides
|
|
133
|
+
if (this.styles.length) {
|
|
134
|
+
this.shadow.adoptedStyleSheets = [
|
|
135
|
+
...this.shadow.adoptedStyleSheets,
|
|
136
|
+
...this.styles,
|
|
137
|
+
];
|
|
138
|
+
}
|
|
119
139
|
// Build initial DOM
|
|
120
140
|
const a = document.createElement("a");
|
|
121
141
|
a.setAttribute("part", "anchor");
|
package/dist/router/link.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/router/link.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"link.js","sourceRoot":"","sources":["../../src/router/link.ts"],"names":[],"mappings":"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"}
|