@hyperfixi/behaviors 2.2.1 → 2.3.0
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/all.browser.global.js +316 -54
- package/dist/all.browser.global.js.map +1 -1
- package/dist/autodismiss.browser.global.js +54 -2
- package/dist/autodismiss.browser.global.js.map +1 -1
- package/dist/behaviors/autodismiss.cjs +54 -18
- package/dist/behaviors/autodismiss.cjs.map +1 -1
- package/dist/behaviors/autodismiss.js +2 -2
- package/dist/behaviors/clickoutside.cjs +23 -4
- package/dist/behaviors/clickoutside.cjs.map +1 -1
- package/dist/behaviors/clickoutside.js +2 -2
- package/dist/behaviors/clipboard.cjs +43 -21
- package/dist/behaviors/clipboard.cjs.map +1 -1
- package/dist/behaviors/clipboard.js +2 -2
- package/dist/behaviors/focustrap.cjs +44 -3
- package/dist/behaviors/focustrap.cjs.map +1 -1
- package/dist/behaviors/focustrap.js +2 -2
- package/dist/behaviors/removable.cjs +7 -4
- package/dist/behaviors/removable.cjs.map +1 -1
- package/dist/behaviors/removable.js +2 -2
- package/dist/behaviors/resizable.cjs +22 -14
- package/dist/behaviors/resizable.cjs.map +1 -1
- package/dist/behaviors/resizable.js +2 -2
- package/dist/behaviors/scrollreveal.cjs +25 -13
- package/dist/behaviors/scrollreveal.cjs.map +1 -1
- package/dist/behaviors/scrollreveal.js +2 -2
- package/dist/behaviors/sortable.cjs +18 -12
- package/dist/behaviors/sortable.cjs.map +1 -1
- package/dist/behaviors/sortable.js +2 -2
- package/dist/behaviors/tabs.cjs +80 -11
- package/dist/behaviors/tabs.cjs.map +1 -1
- package/dist/behaviors/tabs.js +2 -2
- package/dist/behaviors/toggleable.cjs +5 -2
- package/dist/behaviors/toggleable.cjs.map +1 -1
- package/dist/behaviors/toggleable.js +2 -2
- package/dist/chunk-66U2RSYJ.js +100 -0
- package/dist/chunk-66U2RSYJ.js.map +1 -0
- package/dist/{chunk-2NSKQMNM.js → chunk-7O7UOSBH.js} +2 -2
- package/dist/{chunk-244WSZOL.js → chunk-EKKJVXDZ.js} +2 -2
- package/dist/{chunk-AFGA54SA.js → chunk-F3CASJ7Q.js} +2 -2
- package/dist/{chunk-YHQRFUWV.js → chunk-GALKOMJ5.js} +2 -2
- package/dist/{chunk-272NKUJ3.js → chunk-HMU342XE.js} +8 -5
- package/dist/chunk-HMU342XE.js.map +1 -0
- package/dist/chunk-HQDYH45I.js +137 -0
- package/dist/chunk-HQDYH45I.js.map +1 -0
- package/dist/{chunk-WTUVPVSD.js → chunk-IQM32TEY.js} +2 -2
- package/dist/{chunk-H5Y5ARYG.js → chunk-L52AGCMP.js} +2 -2
- package/dist/{chunk-H2MCHR5A.js → chunk-LQJOQTBZ.js} +2 -2
- package/dist/{chunk-7JDV2THA.js → chunk-MVNHMYIK.js} +11 -11
- package/dist/{chunk-BWZ6EGII.js → chunk-NC6I6T7T.js} +19 -13
- package/dist/{chunk-BWZ6EGII.js.map → chunk-NC6I6T7T.js.map} +1 -1
- package/dist/chunk-OJ3YWO3W.js +92 -0
- package/dist/chunk-OJ3YWO3W.js.map +1 -0
- package/dist/{chunk-64DIQGQI.js → chunk-SLOXO6IY.js} +24 -5
- package/dist/chunk-SLOXO6IY.js.map +1 -0
- package/dist/{chunk-RPERQTFU.js → chunk-TLLGH5KX.js} +2 -2
- package/dist/{chunk-V5IWDPDP.js → chunk-U5GNXZUF.js} +23 -15
- package/dist/{chunk-V5IWDPDP.js.map → chunk-U5GNXZUF.js.map} +1 -1
- package/dist/{chunk-GPTHAUWN.js → chunk-URZGNPTQ.js} +26 -14
- package/dist/chunk-URZGNPTQ.js.map +1 -0
- package/dist/chunk-WOTZO7K4.js +92 -0
- package/dist/chunk-WOTZO7K4.js.map +1 -0
- package/dist/{chunk-JKBWIJFI.js → chunk-WPOQIMCC.js} +2 -2
- package/dist/{chunk-WUHHMDAA.js → chunk-XYZ7FOXJ.js} +6 -3
- package/dist/{chunk-WUHHMDAA.js.map → chunk-XYZ7FOXJ.js.map} +1 -1
- package/dist/{chunk-DYHBKDKB.js → chunk-ZZ2WSAX3.js} +2 -2
- package/dist/clickoutside.browser.global.js +16 -5
- package/dist/clickoutside.browser.global.js.map +1 -1
- package/dist/clipboard.browser.global.js +43 -2
- package/dist/clipboard.browser.global.js.map +1 -1
- package/dist/core.browser.global.js +5 -2
- package/dist/core.browser.global.js.map +1 -1
- package/dist/focustrap.browser.global.js +46 -5
- package/dist/focustrap.browser.global.js.map +1 -1
- package/dist/index.cjs +321 -102
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +21 -21
- package/dist/loaders.cjs +321 -102
- package/dist/loaders.cjs.map +1 -1
- package/dist/loaders.js +11 -11
- package/dist/removable.browser.global.js +8 -5
- package/dist/removable.browser.global.js.map +1 -1
- package/dist/resizable.browser.global.js +24 -16
- package/dist/resizable.browser.global.js.map +1 -1
- package/dist/resolver.browser.global.js +407 -0
- package/dist/resolver.browser.global.js.map +1 -0
- package/dist/schemas/index.cjs +321 -102
- package/dist/schemas/index.cjs.map +1 -1
- package/dist/schemas/index.js +10 -10
- package/dist/scrollreveal.browser.global.js +27 -8
- package/dist/scrollreveal.browser.global.js.map +1 -1
- package/dist/sortable.browser.global.js +19 -13
- package/dist/sortable.browser.global.js.map +1 -1
- package/dist/tabs.browser.global.js +80 -2
- package/dist/tabs.browser.global.js.map +1 -1
- package/dist/toggleable.browser.global.js +6 -3
- package/dist/toggleable.browser.global.js.map +1 -1
- package/package.json +1 -1
- package/src/behavior-resolver.ts +91 -0
- package/src/browser-resolver-bundle.ts +42 -0
- package/src/schemas/autodismiss.schema.ts +54 -18
- package/src/schemas/clickoutside.schema.ts +22 -3
- package/src/schemas/clipboard.schema.ts +43 -21
- package/src/schemas/focustrap.schema.ts +44 -3
- package/src/schemas/removable.schema.ts +7 -4
- package/src/schemas/resizable.schema.ts +22 -14
- package/src/schemas/scrollreveal.schema.ts +25 -13
- package/src/schemas/sortable.schema.ts +18 -12
- package/src/schemas/tabs.schema.ts +80 -11
- package/src/schemas/toggleable.schema.ts +5 -2
- package/dist/chunk-272NKUJ3.js.map +0 -1
- package/dist/chunk-64DIQGQI.js.map +0 -1
- package/dist/chunk-GPTHAUWN.js.map +0 -1
- package/dist/chunk-GVJPA2EK.js +0 -68
- package/dist/chunk-GVJPA2EK.js.map +0 -1
- package/dist/chunk-QKDYW4VM.js +0 -70
- package/dist/chunk-QKDYW4VM.js.map +0 -1
- package/dist/chunk-RB7OB6OD.js +0 -51
- package/dist/chunk-RB7OB6OD.js.map +0 -1
- package/dist/chunk-ZQQZTMCJ.js +0 -64
- package/dist/chunk-ZQQZTMCJ.js.map +0 -1
- /package/dist/{chunk-2NSKQMNM.js.map → chunk-7O7UOSBH.js.map} +0 -0
- /package/dist/{chunk-244WSZOL.js.map → chunk-EKKJVXDZ.js.map} +0 -0
- /package/dist/{chunk-AFGA54SA.js.map → chunk-F3CASJ7Q.js.map} +0 -0
- /package/dist/{chunk-YHQRFUWV.js.map → chunk-GALKOMJ5.js.map} +0 -0
- /package/dist/{chunk-WTUVPVSD.js.map → chunk-IQM32TEY.js.map} +0 -0
- /package/dist/{chunk-H5Y5ARYG.js.map → chunk-L52AGCMP.js.map} +0 -0
- /package/dist/{chunk-H2MCHR5A.js.map → chunk-LQJOQTBZ.js.map} +0 -0
- /package/dist/{chunk-7JDV2THA.js.map → chunk-MVNHMYIK.js.map} +0 -0
- /package/dist/{chunk-RPERQTFU.js.map → chunk-TLLGH5KX.js.map} +0 -0
- /package/dist/{chunk-JKBWIJFI.js.map → chunk-WPOQIMCC.js.map} +0 -0
- /package/dist/{chunk-DYHBKDKB.js.map → chunk-ZZ2WSAX3.js.map} +0 -0
|
@@ -57,11 +57,21 @@ export const resizableSchema: BehaviorSchema = {
|
|
|
57
57
|
source: `
|
|
58
58
|
behavior Resizable(handle, minWidth, minHeight, maxWidth, maxHeight)
|
|
59
59
|
init
|
|
60
|
-
if
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
if
|
|
64
|
-
|
|
60
|
+
if handle is undefined
|
|
61
|
+
set handle to me
|
|
62
|
+
end
|
|
63
|
+
if minWidth is undefined
|
|
64
|
+
set minWidth to 50
|
|
65
|
+
end
|
|
66
|
+
if minHeight is undefined
|
|
67
|
+
set minHeight to 50
|
|
68
|
+
end
|
|
69
|
+
if maxWidth is undefined
|
|
70
|
+
set maxWidth to 9999
|
|
71
|
+
end
|
|
72
|
+
if maxHeight is undefined
|
|
73
|
+
set maxHeight to 9999
|
|
74
|
+
end
|
|
65
75
|
end
|
|
66
76
|
on pointerdown(clientX, clientY) from handle
|
|
67
77
|
halt the event
|
|
@@ -73,15 +83,13 @@ behavior Resizable(handle, minWidth, minHeight, maxWidth, maxHeight)
|
|
|
73
83
|
set startX to clientX
|
|
74
84
|
set startY to clientY
|
|
75
85
|
repeat until event pointerup from document
|
|
76
|
-
wait for pointermove(clientX, clientY) or
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
if newHeight > maxHeight set newHeight to maxHeight
|
|
84
|
-
add { width: \${newWidth}px; height: \${newHeight}px; }
|
|
86
|
+
wait for pointermove(clientX, clientY) or pointerup from document
|
|
87
|
+
js(startWidth, startHeight, clientX, clientY, startX, startY, minWidth, maxWidth, minHeight, maxHeight, me)
|
|
88
|
+
var nw = Math.max(minWidth, Math.min(maxWidth, startWidth + (clientX - startX)));
|
|
89
|
+
var nh = Math.max(minHeight, Math.min(maxHeight, startHeight + (clientY - startY)));
|
|
90
|
+
me.style.width = nw + 'px';
|
|
91
|
+
me.style.height = nh + 'px';
|
|
92
|
+
end
|
|
85
93
|
trigger resizable:resize
|
|
86
94
|
end
|
|
87
95
|
trigger resizable:end
|
|
@@ -34,13 +34,6 @@ export const scrollRevealSchema: BehaviorSchema = {
|
|
|
34
34
|
default: true,
|
|
35
35
|
description: 'If true, disconnect observer after first intersection',
|
|
36
36
|
},
|
|
37
|
-
{
|
|
38
|
-
name: 'rootMargin',
|
|
39
|
-
type: 'string',
|
|
40
|
-
optional: true,
|
|
41
|
-
default: '0px',
|
|
42
|
-
description: 'CSS margin around the viewport for triggering earlier or later',
|
|
43
|
-
},
|
|
44
37
|
],
|
|
45
38
|
events: [
|
|
46
39
|
{ name: 'scrollreveal:enter', description: 'Fired when the element enters the viewport' },
|
|
@@ -48,13 +41,32 @@ export const scrollRevealSchema: BehaviorSchema = {
|
|
|
48
41
|
],
|
|
49
42
|
requirements: ['Uses IntersectionObserver API (supported in all modern browsers)'],
|
|
50
43
|
source: `
|
|
51
|
-
behavior ScrollReveal(cls, threshold, once
|
|
44
|
+
behavior ScrollReveal(cls, threshold, once)
|
|
52
45
|
init
|
|
53
|
-
if cls is undefined
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if
|
|
46
|
+
if cls is undefined
|
|
47
|
+
set cls to "revealed"
|
|
48
|
+
end
|
|
49
|
+
if threshold is undefined
|
|
50
|
+
set threshold to 0.1
|
|
51
|
+
end
|
|
52
|
+
if once is undefined
|
|
53
|
+
set once to true
|
|
54
|
+
end
|
|
55
|
+
js(me, cls, threshold, once)
|
|
56
|
+
var obs = new IntersectionObserver(function(entries) {
|
|
57
|
+
for (var i = 0; i < entries.length; i++) {
|
|
58
|
+
if (entries[i].isIntersecting) {
|
|
59
|
+
me.classList.add(cls);
|
|
60
|
+
me.dispatchEvent(new CustomEvent('scrollreveal:enter', { bubbles: true }));
|
|
61
|
+
if (once) obs.disconnect();
|
|
62
|
+
} else if (!once) {
|
|
63
|
+
me.classList.remove(cls);
|
|
64
|
+
me.dispatchEvent(new CustomEvent('scrollreveal:exit', { bubbles: true }));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}, { threshold: threshold });
|
|
68
|
+
obs.observe(me);
|
|
69
|
+
end
|
|
57
70
|
end
|
|
58
|
-
-- Imperative installer handles IntersectionObserver setup
|
|
59
71
|
end`.trim(),
|
|
60
72
|
};
|
|
@@ -44,25 +44,31 @@ export const sortableSchema: BehaviorSchema = {
|
|
|
44
44
|
source: `
|
|
45
45
|
behavior Sortable(handle, dragClass)
|
|
46
46
|
init
|
|
47
|
-
if
|
|
47
|
+
if dragClass is undefined
|
|
48
|
+
set dragClass to "sorting"
|
|
49
|
+
end
|
|
48
50
|
end
|
|
49
|
-
on pointerdown(
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
if
|
|
51
|
+
on pointerdown(clientY) from me
|
|
52
|
+
js(me, handle, event)
|
|
53
|
+
var target = event.target;
|
|
54
|
+
var item = target.closest("li");
|
|
55
|
+
if (!item || !me.contains(item)) return false;
|
|
56
|
+
if (handle && !target.closest(handle)) return false;
|
|
57
|
+
event.preventDefault();
|
|
58
|
+
event.stopPropagation();
|
|
59
|
+
return true;
|
|
60
|
+
end
|
|
61
|
+
if it is false
|
|
62
|
+
exit
|
|
55
63
|
end
|
|
56
|
-
|
|
57
|
-
add dragClass to item
|
|
64
|
+
add .{dragClass} to me
|
|
58
65
|
trigger sortable:start on me
|
|
59
66
|
repeat until event pointerup from document
|
|
60
67
|
wait for pointermove(clientY) from document
|
|
61
68
|
trigger sortable:move on me
|
|
62
69
|
end
|
|
63
|
-
remove dragClass from
|
|
70
|
+
remove .{dragClass} from me
|
|
64
71
|
trigger sortable:end on me
|
|
65
72
|
end
|
|
66
|
-
end
|
|
67
|
-
`.trim(),
|
|
73
|
+
end`.trim(),
|
|
68
74
|
};
|
|
@@ -52,15 +52,84 @@ export const tabsSchema: BehaviorSchema = {
|
|
|
52
52
|
'Manages aria-selected, aria-controls, aria-labelledby, and tabindex',
|
|
53
53
|
'Keyboard: Arrow keys navigate, Home/End jump to first/last, Tab exits tablist',
|
|
54
54
|
],
|
|
55
|
-
source:
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
55
|
+
source: `
|
|
56
|
+
behavior Tabs(orientation, activeTab, wrap, activeClass)
|
|
57
|
+
init
|
|
58
|
+
if orientation is undefined
|
|
59
|
+
set orientation to "horizontal"
|
|
60
|
+
end
|
|
61
|
+
if activeTab is undefined
|
|
62
|
+
set activeTab to 0
|
|
63
|
+
end
|
|
64
|
+
if wrap is undefined
|
|
65
|
+
set wrap to true
|
|
66
|
+
end
|
|
67
|
+
if activeClass is undefined
|
|
68
|
+
set activeClass to "active"
|
|
69
|
+
end
|
|
70
|
+
js(me, orientation, activeTab, wrap, activeClass)
|
|
71
|
+
var tabs = Array.from(me.querySelectorAll('[role="tab"]'));
|
|
72
|
+
var panels = Array.from(me.querySelectorAll('[role="tabpanel"]'));
|
|
73
|
+
if (tabs.length === 0 || panels.length === 0) return;
|
|
74
|
+
var tablist = me.querySelector('[role="tablist"]') || tabs[0].parentElement;
|
|
75
|
+
if (tablist) tablist.setAttribute('aria-orientation', orientation);
|
|
76
|
+
var count = Math.min(tabs.length, panels.length);
|
|
77
|
+
var idN = 0;
|
|
78
|
+
for (var i = 0; i < count; i++) {
|
|
79
|
+
if (!tabs[i].id) tabs[i].id = 'tab-' + (++idN);
|
|
80
|
+
if (!panels[i].id) panels[i].id = 'tabpanel-' + idN;
|
|
81
|
+
tabs[i].setAttribute('aria-controls', panels[i].id);
|
|
82
|
+
panels[i].setAttribute('aria-labelledby', tabs[i].id);
|
|
83
|
+
}
|
|
84
|
+
var cur = Math.max(0, Math.min(activeTab, count - 1));
|
|
85
|
+
function activate(idx, prev) {
|
|
86
|
+
if (idx === prev || idx < 0 || idx >= count) return false;
|
|
87
|
+
var ev = new CustomEvent('tabs:change', { bubbles: true, cancelable: true, detail: { index: idx, previousIndex: prev } });
|
|
88
|
+
me.dispatchEvent(ev);
|
|
89
|
+
if (ev.defaultPrevented) return false;
|
|
90
|
+
if (prev >= 0 && prev < count) {
|
|
91
|
+
tabs[prev].setAttribute('aria-selected', 'false');
|
|
92
|
+
tabs[prev].setAttribute('tabindex', '-1');
|
|
93
|
+
tabs[prev].classList.remove(activeClass);
|
|
94
|
+
panels[prev].setAttribute('aria-hidden', 'true');
|
|
95
|
+
panels[prev].classList.remove(activeClass);
|
|
96
|
+
}
|
|
97
|
+
tabs[idx].setAttribute('aria-selected', 'true');
|
|
98
|
+
tabs[idx].setAttribute('tabindex', '0');
|
|
99
|
+
tabs[idx].classList.add(activeClass);
|
|
100
|
+
panels[idx].setAttribute('aria-hidden', 'false');
|
|
101
|
+
panels[idx].classList.add(activeClass);
|
|
102
|
+
cur = idx;
|
|
103
|
+
me.dispatchEvent(new CustomEvent('tabs:changed', { bubbles: true, detail: { index: idx } }));
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
for (var j = 0; j < count; j++) {
|
|
107
|
+
tabs[j].setAttribute('aria-selected', 'false');
|
|
108
|
+
tabs[j].setAttribute('tabindex', '-1');
|
|
109
|
+
panels[j].setAttribute('aria-hidden', 'true');
|
|
110
|
+
panels[j].classList.remove(activeClass);
|
|
111
|
+
}
|
|
112
|
+
tabs[cur].setAttribute('aria-selected', 'true');
|
|
113
|
+
tabs[cur].setAttribute('tabindex', '0');
|
|
114
|
+
tabs[cur].classList.add(activeClass);
|
|
115
|
+
panels[cur].setAttribute('aria-hidden', 'false');
|
|
116
|
+
panels[cur].classList.add(activeClass);
|
|
117
|
+
for (var k = 0; k < count; k++) {
|
|
118
|
+
(function(idx) {
|
|
119
|
+
tabs[idx].addEventListener('click', function() { if (activate(idx, cur)) tabs[idx].focus(); });
|
|
120
|
+
})(k);
|
|
121
|
+
}
|
|
122
|
+
(tablist || me).addEventListener('keydown', function(e) {
|
|
123
|
+
var nk = orientation === 'horizontal' ? 'ArrowRight' : 'ArrowDown';
|
|
124
|
+
var pk = orientation === 'horizontal' ? 'ArrowLeft' : 'ArrowUp';
|
|
125
|
+
var next = null;
|
|
126
|
+
if (e.key === nk) { next = cur + 1; if (next >= count) next = wrap ? 0 : null; }
|
|
127
|
+
else if (e.key === pk) { next = cur - 1; if (next < 0) next = wrap ? count - 1 : null; }
|
|
128
|
+
else if (e.key === 'Home') next = 0;
|
|
129
|
+
else if (e.key === 'End') next = count - 1;
|
|
130
|
+
if (next !== null) { e.preventDefault(); if (activate(next, cur)) tabs[next].focus(); }
|
|
131
|
+
});
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
end`.trim(),
|
|
66
135
|
};
|
|
@@ -44,7 +44,10 @@ behavior Toggleable(cls, target)
|
|
|
44
44
|
end
|
|
45
45
|
on click
|
|
46
46
|
toggle .{cls} on target
|
|
47
|
+
js(target, cls)
|
|
48
|
+
var eventName = target.classList.contains(cls) ? 'toggleable:on' : 'toggleable:off';
|
|
49
|
+
target.dispatchEvent(new CustomEvent(eventName, { bubbles: true }));
|
|
50
|
+
end
|
|
47
51
|
end
|
|
48
|
-
end
|
|
49
|
-
`.trim(),
|
|
52
|
+
end`.trim(),
|
|
50
53
|
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schemas/removable.schema.ts"],"sourcesContent":["import type { BehaviorSchema } from './types';\n\n/**\n * Removable Behavior Schema\n *\n * Removes an element when a trigger is clicked.\n * Supports optional confirmation and transition effects.\n *\n * @since 1.2.0 — `trigger` parameter renamed to `triggerEl` to avoid\n * shadowing the hyperscript `trigger` command keyword. Users migrating\n * from v1.x should update: `install Removable(triggerEl: .close-btn)`.\n */\nexport const removableSchema: BehaviorSchema = {\n name: 'Removable',\n category: 'data',\n tier: 'common',\n version: '1.2.0',\n description: 'Makes elements removable on click',\n parameters: [\n {\n name: 'triggerEl',\n type: 'selector',\n optional: true,\n default: 'me',\n description: 'Element that triggers removal (e.g., a close button)',\n },\n {\n name: 'confirm',\n type: 'boolean',\n optional: true,\n default: false,\n description: 'Show confirmation dialog before removal',\n },\n {\n name: 'effect',\n type: 'string',\n optional: true,\n default: 'none',\n enum: ['fade', 'none'],\n description: 'Transition effect: \"fade\" or \"none\"',\n },\n ],\n events: [\n { name: 'removable:before', description: 'Fired before removal (cancelable)' },\n { name: 'removable:removed', description: 'Fired after removal' },\n ],\n source: `\nbehavior Removable(triggerEl, confirm, effect)\n init\n if triggerEl is undefined\n set triggerEl to me\n end\n end\n on click from triggerEl\n if confirm\n if not window.confirm(\"Are you sure?\")\n halt\n end\n end\n trigger removable:before\n if effect is \"fade\"\n transition opacity to 0 over 300ms\n end\n trigger removable:removed\n remove me\n end\nend\n`.trim(),\n};\n"],"mappings":";AAYO,IAAM,kBAAkC;AAAA,EAC7C,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EACT,aAAa;AAAA,EACb,YAAY;AAAA,IACV;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,EAAE,MAAM,oBAAoB,aAAa,oCAAoC;AAAA,IAC7E,EAAE,MAAM,qBAAqB,aAAa,sBAAsB;AAAA,EAClE;AAAA,EACA,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBR,KAAK;AACP;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schemas/clickoutside.schema.ts"],"sourcesContent":["import type { BehaviorSchema } from './types';\n\n/**\n * ClickOutside Behavior Schema\n *\n * Fires an event when the user clicks outside the element.\n * Uses pointerdown instead of click to avoid timing issues.\n */\nexport const clickOutsideSchema: BehaviorSchema = {\n name: 'ClickOutside',\n category: 'ui',\n tier: 'core',\n version: '1.0.0',\n description: 'Fires an event when the user clicks outside the element',\n parameters: [\n {\n name: 'active',\n type: 'boolean',\n optional: true,\n default: true,\n description: 'Whether the listener is active (can be toggled programmatically)',\n },\n ],\n events: [\n { name: 'clickoutside', description: 'Fired when a pointer press occurs outside the element' },\n ],\n requirements: ['Uses pointerdown instead of click to avoid timing issues with removed elements'],\n source: `\nbehavior ClickOutside(active)\n init\n if active is undefined set active to true\n end\n on pointerdown from document\n if active and not me.contains(event.target)\n trigger clickoutside on me\n end\n end\nend`.trim(),\n};\n"],"mappings":";AAQO,IAAM,qBAAqC;AAAA,EAChD,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EACT,aAAa;AAAA,EACb,YAAY;AAAA,IACV;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,EAAE,MAAM,gBAAgB,aAAa,wDAAwD;AAAA,EAC/F;AAAA,EACA,cAAc,CAAC,gFAAgF;AAAA,EAC/F,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAUL,KAAK;AACV;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schemas/scrollreveal.schema.ts"],"sourcesContent":["import type { BehaviorSchema } from './types';\n\n/**\n * ScrollReveal Behavior Schema\n *\n * Adds a class or fires events when the element enters or exits the viewport.\n * Uses the IntersectionObserver web standard API.\n */\nexport const scrollRevealSchema: BehaviorSchema = {\n name: 'ScrollReveal',\n category: 'layout',\n tier: 'common',\n version: '1.0.0',\n description: 'Adds a class when the element enters the viewport via IntersectionObserver',\n parameters: [\n {\n name: 'cls',\n type: 'string',\n optional: true,\n default: 'revealed',\n description: 'CSS class added when element enters viewport',\n },\n {\n name: 'threshold',\n type: 'number',\n optional: true,\n default: 0.1,\n description: 'Intersection ratio threshold (0-1) for triggering',\n },\n {\n name: 'once',\n type: 'boolean',\n optional: true,\n default: true,\n description: 'If true, disconnect observer after first intersection',\n },\n {\n name: 'rootMargin',\n type: 'string',\n optional: true,\n default: '0px',\n description: 'CSS margin around the viewport for triggering earlier or later',\n },\n ],\n events: [\n { name: 'scrollreveal:enter', description: 'Fired when the element enters the viewport' },\n { name: 'scrollreveal:exit', description: 'Fired when the element exits the viewport' },\n ],\n requirements: ['Uses IntersectionObserver API (supported in all modern browsers)'],\n source: `\nbehavior ScrollReveal(cls, threshold, once, rootMargin)\n init\n if cls is undefined set cls to \"revealed\"\n if threshold is undefined set threshold to 0.1\n if once is undefined set once to true\n if rootMargin is undefined set rootMargin to \"0px\"\n end\n -- Imperative installer handles IntersectionObserver setup\nend`.trim(),\n};\n"],"mappings":";AAQO,IAAM,qBAAqC;AAAA,EAChD,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EACT,aAAa;AAAA,EACb,YAAY;AAAA,IACV;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,EAAE,MAAM,sBAAsB,aAAa,6CAA6C;AAAA,IACxF,EAAE,MAAM,qBAAqB,aAAa,4CAA4C;AAAA,EACxF;AAAA,EACA,cAAc,CAAC,kEAAkE;AAAA,EACjF,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KASL,KAAK;AACV;","names":[]}
|
package/dist/chunk-GVJPA2EK.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
// src/schemas/tabs.schema.ts
|
|
2
|
-
var tabsSchema = {
|
|
3
|
-
name: "Tabs",
|
|
4
|
-
category: "ui",
|
|
5
|
-
tier: "core",
|
|
6
|
-
version: "1.0.0",
|
|
7
|
-
description: "WAI-ARIA compliant tabs with roving tabindex keyboard navigation. Auto-wires role, aria-selected, aria-controls, and aria-labelledby attributes.",
|
|
8
|
-
parameters: [
|
|
9
|
-
{
|
|
10
|
-
name: "orientation",
|
|
11
|
-
type: "string",
|
|
12
|
-
optional: true,
|
|
13
|
-
default: "horizontal",
|
|
14
|
-
enum: ["horizontal", "vertical"],
|
|
15
|
-
description: "Arrow key direction: horizontal (Left/Right) or vertical (Up/Down)"
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
name: "activeTab",
|
|
19
|
-
type: "number",
|
|
20
|
-
optional: true,
|
|
21
|
-
default: 0,
|
|
22
|
-
description: "Initial active tab index (zero-based)"
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
name: "wrap",
|
|
26
|
-
type: "boolean",
|
|
27
|
-
optional: true,
|
|
28
|
-
default: true,
|
|
29
|
-
description: "Wrap to first/last tab when navigating past the end"
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
name: "activeClass",
|
|
33
|
-
type: "string",
|
|
34
|
-
optional: true,
|
|
35
|
-
default: "active",
|
|
36
|
-
description: "CSS class applied to the active tab and its panel"
|
|
37
|
-
}
|
|
38
|
-
],
|
|
39
|
-
events: [
|
|
40
|
-
{
|
|
41
|
-
name: "tabs:change",
|
|
42
|
-
description: "Fired before tab selection changes (cancelable via preventDefault)"
|
|
43
|
-
},
|
|
44
|
-
{ name: "tabs:changed", description: "Fired after tab selection has changed" }
|
|
45
|
-
],
|
|
46
|
-
requirements: [
|
|
47
|
-
'Sets role="tablist" on the tab container',
|
|
48
|
-
'Sets role="tab" on tab buttons and role="tabpanel" on content panels',
|
|
49
|
-
"Manages aria-selected, aria-controls, aria-labelledby, and tabindex",
|
|
50
|
-
"Keyboard: Arrow keys navigate, Home/End jump to first/last, Tab exits tablist"
|
|
51
|
-
],
|
|
52
|
-
source: [
|
|
53
|
-
"behavior Tabs(orientation, activeTab, wrap, activeClass)",
|
|
54
|
-
" init",
|
|
55
|
-
' if orientation is undefined set orientation to "horizontal"',
|
|
56
|
-
" if activeTab is undefined set activeTab to 0",
|
|
57
|
-
" if wrap is undefined set wrap to true",
|
|
58
|
-
' if activeClass is undefined set activeClass to "active"',
|
|
59
|
-
" end",
|
|
60
|
-
" -- Imperative installer handles ARIA wiring and keyboard navigation",
|
|
61
|
-
"end"
|
|
62
|
-
].join("\n")
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
export {
|
|
66
|
-
tabsSchema
|
|
67
|
-
};
|
|
68
|
-
//# sourceMappingURL=chunk-GVJPA2EK.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schemas/tabs.schema.ts"],"sourcesContent":["import type { BehaviorSchema } from './types';\n\nexport const tabsSchema: BehaviorSchema = {\n name: 'Tabs',\n category: 'ui',\n tier: 'core',\n version: '1.0.0',\n description:\n 'WAI-ARIA compliant tabs with roving tabindex keyboard navigation. ' +\n 'Auto-wires role, aria-selected, aria-controls, and aria-labelledby attributes.',\n parameters: [\n {\n name: 'orientation',\n type: 'string',\n optional: true,\n default: 'horizontal',\n enum: ['horizontal', 'vertical'],\n description: 'Arrow key direction: horizontal (Left/Right) or vertical (Up/Down)',\n },\n {\n name: 'activeTab',\n type: 'number',\n optional: true,\n default: 0,\n description: 'Initial active tab index (zero-based)',\n },\n {\n name: 'wrap',\n type: 'boolean',\n optional: true,\n default: true,\n description: 'Wrap to first/last tab when navigating past the end',\n },\n {\n name: 'activeClass',\n type: 'string',\n optional: true,\n default: 'active',\n description: 'CSS class applied to the active tab and its panel',\n },\n ],\n events: [\n {\n name: 'tabs:change',\n description: 'Fired before tab selection changes (cancelable via preventDefault)',\n },\n { name: 'tabs:changed', description: 'Fired after tab selection has changed' },\n ],\n requirements: [\n 'Sets role=\"tablist\" on the tab container',\n 'Sets role=\"tab\" on tab buttons and role=\"tabpanel\" on content panels',\n 'Manages aria-selected, aria-controls, aria-labelledby, and tabindex',\n 'Keyboard: Arrow keys navigate, Home/End jump to first/last, Tab exits tablist',\n ],\n source: [\n 'behavior Tabs(orientation, activeTab, wrap, activeClass)',\n ' init',\n ' if orientation is undefined set orientation to \"horizontal\"',\n ' if activeTab is undefined set activeTab to 0',\n ' if wrap is undefined set wrap to true',\n ' if activeClass is undefined set activeClass to \"active\"',\n ' end',\n ' -- Imperative installer handles ARIA wiring and keyboard navigation',\n 'end',\n ].join('\\n'),\n};\n"],"mappings":";AAEO,IAAM,aAA6B;AAAA,EACxC,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EACT,aACE;AAAA,EAEF,YAAY;AAAA,IACV;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,MAAM,CAAC,cAAc,UAAU;AAAA,MAC/B,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN;AAAA,MACE,MAAM;AAAA,MACN,aAAa;AAAA,IACf;AAAA,IACA,EAAE,MAAM,gBAAgB,aAAa,wCAAwC;AAAA,EAC/E;AAAA,EACA,cAAc;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,IAAI;AACb;","names":[]}
|
package/dist/chunk-QKDYW4VM.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
// src/schemas/clipboard.schema.ts
|
|
2
|
-
var clipboardSchema = {
|
|
3
|
-
name: "Clipboard",
|
|
4
|
-
category: "ui",
|
|
5
|
-
tier: "core",
|
|
6
|
-
version: "1.0.0",
|
|
7
|
-
description: "Copies text to clipboard on click with visual feedback",
|
|
8
|
-
parameters: [
|
|
9
|
-
{
|
|
10
|
-
name: "text",
|
|
11
|
-
type: "string",
|
|
12
|
-
optional: true,
|
|
13
|
-
description: "Literal text to copy (takes priority over source)"
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
name: "source",
|
|
17
|
-
type: "selector",
|
|
18
|
-
optional: true,
|
|
19
|
-
default: "me",
|
|
20
|
-
description: "Element whose textContent or value is copied"
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
name: "feedback",
|
|
24
|
-
type: "selector",
|
|
25
|
-
optional: true,
|
|
26
|
-
description: "Element to show .copied feedback on (defaults to the installed element)"
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
name: "feedbackDuration",
|
|
30
|
-
type: "number",
|
|
31
|
-
optional: true,
|
|
32
|
-
default: 2e3,
|
|
33
|
-
description: "Duration in ms to show .copied class feedback"
|
|
34
|
-
}
|
|
35
|
-
],
|
|
36
|
-
events: [
|
|
37
|
-
{ name: "clipboard:copied", description: "Fired after text is copied successfully" },
|
|
38
|
-
{ name: "clipboard:error", description: "Fired when clipboard write fails" }
|
|
39
|
-
],
|
|
40
|
-
requirements: [
|
|
41
|
-
"navigator.clipboard.writeText() requires HTTPS or localhost",
|
|
42
|
-
'Falls back to document.execCommand("copy") for older browsers'
|
|
43
|
-
],
|
|
44
|
-
source: [
|
|
45
|
-
"behavior Clipboard(text, source, feedback, feedbackDuration)",
|
|
46
|
-
" init",
|
|
47
|
-
" if feedbackDuration is undefined set feedbackDuration to 2000",
|
|
48
|
-
" if source is undefined set source to me",
|
|
49
|
-
" end",
|
|
50
|
-
" on click",
|
|
51
|
-
" if text is not undefined",
|
|
52
|
-
" set copyText to text",
|
|
53
|
-
" else",
|
|
54
|
-
" set copyText to source's value or source's textContent",
|
|
55
|
-
" end",
|
|
56
|
-
" js(copyText) navigator.clipboard.writeText(copyText) end",
|
|
57
|
-
" set feedbackEl to feedback or me",
|
|
58
|
-
" add .copied to feedbackEl",
|
|
59
|
-
" wait feedbackDuration ms",
|
|
60
|
-
" remove .copied from feedbackEl",
|
|
61
|
-
" trigger clipboard:copied",
|
|
62
|
-
" end",
|
|
63
|
-
"end"
|
|
64
|
-
].join("\n")
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
export {
|
|
68
|
-
clipboardSchema
|
|
69
|
-
};
|
|
70
|
-
//# sourceMappingURL=chunk-QKDYW4VM.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schemas/clipboard.schema.ts"],"sourcesContent":["import type { BehaviorSchema } from './types';\n\n/**\n * Clipboard Behavior Schema\n *\n * Copies text to clipboard on click with visual feedback.\n * Uses the Clipboard API with execCommand fallback.\n */\nexport const clipboardSchema: BehaviorSchema = {\n name: 'Clipboard',\n category: 'ui',\n tier: 'core',\n version: '1.0.0',\n description: 'Copies text to clipboard on click with visual feedback',\n parameters: [\n {\n name: 'text',\n type: 'string',\n optional: true,\n description: 'Literal text to copy (takes priority over source)',\n },\n {\n name: 'source',\n type: 'selector',\n optional: true,\n default: 'me',\n description: 'Element whose textContent or value is copied',\n },\n {\n name: 'feedback',\n type: 'selector',\n optional: true,\n description: 'Element to show .copied feedback on (defaults to the installed element)',\n },\n {\n name: 'feedbackDuration',\n type: 'number',\n optional: true,\n default: 2000,\n description: 'Duration in ms to show .copied class feedback',\n },\n ],\n events: [\n { name: 'clipboard:copied', description: 'Fired after text is copied successfully' },\n { name: 'clipboard:error', description: 'Fired when clipboard write fails' },\n ],\n requirements: [\n 'navigator.clipboard.writeText() requires HTTPS or localhost',\n 'Falls back to document.execCommand(\"copy\") for older browsers',\n ],\n source: [\n 'behavior Clipboard(text, source, feedback, feedbackDuration)',\n ' init',\n ' if feedbackDuration is undefined set feedbackDuration to 2000',\n ' if source is undefined set source to me',\n ' end',\n ' on click',\n ' if text is not undefined',\n ' set copyText to text',\n ' else',\n \" set copyText to source's value or source's textContent\",\n ' end',\n ' js(copyText) navigator.clipboard.writeText(copyText) end',\n ' set feedbackEl to feedback or me',\n ' add .copied to feedbackEl',\n ' wait feedbackDuration ms',\n ' remove .copied from feedbackEl',\n ' trigger clipboard:copied',\n ' end',\n 'end',\n ].join('\\n'),\n};\n"],"mappings":";AAQO,IAAM,kBAAkC;AAAA,EAC7C,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EACT,aAAa;AAAA,EACb,YAAY;AAAA,IACV;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,EAAE,MAAM,oBAAoB,aAAa,0CAA0C;AAAA,IACnF,EAAE,MAAM,mBAAmB,aAAa,mCAAmC;AAAA,EAC7E;AAAA,EACA,cAAc;AAAA,IACZ;AAAA,IACA;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,IAAI;AACb;","names":[]}
|
package/dist/chunk-RB7OB6OD.js
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
// src/schemas/focustrap.schema.ts
|
|
2
|
-
var focusTrapSchema = {
|
|
3
|
-
name: "FocusTrap",
|
|
4
|
-
category: "ui",
|
|
5
|
-
tier: "core",
|
|
6
|
-
version: "1.0.0",
|
|
7
|
-
description: "Confines Tab navigation inside an element with ARIA support",
|
|
8
|
-
parameters: [
|
|
9
|
-
{
|
|
10
|
-
name: "active",
|
|
11
|
-
type: "boolean",
|
|
12
|
-
optional: true,
|
|
13
|
-
default: true,
|
|
14
|
-
description: "Whether the trap is active on install"
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
name: "initialFocus",
|
|
18
|
-
type: "selector",
|
|
19
|
-
optional: true,
|
|
20
|
-
description: "Element to focus when the trap activates"
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
name: "returnFocus",
|
|
24
|
-
type: "boolean",
|
|
25
|
-
optional: true,
|
|
26
|
-
default: true,
|
|
27
|
-
description: "Restore focus to the previously focused element on deactivation"
|
|
28
|
-
}
|
|
29
|
-
],
|
|
30
|
-
events: [
|
|
31
|
-
{ name: "focustrap:activated", description: "Fired when the trap is activated" },
|
|
32
|
-
{ name: "focustrap:deactivated", description: "Fired when the trap is deactivated" }
|
|
33
|
-
],
|
|
34
|
-
requirements: [
|
|
35
|
-
'Sets aria-modal="true" on the element when active',
|
|
36
|
-
"Listens for focustrap:activate and focustrap:deactivate custom events for programmatic control"
|
|
37
|
-
],
|
|
38
|
-
source: `
|
|
39
|
-
behavior FocusTrap(active, initialFocus, returnFocus)
|
|
40
|
-
init
|
|
41
|
-
if active is undefined set active to true
|
|
42
|
-
if returnFocus is undefined set returnFocus to true
|
|
43
|
-
end
|
|
44
|
-
-- Imperative installer handles Tab key trapping and focus management
|
|
45
|
-
end`.trim()
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
export {
|
|
49
|
-
focusTrapSchema
|
|
50
|
-
};
|
|
51
|
-
//# sourceMappingURL=chunk-RB7OB6OD.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schemas/focustrap.schema.ts"],"sourcesContent":["import type { BehaviorSchema } from './types';\n\n/**\n * FocusTrap Behavior Schema\n *\n * Confines Tab navigation inside an element and restores focus on release.\n * Manages aria-modal for accessibility compliance.\n */\nexport const focusTrapSchema: BehaviorSchema = {\n name: 'FocusTrap',\n category: 'ui',\n tier: 'core',\n version: '1.0.0',\n description: 'Confines Tab navigation inside an element with ARIA support',\n parameters: [\n {\n name: 'active',\n type: 'boolean',\n optional: true,\n default: true,\n description: 'Whether the trap is active on install',\n },\n {\n name: 'initialFocus',\n type: 'selector',\n optional: true,\n description: 'Element to focus when the trap activates',\n },\n {\n name: 'returnFocus',\n type: 'boolean',\n optional: true,\n default: true,\n description: 'Restore focus to the previously focused element on deactivation',\n },\n ],\n events: [\n { name: 'focustrap:activated', description: 'Fired when the trap is activated' },\n { name: 'focustrap:deactivated', description: 'Fired when the trap is deactivated' },\n ],\n requirements: [\n 'Sets aria-modal=\"true\" on the element when active',\n 'Listens for focustrap:activate and focustrap:deactivate custom events for programmatic control',\n ],\n source: `\nbehavior FocusTrap(active, initialFocus, returnFocus)\n init\n if active is undefined set active to true\n if returnFocus is undefined set returnFocus to true\n end\n -- Imperative installer handles Tab key trapping and focus management\nend`.trim(),\n};\n"],"mappings":";AAQO,IAAM,kBAAkC;AAAA,EAC7C,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EACT,aAAa;AAAA,EACb,YAAY;AAAA,IACV;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,EAAE,MAAM,uBAAuB,aAAa,mCAAmC;AAAA,IAC/E,EAAE,MAAM,yBAAyB,aAAa,qCAAqC;AAAA,EACrF;AAAA,EACA,cAAc;AAAA,IACZ;AAAA,IACA;AAAA,EACF;AAAA,EACA,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAOL,KAAK;AACV;","names":[]}
|
package/dist/chunk-ZQQZTMCJ.js
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
// src/schemas/autodismiss.schema.ts
|
|
2
|
-
var autoDismissSchema = {
|
|
3
|
-
name: "AutoDismiss",
|
|
4
|
-
category: "ui",
|
|
5
|
-
tier: "core",
|
|
6
|
-
version: "1.0.0",
|
|
7
|
-
description: "Auto-removes elements after a delay with optional pause-on-hover",
|
|
8
|
-
parameters: [
|
|
9
|
-
{
|
|
10
|
-
name: "delay",
|
|
11
|
-
type: "number",
|
|
12
|
-
optional: true,
|
|
13
|
-
default: 5e3,
|
|
14
|
-
description: "Time in ms before the element is removed"
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
name: "pauseOnHover",
|
|
18
|
-
type: "boolean",
|
|
19
|
-
optional: true,
|
|
20
|
-
default: true,
|
|
21
|
-
description: "Pause the countdown when the mouse hovers over the element"
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
name: "effect",
|
|
25
|
-
type: "string",
|
|
26
|
-
optional: true,
|
|
27
|
-
default: "none",
|
|
28
|
-
enum: ["fade", "none"],
|
|
29
|
-
description: 'Transition effect before removal: "fade" or "none"'
|
|
30
|
-
}
|
|
31
|
-
],
|
|
32
|
-
events: [
|
|
33
|
-
{ name: "autodismiss:start", description: "Fired when the countdown timer starts" },
|
|
34
|
-
{
|
|
35
|
-
name: "autodismiss:dismissed",
|
|
36
|
-
description: "Fired before removal (cancelable via preventDefault)"
|
|
37
|
-
},
|
|
38
|
-
{ name: "autodismiss:paused", description: "Fired when the timer is paused on hover" },
|
|
39
|
-
{ name: "autodismiss:resumed", description: "Fired when the timer resumes on mouseleave" }
|
|
40
|
-
],
|
|
41
|
-
source: [
|
|
42
|
-
"behavior AutoDismiss(delay, pauseOnHover, effect)",
|
|
43
|
-
" init",
|
|
44
|
-
" if delay is undefined set delay to 5000",
|
|
45
|
-
" if pauseOnHover is undefined set pauseOnHover to true",
|
|
46
|
-
' if effect is undefined set effect to "none"',
|
|
47
|
-
" end",
|
|
48
|
-
" on load",
|
|
49
|
-
" trigger autodismiss:start",
|
|
50
|
-
" wait delay ms",
|
|
51
|
-
" trigger autodismiss:dismissed",
|
|
52
|
-
' if effect is "fade"',
|
|
53
|
-
" transition opacity to 0 over 300ms",
|
|
54
|
-
" end",
|
|
55
|
-
" remove me",
|
|
56
|
-
" end",
|
|
57
|
-
"end"
|
|
58
|
-
].join("\n")
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
export {
|
|
62
|
-
autoDismissSchema
|
|
63
|
-
};
|
|
64
|
-
//# sourceMappingURL=chunk-ZQQZTMCJ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/schemas/autodismiss.schema.ts"],"sourcesContent":["import type { BehaviorSchema } from './types';\n\n/**\n * AutoDismiss Behavior Schema\n *\n * Auto-removes flash messages and toasts after a configurable delay.\n * Supports pause-on-hover and fade effect.\n */\nexport const autoDismissSchema: BehaviorSchema = {\n name: 'AutoDismiss',\n category: 'ui',\n tier: 'core',\n version: '1.0.0',\n description: 'Auto-removes elements after a delay with optional pause-on-hover',\n parameters: [\n {\n name: 'delay',\n type: 'number',\n optional: true,\n default: 5000,\n description: 'Time in ms before the element is removed',\n },\n {\n name: 'pauseOnHover',\n type: 'boolean',\n optional: true,\n default: true,\n description: 'Pause the countdown when the mouse hovers over the element',\n },\n {\n name: 'effect',\n type: 'string',\n optional: true,\n default: 'none',\n enum: ['fade', 'none'],\n description: 'Transition effect before removal: \"fade\" or \"none\"',\n },\n ],\n events: [\n { name: 'autodismiss:start', description: 'Fired when the countdown timer starts' },\n {\n name: 'autodismiss:dismissed',\n description: 'Fired before removal (cancelable via preventDefault)',\n },\n { name: 'autodismiss:paused', description: 'Fired when the timer is paused on hover' },\n { name: 'autodismiss:resumed', description: 'Fired when the timer resumes on mouseleave' },\n ],\n source: [\n 'behavior AutoDismiss(delay, pauseOnHover, effect)',\n ' init',\n ' if delay is undefined set delay to 5000',\n ' if pauseOnHover is undefined set pauseOnHover to true',\n ' if effect is undefined set effect to \"none\"',\n ' end',\n ' on load',\n ' trigger autodismiss:start',\n ' wait delay ms',\n ' trigger autodismiss:dismissed',\n ' if effect is \"fade\"',\n ' transition opacity to 0 over 300ms',\n ' end',\n ' remove me',\n ' end',\n 'end',\n ].join('\\n'),\n};\n"],"mappings":";AAQO,IAAM,oBAAoC;AAAA,EAC/C,MAAM;AAAA,EACN,UAAU;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,EACT,aAAa;AAAA,EACb,YAAY;AAAA,IACV;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,MAAM,CAAC,QAAQ,MAAM;AAAA,MACrB,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,EAAE,MAAM,qBAAqB,aAAa,wCAAwC;AAAA,IAClF;AAAA,MACE,MAAM;AAAA,MACN,aAAa;AAAA,IACf;AAAA,IACA,EAAE,MAAM,sBAAsB,aAAa,0CAA0C;AAAA,IACrF,EAAE,MAAM,uBAAuB,aAAa,6CAA6C;AAAA,EAC3F;AAAA,EACA,QAAQ;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,IAAI;AACb;","names":[]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|