@hyperfixi/behaviors 2.2.0 → 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.
Files changed (131) hide show
  1. package/dist/all.browser.global.js +316 -54
  2. package/dist/all.browser.global.js.map +1 -1
  3. package/dist/autodismiss.browser.global.js +54 -2
  4. package/dist/autodismiss.browser.global.js.map +1 -1
  5. package/dist/behaviors/autodismiss.cjs +54 -18
  6. package/dist/behaviors/autodismiss.cjs.map +1 -1
  7. package/dist/behaviors/autodismiss.js +2 -2
  8. package/dist/behaviors/clickoutside.cjs +23 -4
  9. package/dist/behaviors/clickoutside.cjs.map +1 -1
  10. package/dist/behaviors/clickoutside.js +2 -2
  11. package/dist/behaviors/clipboard.cjs +43 -21
  12. package/dist/behaviors/clipboard.cjs.map +1 -1
  13. package/dist/behaviors/clipboard.js +2 -2
  14. package/dist/behaviors/focustrap.cjs +44 -3
  15. package/dist/behaviors/focustrap.cjs.map +1 -1
  16. package/dist/behaviors/focustrap.js +2 -2
  17. package/dist/behaviors/removable.cjs +7 -4
  18. package/dist/behaviors/removable.cjs.map +1 -1
  19. package/dist/behaviors/removable.js +2 -2
  20. package/dist/behaviors/resizable.cjs +22 -14
  21. package/dist/behaviors/resizable.cjs.map +1 -1
  22. package/dist/behaviors/resizable.js +2 -2
  23. package/dist/behaviors/scrollreveal.cjs +25 -13
  24. package/dist/behaviors/scrollreveal.cjs.map +1 -1
  25. package/dist/behaviors/scrollreveal.js +2 -2
  26. package/dist/behaviors/sortable.cjs +18 -12
  27. package/dist/behaviors/sortable.cjs.map +1 -1
  28. package/dist/behaviors/sortable.js +2 -2
  29. package/dist/behaviors/tabs.cjs +80 -11
  30. package/dist/behaviors/tabs.cjs.map +1 -1
  31. package/dist/behaviors/tabs.js +2 -2
  32. package/dist/behaviors/toggleable.cjs +5 -2
  33. package/dist/behaviors/toggleable.cjs.map +1 -1
  34. package/dist/behaviors/toggleable.js +2 -2
  35. package/dist/chunk-66U2RSYJ.js +100 -0
  36. package/dist/chunk-66U2RSYJ.js.map +1 -0
  37. package/dist/{chunk-2NSKQMNM.js → chunk-7O7UOSBH.js} +2 -2
  38. package/dist/{chunk-244WSZOL.js → chunk-EKKJVXDZ.js} +2 -2
  39. package/dist/{chunk-AFGA54SA.js → chunk-F3CASJ7Q.js} +2 -2
  40. package/dist/{chunk-YHQRFUWV.js → chunk-GALKOMJ5.js} +2 -2
  41. package/dist/{chunk-272NKUJ3.js → chunk-HMU342XE.js} +8 -5
  42. package/dist/chunk-HMU342XE.js.map +1 -0
  43. package/dist/chunk-HQDYH45I.js +137 -0
  44. package/dist/chunk-HQDYH45I.js.map +1 -0
  45. package/dist/{chunk-WTUVPVSD.js → chunk-IQM32TEY.js} +2 -2
  46. package/dist/{chunk-H5Y5ARYG.js → chunk-L52AGCMP.js} +2 -2
  47. package/dist/{chunk-H2MCHR5A.js → chunk-LQJOQTBZ.js} +2 -2
  48. package/dist/{chunk-7JDV2THA.js → chunk-MVNHMYIK.js} +11 -11
  49. package/dist/{chunk-BWZ6EGII.js → chunk-NC6I6T7T.js} +19 -13
  50. package/dist/{chunk-BWZ6EGII.js.map → chunk-NC6I6T7T.js.map} +1 -1
  51. package/dist/chunk-OJ3YWO3W.js +92 -0
  52. package/dist/chunk-OJ3YWO3W.js.map +1 -0
  53. package/dist/{chunk-64DIQGQI.js → chunk-SLOXO6IY.js} +24 -5
  54. package/dist/chunk-SLOXO6IY.js.map +1 -0
  55. package/dist/{chunk-RPERQTFU.js → chunk-TLLGH5KX.js} +2 -2
  56. package/dist/{chunk-V5IWDPDP.js → chunk-U5GNXZUF.js} +23 -15
  57. package/dist/{chunk-V5IWDPDP.js.map → chunk-U5GNXZUF.js.map} +1 -1
  58. package/dist/{chunk-GPTHAUWN.js → chunk-URZGNPTQ.js} +26 -14
  59. package/dist/chunk-URZGNPTQ.js.map +1 -0
  60. package/dist/chunk-WOTZO7K4.js +92 -0
  61. package/dist/chunk-WOTZO7K4.js.map +1 -0
  62. package/dist/{chunk-JKBWIJFI.js → chunk-WPOQIMCC.js} +2 -2
  63. package/dist/{chunk-WUHHMDAA.js → chunk-XYZ7FOXJ.js} +6 -3
  64. package/dist/{chunk-WUHHMDAA.js.map → chunk-XYZ7FOXJ.js.map} +1 -1
  65. package/dist/{chunk-DYHBKDKB.js → chunk-ZZ2WSAX3.js} +2 -2
  66. package/dist/clickoutside.browser.global.js +16 -5
  67. package/dist/clickoutside.browser.global.js.map +1 -1
  68. package/dist/clipboard.browser.global.js +43 -2
  69. package/dist/clipboard.browser.global.js.map +1 -1
  70. package/dist/core.browser.global.js +5 -2
  71. package/dist/core.browser.global.js.map +1 -1
  72. package/dist/focustrap.browser.global.js +46 -5
  73. package/dist/focustrap.browser.global.js.map +1 -1
  74. package/dist/index.cjs +321 -102
  75. package/dist/index.cjs.map +1 -1
  76. package/dist/index.js +21 -21
  77. package/dist/loaders.cjs +321 -102
  78. package/dist/loaders.cjs.map +1 -1
  79. package/dist/loaders.js +11 -11
  80. package/dist/removable.browser.global.js +8 -5
  81. package/dist/removable.browser.global.js.map +1 -1
  82. package/dist/resizable.browser.global.js +24 -16
  83. package/dist/resizable.browser.global.js.map +1 -1
  84. package/dist/resolver.browser.global.js +407 -0
  85. package/dist/resolver.browser.global.js.map +1 -0
  86. package/dist/schemas/index.cjs +321 -102
  87. package/dist/schemas/index.cjs.map +1 -1
  88. package/dist/schemas/index.js +10 -10
  89. package/dist/scrollreveal.browser.global.js +27 -8
  90. package/dist/scrollreveal.browser.global.js.map +1 -1
  91. package/dist/sortable.browser.global.js +19 -13
  92. package/dist/sortable.browser.global.js.map +1 -1
  93. package/dist/tabs.browser.global.js +80 -2
  94. package/dist/tabs.browser.global.js.map +1 -1
  95. package/dist/toggleable.browser.global.js +6 -3
  96. package/dist/toggleable.browser.global.js.map +1 -1
  97. package/package.json +1 -1
  98. package/src/behavior-resolver.ts +91 -0
  99. package/src/browser-resolver-bundle.ts +42 -0
  100. package/src/schemas/autodismiss.schema.ts +54 -18
  101. package/src/schemas/clickoutside.schema.ts +22 -3
  102. package/src/schemas/clipboard.schema.ts +43 -21
  103. package/src/schemas/focustrap.schema.ts +44 -3
  104. package/src/schemas/removable.schema.ts +7 -4
  105. package/src/schemas/resizable.schema.ts +22 -14
  106. package/src/schemas/scrollreveal.schema.ts +25 -13
  107. package/src/schemas/sortable.schema.ts +18 -12
  108. package/src/schemas/tabs.schema.ts +80 -11
  109. package/src/schemas/toggleable.schema.ts +5 -2
  110. package/dist/chunk-272NKUJ3.js.map +0 -1
  111. package/dist/chunk-64DIQGQI.js.map +0 -1
  112. package/dist/chunk-GPTHAUWN.js.map +0 -1
  113. package/dist/chunk-GVJPA2EK.js +0 -68
  114. package/dist/chunk-GVJPA2EK.js.map +0 -1
  115. package/dist/chunk-QKDYW4VM.js +0 -70
  116. package/dist/chunk-QKDYW4VM.js.map +0 -1
  117. package/dist/chunk-RB7OB6OD.js +0 -51
  118. package/dist/chunk-RB7OB6OD.js.map +0 -1
  119. package/dist/chunk-ZQQZTMCJ.js +0 -64
  120. package/dist/chunk-ZQQZTMCJ.js.map +0 -1
  121. /package/dist/{chunk-2NSKQMNM.js.map → chunk-7O7UOSBH.js.map} +0 -0
  122. /package/dist/{chunk-244WSZOL.js.map → chunk-EKKJVXDZ.js.map} +0 -0
  123. /package/dist/{chunk-AFGA54SA.js.map → chunk-F3CASJ7Q.js.map} +0 -0
  124. /package/dist/{chunk-YHQRFUWV.js.map → chunk-GALKOMJ5.js.map} +0 -0
  125. /package/dist/{chunk-WTUVPVSD.js.map → chunk-IQM32TEY.js.map} +0 -0
  126. /package/dist/{chunk-H5Y5ARYG.js.map → chunk-L52AGCMP.js.map} +0 -0
  127. /package/dist/{chunk-H2MCHR5A.js.map → chunk-LQJOQTBZ.js.map} +0 -0
  128. /package/dist/{chunk-7JDV2THA.js.map → chunk-MVNHMYIK.js.map} +0 -0
  129. /package/dist/{chunk-RPERQTFU.js.map → chunk-TLLGH5KX.js.map} +0 -0
  130. /package/dist/{chunk-JKBWIJFI.js.map → chunk-WPOQIMCC.js.map} +0 -0
  131. /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 no handle set handle to me
61
- if no minWidth set minWidth to 50
62
- if no minHeight set minHeight to 50
63
- if no maxWidth set maxWidth to 9999
64
- if no maxHeight set maxHeight to 9999
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
- pointerup from document
78
- set newWidth to startWidth + (clientX - startX)
79
- set newHeight to startHeight + (clientY - startY)
80
- if newWidth < minWidth set newWidth to minWidth
81
- if newWidth > maxWidth set newWidth to maxWidth
82
- if newHeight < minHeight set newHeight to minHeight
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, rootMargin)
44
+ behavior ScrollReveal(cls, threshold, once)
52
45
  init
53
- if cls is undefined set cls to "revealed"
54
- if threshold is undefined set threshold to 0.1
55
- if once is undefined set once to true
56
- if rootMargin is undefined set rootMargin to "0px"
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 no dragClass set dragClass to "sorting"
47
+ if dragClass is undefined
48
+ set dragClass to "sorting"
49
+ end
48
50
  end
49
- on pointerdown(target, clientY) from me
50
- set item to closest <li/> in target
51
- if no item exit
52
- if handle
53
- set handleEl to target.closest(handle)
54
- if no handleEl exit
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
- halt the event
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 item
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
- 'behavior Tabs(orientation, activeTab, wrap, activeClass)',
57
- ' init',
58
- ' if orientation is undefined set orientation to "horizontal"',
59
- ' if activeTab is undefined set activeTab to 0',
60
- ' if wrap is undefined set wrap to true',
61
- ' if activeClass is undefined set activeClass to "active"',
62
- ' end',
63
- ' -- Imperative installer handles ARIA wiring and keyboard navigation',
64
- 'end',
65
- ].join('\n'),
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":[]}
@@ -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":[]}
@@ -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":[]}
@@ -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":[]}
@@ -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":[]}