@dooboostore/simple-web-component 1.0.47 → 1.0.49
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/README.md +223 -27
- package/dist/cjs/config/config.js +1 -1
- package/dist/cjs/config/config.js.map +2 -2
- package/dist/cjs/decorators/addEventListener.js +412 -16
- package/dist/cjs/decorators/addEventListener.js.map +3 -3
- package/dist/cjs/decorators/applyAttribute.js +25 -0
- package/dist/cjs/decorators/applyAttribute.js.map +2 -2
- package/dist/cjs/decorators/applyClass.js +49 -18
- package/dist/cjs/decorators/applyClass.js.map +3 -3
- package/dist/cjs/decorators/applyNode.js +67 -1
- package/dist/cjs/decorators/applyNode.js.map +3 -3
- package/dist/cjs/decorators/applyProperty.js +101 -3
- package/dist/cjs/decorators/applyProperty.js.map +2 -2
- package/dist/cjs/decorators/applyStyle.js +36 -5
- package/dist/cjs/decorators/applyStyle.js.map +2 -2
- package/dist/cjs/decorators/changedAttribute.js +39 -0
- package/dist/cjs/decorators/changedAttribute.js.map +2 -2
- package/dist/cjs/decorators/elementDefine.js +244 -225
- package/dist/cjs/decorators/elementDefine.js.map +3 -3
- package/dist/cjs/decorators/emitCustomEvent.js +55 -0
- package/dist/cjs/decorators/emitCustomEvent.js.map +2 -2
- package/dist/cjs/decorators/index.js +5 -1
- package/dist/cjs/decorators/index.js.map +2 -2
- package/dist/cjs/decorators/intersectionObserver.js +209 -0
- package/dist/cjs/decorators/intersectionObserver.js.map +7 -0
- package/dist/cjs/decorators/mutationObserver.js +244 -0
- package/dist/cjs/decorators/mutationObserver.js.map +7 -0
- package/dist/cjs/decorators/query.js +129 -102
- package/dist/cjs/decorators/query.js.map +2 -2
- package/dist/cjs/decorators/resizeObserver.js +191 -0
- package/dist/cjs/decorators/resizeObserver.js.map +7 -0
- package/dist/cjs/decorators/setInterval.js +82 -0
- package/dist/cjs/decorators/setInterval.js.map +7 -0
- package/dist/cjs/decorators/setTimeout.js +82 -0
- package/dist/cjs/decorators/setTimeout.js.map +7 -0
- package/dist/cjs/decorators/subscribeSwcAppMessageWhileConnected.js +9 -0
- package/dist/cjs/decorators/subscribeSwcAppMessageWhileConnected.js.map +2 -2
- package/dist/cjs/decorators/subscribeSwcAppRouteChangeWhileConnected.js +9 -0
- package/dist/cjs/decorators/subscribeSwcAppRouteChangeWhileConnected.js.map +2 -2
- package/dist/cjs/examples/RxJSOperatorsExample.js +285 -0
- package/dist/cjs/examples/RxJSOperatorsExample.js.map +7 -0
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/esm/config/config.js +1 -1
- package/dist/esm/config/config.js.map +2 -2
- package/dist/esm/decorators/addEventListener.js +413 -16
- package/dist/esm/decorators/addEventListener.js.map +3 -3
- package/dist/esm/decorators/applyAttribute.js +25 -0
- package/dist/esm/decorators/applyAttribute.js.map +2 -2
- package/dist/esm/decorators/applyClass.js +49 -18
- package/dist/esm/decorators/applyClass.js.map +3 -3
- package/dist/esm/decorators/applyNode.js +67 -1
- package/dist/esm/decorators/applyNode.js.map +3 -3
- package/dist/esm/decorators/applyProperty.js +101 -3
- package/dist/esm/decorators/applyProperty.js.map +2 -2
- package/dist/esm/decorators/applyStyle.js +36 -5
- package/dist/esm/decorators/applyStyle.js.map +2 -2
- package/dist/esm/decorators/changedAttribute.js +40 -0
- package/dist/esm/decorators/changedAttribute.js.map +2 -2
- package/dist/esm/decorators/elementDefine.js +249 -230
- package/dist/esm/decorators/elementDefine.js.map +3 -3
- package/dist/esm/decorators/emitCustomEvent.js +55 -0
- package/dist/esm/decorators/emitCustomEvent.js.map +2 -2
- package/dist/esm/decorators/index.js +5 -1
- package/dist/esm/decorators/index.js.map +2 -2
- package/dist/esm/decorators/intersectionObserver.js +191 -0
- package/dist/esm/decorators/intersectionObserver.js.map +7 -0
- package/dist/esm/decorators/mutationObserver.js +226 -0
- package/dist/esm/decorators/mutationObserver.js.map +7 -0
- package/dist/esm/decorators/query.js +129 -102
- package/dist/esm/decorators/query.js.map +2 -2
- package/dist/esm/decorators/resizeObserver.js +173 -0
- package/dist/esm/decorators/resizeObserver.js.map +7 -0
- package/dist/esm/decorators/setInterval.js +64 -0
- package/dist/esm/decorators/setInterval.js.map +7 -0
- package/dist/esm/decorators/setTimeout.js +64 -0
- package/dist/esm/decorators/setTimeout.js.map +7 -0
- package/dist/esm/decorators/subscribeSwcAppMessageWhileConnected.js +9 -0
- package/dist/esm/decorators/subscribeSwcAppMessageWhileConnected.js.map +2 -2
- package/dist/esm/decorators/subscribeSwcAppRouteChangeWhileConnected.js +9 -0
- package/dist/esm/decorators/subscribeSwcAppRouteChangeWhileConnected.js.map +2 -2
- package/dist/esm/examples/RxJSOperatorsExample.js +266 -0
- package/dist/esm/examples/RxJSOperatorsExample.js.map +7 -0
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +2413 -889
- package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
- package/dist/types/config/config.d.ts.map +1 -1
- package/dist/types/decorators/addEventListener.d.ts +93 -23
- package/dist/types/decorators/addEventListener.d.ts.map +1 -1
- package/dist/types/decorators/applyAttribute.d.ts +22 -34
- package/dist/types/decorators/applyAttribute.d.ts.map +1 -1
- package/dist/types/decorators/applyClass.d.ts +34 -34
- package/dist/types/decorators/applyClass.d.ts.map +1 -1
- package/dist/types/decorators/applyNode.d.ts +30 -20
- package/dist/types/decorators/applyNode.d.ts.map +1 -1
- package/dist/types/decorators/applyProperty.d.ts +57 -34
- package/dist/types/decorators/applyProperty.d.ts.map +1 -1
- package/dist/types/decorators/applyStyle.d.ts +25 -12
- package/dist/types/decorators/applyStyle.d.ts.map +1 -1
- package/dist/types/decorators/changedAttribute.d.ts +11 -0
- package/dist/types/decorators/changedAttribute.d.ts.map +1 -1
- package/dist/types/decorators/elementDefine.d.ts.map +1 -1
- package/dist/types/decorators/emitCustomEvent.d.ts +28 -4
- package/dist/types/decorators/emitCustomEvent.d.ts.map +1 -1
- package/dist/types/decorators/index.d.ts +5 -1
- package/dist/types/decorators/index.d.ts.map +1 -1
- package/dist/types/decorators/intersectionObserver.d.ts +49 -0
- package/dist/types/decorators/intersectionObserver.d.ts.map +1 -0
- package/dist/types/decorators/mutationObserver.d.ts +46 -0
- package/dist/types/decorators/mutationObserver.d.ts.map +1 -0
- package/dist/types/decorators/query.d.ts +63 -8
- package/dist/types/decorators/query.d.ts.map +1 -1
- package/dist/types/decorators/resizeObserver.d.ts +48 -0
- package/dist/types/decorators/resizeObserver.d.ts.map +1 -0
- package/dist/types/decorators/setInterval.d.ts +29 -0
- package/dist/types/decorators/setInterval.d.ts.map +1 -0
- package/dist/types/decorators/setTimeout.d.ts +29 -0
- package/dist/types/decorators/setTimeout.d.ts.map +1 -0
- package/dist/types/decorators/subscribeSwcAppMessageWhileConnected.d.ts +7 -1
- package/dist/types/decorators/subscribeSwcAppMessageWhileConnected.d.ts.map +1 -1
- package/dist/types/decorators/subscribeSwcAppRouteChangeWhileConnected.d.ts +6 -0
- package/dist/types/decorators/subscribeSwcAppRouteChangeWhileConnected.d.ts.map +1 -1
- package/dist/types/examples/RxJSOperatorsExample.d.ts +94 -0
- package/dist/types/examples/RxJSOperatorsExample.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +104 -0
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +2413 -889
- package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
- package/package.json +8 -6
- package/src/config/config.ts +1 -1
- package/src/decorators/addEventListener.ts +426 -23
- package/src/decorators/applyAttribute.ts +50 -36
- package/src/decorators/applyClass.ts +76 -26
- package/src/decorators/applyNode.ts +114 -36
- package/src/decorators/applyProperty.ts +152 -40
- package/src/decorators/applyStyle.ts +64 -17
- package/src/decorators/changedAttribute.ts +46 -0
- package/src/decorators/elementDefine.ts +301 -317
- package/src/decorators/emitCustomEvent.ts +73 -5
- package/src/decorators/index.ts +5 -1
- package/src/decorators/intersectionObserver.ts +259 -0
- package/src/decorators/mutationObserver.ts +304 -0
- package/src/decorators/query.ts +182 -117
- package/src/decorators/resizeObserver.ts +235 -0
- package/src/decorators/setInterval.ts +80 -0
- package/src/decorators/setTimeout.ts +80 -0
- package/src/decorators/subscribeSwcAppMessageWhileConnected.ts +17 -0
- package/src/decorators/subscribeSwcAppRouteChangeWhileConnected.ts +19 -0
- package/src/examples/RxJSOperatorsExample.ts +279 -0
- package/src/types/index.ts +141 -0
- package/dist/cjs/decorators/queryAll.js +0 -181
- package/dist/cjs/decorators/queryAll.js.map +0 -7
- package/dist/cjs/elements/tt/SwcAppMixin.js +0 -1
- package/dist/cjs/elements/tt/SwcAppMixin.js.map +0 -7
- package/dist/cjs/elements/tt/SwcAsync.js +0 -1
- package/dist/cjs/elements/tt/SwcAsync.js.map +0 -7
- package/dist/cjs/elements/tt/SwcAsyncTemplate.js +0 -1
- package/dist/cjs/elements/tt/SwcAsyncTemplate.js.map +0 -7
- package/dist/cjs/elements/tt/SwcChoose.js +0 -1
- package/dist/cjs/elements/tt/SwcChoose.js.map +0 -7
- package/dist/cjs/elements/tt/SwcChooseTemplate.js +0 -1
- package/dist/cjs/elements/tt/SwcChooseTemplate.js.map +0 -7
- package/dist/cjs/elements/tt/SwcIf.js +0 -1
- package/dist/cjs/elements/tt/SwcIf.js.map +0 -7
- package/dist/cjs/elements/tt/SwcIfTemplate.js +0 -1
- package/dist/cjs/elements/tt/SwcIfTemplate.js.map +0 -7
- package/dist/cjs/elements/tt/SwcLoop.js +0 -1
- package/dist/cjs/elements/tt/SwcLoop.js.map +0 -7
- package/dist/cjs/elements/tt/SwcLoopTemplate.js +0 -1
- package/dist/cjs/elements/tt/SwcLoopTemplate.js.map +0 -7
- package/dist/cjs/elements/tt/SwcSubTemplates.js +0 -1
- package/dist/cjs/elements/tt/SwcSubTemplates.js.map +0 -7
- package/dist/cjs/elements/tt/register.js +0 -1
- package/dist/cjs/elements/tt/register.js.map +0 -7
- package/dist/esm/decorators/queryAll.js +0 -162
- package/dist/esm/decorators/queryAll.js.map +0 -7
- package/dist/esm/elements/tt/SwcAppMixin.js +0 -1
- package/dist/esm/elements/tt/SwcAppMixin.js.map +0 -7
- package/dist/esm/elements/tt/SwcAsync.js +0 -1
- package/dist/esm/elements/tt/SwcAsync.js.map +0 -7
- package/dist/esm/elements/tt/SwcAsyncTemplate.js +0 -1
- package/dist/esm/elements/tt/SwcAsyncTemplate.js.map +0 -7
- package/dist/esm/elements/tt/SwcChoose.js +0 -1
- package/dist/esm/elements/tt/SwcChoose.js.map +0 -7
- package/dist/esm/elements/tt/SwcChooseTemplate.js +0 -1
- package/dist/esm/elements/tt/SwcChooseTemplate.js.map +0 -7
- package/dist/esm/elements/tt/SwcIf.js +0 -1
- package/dist/esm/elements/tt/SwcIf.js.map +0 -7
- package/dist/esm/elements/tt/SwcIfTemplate.js +0 -1
- package/dist/esm/elements/tt/SwcIfTemplate.js.map +0 -7
- package/dist/esm/elements/tt/SwcLoop.js +0 -1
- package/dist/esm/elements/tt/SwcLoop.js.map +0 -7
- package/dist/esm/elements/tt/SwcLoopTemplate.js +0 -1
- package/dist/esm/elements/tt/SwcLoopTemplate.js.map +0 -7
- package/dist/esm/elements/tt/SwcSubTemplates.js +0 -1
- package/dist/esm/elements/tt/SwcSubTemplates.js.map +0 -7
- package/dist/esm/elements/tt/register.js +0 -1
- package/dist/esm/elements/tt/register.js.map +0 -7
- package/dist/types/decorators/queryAll.d.ts +0 -22
- package/dist/types/decorators/queryAll.d.ts.map +0 -1
- package/dist/types/elements/tt/SwcAppMixin.d.ts +0 -1
- package/dist/types/elements/tt/SwcAppMixin.d.ts.map +0 -1
- package/dist/types/elements/tt/SwcAsync.d.ts +0 -1
- package/dist/types/elements/tt/SwcAsync.d.ts.map +0 -1
- package/dist/types/elements/tt/SwcAsyncTemplate.d.ts +0 -1
- package/dist/types/elements/tt/SwcAsyncTemplate.d.ts.map +0 -1
- package/dist/types/elements/tt/SwcChoose.d.ts +0 -1
- package/dist/types/elements/tt/SwcChoose.d.ts.map +0 -1
- package/dist/types/elements/tt/SwcChooseTemplate.d.ts +0 -1
- package/dist/types/elements/tt/SwcChooseTemplate.d.ts.map +0 -1
- package/dist/types/elements/tt/SwcIf.d.ts +0 -1
- package/dist/types/elements/tt/SwcIf.d.ts.map +0 -1
- package/dist/types/elements/tt/SwcIfTemplate.d.ts +0 -1
- package/dist/types/elements/tt/SwcIfTemplate.d.ts.map +0 -1
- package/dist/types/elements/tt/SwcLoop.d.ts +0 -1
- package/dist/types/elements/tt/SwcLoop.d.ts.map +0 -1
- package/dist/types/elements/tt/SwcLoopTemplate.d.ts +0 -1
- package/dist/types/elements/tt/SwcLoopTemplate.d.ts.map +0 -1
- package/dist/types/elements/tt/SwcSubTemplates.d.ts +0 -1
- package/dist/types/elements/tt/SwcSubTemplates.d.ts.map +0 -1
- package/dist/types/elements/tt/register.d.ts +0 -1
- package/dist/types/elements/tt/register.d.ts.map +0 -1
- package/src/decorators/queryAll.ts +0 -186
- package/src/elements/tt/SwcAppMixin.ts +0 -13
- package/src/elements/tt/SwcAsync.ts +0 -139
- package/src/elements/tt/SwcAsyncTemplate.ts +0 -126
- package/src/elements/tt/SwcChoose.ts +0 -182
- package/src/elements/tt/SwcChooseTemplate.ts +0 -229
- package/src/elements/tt/SwcIf.ts +0 -145
- package/src/elements/tt/SwcIfTemplate.ts +0 -158
- package/src/elements/tt/SwcLoop.ts +0 -222
- package/src/elements/tt/SwcLoopTemplate.ts +0 -255
- package/src/elements/tt/SwcSubTemplates.ts +0 -6
- package/src/elements/tt/register.ts +0 -720
package/README.md
CHANGED
|
@@ -39,11 +39,11 @@ class Dashboard extends HTMLElement {
|
|
|
39
39
|
|
|
40
40
|
### 3. **Declarative DOM Updates**
|
|
41
41
|
|
|
42
|
-
#### @
|
|
42
|
+
#### @onConnectedBodyShadow
|
|
43
43
|
Render HTML automatically when component connects to DOM.
|
|
44
44
|
|
|
45
45
|
```typescript
|
|
46
|
-
@
|
|
46
|
+
@onConnectedBodyShadow
|
|
47
47
|
render() {
|
|
48
48
|
return `<div>Hello, <span>${this.name}</span>!</div>`;
|
|
49
49
|
}
|
|
@@ -101,7 +101,7 @@ class ContentManager extends HTMLElement {
|
|
|
101
101
|
return true;
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
@
|
|
104
|
+
@onConnectedBodyLight
|
|
105
105
|
render() {
|
|
106
106
|
return `
|
|
107
107
|
<div>
|
|
@@ -171,7 +171,7 @@ class CounterApp extends HTMLElement {
|
|
|
171
171
|
this.count++; // Triggers automatic DOM update
|
|
172
172
|
}
|
|
173
173
|
|
|
174
|
-
@
|
|
174
|
+
@onConnectedBodyLight
|
|
175
175
|
render() {
|
|
176
176
|
return `
|
|
177
177
|
<div>
|
|
@@ -181,14 +181,14 @@ class CounterApp extends HTMLElement {
|
|
|
181
181
|
<!-- Text directive: render as text -->
|
|
182
182
|
<!--[text Count: @count@ ]-->
|
|
183
183
|
|
|
184
|
-
<!-- Attribute binding with a
|
|
185
|
-
<div a
|
|
184
|
+
<!-- Attribute binding with a:: prefix -->
|
|
185
|
+
<div a::title="'Count is'+@count@"></div>
|
|
186
186
|
|
|
187
|
-
<!-- Event binding with e
|
|
188
|
-
<button e
|
|
187
|
+
<!-- Event binding with e:: prefix -->
|
|
188
|
+
<button e::click="@increment@()">Increment (@count@)</button>
|
|
189
189
|
|
|
190
190
|
<!-- Conditional rendering -->
|
|
191
|
-
<div a
|
|
191
|
+
<div a::style="@isActive@ ? 'color: green' : 'color: red'">
|
|
192
192
|
</div>
|
|
193
193
|
</div>
|
|
194
194
|
`;
|
|
@@ -206,8 +206,8 @@ class CounterApp extends HTMLElement {
|
|
|
206
206
|
**Template Directives:**
|
|
207
207
|
- `<!--[html @state@ ]-->` - Render state value as HTML
|
|
208
208
|
- `<!--[text @state@ ]-->` - Render state value as text
|
|
209
|
-
- `a
|
|
210
|
-
- `e
|
|
209
|
+
- `a::attributeName="@state@"` - Bind state to HTML attributes
|
|
210
|
+
- `e::eventName="@methodName@()"` - Bind events to methods
|
|
211
211
|
|
|
212
212
|
**How @state Works:**
|
|
213
213
|
1. Declare property with `@state('stateName')`
|
|
@@ -236,7 +236,7 @@ increment() {
|
|
|
236
236
|
<!--[text @count = 5@ ]--> // This won't work - read-only in templates
|
|
237
237
|
|
|
238
238
|
// ✅ CORRECT - Call method from template
|
|
239
|
-
<button e
|
|
239
|
+
<button e::click="@increment@()">Increment</button>
|
|
240
240
|
```
|
|
241
241
|
|
|
242
242
|
**Advanced Example:**
|
|
@@ -254,20 +254,20 @@ class UserProfile extends HTMLElement {
|
|
|
254
254
|
this.isEditing = !this.isEditing;
|
|
255
255
|
}
|
|
256
256
|
|
|
257
|
-
@
|
|
257
|
+
@onConnectedBodyShadow
|
|
258
258
|
render() {
|
|
259
259
|
return `
|
|
260
260
|
<div>
|
|
261
261
|
<!-- Display user info -->
|
|
262
262
|
<h2><!--[text @user.name@ ]--></h2>
|
|
263
|
-
<p a
|
|
263
|
+
<p a::title="Email: @user.email@">Age: @user.age@</p>
|
|
264
264
|
|
|
265
265
|
<!-- Conditional rendering based on state -->
|
|
266
|
-
<div a
|
|
266
|
+
<div a::style="@isEditing@ ? 'border: 1px solid blue' : 'border: none'">
|
|
267
267
|
<!--[html @isEditing@ ? '<input type="text" />' : '<span>View Mode</span>' ]-->
|
|
268
268
|
</div>
|
|
269
269
|
|
|
270
|
-
<button e
|
|
270
|
+
<button e::click="toggleEdit"> toggleEdit </button>
|
|
271
271
|
</div>
|
|
272
272
|
`;
|
|
273
273
|
}
|
|
@@ -305,12 +305,16 @@ onCriticalClick(event: Event) {
|
|
|
305
305
|
- `addEventListenerDocument(type, options)` - Listen on document
|
|
306
306
|
- `addEventListenerDelegate(selector, type, options)` - Event delegation
|
|
307
307
|
- `eventDelegate(selector, type, options)` - Short alias
|
|
308
|
-
- `
|
|
309
|
-
- `
|
|
310
|
-
- `
|
|
311
|
-
- `
|
|
312
|
-
- `
|
|
313
|
-
- `
|
|
308
|
+
- `addEventListenerDelegateLight(selector, type, options)` - Delegate in light DOM
|
|
309
|
+
- `eventDelegateLight(selector, type, options)` - Short alias
|
|
310
|
+
- `addEventListenerDelegateShadow(selector, type, options)` - Delegate in shadow DOM
|
|
311
|
+
- `eventDelegateShadow(selector, type, options)` - Short alias
|
|
312
|
+
- `addEventListenerDelegateAll(selector, type, options)` - Delegate in all DOM
|
|
313
|
+
- `eventDelegateAll(selector, type, options)` - Short alias
|
|
314
|
+
- `addEventListenerLight(selector, type, options)` / `eventLight(...)` - Bind (non-delegated) in light DOM
|
|
315
|
+
- `addEventListenerShadow(selector, type, options)` / `eventShadow(...)` - Bind (non-delegated) in shadow DOM
|
|
316
|
+
- `addEventListenerAll(selector, type, options)` / `eventAll(...)` - Bind (non-delegated) in both light & shadow DOM
|
|
317
|
+
- `addEventListenerMutation(selector, type, options)` / `eventMutation(...)` - Delegate via `MutationObserver` instead of event bubbling (useful for non-bubbling events like `focus`/`blur`); `*Light`/`*Shadow`/`*All` variants also available
|
|
314
318
|
|
|
315
319
|
#### @emitCustomEvent
|
|
316
320
|
Emit custom events with data.
|
|
@@ -613,6 +617,148 @@ class FormHandler extends HTMLElement {
|
|
|
613
617
|
- `@setProperty('#selector', 'propertyName', options)` - Set property on selector with options
|
|
614
618
|
- `@setProperty` - Bare decorator (uses method name as property on $this)
|
|
615
619
|
|
|
620
|
+
### 6.6 **DOM Observers (@mutationObserver, @resizeObserver, @intersectionObserver)**
|
|
621
|
+
|
|
622
|
+
Observe DOM mutations, element size changes, and viewport intersection declaratively. All three decorators share the same pattern as `@event` — they support optional selector (defaults to `$this`), root-based helpers, and `delegate` mode.
|
|
623
|
+
|
|
624
|
+
#### @mutationObserver
|
|
625
|
+
Detect DOM changes (child add/remove, attribute changes, text changes) and react automatically.
|
|
626
|
+
|
|
627
|
+
```typescript
|
|
628
|
+
@elementDefine('list-observer')
|
|
629
|
+
class ListObserver extends HTMLElement {
|
|
630
|
+
// Observe all changes under this component (light DOM)
|
|
631
|
+
@mutationObserverLight({ childList: true, attributes: true, subtree: true })
|
|
632
|
+
onDomChanged(matchedEls: HTMLElement[], mutations: MutationRecord[], observer: MutationObserver) {
|
|
633
|
+
console.log('DOM changed:', matchedEls.length, mutations);
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
// Observe a specific selector (delegate mode - catches dynamically added nodes too)
|
|
637
|
+
@mutationObserverDelegateShadow('.item', { childList: true })
|
|
638
|
+
onItemChanged(matchedEls: HTMLElement[], mutations: MutationRecord[], observer: MutationObserver) {
|
|
639
|
+
console.log('Item changed:', matchedEls);
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
```
|
|
643
|
+
|
|
644
|
+
**Callback signature:**
|
|
645
|
+
- `matchedEls: HTMLElement[]` - Elements matching the selector (1st arg)
|
|
646
|
+
- `mutations: MutationRecord[]` - Original mutation records (2nd arg)
|
|
647
|
+
- `observer: MutationObserver` - The observer instance (3rd arg)
|
|
648
|
+
|
|
649
|
+
**How delegate works:**
|
|
650
|
+
- **delegate=true** - Observes the root with `subtree: true`; dynamically added/removed elements matching the selector are detected in the callback
|
|
651
|
+
- **delegate=false** (default) - Observes only the elements matching the selector at connect time
|
|
652
|
+
|
|
653
|
+
**@mutationObserver Options:**
|
|
654
|
+
- Standard `MutationObserverInit` options: `childList`, `attributes`, `characterData`, `subtree`, `attributeFilter`, `attributeOldValue`, `characterDataOldValue`
|
|
655
|
+
- `delegate` - Observe root and filter by selector in callback
|
|
656
|
+
- `root` - `'light' | 'shadow' | 'all' | 'auto'`
|
|
657
|
+
- `filter` - Additional callback filter
|
|
658
|
+
- `removeObserver` - Cleanup callback called on disconnect `(target, options)`
|
|
659
|
+
|
|
660
|
+
**@mutationObserver Decorator Variants:**
|
|
661
|
+
- `mutationObserver(selector?, options?)` - Full form (selector defaults to `$this`)
|
|
662
|
+
- `mutationObserverLight(selector?, options?)` - Observe light DOM
|
|
663
|
+
- `mutationObserverShadow(selector?, options?)` - Observe shadow DOM
|
|
664
|
+
- `mutationObserverAll(selector?, options?)` - Observe both light & shadow
|
|
665
|
+
- `mutationObserverDelegate(selector?, options?)` - Delegate mode (root observe)
|
|
666
|
+
- `mutationObserverDelegateLight(selector?, options?)` - Delegate in light DOM
|
|
667
|
+
- `mutationObserverDelegateShadow(selector?, options?)` - Delegate in shadow DOM
|
|
668
|
+
- `mutationObserverDelegateAll(selector?, options?)` - Delegate in all DOM
|
|
669
|
+
|
|
670
|
+
#### @resizeObserver
|
|
671
|
+
Detect element size changes and react automatically.
|
|
672
|
+
|
|
673
|
+
```typescript
|
|
674
|
+
@elementDefine('chart-widget')
|
|
675
|
+
class ChartWidget extends HTMLElement {
|
|
676
|
+
// Re-render when component size changes (selector defaults to $this)
|
|
677
|
+
@resizeObserverLight()
|
|
678
|
+
onResize(matchedEls: HTMLElement[], entries: ResizeObserverEntry[], observer: ResizeObserver) {
|
|
679
|
+
this.redraw(entries[0]?.contentRect);
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
// Watch specific elements (delegate mode tracks dynamically added ones)
|
|
683
|
+
@resizeObserverDelegateShadow('.card')
|
|
684
|
+
onCardResize(matchedEls: HTMLElement[], entries: ResizeObserverEntry[], observer: ResizeObserver) {
|
|
685
|
+
console.log('Card resized:', matchedEls[0]?.clientWidth);
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
```
|
|
689
|
+
|
|
690
|
+
**Callback signature:**
|
|
691
|
+
- `matchedEls: HTMLElement[]` - Elements that were resized (1st arg)
|
|
692
|
+
- `entries: ResizeObserverEntry[]` - Original observer entries (2nd arg)
|
|
693
|
+
- `observer: ResizeObserver` - The observer instance (3rd arg)
|
|
694
|
+
|
|
695
|
+
**@resizeObserver Options:**
|
|
696
|
+
- `box` - `'content-box' | 'border-box' | 'device-pixel-content-box'`
|
|
697
|
+
- `delegate` - Track dynamically added/removed matching elements
|
|
698
|
+
- `root` - `'light' | 'shadow' | 'all' | 'auto'`
|
|
699
|
+
- `filter` - Additional callback filter
|
|
700
|
+
- `removeObserver` - Cleanup callback called on disconnect `(target, options)`
|
|
701
|
+
|
|
702
|
+
**@resizeObserver Decorator Variants:**
|
|
703
|
+
- `resizeObserver(selector?, options?)` - Full form (selector defaults to `$this`)
|
|
704
|
+
- `resizeObserverLight(selector?, options?)` - Observe light DOM
|
|
705
|
+
- `resizeObserverShadow(selector?, options?)` - Observe shadow DOM
|
|
706
|
+
- `resizeObserverAll(selector?, options?)` - Observe both light & shadow
|
|
707
|
+
- `resizeObserverDelegate(selector?, options?)` - Delegate mode (root observe)
|
|
708
|
+
- `resizeObserverDelegateLight(selector?, options?)` - Delegate in light DOM
|
|
709
|
+
- `resizeObserverDelegateShadow(selector?, options?)` - Delegate in shadow DOM
|
|
710
|
+
- `resizeObserverDelegateAll(selector?, options?)` - Delegate in all DOM
|
|
711
|
+
|
|
712
|
+
**Combining with @resizeObserver delegate (dynamic tracking):**
|
|
713
|
+
When `delegate: true`, an internal `MutationObserver` automatically observes the root so that elements matching the selector are tracked even after being dynamically added/removed from the DOM.
|
|
714
|
+
|
|
715
|
+
#### @intersectionObserver
|
|
716
|
+
Detect when elements enter/exit the viewport (or a custom scroll container) and react automatically — useful for lazy loading, infinite scroll, and visibility tracking.
|
|
717
|
+
|
|
718
|
+
```typescript
|
|
719
|
+
@elementDefine('lazy-image-list')
|
|
720
|
+
class LazyImageList extends HTMLElement {
|
|
721
|
+
// Fire when any matching element crosses the viewport boundary
|
|
722
|
+
@intersectionObserverLight('.lazy-img', { threshold: 0 })
|
|
723
|
+
onImageVisible(matchedEls: HTMLElement[], entries: IntersectionObserverEntry[], observer: IntersectionObserver) {
|
|
724
|
+
entries.forEach(e => {
|
|
725
|
+
if (e.isIntersecting) (e.target as HTMLImageElement).src = (e.target as HTMLElement).dataset.src!;
|
|
726
|
+
});
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
// Delegate mode tracks dynamically added elements too
|
|
730
|
+
@intersectionObserverDelegateShadow('.card', { threshold: [0, 0.5, 1] })
|
|
731
|
+
onCardIntersect(matchedEls: HTMLElement[], entries: IntersectionObserverEntry[], observer: IntersectionObserver) {
|
|
732
|
+
console.log('intersection ratio:', entries[0]?.intersectionRatio);
|
|
733
|
+
}
|
|
734
|
+
}
|
|
735
|
+
```
|
|
736
|
+
|
|
737
|
+
**Callback signature:**
|
|
738
|
+
- `matchedEls: HTMLElement[]` - Elements matching the selector (1st arg)
|
|
739
|
+
- `entries: IntersectionObserverEntry[]` - Original observer entries (2nd arg)
|
|
740
|
+
- `observer: IntersectionObserver` - The observer instance (3rd arg)
|
|
741
|
+
|
|
742
|
+
**@intersectionObserver Options:**
|
|
743
|
+
- Standard `IntersectionObserverInit` options: `threshold`, `rootMargin` (note: its own scroll-container `root` is passed as `intersectionRoot`, since the decorator's `root` option already means light/shadow/all/auto selector scope)
|
|
744
|
+
- `delegate` - Observe root and filter by selector in callback (dynamically added/removed elements are tracked too)
|
|
745
|
+
- `root` - `'light' | 'shadow' | 'all' | 'auto'`
|
|
746
|
+
- `filter` - Additional callback filter
|
|
747
|
+
- `removeObserver` - Cleanup callback called on disconnect `(target, options)`
|
|
748
|
+
|
|
749
|
+
**@intersectionObserver Decorator Variants:**
|
|
750
|
+
- `intersectionObserver(selector?, options?)` - Full form (selector defaults to `$this`)
|
|
751
|
+
- `intersectionObserverLight(selector?, options?)` - Observe light DOM
|
|
752
|
+
- `intersectionObserverShadow(selector?, options?)` - Observe shadow DOM
|
|
753
|
+
- `intersectionObserverAll(selector?, options?)` - Observe both light & shadow
|
|
754
|
+
- `intersectionObserverDelegate(selector?, options?)` - Delegate mode (root observe)
|
|
755
|
+
- `intersectionObserverDelegateLight(selector?, options?)` - Delegate in light DOM
|
|
756
|
+
- `intersectionObserverDelegateShadow(selector?, options?)` - Delegate in shadow DOM
|
|
757
|
+
- `intersectionObserverDelegateAll(selector?, options?)` - Delegate in all DOM
|
|
758
|
+
|
|
759
|
+
**Cleanup:**
|
|
760
|
+
All three observers are automatically disconnected when the component is removed from the DOM. `removeObserver` callbacks (if provided) are invoked during cleanup.
|
|
761
|
+
|
|
616
762
|
### 7. **DOM Manipulation with applyNode**
|
|
617
763
|
|
|
618
764
|
Surgically add, replace, or remove nodes in the DOM with fine-grained control.
|
|
@@ -638,7 +784,7 @@ class ContentUpdater extends HTMLElement {
|
|
|
638
784
|
return `<p>Prepended content</p>`;
|
|
639
785
|
}
|
|
640
786
|
|
|
641
|
-
@
|
|
787
|
+
@onConnectedBodyLight
|
|
642
788
|
render() {
|
|
643
789
|
return `
|
|
644
790
|
<div>
|
|
@@ -704,7 +850,7 @@ class StyledComponent extends HTMLElement {
|
|
|
704
850
|
};
|
|
705
851
|
}
|
|
706
852
|
|
|
707
|
-
@
|
|
853
|
+
@onConnectedBodyLight
|
|
708
854
|
render() {
|
|
709
855
|
return `
|
|
710
856
|
<div>
|
|
@@ -811,6 +957,57 @@ onFirst() { }
|
|
|
811
957
|
onSecond() { }
|
|
812
958
|
```
|
|
813
959
|
|
|
960
|
+
### 8.6 **Timers (@setInterval, @setTimeout)**
|
|
961
|
+
|
|
962
|
+
Declaratively run a method on a repeating interval or after a one-time delay, tied to the component's connected lifecycle. Both are pure metadata-collecting decorators — they never touch the method itself (no `descriptor.value` wrapping) — so they compose safely with any other decorator stacked on the same method, regardless of declaration order. All the actual scheduling/cleanup is handled by `SetIntervalLifeCycler`/`SetTimeoutLifeCycler` (`ElementDefineLifeCycler` implementations, same plugin pattern as the observers above):
|
|
963
|
+
|
|
964
|
+
- Starts automatically when the component connects.
|
|
965
|
+
- Automatically `clearInterval`/`clearTimeout`s when the component disconnects — no manual cleanup needed.
|
|
966
|
+
|
|
967
|
+
```typescript
|
|
968
|
+
@elementDefine('live-clock')
|
|
969
|
+
class LiveClock extends HTMLElement {
|
|
970
|
+
@setInterval(1000, {
|
|
971
|
+
parameter: (set) => [Date.now()],
|
|
972
|
+
created: (set, id) => console.log('interval started, timer id:', id)
|
|
973
|
+
})
|
|
974
|
+
tick(now: number) {
|
|
975
|
+
this.textContent = new Date(now).toLocaleTimeString();
|
|
976
|
+
}
|
|
977
|
+
|
|
978
|
+
// No options - called with no arguments, once per second
|
|
979
|
+
@setInterval(1000)
|
|
980
|
+
onTick() {
|
|
981
|
+
console.log('tick');
|
|
982
|
+
}
|
|
983
|
+
|
|
984
|
+
// Fires once, 3 seconds after connect
|
|
985
|
+
@setTimeout(3000)
|
|
986
|
+
onceAfter3s() {
|
|
987
|
+
console.log('3 seconds have passed');
|
|
988
|
+
}
|
|
989
|
+
}
|
|
990
|
+
```
|
|
991
|
+
|
|
992
|
+
**`@setInterval(interval, options?)` / `@setTimeout(delay, options?)`:**
|
|
993
|
+
- `interval` / `delay` - milliseconds. `setInterval` repeats; `setTimeout` fires once.
|
|
994
|
+
- `parameter?: (set: HelperHostSet) => any[]` - computes the arguments passed to the method on each tick/fire. Omitted → method is called with no arguments.
|
|
995
|
+
- `created?: (set: HelperHostSet, id: number) => void` - fires once, right after the timer is armed, with the real `setInterval`/`setTimeout` return value. For logging/debugging only — cleanup is still handled automatically, this is not a manual-clear hook.
|
|
996
|
+
- `valueKey?: symbol | string` - same convention as `@applyAttribute`'s `valueKey` (see "Multiple Decorators with Shared Return Value" below): if the method's return value is an object and this key's value is a function, that function is called on every tick/fire — but note the callback signature is just `(id: number)`, not `(set, id)` like `created`.
|
|
997
|
+
|
|
998
|
+
```typescript
|
|
999
|
+
@setInterval(900, { valueKey: 'onTick' })
|
|
1000
|
+
poll() {
|
|
1001
|
+
return {
|
|
1002
|
+
onTick: (id: number) => console.log('interval', id, 'ticked'),
|
|
1003
|
+
};
|
|
1004
|
+
}
|
|
1005
|
+
```
|
|
1006
|
+
|
|
1007
|
+
**Why no wrapping is needed:** unlike `@applyAttribute`/`@setAttribute` (which must wrap the method because it can be called by arbitrary code — event handlers, other decorators, etc.), the timer's own `LifeCycler` is the one calling `inst[propertyKey](...)` every tick/fire — it already has the return value in hand at that call site, so it can read `valueKey` off of it without ever needing to intercept the method.
|
|
1008
|
+
|
|
1009
|
+
> `@requestAnimationFrame` is not implemented yet.
|
|
1010
|
+
|
|
814
1011
|
### 9. **Structural Directives**
|
|
815
1012
|
|
|
816
1013
|
Structural Directives allow declarative conditional rendering, list iteration, async handling, and routing with automatic attribute substitution and dynamic expressions.
|
|
@@ -1328,6 +1525,7 @@ class MixedKeysExample extends HTMLElement {
|
|
|
1328
1525
|
- `@applyClass` / `@updateClass` / etc.
|
|
1329
1526
|
- `@emitCustomEvent` / `@emit`
|
|
1330
1527
|
- `@publishSwcAppMessage` / `@publish`
|
|
1528
|
+
- `@setInterval` / `@setTimeout` - variant: the extracted value must itself be a function, and that function is invoked with `(id: number)` on every tick/fire (see "Timers" section above) rather than being applied directly like the other decorators here.
|
|
1331
1529
|
|
|
1332
1530
|
Each decorator will use only its corresponding value from the return object, preventing conflicts and allowing clean separation of concerns.
|
|
1333
1531
|
|
|
@@ -1419,9 +1617,7 @@ method() { ... }
|
|
|
1419
1617
|
|
|
1420
1618
|
**query.ts:**
|
|
1421
1619
|
- `query(selector?, options?)` - Query single element (supports $this, $host, $appHost, etc.)
|
|
1422
|
-
|
|
1423
|
-
**queryAll.ts:**
|
|
1424
|
-
- `queryAll(selector?, options?)` - Query multiple elements
|
|
1620
|
+
- `queryAll(selector?, options?)` - Query multiple elements (same file as `query`)
|
|
1425
1621
|
|
|
1426
1622
|
**emitCustomEvent.ts:**
|
|
1427
1623
|
- `emitCustomEvent(target, type, options?)` - Emit custom events
|
|
@@ -81,6 +81,6 @@ const HTML_TAG_ENTRIES = [
|
|
|
81
81
|
["HTMLHeadingElement", "h1"],
|
|
82
82
|
["HTMLBodyElement", "body"]
|
|
83
83
|
];
|
|
84
|
-
const DOM_EVENT_NAMES = ["click", "dblclick", "mousedown", "mouseenter", "mouseleave", "mousemove", "mouseout", "mouseover", "mouseup", "contextmenu", "keydown", "keypress", "keyup", "blur", "change", "focus", "focusin", "focusout", "input", "invalid", "reset", "search", "select", "submit", "drag", "dragend", "dragenter", "dragleave", "dragover", "dragstart", "drop", "copy", "cut", "paste", "abort", "canplay", "canplaythrough", "durationchange", "emptied", "ended", "error", "loadeddata", "loadedmetadata", "loadstart", "pause", "play", "playing", "progress", "ratechange", "seeked", "seeking", "stalled", "suspend", "timeupdate", "volumechange", "waiting", "scroll", "resize", "load", "
|
|
84
|
+
const DOM_EVENT_NAMES = ["click", "dblclick", "mousedown", "mouseenter", "mouseleave", "mousemove", "mouseout", "mouseover", "mouseup", "contextmenu", "keydown", "keypress", "keyup", "blur", "change", "focus", "focusin", "focusout", "input", "invalid", "reset", "search", "select", "submit", "drag", "dragend", "dragenter", "dragleave", "dragover", "dragstart", "drop", "copy", "cut", "paste", "abort", "canplay", "canplaythrough", "durationchange", "emptied", "ended", "error", "loadeddata", "loadedmetadata", "loadstart", "pause", "play", "playing", "progress", "ratechange", "seeked", "seeking", "stalled", "suspend", "timeupdate", "volumechange", "waiting", "scroll", "resize", "load", "hashchange", "connected"];
|
|
85
85
|
const BROWSER_GLOBALS = ["window", "document", "Node", "Element", "HTMLElement", "DocumentFragment", "CustomEvent", "customElements", "NodeFilter", ...HTML_TAG_ENTRIES.map(([className]) => className)];
|
|
86
86
|
//# sourceMappingURL=config.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/config/config.ts"],
|
|
4
|
-
"sourcesContent": ["export const HTML_TAG_ENTRIES: [string, string][] = [\n ['HTMLAnchorElement', 'a'],\n ['HTMLAreaElement', 'area'],\n ['HTMLAudioElement', 'audio'],\n ['HTMLBaseElement', 'base'],\n ['HTMLButtonElement', 'button'],\n ['HTMLCanvasElement', 'canvas'],\n ['HTMLDataElement', 'data'],\n ['HTMLDataListElement', 'datalist'],\n ['HTMLDetailsElement', 'details'],\n ['HTMLDialogElement', 'dialog'],\n ['HTMLDivElement', 'div'],\n ['HTMLDListElement', 'dl'],\n ['HTMLEmbedElement', 'embed'],\n ['HTMLFieldSetElement', 'fieldset'],\n ['HTMLFormElement', 'form'],\n ['HTMLHRElement', 'hr'],\n ['HTMLIFrameElement', 'iframe'],\n ['HTMLImageElement', 'img'],\n ['HTMLInputElement', 'input'],\n ['HTMLLabelElement', 'label'],\n ['HTMLLegendElement', 'legend'],\n ['HTMLLIElement', 'li'],\n ['HTMLLinkElement', 'link'],\n ['HTMLMapElement', 'map'],\n ['HTMLMetaElement', 'meta'],\n ['HTMLMeterElement', 'meter'],\n ['HTMLModElement', 'del'],\n ['HTMLObjectElement', 'object'],\n ['HTMLOListElement', 'ol'],\n ['HTMLOptGroupElement', 'optgroup'],\n ['HTMLOptionElement', 'option'],\n ['HTMLOutputElement', 'output'],\n ['HTMLParagraphElement', 'p'],\n ['HTMLParamElement', 'param'],\n ['HTMLPictureElement', 'picture'],\n ['HTMLPreElement', 'pre'],\n ['HTMLProgressElement', 'progress'],\n ['HTMLQuoteElement', 'blockquote'],\n ['HTMLScriptElement', 'script'],\n ['HTMLSelectElement', 'select'],\n ['HTMLSlotElement', 'slot'],\n ['HTMLSourceElement', 'source'],\n ['HTMLSpanElement', 'span'],\n ['HTMLStyleElement', 'style'],\n ['HTMLTableElement', 'table'],\n ['HTMLTableSectionElement', 'tbody'],\n ['HTMLTableCellElement', 'td'],\n ['HTMLTemplateElement', 'template'],\n ['HTMLTextAreaElement', 'textarea'],\n ['HTMLTimeElement', 'time'],\n ['HTMLTitleElement', 'title'],\n ['HTMLTableRowElement', 'tr'],\n ['HTMLTrackElement', 'track'],\n ['HTMLUListElement', 'ul'],\n ['HTMLVideoElement', 'video'],\n ['HTMLHeadingElement', 'h1'],\n ['HTMLBodyElement', 'body']\n];\n\nexport const DOM_EVENT_NAMES = ['click', 'dblclick', 'mousedown', 'mouseenter', 'mouseleave', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'contextmenu', 'keydown', 'keypress', 'keyup', 'blur', 'change', 'focus', 'focusin', 'focusout', 'input', 'invalid', 'reset', 'search', 'select', 'submit', 'drag', 'dragend', 'dragenter', 'dragleave', 'dragover', 'dragstart', 'drop', 'copy', 'cut', 'paste', 'abort', 'canplay', 'canplaythrough', 'durationchange', 'emptied', 'ended', 'error', 'loadeddata', 'loadedmetadata', 'loadstart', 'pause', 'play', 'playing', 'progress', 'ratechange', 'seeked', 'seeking', 'stalled', 'suspend', 'timeupdate', 'volumechange', 'waiting', 'scroll', 'resize', 'load', '
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,mBAAuC;AAAA,EAClD,CAAC,qBAAqB,GAAG;AAAA,EACzB,CAAC,mBAAmB,MAAM;AAAA,EAC1B,CAAC,oBAAoB,OAAO;AAAA,EAC5B,CAAC,mBAAmB,MAAM;AAAA,EAC1B,CAAC,qBAAqB,QAAQ;AAAA,EAC9B,CAAC,qBAAqB,QAAQ;AAAA,EAC9B,CAAC,mBAAmB,MAAM;AAAA,EAC1B,CAAC,uBAAuB,UAAU;AAAA,EAClC,CAAC,sBAAsB,SAAS;AAAA,EAChC,CAAC,qBAAqB,QAAQ;AAAA,EAC9B,CAAC,kBAAkB,KAAK;AAAA,EACxB,CAAC,oBAAoB,IAAI;AAAA,EACzB,CAAC,oBAAoB,OAAO;AAAA,EAC5B,CAAC,uBAAuB,UAAU;AAAA,EAClC,CAAC,mBAAmB,MAAM;AAAA,EAC1B,CAAC,iBAAiB,IAAI;AAAA,EACtB,CAAC,qBAAqB,QAAQ;AAAA,EAC9B,CAAC,oBAAoB,KAAK;AAAA,EAC1B,CAAC,oBAAoB,OAAO;AAAA,EAC5B,CAAC,oBAAoB,OAAO;AAAA,EAC5B,CAAC,qBAAqB,QAAQ;AAAA,EAC9B,CAAC,iBAAiB,IAAI;AAAA,EACtB,CAAC,mBAAmB,MAAM;AAAA,EAC1B,CAAC,kBAAkB,KAAK;AAAA,EACxB,CAAC,mBAAmB,MAAM;AAAA,EAC1B,CAAC,oBAAoB,OAAO;AAAA,EAC5B,CAAC,kBAAkB,KAAK;AAAA,EACxB,CAAC,qBAAqB,QAAQ;AAAA,EAC9B,CAAC,oBAAoB,IAAI;AAAA,EACzB,CAAC,uBAAuB,UAAU;AAAA,EAClC,CAAC,qBAAqB,QAAQ;AAAA,EAC9B,CAAC,qBAAqB,QAAQ;AAAA,EAC9B,CAAC,wBAAwB,GAAG;AAAA,EAC5B,CAAC,oBAAoB,OAAO;AAAA,EAC5B,CAAC,sBAAsB,SAAS;AAAA,EAChC,CAAC,kBAAkB,KAAK;AAAA,EACxB,CAAC,uBAAuB,UAAU;AAAA,EAClC,CAAC,oBAAoB,YAAY;AAAA,EACjC,CAAC,qBAAqB,QAAQ;AAAA,EAC9B,CAAC,qBAAqB,QAAQ;AAAA,EAC9B,CAAC,mBAAmB,MAAM;AAAA,EAC1B,CAAC,qBAAqB,QAAQ;AAAA,EAC9B,CAAC,mBAAmB,MAAM;AAAA,EAC1B,CAAC,oBAAoB,OAAO;AAAA,EAC5B,CAAC,oBAAoB,OAAO;AAAA,EAC5B,CAAC,2BAA2B,OAAO;AAAA,EACnC,CAAC,wBAAwB,IAAI;AAAA,EAC7B,CAAC,uBAAuB,UAAU;AAAA,EAClC,CAAC,uBAAuB,UAAU;AAAA,EAClC,CAAC,mBAAmB,MAAM;AAAA,EAC1B,CAAC,oBAAoB,OAAO;AAAA,EAC5B,CAAC,uBAAuB,IAAI;AAAA,EAC5B,CAAC,oBAAoB,OAAO;AAAA,EAC5B,CAAC,oBAAoB,IAAI;AAAA,EACzB,CAAC,oBAAoB,OAAO;AAAA,EAC5B,CAAC,sBAAsB,IAAI;AAAA,EAC3B,CAAC,mBAAmB,MAAM;AAC5B;AAEO,MAAM,kBAAkB,CAAC,SAAS,YAAY,aAAa,cAAc,cAAc,aAAa,YAAY,aAAa,WAAW,eAAe,WAAW,YAAY,SAAS,QAAQ,UAAU,SAAS,WAAW,YAAY,SAAS,WAAW,SAAS,UAAU,UAAU,UAAU,QAAQ,WAAW,aAAa,aAAa,YAAY,aAAa,QAAQ,QAAQ,OAAO,SAAS,SAAS,WAAW,kBAAkB,kBAAkB,WAAW,SAAS,SAAS,cAAc,kBAAkB,aAAa,SAAS,QAAQ,WAAW,YAAY,cAAc,UAAU,WAAW,WAAW,WAAW,cAAc,gBAAgB,WAAW,UAAU,UAAU,QAAQ,
|
|
4
|
+
"sourcesContent": ["export const HTML_TAG_ENTRIES: [string, string][] = [\n ['HTMLAnchorElement', 'a'],\n ['HTMLAreaElement', 'area'],\n ['HTMLAudioElement', 'audio'],\n ['HTMLBaseElement', 'base'],\n ['HTMLButtonElement', 'button'],\n ['HTMLCanvasElement', 'canvas'],\n ['HTMLDataElement', 'data'],\n ['HTMLDataListElement', 'datalist'],\n ['HTMLDetailsElement', 'details'],\n ['HTMLDialogElement', 'dialog'],\n ['HTMLDivElement', 'div'],\n ['HTMLDListElement', 'dl'],\n ['HTMLEmbedElement', 'embed'],\n ['HTMLFieldSetElement', 'fieldset'],\n ['HTMLFormElement', 'form'],\n ['HTMLHRElement', 'hr'],\n ['HTMLIFrameElement', 'iframe'],\n ['HTMLImageElement', 'img'],\n ['HTMLInputElement', 'input'],\n ['HTMLLabelElement', 'label'],\n ['HTMLLegendElement', 'legend'],\n ['HTMLLIElement', 'li'],\n ['HTMLLinkElement', 'link'],\n ['HTMLMapElement', 'map'],\n ['HTMLMetaElement', 'meta'],\n ['HTMLMeterElement', 'meter'],\n ['HTMLModElement', 'del'],\n ['HTMLObjectElement', 'object'],\n ['HTMLOListElement', 'ol'],\n ['HTMLOptGroupElement', 'optgroup'],\n ['HTMLOptionElement', 'option'],\n ['HTMLOutputElement', 'output'],\n ['HTMLParagraphElement', 'p'],\n ['HTMLParamElement', 'param'],\n ['HTMLPictureElement', 'picture'],\n ['HTMLPreElement', 'pre'],\n ['HTMLProgressElement', 'progress'],\n ['HTMLQuoteElement', 'blockquote'],\n ['HTMLScriptElement', 'script'],\n ['HTMLSelectElement', 'select'],\n ['HTMLSlotElement', 'slot'],\n ['HTMLSourceElement', 'source'],\n ['HTMLSpanElement', 'span'],\n ['HTMLStyleElement', 'style'],\n ['HTMLTableElement', 'table'],\n ['HTMLTableSectionElement', 'tbody'],\n ['HTMLTableCellElement', 'td'],\n ['HTMLTemplateElement', 'template'],\n ['HTMLTextAreaElement', 'textarea'],\n ['HTMLTimeElement', 'time'],\n ['HTMLTitleElement', 'title'],\n ['HTMLTableRowElement', 'tr'],\n ['HTMLTrackElement', 'track'],\n ['HTMLUListElement', 'ul'],\n ['HTMLVideoElement', 'video'],\n ['HTMLHeadingElement', 'h1'],\n ['HTMLBodyElement', 'body']\n];\n\nexport const DOM_EVENT_NAMES = ['click', 'dblclick', 'mousedown', 'mouseenter', 'mouseleave', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'contextmenu', 'keydown', 'keypress', 'keyup', 'blur', 'change', 'focus', 'focusin', 'focusout', 'input', 'invalid', 'reset', 'search', 'select', 'submit', 'drag', 'dragend', 'dragenter', 'dragleave', 'dragover', 'dragstart', 'drop', 'copy', 'cut', 'paste', 'abort', 'canplay', 'canplaythrough', 'durationchange', 'emptied', 'ended', 'error', 'loadeddata', 'loadedmetadata', 'loadstart', 'pause', 'play', 'playing', 'progress', 'ratechange', 'seeked', 'seeking', 'stalled', 'suspend', 'timeupdate', 'volumechange', 'waiting', 'scroll', 'resize', 'load', 'hashchange', 'connected'];\n\nexport const BROWSER_GLOBALS = ['window', 'document', 'Node', 'Element', 'HTMLElement', 'DocumentFragment', 'CustomEvent', 'customElements', 'NodeFilter', ...HTML_TAG_ENTRIES.map(([className]) => className)];\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|