@easemate/web-kit 0.1.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 +824 -0
- package/build/components/code/index.cjs +152 -0
- package/build/components/code/index.d.cts +11 -0
- package/build/components/code/index.d.ts +11 -0
- package/build/components/code/index.js +148 -0
- package/build/components/code/utils/highlight-api.cjs +18 -0
- package/build/components/code/utils/highlight-api.d.cts +7 -0
- package/build/components/code/utils/highlight-api.d.ts +7 -0
- package/build/components/code/utils/highlight-api.js +14 -0
- package/build/components/code/utils/syntax-grammars.cjs +62 -0
- package/build/components/code/utils/syntax-grammars.d.cts +7 -0
- package/build/components/code/utils/syntax-grammars.d.ts +7 -0
- package/build/components/code/utils/syntax-grammars.js +59 -0
- package/build/components/code/utils/syntax-highlighter-theme.cjs +27 -0
- package/build/components/code/utils/syntax-highlighter-theme.d.cts +3 -0
- package/build/components/code/utils/syntax-highlighter-theme.d.ts +3 -0
- package/build/components/code/utils/syntax-highlighter-theme.js +23 -0
- package/build/components/code/utils/syntax-highlighter-types.cjs +2 -0
- package/build/components/code/utils/syntax-highlighter-types.d.cts +12 -0
- package/build/components/code/utils/syntax-highlighter-types.d.ts +12 -0
- package/build/components/code/utils/syntax-highlighter-types.js +1 -0
- package/build/components/code/utils/syntax-tokenizer.cjs +63 -0
- package/build/components/code/utils/syntax-tokenizer.d.cts +3 -0
- package/build/components/code/utils/syntax-tokenizer.d.ts +3 -0
- package/build/components/code/utils/syntax-tokenizer.js +58 -0
- package/build/components/curve/bezier-conversion.cjs +23 -0
- package/build/components/curve/bezier-conversion.d.cts +2 -0
- package/build/components/curve/bezier-conversion.d.ts +2 -0
- package/build/components/curve/bezier-conversion.js +19 -0
- package/build/components/curve/canvas-controls.cjs +300 -0
- package/build/components/curve/canvas-controls.d.cts +12 -0
- package/build/components/curve/canvas-controls.d.ts +12 -0
- package/build/components/curve/canvas-controls.js +296 -0
- package/build/components/curve/canvas.cjs +1208 -0
- package/build/components/curve/canvas.d.cts +24 -0
- package/build/components/curve/canvas.d.ts +24 -0
- package/build/components/curve/canvas.js +1204 -0
- package/build/components/curve/constants.cjs +203 -0
- package/build/components/curve/constants.d.cts +23 -0
- package/build/components/curve/constants.d.ts +23 -0
- package/build/components/curve/constants.js +200 -0
- package/build/components/curve/controls.cjs +942 -0
- package/build/components/curve/controls.d.cts +37 -0
- package/build/components/curve/controls.d.ts +37 -0
- package/build/components/curve/controls.js +938 -0
- package/build/components/curve/index.cjs +335 -0
- package/build/components/curve/index.d.cts +31 -0
- package/build/components/curve/index.d.ts +31 -0
- package/build/components/curve/index.js +330 -0
- package/build/components/curve/output.cjs +141 -0
- package/build/components/curve/output.d.cts +19 -0
- package/build/components/curve/output.d.ts +19 -0
- package/build/components/curve/output.js +137 -0
- package/build/components/curve/styles.cjs +493 -0
- package/build/components/curve/styles.d.cts +6 -0
- package/build/components/curve/styles.d.ts +6 -0
- package/build/components/curve/styles.js +490 -0
- package/build/components/curve/svg-renderer.cjs +185 -0
- package/build/components/curve/svg-renderer.d.cts +9 -0
- package/build/components/curve/svg-renderer.d.ts +9 -0
- package/build/components/curve/svg-renderer.js +175 -0
- package/build/components/curve/toolbar.cjs +368 -0
- package/build/components/curve/toolbar.d.cts +26 -0
- package/build/components/curve/toolbar.d.ts +26 -0
- package/build/components/curve/toolbar.js +364 -0
- package/build/components/curve/types.cjs +10 -0
- package/build/components/curve/types.d.cts +33 -0
- package/build/components/curve/types.d.ts +33 -0
- package/build/components/curve/types.js +7 -0
- package/build/components/curve/utils.cjs +541 -0
- package/build/components/curve/utils.d.cts +33 -0
- package/build/components/curve/utils.d.ts +33 -0
- package/build/components/curve/utils.js +521 -0
- package/build/components/index.cjs +18 -0
- package/build/components/index.d.cts +2 -0
- package/build/components/index.d.ts +2 -0
- package/build/components/index.js +2 -0
- package/build/decorators/Component.cjs +127 -0
- package/build/decorators/Component.d.cts +28 -0
- package/build/decorators/Component.d.ts +28 -0
- package/build/decorators/Component.js +123 -0
- package/build/decorators/Listen.cjs +154 -0
- package/build/decorators/Listen.d.cts +18 -0
- package/build/decorators/Listen.d.ts +18 -0
- package/build/decorators/Listen.js +151 -0
- package/build/decorators/OutsideClick.cjs +64 -0
- package/build/decorators/OutsideClick.d.cts +16 -0
- package/build/decorators/OutsideClick.d.ts +16 -0
- package/build/decorators/OutsideClick.js +59 -0
- package/build/decorators/Prop.cjs +273 -0
- package/build/decorators/Prop.d.cts +22 -0
- package/build/decorators/Prop.d.ts +22 -0
- package/build/decorators/Prop.js +270 -0
- package/build/decorators/Query.cjs +79 -0
- package/build/decorators/Query.d.cts +27 -0
- package/build/decorators/Query.d.ts +27 -0
- package/build/decorators/Query.js +76 -0
- package/build/decorators/Watch.cjs +52 -0
- package/build/decorators/Watch.d.cts +11 -0
- package/build/decorators/Watch.d.ts +11 -0
- package/build/decorators/Watch.js +49 -0
- package/build/decorators/index.cjs +15 -0
- package/build/decorators/index.d.cts +6 -0
- package/build/decorators/index.d.ts +6 -0
- package/build/decorators/index.js +6 -0
- package/build/elements/button/index.cjs +214 -0
- package/build/elements/button/index.d.cts +11 -0
- package/build/elements/button/index.d.ts +11 -0
- package/build/elements/button/index.js +210 -0
- package/build/elements/checkbox/index.cjs +316 -0
- package/build/elements/checkbox/index.d.cts +14 -0
- package/build/elements/checkbox/index.d.ts +14 -0
- package/build/elements/checkbox/index.js +312 -0
- package/build/elements/color/index.cjs +154 -0
- package/build/elements/color/index.d.cts +18 -0
- package/build/elements/color/index.d.ts +18 -0
- package/build/elements/color/index.js +150 -0
- package/build/elements/color/picker.cjs +544 -0
- package/build/elements/color/picker.d.cts +37 -0
- package/build/elements/color/picker.d.ts +37 -0
- package/build/elements/color/picker.js +540 -0
- package/build/elements/color/utils.cjs +235 -0
- package/build/elements/color/utils.d.cts +37 -0
- package/build/elements/color/utils.d.ts +37 -0
- package/build/elements/color/utils.js +218 -0
- package/build/elements/dropdown/index.cjs +875 -0
- package/build/elements/dropdown/index.d.cts +30 -0
- package/build/elements/dropdown/index.d.ts +30 -0
- package/build/elements/dropdown/index.js +871 -0
- package/build/elements/field/index.cjs +82 -0
- package/build/elements/field/index.d.cts +4 -0
- package/build/elements/field/index.d.ts +4 -0
- package/build/elements/field/index.js +78 -0
- package/build/elements/icons/animation/chevron.cjs +57 -0
- package/build/elements/icons/animation/chevron.d.cts +10 -0
- package/build/elements/icons/animation/chevron.d.ts +10 -0
- package/build/elements/icons/animation/chevron.js +53 -0
- package/build/elements/icons/animation/clear.cjs +74 -0
- package/build/elements/icons/animation/clear.d.cts +3 -0
- package/build/elements/icons/animation/clear.d.ts +3 -0
- package/build/elements/icons/animation/clear.js +70 -0
- package/build/elements/icons/animation/grid.cjs +77 -0
- package/build/elements/icons/animation/grid.d.cts +8 -0
- package/build/elements/icons/animation/grid.d.ts +8 -0
- package/build/elements/icons/animation/grid.js +73 -0
- package/build/elements/icons/animation/loading.cjs +68 -0
- package/build/elements/icons/animation/loading.d.cts +3 -0
- package/build/elements/icons/animation/loading.d.ts +3 -0
- package/build/elements/icons/animation/loading.js +64 -0
- package/build/elements/icons/animation/snap.cjs +133 -0
- package/build/elements/icons/animation/snap.d.cts +8 -0
- package/build/elements/icons/animation/snap.d.ts +8 -0
- package/build/elements/icons/animation/snap.js +129 -0
- package/build/elements/icons/index.cjs +40 -0
- package/build/elements/icons/index.d.cts +24 -0
- package/build/elements/icons/index.d.ts +24 -0
- package/build/elements/icons/index.js +24 -0
- package/build/elements/icons/interface/anchor-add.cjs +35 -0
- package/build/elements/icons/interface/anchor-add.d.cts +3 -0
- package/build/elements/icons/interface/anchor-add.d.ts +3 -0
- package/build/elements/icons/interface/anchor-add.js +31 -0
- package/build/elements/icons/interface/anchor-remove.cjs +34 -0
- package/build/elements/icons/interface/anchor-remove.d.cts +3 -0
- package/build/elements/icons/interface/anchor-remove.d.ts +3 -0
- package/build/elements/icons/interface/anchor-remove.js +30 -0
- package/build/elements/icons/interface/arrow-up.cjs +30 -0
- package/build/elements/icons/interface/arrow-up.d.cts +3 -0
- package/build/elements/icons/interface/arrow-up.d.ts +3 -0
- package/build/elements/icons/interface/arrow-up.js +26 -0
- package/build/elements/icons/interface/arrows-vertical.cjs +30 -0
- package/build/elements/icons/interface/arrows-vertical.d.cts +3 -0
- package/build/elements/icons/interface/arrows-vertical.d.ts +3 -0
- package/build/elements/icons/interface/arrows-vertical.js +26 -0
- package/build/elements/icons/interface/bezier-angle.cjs +33 -0
- package/build/elements/icons/interface/bezier-angle.d.cts +3 -0
- package/build/elements/icons/interface/bezier-angle.d.ts +3 -0
- package/build/elements/icons/interface/bezier-angle.js +29 -0
- package/build/elements/icons/interface/bezier-distribute.cjs +34 -0
- package/build/elements/icons/interface/bezier-distribute.d.cts +3 -0
- package/build/elements/icons/interface/bezier-distribute.d.ts +3 -0
- package/build/elements/icons/interface/bezier-distribute.js +30 -0
- package/build/elements/icons/interface/bezier-length.cjs +31 -0
- package/build/elements/icons/interface/bezier-length.d.cts +3 -0
- package/build/elements/icons/interface/bezier-length.d.ts +3 -0
- package/build/elements/icons/interface/bezier-length.js +27 -0
- package/build/elements/icons/interface/bezier-mirror.cjs +31 -0
- package/build/elements/icons/interface/bezier-mirror.d.cts +3 -0
- package/build/elements/icons/interface/bezier-mirror.d.ts +3 -0
- package/build/elements/icons/interface/bezier-mirror.js +27 -0
- package/build/elements/icons/interface/bezier.cjs +26 -0
- package/build/elements/icons/interface/bezier.d.cts +3 -0
- package/build/elements/icons/interface/bezier.d.ts +3 -0
- package/build/elements/icons/interface/bezier.js +22 -0
- package/build/elements/icons/interface/check.cjs +30 -0
- package/build/elements/icons/interface/check.d.cts +3 -0
- package/build/elements/icons/interface/check.d.ts +3 -0
- package/build/elements/icons/interface/check.js +26 -0
- package/build/elements/icons/interface/circle-arrow-left.cjs +30 -0
- package/build/elements/icons/interface/circle-arrow-left.d.cts +3 -0
- package/build/elements/icons/interface/circle-arrow-left.d.ts +3 -0
- package/build/elements/icons/interface/circle-arrow-left.js +26 -0
- package/build/elements/icons/interface/circle-arrow-right.cjs +30 -0
- package/build/elements/icons/interface/circle-arrow-right.d.cts +3 -0
- package/build/elements/icons/interface/circle-arrow-right.d.ts +3 -0
- package/build/elements/icons/interface/circle-arrow-right.js +26 -0
- package/build/elements/icons/interface/code.cjs +30 -0
- package/build/elements/icons/interface/code.d.cts +3 -0
- package/build/elements/icons/interface/code.d.ts +3 -0
- package/build/elements/icons/interface/code.js +26 -0
- package/build/elements/icons/interface/dots.cjs +32 -0
- package/build/elements/icons/interface/dots.d.cts +3 -0
- package/build/elements/icons/interface/dots.d.ts +3 -0
- package/build/elements/icons/interface/dots.js +28 -0
- package/build/elements/icons/interface/mention.cjs +30 -0
- package/build/elements/icons/interface/mention.d.cts +3 -0
- package/build/elements/icons/interface/mention.d.ts +3 -0
- package/build/elements/icons/interface/mention.js +26 -0
- package/build/elements/icons/interface/minus.cjs +30 -0
- package/build/elements/icons/interface/minus.d.cts +3 -0
- package/build/elements/icons/interface/minus.d.ts +3 -0
- package/build/elements/icons/interface/minus.js +26 -0
- package/build/elements/icons/interface/picker.cjs +34 -0
- package/build/elements/icons/interface/picker.d.cts +3 -0
- package/build/elements/icons/interface/picker.d.ts +3 -0
- package/build/elements/icons/interface/picker.js +30 -0
- package/build/elements/icons/interface/plus.cjs +30 -0
- package/build/elements/icons/interface/plus.d.cts +3 -0
- package/build/elements/icons/interface/plus.d.ts +3 -0
- package/build/elements/icons/interface/plus.js +26 -0
- package/build/elements/icons/interface/settings.cjs +30 -0
- package/build/elements/icons/interface/settings.d.cts +3 -0
- package/build/elements/icons/interface/settings.d.ts +3 -0
- package/build/elements/icons/interface/settings.js +26 -0
- package/build/elements/index.cjs +62 -0
- package/build/elements/index.d.cts +22 -0
- package/build/elements/index.d.ts +22 -0
- package/build/elements/index.js +22 -0
- package/build/elements/input/index.cjs +273 -0
- package/build/elements/input/index.d.cts +17 -0
- package/build/elements/input/index.d.ts +17 -0
- package/build/elements/input/index.js +269 -0
- package/build/elements/logo/index.cjs +732 -0
- package/build/elements/logo/index.d.cts +17 -0
- package/build/elements/logo/index.d.ts +17 -0
- package/build/elements/logo/index.js +728 -0
- package/build/elements/monitor/fps.cjs +432 -0
- package/build/elements/monitor/fps.d.cts +21 -0
- package/build/elements/monitor/fps.d.ts +21 -0
- package/build/elements/monitor/fps.js +428 -0
- package/build/elements/monitor/index.cjs +670 -0
- package/build/elements/monitor/index.d.cts +112 -0
- package/build/elements/monitor/index.d.ts +112 -0
- package/build/elements/monitor/index.js +666 -0
- package/build/elements/number/index.cjs +173 -0
- package/build/elements/number/index.d.cts +19 -0
- package/build/elements/number/index.d.ts +19 -0
- package/build/elements/number/index.js +169 -0
- package/build/elements/origin/index.cjs +169 -0
- package/build/elements/origin/index.d.cts +12 -0
- package/build/elements/origin/index.d.ts +12 -0
- package/build/elements/origin/index.js +165 -0
- package/build/elements/popover/index.cjs +209 -0
- package/build/elements/popover/index.d.cts +19 -0
- package/build/elements/popover/index.d.ts +19 -0
- package/build/elements/popover/index.js +205 -0
- package/build/elements/radio/index.cjs +301 -0
- package/build/elements/radio/index.d.cts +13 -0
- package/build/elements/radio/index.d.ts +13 -0
- package/build/elements/radio/index.js +283 -0
- package/build/elements/radio/input.cjs +329 -0
- package/build/elements/radio/input.d.cts +15 -0
- package/build/elements/radio/input.d.ts +15 -0
- package/build/elements/radio/input.js +325 -0
- package/build/elements/radio/option.cjs +15 -0
- package/build/elements/radio/option.d.cts +3 -0
- package/build/elements/radio/option.d.ts +3 -0
- package/build/elements/radio/option.js +11 -0
- package/build/elements/shared.cjs +66 -0
- package/build/elements/shared.d.cts +40 -0
- package/build/elements/shared.d.ts +40 -0
- package/build/elements/shared.js +59 -0
- package/build/elements/slider/index.cjs +232 -0
- package/build/elements/slider/index.d.cts +20 -0
- package/build/elements/slider/index.d.ts +20 -0
- package/build/elements/slider/index.js +228 -0
- package/build/elements/state/index.cjs +681 -0
- package/build/elements/state/index.d.cts +86 -0
- package/build/elements/state/index.d.ts +86 -0
- package/build/elements/state/index.js +677 -0
- package/build/elements/toggle/index.cjs +151 -0
- package/build/elements/toggle/index.d.cts +9 -0
- package/build/elements/toggle/index.d.ts +9 -0
- package/build/elements/toggle/index.js +147 -0
- package/build/elements/tooltip/index.cjs +187 -0
- package/build/elements/tooltip/index.d.cts +17 -0
- package/build/elements/tooltip/index.d.ts +17 -0
- package/build/elements/tooltip/index.js +183 -0
- package/build/index.cjs +40 -0
- package/build/index.d.cts +6 -0
- package/build/index.d.ts +6 -0
- package/build/index.js +12 -0
- package/build/init.cjs +325 -0
- package/build/init.d.cts +157 -0
- package/build/init.d.ts +157 -0
- package/build/init.js +289 -0
- package/build/internal/component-loaders.cjs +206 -0
- package/build/internal/component-loaders.d.cts +52 -0
- package/build/internal/component-loaders.d.ts +52 -0
- package/build/internal/component-loaders.js +167 -0
- package/build/internal/fonts.cjs +128 -0
- package/build/internal/fonts.d.cts +32 -0
- package/build/internal/fonts.d.ts +32 -0
- package/build/internal/fonts.js +123 -0
- package/build/internal/lazy-load.cjs +89 -0
- package/build/internal/lazy-load.d.cts +32 -0
- package/build/internal/lazy-load.d.ts +32 -0
- package/build/internal/lazy-load.js +86 -0
- package/build/internal/style-inject.cjs +236 -0
- package/build/internal/style-inject.d.cts +44 -0
- package/build/internal/style-inject.d.ts +44 -0
- package/build/internal/style-inject.js +226 -0
- package/build/register.cjs +36 -0
- package/build/register.d.cts +32 -0
- package/build/register.d.ts +32 -0
- package/build/register.js +34 -0
- package/build/theme/index.cjs +452 -0
- package/build/theme/index.d.cts +146 -0
- package/build/theme/index.d.ts +146 -0
- package/build/theme/index.js +423 -0
- package/build/theme/presets.cjs +54 -0
- package/build/theme/presets.d.cts +19 -0
- package/build/theme/presets.d.ts +19 -0
- package/build/theme/presets.js +51 -0
- package/build/theme/registry.cjs +204 -0
- package/build/theme/registry.d.cts +99 -0
- package/build/theme/registry.d.ts +99 -0
- package/build/theme/registry.js +194 -0
- package/build/theme/tokens.cjs +148 -0
- package/build/theme/tokens.d.cts +163 -0
- package/build/theme/tokens.d.ts +163 -0
- package/build/theme/tokens.js +145 -0
- package/build/utils/dismiss-controller.cjs +77 -0
- package/build/utils/dismiss-controller.d.cts +14 -0
- package/build/utils/dismiss-controller.d.ts +14 -0
- package/build/utils/dismiss-controller.js +73 -0
- package/build/utils/index.cjs +18 -0
- package/build/utils/index.d.cts +3 -0
- package/build/utils/index.d.ts +3 -0
- package/build/utils/index.js +3 -0
- package/build/utils/outside-click.cjs +82 -0
- package/build/utils/outside-click.d.cts +18 -0
- package/build/utils/outside-click.d.ts +18 -0
- package/build/utils/outside-click.js +74 -0
- package/build/utils/template-helpers.cjs +39 -0
- package/build/utils/template-helpers.d.cts +13 -0
- package/build/utils/template-helpers.d.ts +13 -0
- package/build/utils/template-helpers.js +28 -0
- package/package.json +96 -0
package/build/init.d.cts
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main initialization API for @easemate/web-kit
|
|
3
|
+
*/
|
|
4
|
+
import type { FontConfig } from "./internal/fonts.cjs";
|
|
5
|
+
import type { LazyLoadConfig } from "./internal/lazy-load.cjs";
|
|
6
|
+
import type { StylePreset } from "./internal/style-inject.cjs";
|
|
7
|
+
import { type ThemeInput } from "./theme/registry.cjs";
|
|
8
|
+
/**
|
|
9
|
+
* Theme mode configuration for light/dark switching.
|
|
10
|
+
*/
|
|
11
|
+
export interface ThemeModeConfig {
|
|
12
|
+
/** Mode selection: 'light', 'dark', or 'system' for auto-switching */
|
|
13
|
+
mode: 'light' | 'dark' | 'system';
|
|
14
|
+
/** Theme to use in light mode */
|
|
15
|
+
light: ThemeInput;
|
|
16
|
+
/** Theme to use in dark mode */
|
|
17
|
+
dark: ThemeInput;
|
|
18
|
+
/** Persist user preference to localStorage */
|
|
19
|
+
persist?: {
|
|
20
|
+
key: string;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Style injection configuration.
|
|
25
|
+
*/
|
|
26
|
+
export type StylesConfig = false | StylePreset | {
|
|
27
|
+
reset?: boolean;
|
|
28
|
+
base?: boolean;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Component replacement configuration.
|
|
32
|
+
* Keys are tag names, values are either:
|
|
33
|
+
* - A custom element constructor
|
|
34
|
+
* - A string tag name to alias to
|
|
35
|
+
*/
|
|
36
|
+
export type ReplaceConfig = Record<string, CustomElementConstructor | string>;
|
|
37
|
+
/**
|
|
38
|
+
* initWebKit options.
|
|
39
|
+
*/
|
|
40
|
+
export interface InitWebKitOptions {
|
|
41
|
+
/**
|
|
42
|
+
* Tags to include (register only these).
|
|
43
|
+
* If not provided, all components are registered.
|
|
44
|
+
*/
|
|
45
|
+
include?: readonly string[];
|
|
46
|
+
/**
|
|
47
|
+
* Tags to exclude (register all except these).
|
|
48
|
+
* Ignored if `include` is provided.
|
|
49
|
+
*/
|
|
50
|
+
exclude?: readonly string[];
|
|
51
|
+
/**
|
|
52
|
+
* Replace components with custom implementations.
|
|
53
|
+
* - Constructor: registers your class under the tag name
|
|
54
|
+
* - String: creates a bridge element that renders the aliased tag
|
|
55
|
+
*/
|
|
56
|
+
replace?: ReplaceConfig;
|
|
57
|
+
/**
|
|
58
|
+
* Theme to apply.
|
|
59
|
+
* - String: registered theme name (e.g., 'default', 'dark')
|
|
60
|
+
* - WebKitThemeRef: theme reference from registerTheme()
|
|
61
|
+
* - ThemeConfig: inline theme configuration
|
|
62
|
+
* - ThemeModeConfig: light/dark mode configuration
|
|
63
|
+
*/
|
|
64
|
+
theme?: ThemeInput | ThemeModeConfig;
|
|
65
|
+
/**
|
|
66
|
+
* Element to scope theme variables to (default: document.documentElement).
|
|
67
|
+
*/
|
|
68
|
+
target?: HTMLElement;
|
|
69
|
+
/**
|
|
70
|
+
* Inject global styles.
|
|
71
|
+
* - false: no styles (default)
|
|
72
|
+
* - 'reset': minimal CSS reset
|
|
73
|
+
* - 'base': body/html dark theme styles
|
|
74
|
+
* - 'main': reset + base
|
|
75
|
+
* - { reset?: boolean; base?: boolean }: fine-grained control
|
|
76
|
+
*/
|
|
77
|
+
styles?: StylesConfig;
|
|
78
|
+
/**
|
|
79
|
+
* Font loading configuration.
|
|
80
|
+
* - false: no font loading (default)
|
|
81
|
+
* - 'default': load default fonts (Instrument Sans, Geist Mono)
|
|
82
|
+
* - FontConfig: custom font configuration
|
|
83
|
+
*/
|
|
84
|
+
fonts?: FontConfig | 'default' | false;
|
|
85
|
+
/**
|
|
86
|
+
* Enable lazy loading of components.
|
|
87
|
+
* - false: eager loading (default)
|
|
88
|
+
* - true: lazy load with default config
|
|
89
|
+
* - LazyLoadConfig: custom lazy load config
|
|
90
|
+
*/
|
|
91
|
+
lazyLoad?: boolean | LazyLoadConfig;
|
|
92
|
+
/**
|
|
93
|
+
* CSP nonce for injected style/link elements.
|
|
94
|
+
*/
|
|
95
|
+
cspNonce?: string;
|
|
96
|
+
/**
|
|
97
|
+
* Development mode options.
|
|
98
|
+
*/
|
|
99
|
+
dev?: {
|
|
100
|
+
/** Warn about unknown tag names in include/exclude */
|
|
101
|
+
warnUnknownTags?: boolean;
|
|
102
|
+
/** Log component loads */
|
|
103
|
+
logLoads?: boolean;
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Controller returned by initWebKit.
|
|
108
|
+
*/
|
|
109
|
+
export interface WebKitController {
|
|
110
|
+
/** Cleanup all injected styles, fonts, and listeners */
|
|
111
|
+
dispose: () => void;
|
|
112
|
+
/** Theme controller (if theme was configured) */
|
|
113
|
+
theme?: {
|
|
114
|
+
/** Set theme by name or config */
|
|
115
|
+
set: (theme: ThemeInput) => void;
|
|
116
|
+
/** Set theme mode (only for ThemeModeConfig) */
|
|
117
|
+
mode?: (mode: 'light' | 'dark' | 'system') => void;
|
|
118
|
+
};
|
|
119
|
+
/** Promise that resolves when all components are loaded */
|
|
120
|
+
ready: Promise<void>;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Initialize the web-kit.
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* ```ts
|
|
127
|
+
* // Basic usage - register all components with default theme
|
|
128
|
+
* initWebKit({ theme: 'default' });
|
|
129
|
+
*
|
|
130
|
+
* // Selective loading
|
|
131
|
+
* initWebKit({
|
|
132
|
+
* include: ['ease-button', 'ease-slider'],
|
|
133
|
+
* theme: 'default'
|
|
134
|
+
* });
|
|
135
|
+
*
|
|
136
|
+
* // With styles
|
|
137
|
+
* initWebKit({
|
|
138
|
+
* theme: 'default',
|
|
139
|
+
* styles: 'main',
|
|
140
|
+
* fonts: 'default'
|
|
141
|
+
* });
|
|
142
|
+
*
|
|
143
|
+
* // Light/dark mode
|
|
144
|
+
* initWebKit({
|
|
145
|
+
* theme: {
|
|
146
|
+
* mode: 'system',
|
|
147
|
+
* light: myLightTheme,
|
|
148
|
+
* dark: 'default'
|
|
149
|
+
* }
|
|
150
|
+
* });
|
|
151
|
+
* ```
|
|
152
|
+
*/
|
|
153
|
+
export declare function initWebKit(options?: InitWebKitOptions): WebKitController;
|
|
154
|
+
export type { WebKitComponentTag, WebKitElementTag, WebKitTag } from "./internal/component-loaders.cjs";
|
|
155
|
+
export type { FontConfig, FontSource } from "./internal/fonts.cjs";
|
|
156
|
+
export type { LazyLoadConfig, LazyLoader } from "./internal/lazy-load.cjs";
|
|
157
|
+
export type { StylePreset } from "./internal/style-inject.cjs";
|
package/build/init.d.ts
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main initialization API for @easemate/web-kit
|
|
3
|
+
*/
|
|
4
|
+
import type { FontConfig } from "./internal/fonts.js";
|
|
5
|
+
import type { LazyLoadConfig } from "./internal/lazy-load.js";
|
|
6
|
+
import type { StylePreset } from "./internal/style-inject.js";
|
|
7
|
+
import { type ThemeInput } from "./theme/registry.js";
|
|
8
|
+
/**
|
|
9
|
+
* Theme mode configuration for light/dark switching.
|
|
10
|
+
*/
|
|
11
|
+
export interface ThemeModeConfig {
|
|
12
|
+
/** Mode selection: 'light', 'dark', or 'system' for auto-switching */
|
|
13
|
+
mode: 'light' | 'dark' | 'system';
|
|
14
|
+
/** Theme to use in light mode */
|
|
15
|
+
light: ThemeInput;
|
|
16
|
+
/** Theme to use in dark mode */
|
|
17
|
+
dark: ThemeInput;
|
|
18
|
+
/** Persist user preference to localStorage */
|
|
19
|
+
persist?: {
|
|
20
|
+
key: string;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Style injection configuration.
|
|
25
|
+
*/
|
|
26
|
+
export type StylesConfig = false | StylePreset | {
|
|
27
|
+
reset?: boolean;
|
|
28
|
+
base?: boolean;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Component replacement configuration.
|
|
32
|
+
* Keys are tag names, values are either:
|
|
33
|
+
* - A custom element constructor
|
|
34
|
+
* - A string tag name to alias to
|
|
35
|
+
*/
|
|
36
|
+
export type ReplaceConfig = Record<string, CustomElementConstructor | string>;
|
|
37
|
+
/**
|
|
38
|
+
* initWebKit options.
|
|
39
|
+
*/
|
|
40
|
+
export interface InitWebKitOptions {
|
|
41
|
+
/**
|
|
42
|
+
* Tags to include (register only these).
|
|
43
|
+
* If not provided, all components are registered.
|
|
44
|
+
*/
|
|
45
|
+
include?: readonly string[];
|
|
46
|
+
/**
|
|
47
|
+
* Tags to exclude (register all except these).
|
|
48
|
+
* Ignored if `include` is provided.
|
|
49
|
+
*/
|
|
50
|
+
exclude?: readonly string[];
|
|
51
|
+
/**
|
|
52
|
+
* Replace components with custom implementations.
|
|
53
|
+
* - Constructor: registers your class under the tag name
|
|
54
|
+
* - String: creates a bridge element that renders the aliased tag
|
|
55
|
+
*/
|
|
56
|
+
replace?: ReplaceConfig;
|
|
57
|
+
/**
|
|
58
|
+
* Theme to apply.
|
|
59
|
+
* - String: registered theme name (e.g., 'default', 'dark')
|
|
60
|
+
* - WebKitThemeRef: theme reference from registerTheme()
|
|
61
|
+
* - ThemeConfig: inline theme configuration
|
|
62
|
+
* - ThemeModeConfig: light/dark mode configuration
|
|
63
|
+
*/
|
|
64
|
+
theme?: ThemeInput | ThemeModeConfig;
|
|
65
|
+
/**
|
|
66
|
+
* Element to scope theme variables to (default: document.documentElement).
|
|
67
|
+
*/
|
|
68
|
+
target?: HTMLElement;
|
|
69
|
+
/**
|
|
70
|
+
* Inject global styles.
|
|
71
|
+
* - false: no styles (default)
|
|
72
|
+
* - 'reset': minimal CSS reset
|
|
73
|
+
* - 'base': body/html dark theme styles
|
|
74
|
+
* - 'main': reset + base
|
|
75
|
+
* - { reset?: boolean; base?: boolean }: fine-grained control
|
|
76
|
+
*/
|
|
77
|
+
styles?: StylesConfig;
|
|
78
|
+
/**
|
|
79
|
+
* Font loading configuration.
|
|
80
|
+
* - false: no font loading (default)
|
|
81
|
+
* - 'default': load default fonts (Instrument Sans, Geist Mono)
|
|
82
|
+
* - FontConfig: custom font configuration
|
|
83
|
+
*/
|
|
84
|
+
fonts?: FontConfig | 'default' | false;
|
|
85
|
+
/**
|
|
86
|
+
* Enable lazy loading of components.
|
|
87
|
+
* - false: eager loading (default)
|
|
88
|
+
* - true: lazy load with default config
|
|
89
|
+
* - LazyLoadConfig: custom lazy load config
|
|
90
|
+
*/
|
|
91
|
+
lazyLoad?: boolean | LazyLoadConfig;
|
|
92
|
+
/**
|
|
93
|
+
* CSP nonce for injected style/link elements.
|
|
94
|
+
*/
|
|
95
|
+
cspNonce?: string;
|
|
96
|
+
/**
|
|
97
|
+
* Development mode options.
|
|
98
|
+
*/
|
|
99
|
+
dev?: {
|
|
100
|
+
/** Warn about unknown tag names in include/exclude */
|
|
101
|
+
warnUnknownTags?: boolean;
|
|
102
|
+
/** Log component loads */
|
|
103
|
+
logLoads?: boolean;
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Controller returned by initWebKit.
|
|
108
|
+
*/
|
|
109
|
+
export interface WebKitController {
|
|
110
|
+
/** Cleanup all injected styles, fonts, and listeners */
|
|
111
|
+
dispose: () => void;
|
|
112
|
+
/** Theme controller (if theme was configured) */
|
|
113
|
+
theme?: {
|
|
114
|
+
/** Set theme by name or config */
|
|
115
|
+
set: (theme: ThemeInput) => void;
|
|
116
|
+
/** Set theme mode (only for ThemeModeConfig) */
|
|
117
|
+
mode?: (mode: 'light' | 'dark' | 'system') => void;
|
|
118
|
+
};
|
|
119
|
+
/** Promise that resolves when all components are loaded */
|
|
120
|
+
ready: Promise<void>;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Initialize the web-kit.
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* ```ts
|
|
127
|
+
* // Basic usage - register all components with default theme
|
|
128
|
+
* initWebKit({ theme: 'default' });
|
|
129
|
+
*
|
|
130
|
+
* // Selective loading
|
|
131
|
+
* initWebKit({
|
|
132
|
+
* include: ['ease-button', 'ease-slider'],
|
|
133
|
+
* theme: 'default'
|
|
134
|
+
* });
|
|
135
|
+
*
|
|
136
|
+
* // With styles
|
|
137
|
+
* initWebKit({
|
|
138
|
+
* theme: 'default',
|
|
139
|
+
* styles: 'main',
|
|
140
|
+
* fonts: 'default'
|
|
141
|
+
* });
|
|
142
|
+
*
|
|
143
|
+
* // Light/dark mode
|
|
144
|
+
* initWebKit({
|
|
145
|
+
* theme: {
|
|
146
|
+
* mode: 'system',
|
|
147
|
+
* light: myLightTheme,
|
|
148
|
+
* dark: 'default'
|
|
149
|
+
* }
|
|
150
|
+
* });
|
|
151
|
+
* ```
|
|
152
|
+
*/
|
|
153
|
+
export declare function initWebKit(options?: InitWebKitOptions): WebKitController;
|
|
154
|
+
export type { WebKitComponentTag, WebKitElementTag, WebKitTag } from "./internal/component-loaders.js";
|
|
155
|
+
export type { FontConfig, FontSource } from "./internal/fonts.js";
|
|
156
|
+
export type { LazyLoadConfig, LazyLoader } from "./internal/lazy-load.js";
|
|
157
|
+
export type { StylePreset } from "./internal/style-inject.js";
|
package/build/init.js
ADDED
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main initialization API for @easemate/web-kit
|
|
3
|
+
*/
|
|
4
|
+
import { applyTheme, followSystemTheme } from "./theme/index.js";
|
|
5
|
+
import { getTheme, isThemeRef } from "./theme/registry.js";
|
|
6
|
+
// --------------------------
|
|
7
|
+
// Helpers
|
|
8
|
+
// --------------------------
|
|
9
|
+
const isBrowser = () => typeof document !== 'undefined' && typeof window !== 'undefined';
|
|
10
|
+
const isThemeModeConfig = (value) => {
|
|
11
|
+
if (typeof value !== 'object' || value === null) {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
const obj = value;
|
|
15
|
+
return obj.mode !== undefined && (obj.light !== undefined || obj.dark !== undefined);
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Register replacement components before loading built-in ones.
|
|
19
|
+
*/
|
|
20
|
+
function registerReplacements(replace) {
|
|
21
|
+
if (!isBrowser()) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
for (const [tag, replacement] of Object.entries(replace)) {
|
|
25
|
+
// Skip if already defined
|
|
26
|
+
if (customElements.get(tag)) {
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
if (typeof replacement === 'function') {
|
|
30
|
+
// Register custom constructor
|
|
31
|
+
customElements.define(tag, replacement);
|
|
32
|
+
}
|
|
33
|
+
else if (typeof replacement === 'string') {
|
|
34
|
+
// Create a bridge element that renders the aliased tag
|
|
35
|
+
const aliasTag = replacement;
|
|
36
|
+
class BridgeElement extends HTMLElement {
|
|
37
|
+
_inner = null;
|
|
38
|
+
connectedCallback() {
|
|
39
|
+
// Create the aliased element
|
|
40
|
+
this._inner = document.createElement(aliasTag);
|
|
41
|
+
// Copy attributes
|
|
42
|
+
for (const attr of this.attributes) {
|
|
43
|
+
this._inner.setAttribute(attr.name, attr.value);
|
|
44
|
+
}
|
|
45
|
+
// Move children
|
|
46
|
+
while (this.firstChild) {
|
|
47
|
+
this._inner.appendChild(this.firstChild);
|
|
48
|
+
}
|
|
49
|
+
// Use shadow DOM to contain the aliased element
|
|
50
|
+
const shadow = this.attachShadow({ mode: 'open' });
|
|
51
|
+
shadow.appendChild(this._inner);
|
|
52
|
+
}
|
|
53
|
+
disconnectedCallback() {
|
|
54
|
+
this._inner = null;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
customElements.define(tag, BridgeElement);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Resolve and apply styles configuration.
|
|
63
|
+
*/
|
|
64
|
+
async function applyStyles(styles, nonce) {
|
|
65
|
+
if (styles === false) {
|
|
66
|
+
return { dispose: () => { } };
|
|
67
|
+
}
|
|
68
|
+
const { injectPreset, removePreset } = await import("./internal/style-inject.js");
|
|
69
|
+
const injected = [];
|
|
70
|
+
if (typeof styles === 'string') {
|
|
71
|
+
injectPreset(styles, nonce);
|
|
72
|
+
injected.push(styles);
|
|
73
|
+
}
|
|
74
|
+
else if (typeof styles === 'object') {
|
|
75
|
+
if (styles.reset) {
|
|
76
|
+
injectPreset('reset', nonce);
|
|
77
|
+
injected.push('reset');
|
|
78
|
+
}
|
|
79
|
+
if (styles.base) {
|
|
80
|
+
injectPreset('base', nonce);
|
|
81
|
+
injected.push('base');
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
dispose: () => {
|
|
86
|
+
for (const preset of injected) {
|
|
87
|
+
removePreset(preset);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Resolve and apply theme configuration.
|
|
94
|
+
*/
|
|
95
|
+
function applyThemeConfig(theme, target) {
|
|
96
|
+
if (isThemeModeConfig(theme)) {
|
|
97
|
+
// Light/dark mode configuration
|
|
98
|
+
const lightConfig = getTheme(theme.light);
|
|
99
|
+
const darkConfig = getTheme(theme.dark);
|
|
100
|
+
if (theme.mode === 'system') {
|
|
101
|
+
const cleanup = followSystemTheme({ light: lightConfig, dark: darkConfig }, { element: target });
|
|
102
|
+
return {
|
|
103
|
+
dispose: cleanup,
|
|
104
|
+
controller: {
|
|
105
|
+
set: (t) => {
|
|
106
|
+
const config = getTheme(t);
|
|
107
|
+
applyTheme(config, { element: target });
|
|
108
|
+
},
|
|
109
|
+
mode: (m) => {
|
|
110
|
+
if (m === 'system') {
|
|
111
|
+
// Re-apply system theme
|
|
112
|
+
const systemMode = window.matchMedia('(prefers-color-scheme: light)').matches
|
|
113
|
+
? 'light'
|
|
114
|
+
: 'dark';
|
|
115
|
+
const config = systemMode === 'light' ? lightConfig : darkConfig;
|
|
116
|
+
applyTheme(config, {
|
|
117
|
+
element: target,
|
|
118
|
+
name: systemMode,
|
|
119
|
+
colorScheme: systemMode
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
const config = m === 'light' ? lightConfig : darkConfig;
|
|
124
|
+
applyTheme(config, {
|
|
125
|
+
element: target,
|
|
126
|
+
name: m,
|
|
127
|
+
colorScheme: m
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
// Fixed mode
|
|
135
|
+
const config = theme.mode === 'light' ? lightConfig : darkConfig;
|
|
136
|
+
applyTheme(config, {
|
|
137
|
+
element: target,
|
|
138
|
+
name: theme.mode,
|
|
139
|
+
colorScheme: theme.mode
|
|
140
|
+
});
|
|
141
|
+
return {
|
|
142
|
+
dispose: () => { },
|
|
143
|
+
controller: {
|
|
144
|
+
set: (t) => {
|
|
145
|
+
const resolvedConfig = getTheme(t);
|
|
146
|
+
applyTheme(resolvedConfig, { element: target });
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
// Simple theme (name, ref, or config)
|
|
152
|
+
const config = getTheme(theme);
|
|
153
|
+
const name = isThemeRef(theme) ? theme.name : typeof theme === 'string' ? theme : undefined;
|
|
154
|
+
applyTheme(config, {
|
|
155
|
+
element: target,
|
|
156
|
+
name,
|
|
157
|
+
colorScheme: 'dark'
|
|
158
|
+
});
|
|
159
|
+
return {
|
|
160
|
+
dispose: () => { },
|
|
161
|
+
controller: {
|
|
162
|
+
set: (t) => {
|
|
163
|
+
const resolvedConfig = getTheme(t);
|
|
164
|
+
const themeName = isThemeRef(t) ? t.name : typeof t === 'string' ? t : undefined;
|
|
165
|
+
applyTheme(resolvedConfig, { element: target, name: themeName });
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
// --------------------------
|
|
171
|
+
// Main API
|
|
172
|
+
// --------------------------
|
|
173
|
+
/**
|
|
174
|
+
* Initialize the web-kit.
|
|
175
|
+
*
|
|
176
|
+
* @example
|
|
177
|
+
* ```ts
|
|
178
|
+
* // Basic usage - register all components with default theme
|
|
179
|
+
* initWebKit({ theme: 'default' });
|
|
180
|
+
*
|
|
181
|
+
* // Selective loading
|
|
182
|
+
* initWebKit({
|
|
183
|
+
* include: ['ease-button', 'ease-slider'],
|
|
184
|
+
* theme: 'default'
|
|
185
|
+
* });
|
|
186
|
+
*
|
|
187
|
+
* // With styles
|
|
188
|
+
* initWebKit({
|
|
189
|
+
* theme: 'default',
|
|
190
|
+
* styles: 'main',
|
|
191
|
+
* fonts: 'default'
|
|
192
|
+
* });
|
|
193
|
+
*
|
|
194
|
+
* // Light/dark mode
|
|
195
|
+
* initWebKit({
|
|
196
|
+
* theme: {
|
|
197
|
+
* mode: 'system',
|
|
198
|
+
* light: myLightTheme,
|
|
199
|
+
* dark: 'default'
|
|
200
|
+
* }
|
|
201
|
+
* });
|
|
202
|
+
* ```
|
|
203
|
+
*/
|
|
204
|
+
export function initWebKit(options = {}) {
|
|
205
|
+
// SSR safety - no-op on server
|
|
206
|
+
if (!isBrowser()) {
|
|
207
|
+
return {
|
|
208
|
+
dispose: () => { },
|
|
209
|
+
ready: Promise.resolve()
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
const { include, exclude, replace, theme, target, styles = false, fonts = false, lazyLoad = false, cspNonce, dev } = options;
|
|
213
|
+
const disposers = [];
|
|
214
|
+
// Controller object that will be populated
|
|
215
|
+
const controller = {
|
|
216
|
+
dispose: () => {
|
|
217
|
+
for (const dispose of disposers) {
|
|
218
|
+
dispose();
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
theme: undefined,
|
|
222
|
+
ready: Promise.resolve()
|
|
223
|
+
};
|
|
224
|
+
// Build the ready promise
|
|
225
|
+
const readyPromise = (async () => {
|
|
226
|
+
// 1. Register replacements first (before loading any components)
|
|
227
|
+
if (replace) {
|
|
228
|
+
registerReplacements(replace);
|
|
229
|
+
}
|
|
230
|
+
// 2. Apply styles
|
|
231
|
+
const stylesResult = await applyStyles(styles, cspNonce);
|
|
232
|
+
disposers.push(stylesResult.dispose);
|
|
233
|
+
// 3. Apply theme
|
|
234
|
+
if (theme) {
|
|
235
|
+
const themeResult = applyThemeConfig(theme, target);
|
|
236
|
+
disposers.push(themeResult.dispose);
|
|
237
|
+
controller.theme = themeResult.controller;
|
|
238
|
+
}
|
|
239
|
+
// 4. Load fonts
|
|
240
|
+
if (fonts !== false) {
|
|
241
|
+
const { injectFonts, removeFonts } = await import("./internal/fonts.js");
|
|
242
|
+
injectFonts(fonts);
|
|
243
|
+
const fontsToRemove = fonts;
|
|
244
|
+
disposers.push(() => removeFonts(fontsToRemove));
|
|
245
|
+
}
|
|
246
|
+
// 5. Load components
|
|
247
|
+
if (lazyLoad) {
|
|
248
|
+
// Lazy loading mode
|
|
249
|
+
const { createLazyLoader } = await import("./internal/lazy-load.js");
|
|
250
|
+
const lazyConfig = typeof lazyLoad === 'object' ? lazyLoad : {};
|
|
251
|
+
// Apply include/exclude to lazy loader
|
|
252
|
+
if (include) {
|
|
253
|
+
lazyConfig.include = include;
|
|
254
|
+
}
|
|
255
|
+
else if (exclude) {
|
|
256
|
+
lazyConfig.exclude = exclude;
|
|
257
|
+
}
|
|
258
|
+
const loader = createLazyLoader(lazyConfig);
|
|
259
|
+
disposers.push(loader.dispose);
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
// Eager loading mode
|
|
263
|
+
const { loadAllComponents, loadComponents, resolveTags } = await import("./internal/component-loaders.js");
|
|
264
|
+
if (include || exclude) {
|
|
265
|
+
const tags = resolveTags({ include, exclude });
|
|
266
|
+
if (dev?.warnUnknownTags) {
|
|
267
|
+
const { WEB_KIT_ALL_TAGS } = await import("./internal/component-loaders.js");
|
|
268
|
+
const allTags = new Set(WEB_KIT_ALL_TAGS);
|
|
269
|
+
const unknown = (include ?? exclude ?? []).filter((t) => !allTags.has(t));
|
|
270
|
+
if (unknown.length > 0) {
|
|
271
|
+
console.warn('[web-kit] Unknown tags:', unknown);
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
if (dev?.logLoads) {
|
|
275
|
+
console.log('[web-kit] Loading components:', tags);
|
|
276
|
+
}
|
|
277
|
+
await loadComponents(tags);
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
if (dev?.logLoads) {
|
|
281
|
+
console.log('[web-kit] Loading all components');
|
|
282
|
+
}
|
|
283
|
+
await loadAllComponents();
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
})();
|
|
287
|
+
controller.ready = readyPromise;
|
|
288
|
+
return controller;
|
|
289
|
+
}
|