@hyperfixi/behaviors 2.5.0 → 2.6.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/README.md +100 -0
- package/dist/all.browser.global.js +43 -40
- package/dist/all.browser.global.js.map +1 -1
- package/dist/autodismiss.browser.global.js +2 -2
- package/dist/autodismiss.browser.global.js.map +1 -1
- package/dist/behaviors/autodismiss.cjs +5 -54
- package/dist/behaviors/autodismiss.cjs.map +1 -1
- package/dist/behaviors/autodismiss.d.cts +3 -2
- package/dist/behaviors/autodismiss.d.ts +3 -2
- package/dist/behaviors/autodismiss.js +1 -1
- package/dist/behaviors/clickoutside.cjs +6 -28
- package/dist/behaviors/clickoutside.cjs.map +1 -1
- package/dist/behaviors/clickoutside.d.cts +3 -2
- package/dist/behaviors/clickoutside.d.ts +3 -2
- package/dist/behaviors/clickoutside.js +2 -2
- package/dist/behaviors/clipboard.cjs +30 -86
- package/dist/behaviors/clipboard.cjs.map +1 -1
- package/dist/behaviors/clipboard.d.cts +3 -2
- package/dist/behaviors/clipboard.d.ts +3 -2
- package/dist/behaviors/clipboard.js +2 -2
- package/dist/behaviors/draggable.cjs +6 -41
- package/dist/behaviors/draggable.cjs.map +1 -1
- package/dist/behaviors/draggable.d.cts +3 -3
- package/dist/behaviors/draggable.d.ts +3 -3
- package/dist/behaviors/draggable.js +2 -2
- package/dist/behaviors/focustrap.cjs +5 -81
- package/dist/behaviors/focustrap.cjs.map +1 -1
- package/dist/behaviors/focustrap.d.cts +3 -2
- package/dist/behaviors/focustrap.d.ts +3 -2
- package/dist/behaviors/focustrap.js +1 -1
- package/dist/behaviors/removable.d.cts +1 -1
- package/dist/behaviors/removable.d.ts +1 -1
- package/dist/behaviors/resizable.cjs +9 -49
- package/dist/behaviors/resizable.cjs.map +1 -1
- package/dist/behaviors/resizable.d.cts +3 -2
- package/dist/behaviors/resizable.d.ts +3 -2
- package/dist/behaviors/resizable.js +2 -2
- package/dist/behaviors/scrollreveal.cjs +5 -32
- package/dist/behaviors/scrollreveal.cjs.map +1 -1
- package/dist/behaviors/scrollreveal.d.cts +3 -2
- package/dist/behaviors/scrollreveal.d.ts +3 -2
- package/dist/behaviors/scrollreveal.js +1 -1
- package/dist/behaviors/sortable.cjs +8 -43
- package/dist/behaviors/sortable.cjs.map +1 -1
- package/dist/behaviors/sortable.d.cts +3 -2
- package/dist/behaviors/sortable.d.ts +3 -2
- package/dist/behaviors/sortable.js +2 -2
- package/dist/behaviors/tabs.cjs +5 -120
- package/dist/behaviors/tabs.cjs.map +1 -1
- package/dist/behaviors/tabs.d.cts +3 -2
- package/dist/behaviors/tabs.d.ts +3 -2
- package/dist/behaviors/tabs.js +1 -1
- package/dist/behaviors/toggleable.cjs +5 -27
- package/dist/behaviors/toggleable.cjs.map +1 -1
- package/dist/behaviors/toggleable.d.cts +3 -3
- package/dist/behaviors/toggleable.d.ts +3 -3
- package/dist/behaviors/toggleable.js +1 -1
- package/dist/{chunk-SLOXO6IY.js → chunk-26IX7QU7.js} +2 -2
- package/dist/{chunk-SLOXO6IY.js.map → chunk-26IX7QU7.js.map} +1 -1
- package/dist/chunk-2HUF6RMI.js +40 -0
- package/dist/chunk-2HUF6RMI.js.map +1 -0
- package/dist/{chunk-ZBSWTV6I.js → chunk-5LFOFVZ3.js} +5 -5
- package/dist/chunk-5LFOFVZ3.js.map +1 -0
- package/dist/{chunk-BBIIOGMF.js → chunk-6EG2MNC7.js} +6 -6
- package/dist/chunk-7NGOA3T5.js +40 -0
- package/dist/chunk-7NGOA3T5.js.map +1 -0
- package/dist/{chunk-ZZ2WSAX3.js → chunk-7TPDLB7W.js} +7 -29
- package/dist/chunk-7TPDLB7W.js.map +1 -0
- package/dist/chunk-CR3J7VV6.js +40 -0
- package/dist/chunk-CR3J7VV6.js.map +1 -0
- package/dist/chunk-EDBG2F57.js +40 -0
- package/dist/chunk-EDBG2F57.js.map +1 -0
- package/dist/{chunk-G6WR2AYR.js → chunk-FBQ3X3UY.js} +2 -2
- package/dist/chunk-FBQ3X3UY.js.map +1 -0
- package/dist/chunk-HX663BJ4.js +40 -0
- package/dist/chunk-HX663BJ4.js.map +1 -0
- package/dist/chunk-KROW43CG.js +40 -0
- package/dist/chunk-KROW43CG.js.map +1 -0
- package/dist/chunk-ORBJ7MRW.js +40 -0
- package/dist/chunk-ORBJ7MRW.js.map +1 -0
- package/dist/{chunk-V2M4W3LO.js → chunk-PDMOOWFW.js} +4 -4
- package/dist/chunk-PDMOOWFW.js.map +1 -0
- package/dist/chunk-SLSCZV4A.js +40 -0
- package/dist/chunk-SLSCZV4A.js.map +1 -0
- package/dist/chunk-WKBRZGGL.js +40 -0
- package/dist/chunk-WKBRZGGL.js.map +1 -0
- package/dist/{chunk-WOTZO7K4.js → chunk-YXS27XM6.js} +26 -23
- package/dist/chunk-YXS27XM6.js.map +1 -0
- package/dist/clickoutside.browser.global.js +3 -3
- package/dist/clickoutside.browser.global.js.map +1 -1
- package/dist/clipboard.browser.global.js +27 -24
- package/dist/clipboard.browser.global.js.map +1 -1
- package/dist/core.browser.global.js +3 -3
- package/dist/core.browser.global.js.map +1 -1
- package/dist/draggable.browser.global.js +2 -2
- package/dist/draggable.browser.global.js.map +1 -1
- package/dist/focustrap.browser.global.js +2 -2
- package/dist/focustrap.browser.global.js.map +1 -1
- package/dist/index.cjs +120 -563
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +41 -3
- package/dist/index.d.ts +41 -3
- package/dist/index.js +44 -16
- package/dist/index.js.map +1 -1
- package/dist/loaders.cjs +86 -563
- package/dist/loaders.cjs.map +1 -1
- package/dist/loaders.js +6 -6
- package/dist/registry.d.cts +1 -1
- package/dist/registry.d.ts +1 -1
- package/dist/resizable.browser.global.js +5 -5
- package/dist/resizable.browser.global.js.map +1 -1
- package/dist/resolver.browser.global.js +34 -31
- package/dist/resolver.browser.global.js.map +1 -1
- package/dist/schemas/index.cjs +34 -31
- package/dist/schemas/index.cjs.map +1 -1
- package/dist/schemas/index.d.cts +2 -2
- package/dist/schemas/index.d.ts +2 -2
- package/dist/schemas/index.js +5 -5
- package/dist/scrollreveal.browser.global.js +2 -2
- package/dist/scrollreveal.browser.global.js.map +1 -1
- package/dist/sortable.browser.global.js +4 -4
- package/dist/sortable.browser.global.js.map +1 -1
- package/dist/tabs.browser.global.js +2 -2
- package/dist/tabs.browser.global.js.map +1 -1
- package/dist/toggleable.browser.global.js +2 -2
- package/dist/toggleable.browser.global.js.map +1 -1
- package/dist/{types-BY-jB5FV.d.ts → types-DCCtVQS5.d.cts} +1 -1
- package/dist/{types-BY-jB5FV.d.cts → types-DCCtVQS5.d.ts} +1 -1
- package/package.json +4 -4
- package/src/behaviors/autodismiss.test.ts +15 -9
- package/src/behaviors/autodismiss.ts +15 -70
- package/src/behaviors/clickoutside.test.ts +17 -9
- package/src/behaviors/clickoutside.ts +13 -39
- package/src/behaviors/clipboard.test.ts +16 -10
- package/src/behaviors/clipboard.ts +15 -93
- package/src/behaviors/curated-runtime.test.ts +158 -0
- package/src/behaviors/draggable.ts +15 -59
- package/src/behaviors/experimental-runtime.test.ts +136 -0
- package/src/behaviors/focustrap.test.ts +15 -9
- package/src/behaviors/focustrap.ts +17 -121
- package/src/behaviors/integration.test.ts +9 -64
- package/src/behaviors/optional-runtime.test.ts +251 -0
- package/src/behaviors/resizable.ts +14 -61
- package/src/behaviors/scrollreveal.test.ts +17 -9
- package/src/behaviors/scrollreveal.ts +17 -41
- package/src/behaviors/sortable.ts +15 -58
- package/src/behaviors/tabs.test.ts +16 -10
- package/src/behaviors/tabs.ts +18 -160
- package/src/behaviors/toggleable.ts +14 -41
- package/src/curation.test.ts +45 -0
- package/src/curation.ts +58 -0
- package/src/index.ts +14 -0
- package/src/registry.test.ts +6 -11
- package/src/schemas/clickoutside.schema.ts +1 -1
- package/src/schemas/clipboard.schema.ts +25 -22
- package/src/schemas/draggable.schema.ts +2 -1
- package/src/schemas/resizable.schema.ts +5 -4
- package/src/schemas/sortable.schema.ts +4 -3
- package/dist/chunk-7O7UOSBH.js +0 -99
- package/dist/chunk-7O7UOSBH.js.map +0 -1
- package/dist/chunk-EKKJVXDZ.js +0 -67
- package/dist/chunk-EKKJVXDZ.js.map +0 -1
- package/dist/chunk-F3CASJ7Q.js +0 -116
- package/dist/chunk-F3CASJ7Q.js.map +0 -1
- package/dist/chunk-G6WR2AYR.js.map +0 -1
- package/dist/chunk-GALKOMJ5.js +0 -62
- package/dist/chunk-GALKOMJ5.js.map +0 -1
- package/dist/chunk-IMDFEGIT.js +0 -75
- package/dist/chunk-IMDFEGIT.js.map +0 -1
- package/dist/chunk-IT6TYVMW.js +0 -80
- package/dist/chunk-IT6TYVMW.js.map +0 -1
- package/dist/chunk-LQJOQTBZ.js +0 -89
- package/dist/chunk-LQJOQTBZ.js.map +0 -1
- package/dist/chunk-S4QDV2MH.js +0 -75
- package/dist/chunk-S4QDV2MH.js.map +0 -1
- package/dist/chunk-V2M4W3LO.js.map +0 -1
- package/dist/chunk-WOTZO7K4.js.map +0 -1
- package/dist/chunk-WPOQIMCC.js +0 -155
- package/dist/chunk-WPOQIMCC.js.map +0 -1
- package/dist/chunk-ZBSWTV6I.js.map +0 -1
- package/dist/chunk-ZZ2WSAX3.js.map +0 -1
- /package/dist/{chunk-BBIIOGMF.js.map → chunk-6EG2MNC7.js.map} +0 -0
package/dist/index.d.cts
CHANGED
|
@@ -9,8 +9,8 @@ export { default as ClickOutside, clickOutsideMetadata, clickOutsideSource, regi
|
|
|
9
9
|
export { default as FocusTrap, focusTrapMetadata, focusTrapSource, registerFocusTrap } from './behaviors/focustrap.cjs';
|
|
10
10
|
export { default as ScrollReveal, registerScrollReveal, scrollRevealMetadata, scrollRevealSource } from './behaviors/scrollreveal.cjs';
|
|
11
11
|
export { default as Tabs, registerTabs, tabsMetadata, tabsSource } from './behaviors/tabs.cjs';
|
|
12
|
-
import {
|
|
13
|
-
export { a as BehaviorModule,
|
|
12
|
+
import { b as BehaviorCategory, c as BehaviorTier, L as LokaScriptInstance } from './types-DCCtVQS5.cjs';
|
|
13
|
+
export { a as BehaviorModule, B as BehaviorSchema, E as EventSchema, P as ParameterSchema } from './types-DCCtVQS5.cjs';
|
|
14
14
|
export { getAllSchemas, getAllSchemasRecord, getAvailableBehaviors, getBehavior, getBehaviorsByCategory, getBehaviorsByTier, getRegisteredBehaviors, getSchema, hasLoader, isRegistered, loadAll, loadBehavior, preloadCategory, preloadTier, registerAllWithRuntime, registerBehavior, registerLoader, registerSchema, registerWithRuntime, tryGetBehavior, tryGetSchema } from './registry.cjs';
|
|
15
15
|
|
|
16
16
|
/**
|
|
@@ -84,6 +84,44 @@ declare const BEHAVIOR_CATEGORIES: Record<BehaviorName, BehaviorCategory>;
|
|
|
84
84
|
*/
|
|
85
85
|
declare const BEHAVIOR_TIERS: Record<BehaviorName, BehaviorTier>;
|
|
86
86
|
|
|
87
|
+
/**
|
|
88
|
+
* Curation status — the product decision about which behaviors are first-class.
|
|
89
|
+
*
|
|
90
|
+
* This is ORTHOGONAL to {@link BehaviorTier} (core/common/optional), which is about
|
|
91
|
+
* lazy-loading priority. Curation is about support level and the boundary rule:
|
|
92
|
+
*
|
|
93
|
+
* A behavior is a named, parameterized, *reusable inline script* — `on event →
|
|
94
|
+
* DOM action`. Not a component. When it needs an observer, a focus model, or an
|
|
95
|
+
* async pointer loop, it has left hyperfixi's lane.
|
|
96
|
+
*
|
|
97
|
+
* See docs-internal/BEHAVIORS_CONSOLIDATION_PLAN.md for the full rationale.
|
|
98
|
+
*/
|
|
99
|
+
type CurationStatus = 'curated' | 'optional' | 'experimental';
|
|
100
|
+
/**
|
|
101
|
+
* Curated set — reliable, runtime-tested, multilingual. The supported story.
|
|
102
|
+
* Real `on event → DOM action` behaviors (Tier A) plus two honestly-labeled
|
|
103
|
+
* JS-backed conveniences (Clipboard, AutoDismiss).
|
|
104
|
+
*/
|
|
105
|
+
declare const CURATED_BEHAVIORS: readonly ["Toggleable", "Removable", "ClickOutside", "Clipboard", "AutoDismiss"];
|
|
106
|
+
/**
|
|
107
|
+
* Optional — useful, kept, documented as primitives / nice-to-haves.
|
|
108
|
+
* FocusTrap + ClickOutside are the primitives a Modal composes from; ScrollReveal
|
|
109
|
+
* is a nice-to-have; Tabs is high-value but heavy.
|
|
110
|
+
*/
|
|
111
|
+
declare const OPTIONAL_BEHAVIORS: readonly ["FocusTrap", "ScrollReveal", "Tabs"];
|
|
112
|
+
/**
|
|
113
|
+
* Experimental — stateful async components (drag/sort/resize). These sit *beyond*
|
|
114
|
+
* the inline-scripting boundary; kept working but explicitly outside the curated,
|
|
115
|
+
* supported, marketed story.
|
|
116
|
+
*/
|
|
117
|
+
declare const EXPERIMENTAL_BEHAVIORS: readonly ["Draggable", "Sortable", "Resizable"];
|
|
118
|
+
/** Curation status for every behavior, keyed by name. */
|
|
119
|
+
declare const CURATION_STATUS: Record<string, CurationStatus>;
|
|
120
|
+
/** Curation status for a behavior name, or undefined if unknown. */
|
|
121
|
+
declare function curationStatusOf(name: string): CurationStatus | undefined;
|
|
122
|
+
/** True for the curated, supported set. */
|
|
123
|
+
declare function isCurated(name: string): boolean;
|
|
124
|
+
|
|
87
125
|
/**
|
|
88
126
|
* @hyperfixi/behaviors
|
|
89
127
|
*
|
|
@@ -137,4 +175,4 @@ declare function registerAll(hyperfixi?: LokaScriptInstance): Promise<void>;
|
|
|
137
175
|
*/
|
|
138
176
|
declare let ready: Promise<void> | null;
|
|
139
177
|
|
|
140
|
-
export { ALL_BEHAVIOR_NAMES, type AnimationBehavior, BEHAVIORS_BY_CATEGORY, BEHAVIORS_BY_TIER, BEHAVIOR_CATEGORIES, BEHAVIOR_TIERS, BehaviorCategory, type BehaviorName, BehaviorTier, type CommonBehavior, type CoreBehavior, type DataBehavior, type FormBehavior, type LayoutBehavior, LokaScriptInstance, type OptionalBehavior, type UIBehavior, ready, registerAll };
|
|
178
|
+
export { ALL_BEHAVIOR_NAMES, type AnimationBehavior, BEHAVIORS_BY_CATEGORY, BEHAVIORS_BY_TIER, BEHAVIOR_CATEGORIES, BEHAVIOR_TIERS, BehaviorCategory, type BehaviorName, BehaviorTier, CURATED_BEHAVIORS, CURATION_STATUS, type CommonBehavior, type CoreBehavior, type CurationStatus, type DataBehavior, EXPERIMENTAL_BEHAVIORS, type FormBehavior, type LayoutBehavior, LokaScriptInstance, OPTIONAL_BEHAVIORS, type OptionalBehavior, type UIBehavior, curationStatusOf, isCurated, ready, registerAll };
|
package/dist/index.d.ts
CHANGED
|
@@ -9,8 +9,8 @@ export { default as ClickOutside, clickOutsideMetadata, clickOutsideSource, regi
|
|
|
9
9
|
export { default as FocusTrap, focusTrapMetadata, focusTrapSource, registerFocusTrap } from './behaviors/focustrap.js';
|
|
10
10
|
export { default as ScrollReveal, registerScrollReveal, scrollRevealMetadata, scrollRevealSource } from './behaviors/scrollreveal.js';
|
|
11
11
|
export { default as Tabs, registerTabs, tabsMetadata, tabsSource } from './behaviors/tabs.js';
|
|
12
|
-
import {
|
|
13
|
-
export { a as BehaviorModule,
|
|
12
|
+
import { b as BehaviorCategory, c as BehaviorTier, L as LokaScriptInstance } from './types-DCCtVQS5.js';
|
|
13
|
+
export { a as BehaviorModule, B as BehaviorSchema, E as EventSchema, P as ParameterSchema } from './types-DCCtVQS5.js';
|
|
14
14
|
export { getAllSchemas, getAllSchemasRecord, getAvailableBehaviors, getBehavior, getBehaviorsByCategory, getBehaviorsByTier, getRegisteredBehaviors, getSchema, hasLoader, isRegistered, loadAll, loadBehavior, preloadCategory, preloadTier, registerAllWithRuntime, registerBehavior, registerLoader, registerSchema, registerWithRuntime, tryGetBehavior, tryGetSchema } from './registry.js';
|
|
15
15
|
|
|
16
16
|
/**
|
|
@@ -84,6 +84,44 @@ declare const BEHAVIOR_CATEGORIES: Record<BehaviorName, BehaviorCategory>;
|
|
|
84
84
|
*/
|
|
85
85
|
declare const BEHAVIOR_TIERS: Record<BehaviorName, BehaviorTier>;
|
|
86
86
|
|
|
87
|
+
/**
|
|
88
|
+
* Curation status — the product decision about which behaviors are first-class.
|
|
89
|
+
*
|
|
90
|
+
* This is ORTHOGONAL to {@link BehaviorTier} (core/common/optional), which is about
|
|
91
|
+
* lazy-loading priority. Curation is about support level and the boundary rule:
|
|
92
|
+
*
|
|
93
|
+
* A behavior is a named, parameterized, *reusable inline script* — `on event →
|
|
94
|
+
* DOM action`. Not a component. When it needs an observer, a focus model, or an
|
|
95
|
+
* async pointer loop, it has left hyperfixi's lane.
|
|
96
|
+
*
|
|
97
|
+
* See docs-internal/BEHAVIORS_CONSOLIDATION_PLAN.md for the full rationale.
|
|
98
|
+
*/
|
|
99
|
+
type CurationStatus = 'curated' | 'optional' | 'experimental';
|
|
100
|
+
/**
|
|
101
|
+
* Curated set — reliable, runtime-tested, multilingual. The supported story.
|
|
102
|
+
* Real `on event → DOM action` behaviors (Tier A) plus two honestly-labeled
|
|
103
|
+
* JS-backed conveniences (Clipboard, AutoDismiss).
|
|
104
|
+
*/
|
|
105
|
+
declare const CURATED_BEHAVIORS: readonly ["Toggleable", "Removable", "ClickOutside", "Clipboard", "AutoDismiss"];
|
|
106
|
+
/**
|
|
107
|
+
* Optional — useful, kept, documented as primitives / nice-to-haves.
|
|
108
|
+
* FocusTrap + ClickOutside are the primitives a Modal composes from; ScrollReveal
|
|
109
|
+
* is a nice-to-have; Tabs is high-value but heavy.
|
|
110
|
+
*/
|
|
111
|
+
declare const OPTIONAL_BEHAVIORS: readonly ["FocusTrap", "ScrollReveal", "Tabs"];
|
|
112
|
+
/**
|
|
113
|
+
* Experimental — stateful async components (drag/sort/resize). These sit *beyond*
|
|
114
|
+
* the inline-scripting boundary; kept working but explicitly outside the curated,
|
|
115
|
+
* supported, marketed story.
|
|
116
|
+
*/
|
|
117
|
+
declare const EXPERIMENTAL_BEHAVIORS: readonly ["Draggable", "Sortable", "Resizable"];
|
|
118
|
+
/** Curation status for every behavior, keyed by name. */
|
|
119
|
+
declare const CURATION_STATUS: Record<string, CurationStatus>;
|
|
120
|
+
/** Curation status for a behavior name, or undefined if unknown. */
|
|
121
|
+
declare function curationStatusOf(name: string): CurationStatus | undefined;
|
|
122
|
+
/** True for the curated, supported set. */
|
|
123
|
+
declare function isCurated(name: string): boolean;
|
|
124
|
+
|
|
87
125
|
/**
|
|
88
126
|
* @hyperfixi/behaviors
|
|
89
127
|
*
|
|
@@ -137,4 +175,4 @@ declare function registerAll(hyperfixi?: LokaScriptInstance): Promise<void>;
|
|
|
137
175
|
*/
|
|
138
176
|
declare let ready: Promise<void> | null;
|
|
139
177
|
|
|
140
|
-
export { ALL_BEHAVIOR_NAMES, type AnimationBehavior, BEHAVIORS_BY_CATEGORY, BEHAVIORS_BY_TIER, BEHAVIOR_CATEGORIES, BEHAVIOR_TIERS, BehaviorCategory, type BehaviorName, BehaviorTier, type CommonBehavior, type CoreBehavior, type DataBehavior, type FormBehavior, type LayoutBehavior, LokaScriptInstance, type OptionalBehavior, type UIBehavior, ready, registerAll };
|
|
178
|
+
export { ALL_BEHAVIOR_NAMES, type AnimationBehavior, BEHAVIORS_BY_CATEGORY, BEHAVIORS_BY_TIER, BEHAVIOR_CATEGORIES, BEHAVIOR_TIERS, BehaviorCategory, type BehaviorName, BehaviorTier, CURATED_BEHAVIORS, CURATION_STATUS, type CommonBehavior, type CoreBehavior, type CurationStatus, type DataBehavior, EXPERIMENTAL_BEHAVIORS, type FormBehavior, type LayoutBehavior, LokaScriptInstance, OPTIONAL_BEHAVIORS, type OptionalBehavior, type UIBehavior, curationStatusOf, isCurated, ready, registerAll };
|
package/dist/index.js
CHANGED
|
@@ -9,36 +9,36 @@ import {
|
|
|
9
9
|
resizableMetadata,
|
|
10
10
|
resizableSource,
|
|
11
11
|
resizable_default
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-7NGOA3T5.js";
|
|
13
13
|
import {
|
|
14
14
|
registerScrollReveal,
|
|
15
15
|
scrollRevealMetadata,
|
|
16
16
|
scrollRevealSource,
|
|
17
17
|
scrollreveal_default
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-KROW43CG.js";
|
|
19
19
|
import {
|
|
20
20
|
registerSortable,
|
|
21
21
|
sortableMetadata,
|
|
22
22
|
sortableSource,
|
|
23
23
|
sortable_default
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-SLSCZV4A.js";
|
|
25
25
|
import {
|
|
26
26
|
registerTabs,
|
|
27
27
|
tabsMetadata,
|
|
28
28
|
tabsSource,
|
|
29
29
|
tabs_default
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-WKBRZGGL.js";
|
|
31
31
|
import {
|
|
32
32
|
registerToggleable,
|
|
33
33
|
toggleableMetadata,
|
|
34
34
|
toggleableSource,
|
|
35
35
|
toggleable_default
|
|
36
|
-
} from "./chunk-
|
|
37
|
-
import "./chunk-
|
|
36
|
+
} from "./chunk-HX663BJ4.js";
|
|
37
|
+
import "./chunk-6EG2MNC7.js";
|
|
38
38
|
import "./chunk-HMU342XE.js";
|
|
39
|
-
import "./chunk-
|
|
39
|
+
import "./chunk-5LFOFVZ3.js";
|
|
40
40
|
import "./chunk-URZGNPTQ.js";
|
|
41
|
-
import "./chunk-
|
|
41
|
+
import "./chunk-PDMOOWFW.js";
|
|
42
42
|
import "./chunk-HQDYH45I.js";
|
|
43
43
|
import "./chunk-XYZ7FOXJ.js";
|
|
44
44
|
import {
|
|
@@ -69,35 +69,35 @@ import {
|
|
|
69
69
|
autoDismissSource,
|
|
70
70
|
autodismiss_default,
|
|
71
71
|
registerAutoDismiss
|
|
72
|
-
} from "./chunk-
|
|
72
|
+
} from "./chunk-2HUF6RMI.js";
|
|
73
73
|
import "./chunk-66U2RSYJ.js";
|
|
74
74
|
import {
|
|
75
75
|
clickOutsideMetadata,
|
|
76
76
|
clickOutsideSource,
|
|
77
77
|
clickoutside_default,
|
|
78
78
|
registerClickOutside
|
|
79
|
-
} from "./chunk-
|
|
80
|
-
import "./chunk-
|
|
79
|
+
} from "./chunk-7TPDLB7W.js";
|
|
80
|
+
import "./chunk-26IX7QU7.js";
|
|
81
81
|
import {
|
|
82
82
|
clipboardMetadata,
|
|
83
83
|
clipboardSource,
|
|
84
84
|
clipboard_default,
|
|
85
85
|
registerClipboard
|
|
86
|
-
} from "./chunk-
|
|
87
|
-
import "./chunk-
|
|
86
|
+
} from "./chunk-EDBG2F57.js";
|
|
87
|
+
import "./chunk-YXS27XM6.js";
|
|
88
88
|
import {
|
|
89
89
|
draggableMetadata,
|
|
90
90
|
draggableSource,
|
|
91
91
|
draggable_default,
|
|
92
92
|
registerDraggable
|
|
93
|
-
} from "./chunk-
|
|
94
|
-
import "./chunk-
|
|
93
|
+
} from "./chunk-ORBJ7MRW.js";
|
|
94
|
+
import "./chunk-FBQ3X3UY.js";
|
|
95
95
|
import {
|
|
96
96
|
focusTrapMetadata,
|
|
97
97
|
focusTrapSource,
|
|
98
98
|
focustrap_default,
|
|
99
99
|
registerFocusTrap
|
|
100
|
-
} from "./chunk-
|
|
100
|
+
} from "./chunk-CR3J7VV6.js";
|
|
101
101
|
import "./chunk-OJ3YWO3W.js";
|
|
102
102
|
import {
|
|
103
103
|
resolveRuntime
|
|
@@ -185,6 +185,28 @@ var BEHAVIOR_TIERS = {
|
|
|
185
185
|
"Tabs": "core"
|
|
186
186
|
};
|
|
187
187
|
|
|
188
|
+
// src/curation.ts
|
|
189
|
+
var CURATED_BEHAVIORS = [
|
|
190
|
+
"Toggleable",
|
|
191
|
+
"Removable",
|
|
192
|
+
"ClickOutside",
|
|
193
|
+
"Clipboard",
|
|
194
|
+
"AutoDismiss"
|
|
195
|
+
];
|
|
196
|
+
var OPTIONAL_BEHAVIORS = ["FocusTrap", "ScrollReveal", "Tabs"];
|
|
197
|
+
var EXPERIMENTAL_BEHAVIORS = ["Draggable", "Sortable", "Resizable"];
|
|
198
|
+
var CURATION_STATUS = {
|
|
199
|
+
...Object.fromEntries(CURATED_BEHAVIORS.map((n) => [n, "curated"])),
|
|
200
|
+
...Object.fromEntries(OPTIONAL_BEHAVIORS.map((n) => [n, "optional"])),
|
|
201
|
+
...Object.fromEntries(EXPERIMENTAL_BEHAVIORS.map((n) => [n, "experimental"]))
|
|
202
|
+
};
|
|
203
|
+
function curationStatusOf(name) {
|
|
204
|
+
return CURATION_STATUS[name];
|
|
205
|
+
}
|
|
206
|
+
function isCurated(name) {
|
|
207
|
+
return CURATION_STATUS[name] === "curated";
|
|
208
|
+
}
|
|
209
|
+
|
|
188
210
|
// src/index.ts
|
|
189
211
|
async function registerAll(hyperfixi) {
|
|
190
212
|
await Promise.all([
|
|
@@ -230,10 +252,14 @@ export {
|
|
|
230
252
|
BEHAVIORS_BY_TIER,
|
|
231
253
|
BEHAVIOR_CATEGORIES,
|
|
232
254
|
BEHAVIOR_TIERS,
|
|
255
|
+
CURATED_BEHAVIORS,
|
|
256
|
+
CURATION_STATUS,
|
|
233
257
|
clickoutside_default as ClickOutside,
|
|
234
258
|
clipboard_default as Clipboard,
|
|
235
259
|
draggable_default as Draggable,
|
|
260
|
+
EXPERIMENTAL_BEHAVIORS,
|
|
236
261
|
focustrap_default as FocusTrap,
|
|
262
|
+
OPTIONAL_BEHAVIORS,
|
|
237
263
|
removable_default as Removable,
|
|
238
264
|
resizable_default as Resizable,
|
|
239
265
|
scrollreveal_default as ScrollReveal,
|
|
@@ -246,6 +272,7 @@ export {
|
|
|
246
272
|
clickOutsideSource,
|
|
247
273
|
clipboardMetadata,
|
|
248
274
|
clipboardSource,
|
|
275
|
+
curationStatusOf,
|
|
249
276
|
draggableMetadata,
|
|
250
277
|
draggableSource,
|
|
251
278
|
focusTrapMetadata,
|
|
@@ -259,6 +286,7 @@ export {
|
|
|
259
286
|
getRegisteredBehaviors,
|
|
260
287
|
getSchema,
|
|
261
288
|
hasLoader,
|
|
289
|
+
isCurated,
|
|
262
290
|
isRegistered,
|
|
263
291
|
loadAll,
|
|
264
292
|
loadBehavior,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/generated/metadata.ts","../src/index.ts"],"sourcesContent":["/**\n * Generated Metadata\n *\n * DO NOT EDIT - Generated by scripts/generate.ts\n * Run `npm run generate` to regenerate.\n */\n\nimport type { BehaviorCategory, BehaviorTier } from '../schemas/types';\nimport type { BehaviorName } from './types';\n\n/**\n * All behavior names.\n */\nexport const ALL_BEHAVIOR_NAMES: BehaviorName[] = [\n \"Draggable\",\n \"Sortable\",\n \"Resizable\",\n \"Removable\",\n \"Toggleable\",\n \"Clipboard\",\n \"AutoDismiss\",\n \"ClickOutside\",\n \"FocusTrap\",\n \"ScrollReveal\",\n \"Tabs\"\n];\n\n/**\n * Behaviors grouped by category.\n */\nexport const BEHAVIORS_BY_CATEGORY: Record<BehaviorCategory, BehaviorName[]> = {\n \"ui\": [\n \"Draggable\",\n \"Sortable\",\n \"Resizable\",\n \"Clipboard\",\n \"AutoDismiss\",\n \"ClickOutside\",\n \"FocusTrap\",\n \"Tabs\"\n ],\n \"data\": [\n \"Removable\"\n ],\n \"animation\": [],\n \"form\": [\n \"Toggleable\"\n ],\n \"layout\": [\n \"ScrollReveal\"\n ]\n};\n\n/**\n * Behaviors grouped by tier.\n */\nexport const BEHAVIORS_BY_TIER: Record<BehaviorTier, BehaviorName[]> = {\n \"core\": [\n \"Draggable\",\n \"Toggleable\",\n \"Clipboard\",\n \"AutoDismiss\",\n \"ClickOutside\",\n \"FocusTrap\",\n \"Tabs\"\n ],\n \"common\": [\n \"Sortable\",\n \"Removable\",\n \"ScrollReveal\"\n ],\n \"optional\": [\n \"Resizable\"\n ]\n};\n\n/**\n * Category for each behavior.\n */\nexport const BEHAVIOR_CATEGORIES: Record<BehaviorName, BehaviorCategory> = {\n \"Draggable\": \"ui\",\n \"Sortable\": \"ui\",\n \"Resizable\": \"ui\",\n \"Removable\": \"data\",\n \"Toggleable\": \"form\",\n \"Clipboard\": \"ui\",\n \"AutoDismiss\": \"ui\",\n \"ClickOutside\": \"ui\",\n \"FocusTrap\": \"ui\",\n \"ScrollReveal\": \"layout\",\n \"Tabs\": \"ui\"\n};\n\n/**\n * Tier for each behavior.\n */\nexport const BEHAVIOR_TIERS: Record<BehaviorName, BehaviorTier> = {\n \"Draggable\": \"core\",\n \"Sortable\": \"common\",\n \"Resizable\": \"optional\",\n \"Removable\": \"common\",\n \"Toggleable\": \"core\",\n \"Clipboard\": \"core\",\n \"AutoDismiss\": \"core\",\n \"ClickOutside\": \"core\",\n \"FocusTrap\": \"core\",\n \"ScrollReveal\": \"common\",\n \"Tabs\": \"core\"\n};\n","/**\n * @hyperfixi/behaviors\n *\n * Reusable hyperscript behaviors for LokaScript.\n * Each behavior can be imported individually for tree-shaking,\n * or all behaviors can be registered at once.\n *\n * @example Individual import (tree-shakeable)\n * ```javascript\n * import { registerDraggable } from '@hyperfixi/behaviors/draggable';\n * await registerDraggable();\n * ```\n *\n * @example Import all\n * ```javascript\n * import { registerAll } from '@hyperfixi/behaviors';\n * await registerAll();\n * ```\n *\n * @example Registry-based lazy loading\n * ```javascript\n * import { loadBehavior, getBehaviorsByCategory } from '@hyperfixi/behaviors';\n * await loadBehavior('Draggable');\n * const uiBehaviors = getBehaviorsByCategory('ui');\n * ```\n *\n * @example CDN usage\n * ```html\n * <script src=\"lokascript-browser.js\"></script>\n * <script src=\"@hyperfixi/behaviors/draggable.browser.js\"></script>\n * <!-- Draggable is auto-registered -->\n * ```\n */\n\n// =============================================================================\n// Re-export individual behaviors\n// =============================================================================\n\nexport {\n draggableSource,\n draggableMetadata,\n registerDraggable,\n default as Draggable,\n} from './behaviors/draggable';\n\nexport {\n removableSource,\n removableMetadata,\n registerRemovable,\n default as Removable,\n} from './behaviors/removable';\n\nexport {\n toggleableSource,\n toggleableMetadata,\n registerToggleable,\n default as Toggleable,\n} from './behaviors/toggleable';\n\nexport {\n sortableSource,\n sortableMetadata,\n registerSortable,\n default as Sortable,\n} from './behaviors/sortable';\n\nexport {\n resizableSource,\n resizableMetadata,\n registerResizable,\n default as Resizable,\n} from './behaviors/resizable';\n\nexport {\n clipboardSource,\n clipboardMetadata,\n registerClipboard,\n default as Clipboard,\n} from './behaviors/clipboard';\n\nexport {\n autoDismissSource,\n autoDismissMetadata,\n registerAutoDismiss,\n default as AutoDismiss,\n} from './behaviors/autodismiss';\n\nexport {\n clickOutsideSource,\n clickOutsideMetadata,\n registerClickOutside,\n default as ClickOutside,\n} from './behaviors/clickoutside';\n\nexport {\n focusTrapSource,\n focusTrapMetadata,\n registerFocusTrap,\n default as FocusTrap,\n} from './behaviors/focustrap';\n\nexport {\n scrollRevealSource,\n scrollRevealMetadata,\n registerScrollReveal,\n default as ScrollReveal,\n} from './behaviors/scrollreveal';\n\nexport { tabsSource, tabsMetadata, registerTabs, default as Tabs } from './behaviors/tabs';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type {\n BehaviorSchema,\n BehaviorCategory,\n BehaviorTier,\n ParameterSchema,\n EventSchema,\n BehaviorModule,\n LokaScriptInstance,\n} from './schemas/types';\n\n// =============================================================================\n// Initialize registry with loaders (populates schemas and loaders)\n// =============================================================================\n\nimport './loaders';\n\n// =============================================================================\n// Registry exports\n// =============================================================================\n\nexport {\n // Registration\n registerBehavior,\n registerSchema,\n registerLoader,\n // Query (sync)\n getBehavior,\n tryGetBehavior,\n getSchema,\n tryGetSchema,\n isRegistered,\n hasLoader,\n getRegisteredBehaviors,\n getAvailableBehaviors,\n // Query by metadata\n getBehaviorsByCategory,\n getBehaviorsByTier,\n getAllSchemas,\n getAllSchemasRecord,\n // Lazy loading (async)\n loadBehavior,\n preloadTier,\n preloadCategory,\n loadAll,\n // Runtime registration\n registerWithRuntime,\n registerAllWithRuntime,\n} from './registry';\n\n// =============================================================================\n// Generated types and metadata\n// =============================================================================\n\nexport type {\n BehaviorName,\n UIBehavior,\n DataBehavior,\n AnimationBehavior,\n FormBehavior,\n LayoutBehavior,\n CoreBehavior,\n CommonBehavior,\n OptionalBehavior,\n} from './generated/types';\n\nexport {\n ALL_BEHAVIOR_NAMES,\n BEHAVIORS_BY_CATEGORY,\n BEHAVIORS_BY_TIER,\n BEHAVIOR_CATEGORIES,\n BEHAVIOR_TIERS,\n} from './generated/metadata';\n\n// =============================================================================\n// Convenience functions\n// =============================================================================\n\nimport { registerDraggable } from './behaviors/draggable';\nimport { registerRemovable } from './behaviors/removable';\nimport { registerToggleable } from './behaviors/toggleable';\nimport { registerSortable } from './behaviors/sortable';\nimport { registerResizable } from './behaviors/resizable';\nimport { registerClipboard } from './behaviors/clipboard';\nimport { registerAutoDismiss } from './behaviors/autodismiss';\nimport { registerClickOutside } from './behaviors/clickoutside';\nimport { registerFocusTrap } from './behaviors/focustrap';\nimport { registerScrollReveal } from './behaviors/scrollreveal';\nimport { registerTabs } from './behaviors/tabs';\nimport type { LokaScriptInstance } from './schemas/types';\nimport { resolveRuntime } from './schemas/types';\nimport type { LokaScriptWindow } from './schemas/types';\n\n/**\n * Register all behaviors with HyperFixi.\n *\n * @param hyperfixi - The hyperfixi instance (defaults to window.hyperfixi)\n * @returns Promise that resolves when all behaviors are registered\n *\n * @example\n * ```javascript\n * import { registerAll } from '@hyperfixi/behaviors';\n * await registerAll();\n * ```\n */\nexport async function registerAll(hyperfixi?: LokaScriptInstance): Promise<void> {\n await Promise.all([\n registerDraggable(hyperfixi),\n registerRemovable(hyperfixi),\n registerToggleable(hyperfixi),\n registerSortable(hyperfixi),\n registerResizable(hyperfixi),\n registerClipboard(hyperfixi),\n registerAutoDismiss(hyperfixi),\n registerClickOutside(hyperfixi),\n registerFocusTrap(hyperfixi),\n registerScrollReveal(hyperfixi),\n registerTabs(hyperfixi),\n ]);\n}\n\n// =============================================================================\n// Auto-registration for browser\n// =============================================================================\n\n/**\n * Promise that resolves when all behaviors are registered.\n * This is set when the package auto-registers in browser environments.\n */\nexport let ready: Promise<void> | null = null;\n\n// Auto-register all behaviors when loaded in browser with hyperfixi available\nconst _runtime = resolveRuntime();\nif (_runtime) {\n const lsWin = window as unknown as LokaScriptWindow;\n ready = registerAll(_runtime);\n\n lsWin.__hyperfixi_behaviors_ready = ready;\n\n ready\n .then(() => {\n const hf = _runtime as LokaScriptInstance & {\n attributeProcessor?: { scanAndProcessAll: () => Promise<void> };\n processNode?: (node: Document) => void;\n };\n const savedPromise = lsWin.__hyperfixi_behaviors_ready;\n delete lsWin.__hyperfixi_behaviors_ready;\n\n if (hf.attributeProcessor?.scanAndProcessAll) {\n hf.attributeProcessor.scanAndProcessAll().finally(() => {\n lsWin.__hyperfixi_behaviors_ready = savedPromise;\n });\n } else if (hf.processNode) {\n hf.processNode(document);\n lsWin.__hyperfixi_behaviors_ready = savedPromise;\n }\n })\n .catch(err => {\n console.error('[behaviors] Auto-registration failed:', err);\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaO,IAAM,qBAAqC;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAKO,IAAM,wBAAkE;AAAA,EAC7E,MAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN;AAAA,EACF;AAAA,EACA,aAAa,CAAC;AAAA,EACd,QAAQ;AAAA,IACN;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR;AAAA,EACF;AACF;AAKO,IAAM,oBAA0D;AAAA,EACrE,QAAQ;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,YAAY;AAAA,IACV;AAAA,EACF;AACF;AAKO,IAAM,sBAA8D;AAAA,EACzE,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,aAAa;AAAA,EACb,cAAc;AAAA,EACd,aAAa;AAAA,EACb,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,QAAQ;AACV;AAKO,IAAM,iBAAqD;AAAA,EAChE,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,aAAa;AAAA,EACb,cAAc;AAAA,EACd,aAAa;AAAA,EACb,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,QAAQ;AACV;;;AC8GA,eAAsB,YAAY,WAA+C;AAC/E,QAAM,QAAQ,IAAI;AAAA,IAChB,kBAAkB,SAAS;AAAA,IAC3B,kBAAkB,SAAS;AAAA,IAC3B,mBAAmB,SAAS;AAAA,IAC5B,iBAAiB,SAAS;AAAA,IAC1B,kBAAkB,SAAS;AAAA,IAC3B,kBAAkB,SAAS;AAAA,IAC3B,oBAAoB,SAAS;AAAA,IAC7B,qBAAqB,SAAS;AAAA,IAC9B,kBAAkB,SAAS;AAAA,IAC3B,qBAAqB,SAAS;AAAA,IAC9B,aAAa,SAAS;AAAA,EACxB,CAAC;AACH;AAUO,IAAI,QAA8B;AAGzC,IAAM,WAAW,eAAe;AAChC,IAAI,UAAU;AACZ,QAAM,QAAQ;AACd,UAAQ,YAAY,QAAQ;AAE5B,QAAM,8BAA8B;AAEpC,QACG,KAAK,MAAM;AACV,UAAM,KAAK;AAIX,UAAM,eAAe,MAAM;AAC3B,WAAO,MAAM;AAEb,QAAI,GAAG,oBAAoB,mBAAmB;AAC5C,SAAG,mBAAmB,kBAAkB,EAAE,QAAQ,MAAM;AACtD,cAAM,8BAA8B;AAAA,MACtC,CAAC;AAAA,IACH,WAAW,GAAG,aAAa;AACzB,SAAG,YAAY,QAAQ;AACvB,YAAM,8BAA8B;AAAA,IACtC;AAAA,EACF,CAAC,EACA,MAAM,SAAO;AACZ,YAAQ,MAAM,yCAAyC,GAAG;AAAA,EAC5D,CAAC;AACL;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/generated/metadata.ts","../src/curation.ts","../src/index.ts"],"sourcesContent":["/**\n * Generated Metadata\n *\n * DO NOT EDIT - Generated by scripts/generate.ts\n * Run `npm run generate` to regenerate.\n */\n\nimport type { BehaviorCategory, BehaviorTier } from '../schemas/types';\nimport type { BehaviorName } from './types';\n\n/**\n * All behavior names.\n */\nexport const ALL_BEHAVIOR_NAMES: BehaviorName[] = [\n \"Draggable\",\n \"Sortable\",\n \"Resizable\",\n \"Removable\",\n \"Toggleable\",\n \"Clipboard\",\n \"AutoDismiss\",\n \"ClickOutside\",\n \"FocusTrap\",\n \"ScrollReveal\",\n \"Tabs\"\n];\n\n/**\n * Behaviors grouped by category.\n */\nexport const BEHAVIORS_BY_CATEGORY: Record<BehaviorCategory, BehaviorName[]> = {\n \"ui\": [\n \"Draggable\",\n \"Sortable\",\n \"Resizable\",\n \"Clipboard\",\n \"AutoDismiss\",\n \"ClickOutside\",\n \"FocusTrap\",\n \"Tabs\"\n ],\n \"data\": [\n \"Removable\"\n ],\n \"animation\": [],\n \"form\": [\n \"Toggleable\"\n ],\n \"layout\": [\n \"ScrollReveal\"\n ]\n};\n\n/**\n * Behaviors grouped by tier.\n */\nexport const BEHAVIORS_BY_TIER: Record<BehaviorTier, BehaviorName[]> = {\n \"core\": [\n \"Draggable\",\n \"Toggleable\",\n \"Clipboard\",\n \"AutoDismiss\",\n \"ClickOutside\",\n \"FocusTrap\",\n \"Tabs\"\n ],\n \"common\": [\n \"Sortable\",\n \"Removable\",\n \"ScrollReveal\"\n ],\n \"optional\": [\n \"Resizable\"\n ]\n};\n\n/**\n * Category for each behavior.\n */\nexport const BEHAVIOR_CATEGORIES: Record<BehaviorName, BehaviorCategory> = {\n \"Draggable\": \"ui\",\n \"Sortable\": \"ui\",\n \"Resizable\": \"ui\",\n \"Removable\": \"data\",\n \"Toggleable\": \"form\",\n \"Clipboard\": \"ui\",\n \"AutoDismiss\": \"ui\",\n \"ClickOutside\": \"ui\",\n \"FocusTrap\": \"ui\",\n \"ScrollReveal\": \"layout\",\n \"Tabs\": \"ui\"\n};\n\n/**\n * Tier for each behavior.\n */\nexport const BEHAVIOR_TIERS: Record<BehaviorName, BehaviorTier> = {\n \"Draggable\": \"core\",\n \"Sortable\": \"common\",\n \"Resizable\": \"optional\",\n \"Removable\": \"common\",\n \"Toggleable\": \"core\",\n \"Clipboard\": \"core\",\n \"AutoDismiss\": \"core\",\n \"ClickOutside\": \"core\",\n \"FocusTrap\": \"core\",\n \"ScrollReveal\": \"common\",\n \"Tabs\": \"core\"\n};\n","/**\n * Curation status — the product decision about which behaviors are first-class.\n *\n * This is ORTHOGONAL to {@link BehaviorTier} (core/common/optional), which is about\n * lazy-loading priority. Curation is about support level and the boundary rule:\n *\n * A behavior is a named, parameterized, *reusable inline script* — `on event →\n * DOM action`. Not a component. When it needs an observer, a focus model, or an\n * async pointer loop, it has left hyperfixi's lane.\n *\n * See docs-internal/BEHAVIORS_CONSOLIDATION_PLAN.md for the full rationale.\n */\n\nexport type CurationStatus = 'curated' | 'optional' | 'experimental';\n\n/**\n * Curated set — reliable, runtime-tested, multilingual. The supported story.\n * Real `on event → DOM action` behaviors (Tier A) plus two honestly-labeled\n * JS-backed conveniences (Clipboard, AutoDismiss).\n */\nexport const CURATED_BEHAVIORS = [\n 'Toggleable',\n 'Removable',\n 'ClickOutside',\n 'Clipboard',\n 'AutoDismiss',\n] as const;\n\n/**\n * Optional — useful, kept, documented as primitives / nice-to-haves.\n * FocusTrap + ClickOutside are the primitives a Modal composes from; ScrollReveal\n * is a nice-to-have; Tabs is high-value but heavy.\n */\nexport const OPTIONAL_BEHAVIORS = ['FocusTrap', 'ScrollReveal', 'Tabs'] as const;\n\n/**\n * Experimental — stateful async components (drag/sort/resize). These sit *beyond*\n * the inline-scripting boundary; kept working but explicitly outside the curated,\n * supported, marketed story.\n */\nexport const EXPERIMENTAL_BEHAVIORS = ['Draggable', 'Sortable', 'Resizable'] as const;\n\n/** Curation status for every behavior, keyed by name. */\nexport const CURATION_STATUS: Record<string, CurationStatus> = {\n ...Object.fromEntries(CURATED_BEHAVIORS.map(n => [n, 'curated' as const])),\n ...Object.fromEntries(OPTIONAL_BEHAVIORS.map(n => [n, 'optional' as const])),\n ...Object.fromEntries(EXPERIMENTAL_BEHAVIORS.map(n => [n, 'experimental' as const])),\n};\n\n/** Curation status for a behavior name, or undefined if unknown. */\nexport function curationStatusOf(name: string): CurationStatus | undefined {\n return CURATION_STATUS[name];\n}\n\n/** True for the curated, supported set. */\nexport function isCurated(name: string): boolean {\n return CURATION_STATUS[name] === 'curated';\n}\n","/**\n * @hyperfixi/behaviors\n *\n * Reusable hyperscript behaviors for LokaScript.\n * Each behavior can be imported individually for tree-shaking,\n * or all behaviors can be registered at once.\n *\n * @example Individual import (tree-shakeable)\n * ```javascript\n * import { registerDraggable } from '@hyperfixi/behaviors/draggable';\n * await registerDraggable();\n * ```\n *\n * @example Import all\n * ```javascript\n * import { registerAll } from '@hyperfixi/behaviors';\n * await registerAll();\n * ```\n *\n * @example Registry-based lazy loading\n * ```javascript\n * import { loadBehavior, getBehaviorsByCategory } from '@hyperfixi/behaviors';\n * await loadBehavior('Draggable');\n * const uiBehaviors = getBehaviorsByCategory('ui');\n * ```\n *\n * @example CDN usage\n * ```html\n * <script src=\"lokascript-browser.js\"></script>\n * <script src=\"@hyperfixi/behaviors/draggable.browser.js\"></script>\n * <!-- Draggable is auto-registered -->\n * ```\n */\n\n// =============================================================================\n// Re-export individual behaviors\n// =============================================================================\n\nexport {\n draggableSource,\n draggableMetadata,\n registerDraggable,\n default as Draggable,\n} from './behaviors/draggable';\n\nexport {\n removableSource,\n removableMetadata,\n registerRemovable,\n default as Removable,\n} from './behaviors/removable';\n\nexport {\n toggleableSource,\n toggleableMetadata,\n registerToggleable,\n default as Toggleable,\n} from './behaviors/toggleable';\n\nexport {\n sortableSource,\n sortableMetadata,\n registerSortable,\n default as Sortable,\n} from './behaviors/sortable';\n\nexport {\n resizableSource,\n resizableMetadata,\n registerResizable,\n default as Resizable,\n} from './behaviors/resizable';\n\nexport {\n clipboardSource,\n clipboardMetadata,\n registerClipboard,\n default as Clipboard,\n} from './behaviors/clipboard';\n\nexport {\n autoDismissSource,\n autoDismissMetadata,\n registerAutoDismiss,\n default as AutoDismiss,\n} from './behaviors/autodismiss';\n\nexport {\n clickOutsideSource,\n clickOutsideMetadata,\n registerClickOutside,\n default as ClickOutside,\n} from './behaviors/clickoutside';\n\nexport {\n focusTrapSource,\n focusTrapMetadata,\n registerFocusTrap,\n default as FocusTrap,\n} from './behaviors/focustrap';\n\nexport {\n scrollRevealSource,\n scrollRevealMetadata,\n registerScrollReveal,\n default as ScrollReveal,\n} from './behaviors/scrollreveal';\n\nexport { tabsSource, tabsMetadata, registerTabs, default as Tabs } from './behaviors/tabs';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type {\n BehaviorSchema,\n BehaviorCategory,\n BehaviorTier,\n ParameterSchema,\n EventSchema,\n BehaviorModule,\n LokaScriptInstance,\n} from './schemas/types';\n\n// =============================================================================\n// Initialize registry with loaders (populates schemas and loaders)\n// =============================================================================\n\nimport './loaders';\n\n// =============================================================================\n// Registry exports\n// =============================================================================\n\nexport {\n // Registration\n registerBehavior,\n registerSchema,\n registerLoader,\n // Query (sync)\n getBehavior,\n tryGetBehavior,\n getSchema,\n tryGetSchema,\n isRegistered,\n hasLoader,\n getRegisteredBehaviors,\n getAvailableBehaviors,\n // Query by metadata\n getBehaviorsByCategory,\n getBehaviorsByTier,\n getAllSchemas,\n getAllSchemasRecord,\n // Lazy loading (async)\n loadBehavior,\n preloadTier,\n preloadCategory,\n loadAll,\n // Runtime registration\n registerWithRuntime,\n registerAllWithRuntime,\n} from './registry';\n\n// =============================================================================\n// Generated types and metadata\n// =============================================================================\n\nexport type {\n BehaviorName,\n UIBehavior,\n DataBehavior,\n AnimationBehavior,\n FormBehavior,\n LayoutBehavior,\n CoreBehavior,\n CommonBehavior,\n OptionalBehavior,\n} from './generated/types';\n\nexport {\n ALL_BEHAVIOR_NAMES,\n BEHAVIORS_BY_CATEGORY,\n BEHAVIORS_BY_TIER,\n BEHAVIOR_CATEGORIES,\n BEHAVIOR_TIERS,\n} from './generated/metadata';\n\n// =============================================================================\n// Curation status (curated / optional / experimental) — see curation.ts\n// =============================================================================\n\nexport type { CurationStatus } from './curation';\nexport {\n CURATED_BEHAVIORS,\n OPTIONAL_BEHAVIORS,\n EXPERIMENTAL_BEHAVIORS,\n CURATION_STATUS,\n curationStatusOf,\n isCurated,\n} from './curation';\n\n// =============================================================================\n// Convenience functions\n// =============================================================================\n\nimport { registerDraggable } from './behaviors/draggable';\nimport { registerRemovable } from './behaviors/removable';\nimport { registerToggleable } from './behaviors/toggleable';\nimport { registerSortable } from './behaviors/sortable';\nimport { registerResizable } from './behaviors/resizable';\nimport { registerClipboard } from './behaviors/clipboard';\nimport { registerAutoDismiss } from './behaviors/autodismiss';\nimport { registerClickOutside } from './behaviors/clickoutside';\nimport { registerFocusTrap } from './behaviors/focustrap';\nimport { registerScrollReveal } from './behaviors/scrollreveal';\nimport { registerTabs } from './behaviors/tabs';\nimport type { LokaScriptInstance } from './schemas/types';\nimport { resolveRuntime } from './schemas/types';\nimport type { LokaScriptWindow } from './schemas/types';\n\n/**\n * Register all behaviors with HyperFixi.\n *\n * @param hyperfixi - The hyperfixi instance (defaults to window.hyperfixi)\n * @returns Promise that resolves when all behaviors are registered\n *\n * @example\n * ```javascript\n * import { registerAll } from '@hyperfixi/behaviors';\n * await registerAll();\n * ```\n */\nexport async function registerAll(hyperfixi?: LokaScriptInstance): Promise<void> {\n await Promise.all([\n registerDraggable(hyperfixi),\n registerRemovable(hyperfixi),\n registerToggleable(hyperfixi),\n registerSortable(hyperfixi),\n registerResizable(hyperfixi),\n registerClipboard(hyperfixi),\n registerAutoDismiss(hyperfixi),\n registerClickOutside(hyperfixi),\n registerFocusTrap(hyperfixi),\n registerScrollReveal(hyperfixi),\n registerTabs(hyperfixi),\n ]);\n}\n\n// =============================================================================\n// Auto-registration for browser\n// =============================================================================\n\n/**\n * Promise that resolves when all behaviors are registered.\n * This is set when the package auto-registers in browser environments.\n */\nexport let ready: Promise<void> | null = null;\n\n// Auto-register all behaviors when loaded in browser with hyperfixi available\nconst _runtime = resolveRuntime();\nif (_runtime) {\n const lsWin = window as unknown as LokaScriptWindow;\n ready = registerAll(_runtime);\n\n lsWin.__hyperfixi_behaviors_ready = ready;\n\n ready\n .then(() => {\n const hf = _runtime as LokaScriptInstance & {\n attributeProcessor?: { scanAndProcessAll: () => Promise<void> };\n processNode?: (node: Document) => void;\n };\n const savedPromise = lsWin.__hyperfixi_behaviors_ready;\n delete lsWin.__hyperfixi_behaviors_ready;\n\n if (hf.attributeProcessor?.scanAndProcessAll) {\n hf.attributeProcessor.scanAndProcessAll().finally(() => {\n lsWin.__hyperfixi_behaviors_ready = savedPromise;\n });\n } else if (hf.processNode) {\n hf.processNode(document);\n lsWin.__hyperfixi_behaviors_ready = savedPromise;\n }\n })\n .catch(err => {\n console.error('[behaviors] Auto-registration failed:', err);\n });\n}\n"],"mappings":"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","names":[]}
|