@tachui/core 0.7.0-alpha1
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/LICENSE +363 -0
- package/dist/assets/Asset.cjs +2 -0
- package/dist/assets/Asset.cjs.map +1 -0
- package/dist/assets/Asset.d.ts +11 -0
- package/dist/assets/Asset.d.ts.map +1 -0
- package/dist/assets/Asset.js +9 -0
- package/dist/assets/Asset.js.map +1 -0
- package/dist/assets/AssetCollection.cjs +2 -0
- package/dist/assets/AssetCollection.cjs.map +1 -0
- package/dist/assets/AssetCollection.d.ts +14 -0
- package/dist/assets/AssetCollection.d.ts.map +1 -0
- package/dist/assets/AssetCollection.js +44 -0
- package/dist/assets/AssetCollection.js.map +1 -0
- package/dist/assets/ColorAsset.cjs +2 -0
- package/dist/assets/ColorAsset.cjs.map +1 -0
- package/dist/assets/ColorAsset.d.ts +31 -0
- package/dist/assets/ColorAsset.d.ts.map +1 -0
- package/dist/assets/ColorAsset.js +114 -0
- package/dist/assets/ColorAsset.js.map +1 -0
- package/dist/assets/FontAsset.cjs +9 -0
- package/dist/assets/FontAsset.cjs.map +1 -0
- package/dist/assets/FontAsset.d.ts +114 -0
- package/dist/assets/FontAsset.d.ts.map +1 -0
- package/dist/assets/FontAsset.js +173 -0
- package/dist/assets/FontAsset.js.map +1 -0
- package/dist/assets/ImageAsset.cjs +2 -0
- package/dist/assets/ImageAsset.cjs.map +1 -0
- package/dist/assets/ImageAsset.d.ts +35 -0
- package/dist/assets/ImageAsset.d.ts.map +1 -0
- package/dist/assets/ImageAsset.js +39 -0
- package/dist/assets/ImageAsset.js.map +1 -0
- package/dist/assets/index.cjs +2 -0
- package/dist/assets/index.cjs.map +1 -0
- package/dist/assets/index.d.ts +26 -0
- package/dist/assets/index.d.ts.map +1 -0
- package/dist/assets/index.js +119 -0
- package/dist/assets/index.js.map +1 -0
- package/dist/assets/types.d.ts +70 -0
- package/dist/assets/types.d.ts.map +1 -0
- package/dist/bundles/common.d.ts +24 -0
- package/dist/bundles/common.d.ts.map +1 -0
- package/dist/bundles/complete.d.ts +27 -0
- package/dist/bundles/complete.d.ts.map +1 -0
- package/dist/bundles/essential.d.ts +24 -0
- package/dist/bundles/essential.d.ts.map +1 -0
- package/dist/bundles/minimal.d.ts +24 -0
- package/dist/bundles/minimal.d.ts.map +1 -0
- package/dist/bundles/production-minimal.d.ts +35 -0
- package/dist/bundles/production-minimal.d.ts.map +1 -0
- package/dist/common.cjs +2 -0
- package/dist/common.cjs.map +1 -0
- package/dist/common.js +985 -0
- package/dist/common.js.map +1 -0
- package/dist/compiler/advanced-parser.cjs +5 -0
- package/dist/compiler/advanced-parser.cjs.map +1 -0
- package/dist/compiler/advanced-parser.d.ts +113 -0
- package/dist/compiler/advanced-parser.d.ts.map +1 -0
- package/dist/compiler/advanced-parser.js +440 -0
- package/dist/compiler/advanced-parser.js.map +1 -0
- package/dist/compiler/codegen.cjs +6 -0
- package/dist/compiler/codegen.cjs.map +1 -0
- package/dist/compiler/codegen.d.ts +20 -0
- package/dist/compiler/codegen.d.ts.map +1 -0
- package/dist/compiler/codegen.js +241 -0
- package/dist/compiler/codegen.js.map +1 -0
- package/dist/compiler/enhanced-codegen.cjs +6 -0
- package/dist/compiler/enhanced-codegen.cjs.map +1 -0
- package/dist/compiler/enhanced-codegen.d.ts +121 -0
- package/dist/compiler/enhanced-codegen.d.ts.map +1 -0
- package/dist/compiler/enhanced-codegen.js +347 -0
- package/dist/compiler/enhanced-codegen.js.map +1 -0
- package/dist/compiler/index.cjs +2 -0
- package/dist/compiler/index.cjs.map +1 -0
- package/dist/compiler/index.d.ts +14 -0
- package/dist/compiler/index.d.ts.map +1 -0
- package/dist/compiler/index.js +13 -0
- package/dist/compiler/index.js.map +1 -0
- package/dist/compiler/parser.cjs +5 -0
- package/dist/compiler/parser.cjs.map +1 -0
- package/dist/compiler/parser.d.ts +12 -0
- package/dist/compiler/parser.d.ts.map +1 -0
- package/dist/compiler/parser.js +275 -0
- package/dist/compiler/parser.js.map +1 -0
- package/dist/compiler/plugin.cjs +33 -0
- package/dist/compiler/plugin.cjs.map +1 -0
- package/dist/compiler/plugin.d.ts +13 -0
- package/dist/compiler/plugin.d.ts.map +1 -0
- package/dist/compiler/plugin.js +103 -0
- package/dist/compiler/plugin.js.map +1 -0
- package/dist/compiler/types.d.ts +149 -0
- package/dist/compiler/types.d.ts.map +1 -0
- package/dist/components/BasicInput.cjs +2 -0
- package/dist/components/BasicInput.cjs.map +1 -0
- package/dist/components/BasicInput.d.ts +116 -0
- package/dist/components/BasicInput.d.ts.map +1 -0
- package/dist/components/BasicInput.js +182 -0
- package/dist/components/BasicInput.js.map +1 -0
- package/dist/components/Button.cjs +7 -0
- package/dist/components/Button.cjs.map +1 -0
- package/dist/components/Button.d.ts +252 -0
- package/dist/components/Button.d.ts.map +1 -0
- package/dist/components/Button.js +408 -0
- package/dist/components/Button.js.map +1 -0
- package/dist/components/Divider.cjs +2 -0
- package/dist/components/Divider.cjs.map +1 -0
- package/dist/components/Divider.d.ts +141 -0
- package/dist/components/Divider.d.ts.map +1 -0
- package/dist/components/Divider.js +187 -0
- package/dist/components/Divider.js.map +1 -0
- package/dist/components/EnhancedLink.cjs +2 -0
- package/dist/components/EnhancedLink.cjs.map +1 -0
- package/dist/components/EnhancedLink.d.ts +365 -0
- package/dist/components/EnhancedLink.d.ts.map +1 -0
- package/dist/components/EnhancedLink.js +345 -0
- package/dist/components/EnhancedLink.js.map +1 -0
- package/dist/components/Form.cjs +2 -0
- package/dist/components/Form.cjs.map +1 -0
- package/dist/components/Form.d.ts +141 -0
- package/dist/components/Form.d.ts.map +1 -0
- package/dist/components/Form.js +244 -0
- package/dist/components/Form.js.map +1 -0
- package/dist/components/Grid.cjs +2 -0
- package/dist/components/Grid.cjs.map +1 -0
- package/dist/components/Grid.d.ts +698 -0
- package/dist/components/Grid.d.ts.map +1 -0
- package/dist/components/Grid.js +1045 -0
- package/dist/components/Grid.js.map +1 -0
- package/dist/components/GridResponsive.cjs +2 -0
- package/dist/components/GridResponsive.cjs.map +1 -0
- package/dist/components/GridResponsive.d.ts +214 -0
- package/dist/components/GridResponsive.d.ts.map +1 -0
- package/dist/components/GridResponsive.js +382 -0
- package/dist/components/GridResponsive.js.map +1 -0
- package/dist/components/Image.cjs +2 -0
- package/dist/components/Image.cjs.map +1 -0
- package/dist/components/Image.d.ts +162 -0
- package/dist/components/Image.d.ts.map +1 -0
- package/dist/components/Image.js +212 -0
- package/dist/components/Image.js.map +1 -0
- package/dist/components/List.cjs +2 -0
- package/dist/components/List.cjs.map +1 -0
- package/dist/components/List.d.ts +287 -0
- package/dist/components/List.d.ts.map +1 -0
- package/dist/components/List.js +561 -0
- package/dist/components/List.js.map +1 -0
- package/dist/components/Menu.cjs +2 -0
- package/dist/components/Menu.cjs.map +1 -0
- package/dist/components/Menu.d.ts +159 -0
- package/dist/components/Menu.d.ts.map +1 -0
- package/dist/components/Menu.js +443 -0
- package/dist/components/Menu.js.map +1 -0
- package/dist/components/Picker.cjs +2 -0
- package/dist/components/Picker.cjs.map +1 -0
- package/dist/components/Picker.d.ts +153 -0
- package/dist/components/Picker.d.ts.map +1 -0
- package/dist/components/Picker.js +478 -0
- package/dist/components/Picker.js.map +1 -0
- package/dist/components/ScrollView.cjs +6 -0
- package/dist/components/ScrollView.cjs.map +1 -0
- package/dist/components/ScrollView.d.ts +222 -0
- package/dist/components/ScrollView.d.ts.map +1 -0
- package/dist/components/ScrollView.js +363 -0
- package/dist/components/ScrollView.js.map +1 -0
- package/dist/components/Section.cjs +2 -0
- package/dist/components/Section.cjs.map +1 -0
- package/dist/components/Section.d.ts +153 -0
- package/dist/components/Section.d.ts.map +1 -0
- package/dist/components/Section.js +323 -0
- package/dist/components/Section.js.map +1 -0
- package/dist/components/Show.cjs +2 -0
- package/dist/components/Show.cjs.map +1 -0
- package/dist/components/Show.d.ts +64 -0
- package/dist/components/Show.d.ts.map +1 -0
- package/dist/components/Show.js +112 -0
- package/dist/components/Show.js.map +1 -0
- package/dist/components/Spacer.cjs +2 -0
- package/dist/components/Spacer.cjs.map +1 -0
- package/dist/components/Spacer.d.ts +35 -0
- package/dist/components/Spacer.d.ts.map +1 -0
- package/dist/components/Spacer.js +53 -0
- package/dist/components/Spacer.js.map +1 -0
- package/dist/components/Text.cjs +2 -0
- package/dist/components/Text.cjs.map +1 -0
- package/dist/components/Text.d.ts +242 -0
- package/dist/components/Text.d.ts.map +1 -0
- package/dist/components/Text.js +193 -0
- package/dist/components/Text.js.map +1 -0
- package/dist/components/Toggle.cjs +2 -0
- package/dist/components/Toggle.cjs.map +1 -0
- package/dist/components/Toggle.d.ts +207 -0
- package/dist/components/Toggle.d.ts.map +1 -0
- package/dist/components/Toggle.js +477 -0
- package/dist/components/Toggle.js.map +1 -0
- package/dist/components/index.cjs +2 -0
- package/dist/components/index.cjs.map +1 -0
- package/dist/components/index.d.ts +45 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +104 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/wrapper.cjs +2 -0
- package/dist/components/wrapper.cjs.map +1 -0
- package/dist/components/wrapper.d.ts +249 -0
- package/dist/components/wrapper.d.ts.map +1 -0
- package/dist/components/wrapper.js +484 -0
- package/dist/components/wrapper.js.map +1 -0
- package/dist/concatenation/concatenatable.cjs +2 -0
- package/dist/concatenation/concatenatable.cjs.map +1 -0
- package/dist/concatenation/concatenatable.d.ts +63 -0
- package/dist/concatenation/concatenatable.d.ts.map +1 -0
- package/dist/concatenation/concatenatable.js +118 -0
- package/dist/concatenation/concatenatable.js.map +1 -0
- package/dist/concatenation/concatenated-component.cjs +2 -0
- package/dist/concatenation/concatenated-component.cjs.map +1 -0
- package/dist/concatenation/concatenated-component.d.ts +110 -0
- package/dist/concatenation/concatenated-component.d.ts.map +1 -0
- package/dist/concatenation/concatenated-component.js +276 -0
- package/dist/concatenation/concatenated-component.js.map +1 -0
- package/dist/concatenation/index.d.ts +13 -0
- package/dist/concatenation/index.d.ts.map +1 -0
- package/dist/concatenation/text-optimizer.cjs +2 -0
- package/dist/concatenation/text-optimizer.cjs.map +1 -0
- package/dist/concatenation/text-optimizer.d.ts +104 -0
- package/dist/concatenation/text-optimizer.d.ts.map +1 -0
- package/dist/concatenation/text-optimizer.js +236 -0
- package/dist/concatenation/text-optimizer.js.map +1 -0
- package/dist/concatenation/types.cjs +2 -0
- package/dist/concatenation/types.cjs.map +1 -0
- package/dist/concatenation/types.d.ts +88 -0
- package/dist/concatenation/types.d.ts.map +1 -0
- package/dist/concatenation/types.js +13 -0
- package/dist/concatenation/types.js.map +1 -0
- package/dist/constants/frame-utils.cjs +2 -0
- package/dist/constants/frame-utils.cjs.map +1 -0
- package/dist/constants/frame-utils.d.ts +68 -0
- package/dist/constants/frame-utils.d.ts.map +1 -0
- package/dist/constants/frame-utils.js +116 -0
- package/dist/constants/frame-utils.js.map +1 -0
- package/dist/constants/index.d.ts +8 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/layout.cjs +2 -0
- package/dist/constants/layout.cjs.map +1 -0
- package/dist/constants/layout.d.ts +60 -0
- package/dist/constants/layout.d.ts.map +1 -0
- package/dist/constants/layout.js +46 -0
- package/dist/constants/layout.js.map +1 -0
- package/dist/css-classes/component-base.cjs +2 -0
- package/dist/css-classes/component-base.cjs.map +1 -0
- package/dist/css-classes/component-base.d.ts +40 -0
- package/dist/css-classes/component-base.d.ts.map +1 -0
- package/dist/css-classes/component-base.js +62 -0
- package/dist/css-classes/component-base.js.map +1 -0
- package/dist/css-classes/css-class-manager.cjs +2 -0
- package/dist/css-classes/css-class-manager.cjs.map +1 -0
- package/dist/css-classes/css-class-manager.d.ts +89 -0
- package/dist/css-classes/css-class-manager.d.ts.map +1 -0
- package/dist/css-classes/css-class-manager.js +209 -0
- package/dist/css-classes/css-class-manager.js.map +1 -0
- package/dist/css-classes/dom-integration.cjs +2 -0
- package/dist/css-classes/dom-integration.cjs.map +1 -0
- package/dist/css-classes/dom-integration.d.ts +76 -0
- package/dist/css-classes/dom-integration.d.ts.map +1 -0
- package/dist/css-classes/dom-integration.js +67 -0
- package/dist/css-classes/dom-integration.js.map +1 -0
- package/dist/css-classes/enhanced-renderer.cjs +2 -0
- package/dist/css-classes/enhanced-renderer.cjs.map +1 -0
- package/dist/css-classes/enhanced-renderer.d.ts +42 -0
- package/dist/css-classes/enhanced-renderer.d.ts.map +1 -0
- package/dist/css-classes/enhanced-renderer.js +73 -0
- package/dist/css-classes/enhanced-renderer.js.map +1 -0
- package/dist/css-classes/index.d.ts +14 -0
- package/dist/css-classes/index.d.ts.map +1 -0
- package/dist/css-classes/types.d.ts +59 -0
- package/dist/css-classes/types.d.ts.map +1 -0
- package/dist/css-classes/utilities.cjs +2 -0
- package/dist/css-classes/utilities.cjs.map +1 -0
- package/dist/css-classes/utilities.d.ts +104 -0
- package/dist/css-classes/utilities.d.ts.map +1 -0
- package/dist/css-classes/utilities.js +41 -0
- package/dist/css-classes/utilities.js.map +1 -0
- package/dist/debug/index.d.ts +61 -0
- package/dist/debug/index.d.ts.map +1 -0
- package/dist/debug.cjs +52 -0
- package/dist/debug.cjs.map +1 -0
- package/dist/debug.js +179 -0
- package/dist/debug.js.map +1 -0
- package/dist/developer-experience/enhanced-errors.d.ts +128 -0
- package/dist/developer-experience/enhanced-errors.d.ts.map +1 -0
- package/dist/developer-experience/enhanced-types.d.ts +281 -0
- package/dist/developer-experience/enhanced-types.d.ts.map +1 -0
- package/dist/developer-experience/index.d.ts +44 -0
- package/dist/developer-experience/index.d.ts.map +1 -0
- package/dist/essential.cjs +2 -0
- package/dist/essential.cjs.map +1 -0
- package/dist/essential.js +968 -0
- package/dist/essential.js.map +1 -0
- package/dist/gradients/css-generator.cjs +2 -0
- package/dist/gradients/css-generator.cjs.map +1 -0
- package/dist/gradients/css-generator.d.ts +10 -0
- package/dist/gradients/css-generator.d.ts.map +1 -0
- package/dist/gradients/css-generator.js +100 -0
- package/dist/gradients/css-generator.js.map +1 -0
- package/dist/gradients/examples.cjs +2 -0
- package/dist/gradients/examples.cjs.map +1 -0
- package/dist/gradients/examples.d.ts +432 -0
- package/dist/gradients/examples.d.ts.map +1 -0
- package/dist/gradients/examples.js +555 -0
- package/dist/gradients/examples.js.map +1 -0
- package/dist/gradients/gradient-asset.cjs +2 -0
- package/dist/gradients/gradient-asset.cjs.map +1 -0
- package/dist/gradients/gradient-asset.d.ts +10 -0
- package/dist/gradients/gradient-asset.d.ts.map +1 -0
- package/dist/gradients/gradient-asset.js +22 -0
- package/dist/gradients/gradient-asset.js.map +1 -0
- package/dist/gradients/index.cjs +2 -0
- package/dist/gradients/index.cjs.map +1 -0
- package/dist/gradients/index.d.ts +19 -0
- package/dist/gradients/index.d.ts.map +1 -0
- package/dist/gradients/index.js +78 -0
- package/dist/gradients/index.js.map +1 -0
- package/dist/gradients/performance.cjs +2 -0
- package/dist/gradients/performance.cjs.map +1 -0
- package/dist/gradients/performance.d.ts +146 -0
- package/dist/gradients/performance.d.ts.map +1 -0
- package/dist/gradients/performance.js +237 -0
- package/dist/gradients/performance.js.map +1 -0
- package/dist/gradients/presets.cjs +2 -0
- package/dist/gradients/presets.cjs.map +1 -0
- package/dist/gradients/presets.d.ts +165 -0
- package/dist/gradients/presets.d.ts.map +1 -0
- package/dist/gradients/presets.js +254 -0
- package/dist/gradients/presets.js.map +1 -0
- package/dist/gradients/reactive.cjs +2 -0
- package/dist/gradients/reactive.cjs.map +1 -0
- package/dist/gradients/reactive.d.ts +167 -0
- package/dist/gradients/reactive.d.ts.map +1 -0
- package/dist/gradients/reactive.js +239 -0
- package/dist/gradients/reactive.js.map +1 -0
- package/dist/gradients/state-gradient-asset.cjs +2 -0
- package/dist/gradients/state-gradient-asset.cjs.map +1 -0
- package/dist/gradients/state-gradient-asset.d.ts +67 -0
- package/dist/gradients/state-gradient-asset.d.ts.map +1 -0
- package/dist/gradients/state-gradient-asset.js +111 -0
- package/dist/gradients/state-gradient-asset.js.map +1 -0
- package/dist/gradients/types.d.ts +94 -0
- package/dist/gradients/types.d.ts.map +1 -0
- package/dist/gradients/utils.cjs +2 -0
- package/dist/gradients/utils.cjs.map +1 -0
- package/dist/gradients/utils.d.ts +313 -0
- package/dist/gradients/utils.d.ts.map +1 -0
- package/dist/gradients/utils.js +385 -0
- package/dist/gradients/utils.js.map +1 -0
- package/dist/gradients/validation.cjs +2 -0
- package/dist/gradients/validation.cjs.map +1 -0
- package/dist/gradients/validation.d.ts +156 -0
- package/dist/gradients/validation.d.ts.map +1 -0
- package/dist/gradients/validation.js +209 -0
- package/dist/gradients/validation.js.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +965 -0
- package/dist/index.js.map +1 -0
- package/dist/index2.cjs +2 -0
- package/dist/index2.cjs.map +1 -0
- package/dist/index2.js +293 -0
- package/dist/index2.js.map +1 -0
- package/dist/lifecycle/hooks.cjs +2 -0
- package/dist/lifecycle/hooks.cjs.map +1 -0
- package/dist/lifecycle/hooks.d.ts +101 -0
- package/dist/lifecycle/hooks.d.ts.map +1 -0
- package/dist/lifecycle/hooks.js +159 -0
- package/dist/lifecycle/hooks.js.map +1 -0
- package/dist/minimal-prod.cjs +2 -0
- package/dist/minimal-prod.cjs.map +1 -0
- package/dist/minimal-prod.js +193 -0
- package/dist/minimal-prod.js.map +1 -0
- package/dist/minimal.cjs +2 -0
- package/dist/minimal.cjs.map +1 -0
- package/dist/minimal.js +968 -0
- package/dist/minimal.js.map +1 -0
- package/dist/modifiers/as-html-validator.cjs +2 -0
- package/dist/modifiers/as-html-validator.cjs.map +1 -0
- package/dist/modifiers/as-html-validator.d.ts +20 -0
- package/dist/modifiers/as-html-validator.d.ts.map +1 -0
- package/dist/modifiers/as-html-validator.js +47 -0
- package/dist/modifiers/as-html-validator.js.map +1 -0
- package/dist/modifiers/as-html.cjs +2 -0
- package/dist/modifiers/as-html.cjs.map +1 -0
- package/dist/modifiers/as-html.d.ts +65 -0
- package/dist/modifiers/as-html.d.ts.map +1 -0
- package/dist/modifiers/as-html.js +71 -0
- package/dist/modifiers/as-html.js.map +1 -0
- package/dist/modifiers/attributes.cjs +2 -0
- package/dist/modifiers/attributes.cjs.map +1 -0
- package/dist/modifiers/attributes.d.ts +203 -0
- package/dist/modifiers/attributes.d.ts.map +1 -0
- package/dist/modifiers/attributes.js +272 -0
- package/dist/modifiers/attributes.js.map +1 -0
- package/dist/modifiers/backdrop.cjs +2 -0
- package/dist/modifiers/backdrop.cjs.map +1 -0
- package/dist/modifiers/backdrop.d.ts +59 -0
- package/dist/modifiers/backdrop.d.ts.map +1 -0
- package/dist/modifiers/backdrop.js +109 -0
- package/dist/modifiers/backdrop.js.map +1 -0
- package/dist/modifiers/background.cjs +2 -0
- package/dist/modifiers/background.cjs.map +1 -0
- package/dist/modifiers/background.d.ts +21 -0
- package/dist/modifiers/background.d.ts.map +1 -0
- package/dist/modifiers/background.js +67 -0
- package/dist/modifiers/background.js.map +1 -0
- package/dist/modifiers/base.cjs +25 -0
- package/dist/modifiers/base.cjs.map +1 -0
- package/dist/modifiers/base.d.ts +156 -0
- package/dist/modifiers/base.d.ts.map +1 -0
- package/dist/modifiers/base.js +745 -0
- package/dist/modifiers/base.js.map +1 -0
- package/dist/modifiers/basic-sanitizer.cjs +2 -0
- package/dist/modifiers/basic-sanitizer.cjs.map +1 -0
- package/dist/modifiers/basic-sanitizer.d.ts +54 -0
- package/dist/modifiers/basic-sanitizer.d.ts.map +1 -0
- package/dist/modifiers/basic-sanitizer.js +162 -0
- package/dist/modifiers/basic-sanitizer.js.map +1 -0
- package/dist/modifiers/border.cjs +2 -0
- package/dist/modifiers/border.cjs.map +1 -0
- package/dist/modifiers/border.d.ts +217 -0
- package/dist/modifiers/border.d.ts.map +1 -0
- package/dist/modifiers/border.js +160 -0
- package/dist/modifiers/border.js.map +1 -0
- package/dist/modifiers/builder.cjs +2 -0
- package/dist/modifiers/builder.cjs.map +1 -0
- package/dist/modifiers/builder.d.ts +377 -0
- package/dist/modifiers/builder.d.ts.map +1 -0
- package/dist/modifiers/builder.js +930 -0
- package/dist/modifiers/builder.js.map +1 -0
- package/dist/modifiers/core.cjs +2 -0
- package/dist/modifiers/core.cjs.map +1 -0
- package/dist/modifiers/core.d.ts +407 -0
- package/dist/modifiers/core.d.ts.map +1 -0
- package/dist/modifiers/core.js +398 -0
- package/dist/modifiers/core.js.map +1 -0
- package/dist/modifiers/css.cjs +2 -0
- package/dist/modifiers/css.cjs.map +1 -0
- package/dist/modifiers/css.d.ts +86 -0
- package/dist/modifiers/css.d.ts.map +1 -0
- package/dist/modifiers/css.js +50 -0
- package/dist/modifiers/css.js.map +1 -0
- package/dist/modifiers/effects.cjs +2 -0
- package/dist/modifiers/effects.cjs.map +1 -0
- package/dist/modifiers/effects.d.ts +159 -0
- package/dist/modifiers/effects.d.ts.map +1 -0
- package/dist/modifiers/effects.js +178 -0
- package/dist/modifiers/effects.js.map +1 -0
- package/dist/modifiers/elements.cjs +2 -0
- package/dist/modifiers/elements.cjs.map +1 -0
- package/dist/modifiers/elements.d.ts +240 -0
- package/dist/modifiers/elements.d.ts.map +1 -0
- package/dist/modifiers/elements.js +216 -0
- package/dist/modifiers/elements.js.map +1 -0
- package/dist/modifiers/filters.cjs +2 -0
- package/dist/modifiers/filters.cjs.map +1 -0
- package/dist/modifiers/filters.d.ts +275 -0
- package/dist/modifiers/filters.d.ts.map +1 -0
- package/dist/modifiers/filters.js +223 -0
- package/dist/modifiers/filters.js.map +1 -0
- package/dist/modifiers/flexbox.cjs +2 -0
- package/dist/modifiers/flexbox.cjs.map +1 -0
- package/dist/modifiers/flexbox.d.ts +82 -0
- package/dist/modifiers/flexbox.d.ts.map +1 -0
- package/dist/modifiers/flexbox.js +56 -0
- package/dist/modifiers/flexbox.js.map +1 -0
- package/dist/modifiers/font.cjs +2 -0
- package/dist/modifiers/font.cjs.map +1 -0
- package/dist/modifiers/font.d.ts +71 -0
- package/dist/modifiers/font.d.ts.map +1 -0
- package/dist/modifiers/font.js +60 -0
- package/dist/modifiers/font.js.map +1 -0
- package/dist/modifiers/grid.cjs +2 -0
- package/dist/modifiers/grid.cjs.map +1 -0
- package/dist/modifiers/grid.d.ts +92 -0
- package/dist/modifiers/grid.d.ts.map +1 -0
- package/dist/modifiers/grid.js +92 -0
- package/dist/modifiers/grid.js.map +1 -0
- package/dist/modifiers/index.d.ts +58 -0
- package/dist/modifiers/index.d.ts.map +1 -0
- package/dist/modifiers/margin.cjs +2 -0
- package/dist/modifiers/margin.cjs.map +1 -0
- package/dist/modifiers/margin.d.ts +128 -0
- package/dist/modifiers/margin.d.ts.map +1 -0
- package/dist/modifiers/margin.js +65 -0
- package/dist/modifiers/margin.js.map +1 -0
- package/dist/modifiers/padding.cjs +2 -0
- package/dist/modifiers/padding.cjs.map +1 -0
- package/dist/modifiers/padding.d.ts +204 -0
- package/dist/modifiers/padding.d.ts.map +1 -0
- package/dist/modifiers/padding.js +109 -0
- package/dist/modifiers/padding.js.map +1 -0
- package/dist/modifiers/registry.cjs +2 -0
- package/dist/modifiers/registry.cjs.map +1 -0
- package/dist/modifiers/registry.d.ts +69 -0
- package/dist/modifiers/registry.d.ts.map +1 -0
- package/dist/modifiers/registry.js +163 -0
- package/dist/modifiers/registry.js.map +1 -0
- package/dist/modifiers/responsive/advanced-utilities.cjs +2 -0
- package/dist/modifiers/responsive/advanced-utilities.cjs.map +1 -0
- package/dist/modifiers/responsive/advanced-utilities.d.ts +118 -0
- package/dist/modifiers/responsive/advanced-utilities.d.ts.map +1 -0
- package/dist/modifiers/responsive/advanced-utilities.js +291 -0
- package/dist/modifiers/responsive/advanced-utilities.js.map +1 -0
- package/dist/modifiers/responsive/breakpoints.cjs +2 -0
- package/dist/modifiers/responsive/breakpoints.cjs.map +1 -0
- package/dist/modifiers/responsive/breakpoints.d.ts +81 -0
- package/dist/modifiers/responsive/breakpoints.d.ts.map +1 -0
- package/dist/modifiers/responsive/breakpoints.js +168 -0
- package/dist/modifiers/responsive/breakpoints.js.map +1 -0
- package/dist/modifiers/responsive/css-generator.cjs +5 -0
- package/dist/modifiers/responsive/css-generator.cjs.map +1 -0
- package/dist/modifiers/responsive/css-generator.d.ts +100 -0
- package/dist/modifiers/responsive/css-generator.d.ts.map +1 -0
- package/dist/modifiers/responsive/css-generator.js +261 -0
- package/dist/modifiers/responsive/css-generator.js.map +1 -0
- package/dist/modifiers/responsive/dev-tools.cjs +77 -0
- package/dist/modifiers/responsive/dev-tools.cjs.map +1 -0
- package/dist/modifiers/responsive/dev-tools.d.ts +107 -0
- package/dist/modifiers/responsive/dev-tools.d.ts.map +1 -0
- package/dist/modifiers/responsive/dev-tools.js +380 -0
- package/dist/modifiers/responsive/dev-tools.js.map +1 -0
- package/dist/modifiers/responsive/index.d.ts +28 -0
- package/dist/modifiers/responsive/index.d.ts.map +1 -0
- package/dist/modifiers/responsive/layout-patterns.cjs +2 -0
- package/dist/modifiers/responsive/layout-patterns.cjs.map +1 -0
- package/dist/modifiers/responsive/layout-patterns.d.ts +230 -0
- package/dist/modifiers/responsive/layout-patterns.d.ts.map +1 -0
- package/dist/modifiers/responsive/layout-patterns.js +254 -0
- package/dist/modifiers/responsive/layout-patterns.js.map +1 -0
- package/dist/modifiers/responsive/performance.cjs +3 -0
- package/dist/modifiers/responsive/performance.cjs.map +1 -0
- package/dist/modifiers/responsive/performance.d.ts +130 -0
- package/dist/modifiers/responsive/performance.d.ts.map +1 -0
- package/dist/modifiers/responsive/performance.js +212 -0
- package/dist/modifiers/responsive/performance.js.map +1 -0
- package/dist/modifiers/responsive/responsive-builder.cjs +2 -0
- package/dist/modifiers/responsive/responsive-builder.cjs.map +1 -0
- package/dist/modifiers/responsive/responsive-builder.d.ts +133 -0
- package/dist/modifiers/responsive/responsive-builder.d.ts.map +1 -0
- package/dist/modifiers/responsive/responsive-builder.js +272 -0
- package/dist/modifiers/responsive/responsive-builder.js.map +1 -0
- package/dist/modifiers/responsive/responsive-modifier.cjs +3 -0
- package/dist/modifiers/responsive/responsive-modifier.cjs.map +1 -0
- package/dist/modifiers/responsive/responsive-modifier.d.ts +123 -0
- package/dist/modifiers/responsive/responsive-modifier.d.ts.map +1 -0
- package/dist/modifiers/responsive/responsive-modifier.js +204 -0
- package/dist/modifiers/responsive/responsive-modifier.js.map +1 -0
- package/dist/modifiers/responsive/types.cjs +2 -0
- package/dist/modifiers/responsive/types.cjs.map +1 -0
- package/dist/modifiers/responsive/types.d.ts +183 -0
- package/dist/modifiers/responsive/types.d.ts.map +1 -0
- package/dist/modifiers/responsive/types.js +26 -0
- package/dist/modifiers/responsive/types.js.map +1 -0
- package/dist/modifiers/responsive/utilities.cjs +16 -0
- package/dist/modifiers/responsive/utilities.cjs.map +1 -0
- package/dist/modifiers/responsive/utilities.d.ts +149 -0
- package/dist/modifiers/responsive/utilities.d.ts.map +1 -0
- package/dist/modifiers/responsive/utilities.js +273 -0
- package/dist/modifiers/responsive/utilities.js.map +1 -0
- package/dist/modifiers/scroll.cjs +2 -0
- package/dist/modifiers/scroll.cjs.map +1 -0
- package/dist/modifiers/scroll.d.ts +143 -0
- package/dist/modifiers/scroll.d.ts.map +1 -0
- package/dist/modifiers/scroll.js +82 -0
- package/dist/modifiers/scroll.js.map +1 -0
- package/dist/modifiers/shadows.cjs +2 -0
- package/dist/modifiers/shadows.cjs.map +1 -0
- package/dist/modifiers/shadows.d.ts +114 -0
- package/dist/modifiers/shadows.d.ts.map +1 -0
- package/dist/modifiers/shadows.js +147 -0
- package/dist/modifiers/shadows.js.map +1 -0
- package/dist/modifiers/size.cjs +2 -0
- package/dist/modifiers/size.cjs.map +1 -0
- package/dist/modifiers/size.d.ts +113 -0
- package/dist/modifiers/size.d.ts.map +1 -0
- package/dist/modifiers/size.js +74 -0
- package/dist/modifiers/size.js.map +1 -0
- package/dist/modifiers/text.cjs +2 -0
- package/dist/modifiers/text.cjs.map +1 -0
- package/dist/modifiers/text.d.ts +147 -0
- package/dist/modifiers/text.d.ts.map +1 -0
- package/dist/modifiers/text.js +166 -0
- package/dist/modifiers/text.js.map +1 -0
- package/dist/modifiers/transformations.cjs +2 -0
- package/dist/modifiers/transformations.cjs.map +1 -0
- package/dist/modifiers/transformations.d.ts +329 -0
- package/dist/modifiers/transformations.d.ts.map +1 -0
- package/dist/modifiers/transformations.js +216 -0
- package/dist/modifiers/transformations.js.map +1 -0
- package/dist/modifiers/transitions.cjs +2 -0
- package/dist/modifiers/transitions.cjs.map +1 -0
- package/dist/modifiers/transitions.d.ts +98 -0
- package/dist/modifiers/transitions.d.ts.map +1 -0
- package/dist/modifiers/transitions.js +102 -0
- package/dist/modifiers/transitions.js.map +1 -0
- package/dist/modifiers/types.cjs +2 -0
- package/dist/modifiers/types.cjs.map +1 -0
- package/dist/modifiers/types.d.ts +655 -0
- package/dist/modifiers/types.d.ts.map +1 -0
- package/dist/modifiers/types.js +5 -0
- package/dist/modifiers/types.js.map +1 -0
- package/dist/modifiers/typography.cjs +2 -0
- package/dist/modifiers/typography.cjs.map +1 -0
- package/dist/modifiers/typography.d.ts +192 -0
- package/dist/modifiers/typography.d.ts.map +1 -0
- package/dist/modifiers/typography.js +76 -0
- package/dist/modifiers/typography.js.map +1 -0
- package/dist/modifiers/utility.cjs +2 -0
- package/dist/modifiers/utility.cjs.map +1 -0
- package/dist/modifiers/utility.d.ts +69 -0
- package/dist/modifiers/utility.d.ts.map +1 -0
- package/dist/modifiers/utility.js +71 -0
- package/dist/modifiers/utility.js.map +1 -0
- package/dist/modifiers/utils.cjs +2 -0
- package/dist/modifiers/utils.cjs.map +1 -0
- package/dist/modifiers/utils.d.ts +75 -0
- package/dist/modifiers/utils.d.ts.map +1 -0
- package/dist/modifiers/utils.js +250 -0
- package/dist/modifiers/utils.js.map +1 -0
- package/dist/plugins/component-loader-registry.d.ts +143 -0
- package/dist/plugins/component-loader-registry.d.ts.map +1 -0
- package/dist/plugins/index.cjs +2 -0
- package/dist/plugins/index.cjs.map +1 -0
- package/dist/plugins/index.d.ts +17 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +34 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/legacy-adapter.cjs +2 -0
- package/dist/plugins/legacy-adapter.cjs.map +1 -0
- package/dist/plugins/legacy-adapter.d.ts +35 -0
- package/dist/plugins/legacy-adapter.d.ts.map +1 -0
- package/dist/plugins/legacy-adapter.js +30 -0
- package/dist/plugins/legacy-adapter.js.map +1 -0
- package/dist/plugins/simplified-component-registry.cjs +2 -0
- package/dist/plugins/simplified-component-registry.cjs.map +1 -0
- package/dist/plugins/simplified-component-registry.d.ts +40 -0
- package/dist/plugins/simplified-component-registry.d.ts.map +1 -0
- package/dist/plugins/simplified-component-registry.js +71 -0
- package/dist/plugins/simplified-component-registry.js.map +1 -0
- package/dist/plugins/simplified-error-handler.cjs +2 -0
- package/dist/plugins/simplified-error-handler.cjs.map +1 -0
- package/dist/plugins/simplified-error-handler.d.ts +83 -0
- package/dist/plugins/simplified-error-handler.d.ts.map +1 -0
- package/dist/plugins/simplified-error-handler.js +154 -0
- package/dist/plugins/simplified-error-handler.js.map +1 -0
- package/dist/plugins/simplified-index.d.ts +17 -0
- package/dist/plugins/simplified-index.d.ts.map +1 -0
- package/dist/plugins/simplified-lazy-loader.cjs +2 -0
- package/dist/plugins/simplified-lazy-loader.cjs.map +1 -0
- package/dist/plugins/simplified-lazy-loader.d.ts +65 -0
- package/dist/plugins/simplified-lazy-loader.d.ts.map +1 -0
- package/dist/plugins/simplified-lazy-loader.js +129 -0
- package/dist/plugins/simplified-lazy-loader.js.map +1 -0
- package/dist/plugins/simplified-plugin-manager.cjs +2 -0
- package/dist/plugins/simplified-plugin-manager.cjs.map +1 -0
- package/dist/plugins/simplified-plugin-manager.d.ts +24 -0
- package/dist/plugins/simplified-plugin-manager.d.ts.map +1 -0
- package/dist/plugins/simplified-plugin-manager.js +51 -0
- package/dist/plugins/simplified-plugin-manager.js.map +1 -0
- package/dist/plugins/simplified-tachui-instance.cjs +2 -0
- package/dist/plugins/simplified-tachui-instance.cjs.map +1 -0
- package/dist/plugins/simplified-tachui-instance.d.ts +54 -0
- package/dist/plugins/simplified-tachui-instance.d.ts.map +1 -0
- package/dist/plugins/simplified-tachui-instance.js +88 -0
- package/dist/plugins/simplified-tachui-instance.js.map +1 -0
- package/dist/plugins/simplified-types.cjs +2 -0
- package/dist/plugins/simplified-types.cjs.map +1 -0
- package/dist/plugins/simplified-types.d.ts +63 -0
- package/dist/plugins/simplified-types.d.ts.map +1 -0
- package/dist/plugins/simplified-types.js +9 -0
- package/dist/plugins/simplified-types.js.map +1 -0
- package/dist/plugins/simplified-utils.cjs +2 -0
- package/dist/plugins/simplified-utils.cjs.map +1 -0
- package/dist/plugins/simplified-utils.d.ts +39 -0
- package/dist/plugins/simplified-utils.d.ts.map +1 -0
- package/dist/plugins/simplified-utils.js +40 -0
- package/dist/plugins/simplified-utils.js.map +1 -0
- package/dist/reactive/cleanup.cjs +2 -0
- package/dist/reactive/cleanup.cjs.map +1 -0
- package/dist/reactive/cleanup.d.ts +115 -0
- package/dist/reactive/cleanup.d.ts.map +1 -0
- package/dist/reactive/cleanup.js +62 -0
- package/dist/reactive/cleanup.js.map +1 -0
- package/dist/reactive/computed.cjs +2 -0
- package/dist/reactive/computed.cjs.map +1 -0
- package/dist/reactive/computed.d.ts +115 -0
- package/dist/reactive/computed.d.ts.map +1 -0
- package/dist/reactive/computed.js +121 -0
- package/dist/reactive/computed.js.map +1 -0
- package/dist/reactive/context.cjs +2 -0
- package/dist/reactive/context.cjs.map +1 -0
- package/dist/reactive/context.d.ts +82 -0
- package/dist/reactive/context.d.ts.map +1 -0
- package/dist/reactive/context.js +143 -0
- package/dist/reactive/context.js.map +1 -0
- package/dist/reactive/effect.cjs +2 -0
- package/dist/reactive/effect.cjs.map +1 -0
- package/dist/reactive/effect.d.ts +79 -0
- package/dist/reactive/effect.d.ts.map +1 -0
- package/dist/reactive/effect.js +67 -0
- package/dist/reactive/effect.js.map +1 -0
- package/dist/reactive/enhanced-effect.cjs +2 -0
- package/dist/reactive/enhanced-effect.cjs.map +1 -0
- package/dist/reactive/enhanced-effect.d.ts +108 -0
- package/dist/reactive/enhanced-effect.d.ts.map +1 -0
- package/dist/reactive/enhanced-effect.js +153 -0
- package/dist/reactive/enhanced-effect.js.map +1 -0
- package/dist/reactive/enhanced-signal.cjs +2 -0
- package/dist/reactive/enhanced-signal.cjs.map +1 -0
- package/dist/reactive/enhanced-signal.d.ts +91 -0
- package/dist/reactive/enhanced-signal.d.ts.map +1 -0
- package/dist/reactive/enhanced-signal.js +117 -0
- package/dist/reactive/enhanced-signal.js.map +1 -0
- package/dist/reactive/equality.cjs +2 -0
- package/dist/reactive/equality.cjs.map +1 -0
- package/dist/reactive/equality.d.ts +51 -0
- package/dist/reactive/equality.d.ts.map +1 -0
- package/dist/reactive/equality.js +66 -0
- package/dist/reactive/equality.js.map +1 -0
- package/dist/reactive/index.cjs +2 -0
- package/dist/reactive/index.cjs.map +1 -0
- package/dist/reactive/index.d.ts +21 -0
- package/dist/reactive/index.d.ts.map +1 -0
- package/dist/reactive/index.js +95 -0
- package/dist/reactive/index.js.map +1 -0
- package/dist/reactive/migration.cjs +18 -0
- package/dist/reactive/migration.cjs.map +1 -0
- package/dist/reactive/migration.d.ts +104 -0
- package/dist/reactive/migration.d.ts.map +1 -0
- package/dist/reactive/migration.js +164 -0
- package/dist/reactive/migration.js.map +1 -0
- package/dist/reactive/ownership.cjs +2 -0
- package/dist/reactive/ownership.cjs.map +1 -0
- package/dist/reactive/ownership.d.ts +75 -0
- package/dist/reactive/ownership.d.ts.map +1 -0
- package/dist/reactive/ownership.js +34 -0
- package/dist/reactive/ownership.js.map +1 -0
- package/dist/reactive/scheduler.cjs +2 -0
- package/dist/reactive/scheduler.cjs.map +1 -0
- package/dist/reactive/scheduler.d.ts +56 -0
- package/dist/reactive/scheduler.d.ts.map +1 -0
- package/dist/reactive/scheduler.js +111 -0
- package/dist/reactive/scheduler.js.map +1 -0
- package/dist/reactive/signal.cjs +2 -0
- package/dist/reactive/signal.cjs.map +1 -0
- package/dist/reactive/signal.d.ts +82 -0
- package/dist/reactive/signal.d.ts.map +1 -0
- package/dist/reactive/signal.js +96 -0
- package/dist/reactive/signal.js.map +1 -0
- package/dist/reactive/theme.cjs +2 -0
- package/dist/reactive/theme.cjs.map +1 -0
- package/dist/reactive/theme.d.ts +12 -0
- package/dist/reactive/theme.d.ts.map +1 -0
- package/dist/reactive/theme.js +27 -0
- package/dist/reactive/theme.js.map +1 -0
- package/dist/reactive/types.cjs +2 -0
- package/dist/reactive/types.cjs.map +1 -0
- package/dist/reactive/types.d.ts +93 -0
- package/dist/reactive/types.d.ts.map +1 -0
- package/dist/reactive/types.js +5 -0
- package/dist/reactive/types.js.map +1 -0
- package/dist/reactive/unified-scheduler.cjs +2 -0
- package/dist/reactive/unified-scheduler.cjs.map +1 -0
- package/dist/reactive/unified-scheduler.d.ts +112 -0
- package/dist/reactive/unified-scheduler.d.ts.map +1 -0
- package/dist/reactive/unified-scheduler.js +219 -0
- package/dist/reactive/unified-scheduler.js.map +1 -0
- package/dist/runtime/component-context.cjs +2 -0
- package/dist/runtime/component-context.cjs.map +1 -0
- package/dist/runtime/component-context.d.ts +73 -0
- package/dist/runtime/component-context.d.ts.map +1 -0
- package/dist/runtime/component-context.js +177 -0
- package/dist/runtime/component-context.js.map +1 -0
- package/dist/runtime/component.cjs +2 -0
- package/dist/runtime/component.cjs.map +1 -0
- package/dist/runtime/component.d.ts +112 -0
- package/dist/runtime/component.d.ts.map +1 -0
- package/dist/runtime/component.js +238 -0
- package/dist/runtime/component.js.map +1 -0
- package/dist/runtime/context.cjs +2 -0
- package/dist/runtime/context.cjs.map +1 -0
- package/dist/runtime/context.d.ts +138 -0
- package/dist/runtime/context.d.ts.map +1 -0
- package/dist/runtime/context.js +289 -0
- package/dist/runtime/context.js.map +1 -0
- package/dist/runtime/dev-tools.cjs +2 -0
- package/dist/runtime/dev-tools.cjs.map +1 -0
- package/dist/runtime/dev-tools.d.ts +240 -0
- package/dist/runtime/dev-tools.d.ts.map +1 -0
- package/dist/runtime/dev-tools.js +391 -0
- package/dist/runtime/dev-tools.js.map +1 -0
- package/dist/runtime/development-warnings.cjs +2 -0
- package/dist/runtime/development-warnings.cjs.map +1 -0
- package/dist/runtime/development-warnings.d.ts +42 -0
- package/dist/runtime/development-warnings.d.ts.map +1 -0
- package/dist/runtime/development-warnings.js +69 -0
- package/dist/runtime/development-warnings.js.map +1 -0
- package/dist/runtime/dom-bridge.cjs +2 -0
- package/dist/runtime/dom-bridge.cjs.map +1 -0
- package/dist/runtime/dom-bridge.d.ts +70 -0
- package/dist/runtime/dom-bridge.d.ts.map +1 -0
- package/dist/runtime/dom-bridge.js +241 -0
- package/dist/runtime/dom-bridge.js.map +1 -0
- package/dist/runtime/element-override.cjs +2 -0
- package/dist/runtime/element-override.cjs.map +1 -0
- package/dist/runtime/element-override.d.ts +82 -0
- package/dist/runtime/element-override.d.ts.map +1 -0
- package/dist/runtime/element-override.js +214 -0
- package/dist/runtime/element-override.js.map +1 -0
- package/dist/runtime/error-boundary.cjs +2 -0
- package/dist/runtime/error-boundary.cjs.map +1 -0
- package/dist/runtime/error-boundary.d.ts +302 -0
- package/dist/runtime/error-boundary.d.ts.map +1 -0
- package/dist/runtime/error-boundary.js +559 -0
- package/dist/runtime/error-boundary.js.map +1 -0
- package/dist/runtime/error-recovery.cjs +2 -0
- package/dist/runtime/error-recovery.cjs.map +1 -0
- package/dist/runtime/error-recovery.d.ts +267 -0
- package/dist/runtime/error-recovery.d.ts.map +1 -0
- package/dist/runtime/error-recovery.js +385 -0
- package/dist/runtime/error-recovery.js.map +1 -0
- package/dist/runtime/error-reporting.cjs +3 -0
- package/dist/runtime/error-reporting.cjs.map +1 -0
- package/dist/runtime/error-reporting.d.ts +287 -0
- package/dist/runtime/error-reporting.d.ts.map +1 -0
- package/dist/runtime/error-reporting.js +479 -0
- package/dist/runtime/error-reporting.js.map +1 -0
- package/dist/runtime/error-utils.cjs +3 -0
- package/dist/runtime/error-utils.cjs.map +1 -0
- package/dist/runtime/error-utils.d.ts +204 -0
- package/dist/runtime/error-utils.d.ts.map +1 -0
- package/dist/runtime/error-utils.js +352 -0
- package/dist/runtime/error-utils.js.map +1 -0
- package/dist/runtime/index.d.ts +29 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/lazy-component.cjs +2 -0
- package/dist/runtime/lazy-component.cjs.map +1 -0
- package/dist/runtime/lazy-component.d.ts +58 -0
- package/dist/runtime/lazy-component.d.ts.map +1 -0
- package/dist/runtime/lazy-component.js +129 -0
- package/dist/runtime/lazy-component.js.map +1 -0
- package/dist/runtime/lifecycle.cjs +2 -0
- package/dist/runtime/lifecycle.cjs.map +1 -0
- package/dist/runtime/lifecycle.d.ts +8 -0
- package/dist/runtime/lifecycle.d.ts.map +1 -0
- package/dist/runtime/lifecycle.js +7 -0
- package/dist/runtime/lifecycle.js.map +1 -0
- package/dist/runtime/mounting.cjs +2 -0
- package/dist/runtime/mounting.cjs.map +1 -0
- package/dist/runtime/mounting.d.ts +9 -0
- package/dist/runtime/mounting.d.ts.map +1 -0
- package/dist/runtime/mounting.js +12 -0
- package/dist/runtime/mounting.js.map +1 -0
- package/dist/runtime/optimization.cjs +2 -0
- package/dist/runtime/optimization.cjs.map +1 -0
- package/dist/runtime/optimization.d.ts +8 -0
- package/dist/runtime/optimization.d.ts.map +1 -0
- package/dist/runtime/optimization.js +6 -0
- package/dist/runtime/optimization.js.map +1 -0
- package/dist/runtime/performance.cjs +2 -0
- package/dist/runtime/performance.cjs.map +1 -0
- package/dist/runtime/performance.d.ts +217 -0
- package/dist/runtime/performance.d.ts.map +1 -0
- package/dist/runtime/performance.js +399 -0
- package/dist/runtime/performance.js.map +1 -0
- package/dist/runtime/props.cjs +2 -0
- package/dist/runtime/props.cjs.map +1 -0
- package/dist/runtime/props.d.ts +154 -0
- package/dist/runtime/props.d.ts.map +1 -0
- package/dist/runtime/props.js +265 -0
- package/dist/runtime/props.js.map +1 -0
- package/dist/runtime/refs.d.ts +8 -0
- package/dist/runtime/refs.d.ts.map +1 -0
- package/dist/runtime/renderer.cjs +2 -0
- package/dist/runtime/renderer.cjs.map +1 -0
- package/dist/runtime/renderer.d.ts +116 -0
- package/dist/runtime/renderer.d.ts.map +1 -0
- package/dist/runtime/renderer.js +390 -0
- package/dist/runtime/renderer.js.map +1 -0
- package/dist/runtime/semantic-role-manager.cjs +2 -0
- package/dist/runtime/semantic-role-manager.cjs.map +1 -0
- package/dist/runtime/semantic-role-manager.d.ts +37 -0
- package/dist/runtime/semantic-role-manager.d.ts.map +1 -0
- package/dist/runtime/semantic-role-manager.js +82 -0
- package/dist/runtime/semantic-role-manager.js.map +1 -0
- package/dist/runtime/types.d.ts +230 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/state/binding.cjs +2 -0
- package/dist/state/binding.cjs.map +1 -0
- package/dist/state/binding.d.ts +96 -0
- package/dist/state/binding.d.ts.map +1 -0
- package/dist/state/binding.js +155 -0
- package/dist/state/binding.js.map +1 -0
- package/dist/state/environment-object.d.ts +130 -0
- package/dist/state/environment-object.d.ts.map +1 -0
- package/dist/state/environment.cjs +2 -0
- package/dist/state/environment.cjs.map +1 -0
- package/dist/state/environment.d.ts +178 -0
- package/dist/state/environment.d.ts.map +1 -0
- package/dist/state/environment.js +115 -0
- package/dist/state/environment.js.map +1 -0
- package/dist/state/index.cjs +2 -0
- package/dist/state/index.cjs.map +1 -0
- package/dist/state/index.d.ts +108 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +63 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/observed-object.cjs +2 -0
- package/dist/state/observed-object.cjs.map +1 -0
- package/dist/state/observed-object.d.ts +126 -0
- package/dist/state/observed-object.d.ts.map +1 -0
- package/dist/state/observed-object.js +163 -0
- package/dist/state/observed-object.js.map +1 -0
- package/dist/state/state-manager.cjs +2 -0
- package/dist/state/state-manager.cjs.map +1 -0
- package/dist/state/state-manager.d.ts +97 -0
- package/dist/state/state-manager.d.ts.map +1 -0
- package/dist/state/state-manager.js +233 -0
- package/dist/state/state-manager.js.map +1 -0
- package/dist/state/state.cjs +2 -0
- package/dist/state/state.cjs.map +1 -0
- package/dist/state/state.d.ts +78 -0
- package/dist/state/state.d.ts.map +1 -0
- package/dist/state/state.js +159 -0
- package/dist/state/state.js.map +1 -0
- package/dist/state/types.d.ts +159 -0
- package/dist/state/types.d.ts.map +1 -0
- package/dist/sui-compat.cjs +2 -0
- package/dist/sui-compat.cjs.map +1 -0
- package/dist/sui-compat.d.ts +110 -0
- package/dist/sui-compat.d.ts.map +1 -0
- package/dist/sui-compat.js +88 -0
- package/dist/sui-compat.js.map +1 -0
- package/dist/validation/advanced-debugging.cjs +44 -0
- package/dist/validation/advanced-debugging.cjs.map +1 -0
- package/dist/validation/advanced-debugging.d.ts +319 -0
- package/dist/validation/advanced-debugging.d.ts.map +1 -0
- package/dist/validation/advanced-debugging.js +455 -0
- package/dist/validation/advanced-debugging.js.map +1 -0
- package/dist/validation/build-time/detection.cjs +2 -0
- package/dist/validation/build-time/detection.cjs.map +1 -0
- package/dist/validation/build-time/detection.d.ts +32 -0
- package/dist/validation/build-time/detection.d.ts.map +1 -0
- package/dist/validation/build-time/detection.js +199 -0
- package/dist/validation/build-time/detection.js.map +1 -0
- package/dist/validation/build-time/index.cjs +2 -0
- package/dist/validation/build-time/index.cjs.map +1 -0
- package/dist/validation/build-time/index.d.ts +84 -0
- package/dist/validation/build-time/index.d.ts.map +1 -0
- package/dist/validation/build-time/index.js +122 -0
- package/dist/validation/build-time/index.js.map +1 -0
- package/dist/validation/build-time/plugins.cjs +3 -0
- package/dist/validation/build-time/plugins.cjs.map +1 -0
- package/dist/validation/build-time/plugins.d.ts +75 -0
- package/dist/validation/build-time/plugins.d.ts.map +1 -0
- package/dist/validation/build-time/plugins.js +282 -0
- package/dist/validation/build-time/plugins.js.map +1 -0
- package/dist/validation/build-time/rules.cjs +2 -0
- package/dist/validation/build-time/rules.cjs.map +1 -0
- package/dist/validation/build-time/rules.d.ts +73 -0
- package/dist/validation/build-time/rules.d.ts.map +1 -0
- package/dist/validation/build-time/rules.js +576 -0
- package/dist/validation/build-time/rules.js.map +1 -0
- package/dist/validation/build-time/transformer.cjs +3 -0
- package/dist/validation/build-time/transformer.cjs.map +1 -0
- package/dist/validation/build-time/transformer.d.ts +23 -0
- package/dist/validation/build-time/transformer.d.ts.map +1 -0
- package/dist/validation/build-time/transformer.js +177 -0
- package/dist/validation/build-time/transformer.js.map +1 -0
- package/dist/validation/build-time/types.d.ts +212 -0
- package/dist/validation/build-time/types.d.ts.map +1 -0
- package/dist/validation/comprehensive.cjs +9 -0
- package/dist/validation/comprehensive.cjs.map +1 -0
- package/dist/validation/comprehensive.d.ts +160 -0
- package/dist/validation/comprehensive.d.ts.map +1 -0
- package/dist/validation/comprehensive.js +916 -0
- package/dist/validation/comprehensive.js.map +1 -0
- package/dist/validation/debug-tools.cjs +16 -0
- package/dist/validation/debug-tools.cjs.map +1 -0
- package/dist/validation/debug-tools.d.ts +251 -0
- package/dist/validation/debug-tools.d.ts.map +1 -0
- package/dist/validation/debug-tools.js +405 -0
- package/dist/validation/debug-tools.js.map +1 -0
- package/dist/validation/developer-experience.cjs +17 -0
- package/dist/validation/developer-experience.cjs.map +1 -0
- package/dist/validation/developer-experience.d.ts +243 -0
- package/dist/validation/developer-experience.d.ts.map +1 -0
- package/dist/validation/developer-experience.js +433 -0
- package/dist/validation/developer-experience.js.map +1 -0
- package/dist/validation/documentation-integration.cjs +7 -0
- package/dist/validation/documentation-integration.cjs.map +1 -0
- package/dist/validation/documentation-integration.d.ts +269 -0
- package/dist/validation/documentation-integration.d.ts.map +1 -0
- package/dist/validation/documentation-integration.js +440 -0
- package/dist/validation/documentation-integration.js.map +1 -0
- package/dist/validation/enhanced-runtime.cjs +6 -0
- package/dist/validation/enhanced-runtime.cjs.map +1 -0
- package/dist/validation/enhanced-runtime.d.ts +279 -0
- package/dist/validation/enhanced-runtime.d.ts.map +1 -0
- package/dist/validation/enhanced-runtime.js +465 -0
- package/dist/validation/enhanced-runtime.js.map +1 -0
- package/dist/validation/error-reporting.cjs +32 -0
- package/dist/validation/error-reporting.cjs.map +1 -0
- package/dist/validation/error-reporting.d.ts +186 -0
- package/dist/validation/error-reporting.d.ts.map +1 -0
- package/dist/validation/error-reporting.js +370 -0
- package/dist/validation/error-reporting.js.map +1 -0
- package/dist/validation/ide-integration.cjs +85 -0
- package/dist/validation/ide-integration.cjs.map +1 -0
- package/dist/validation/ide-integration.d.ts +328 -0
- package/dist/validation/ide-integration.d.ts.map +1 -0
- package/dist/validation/ide-integration.js +557 -0
- package/dist/validation/ide-integration.js.map +1 -0
- package/dist/validation/index.cjs +6 -0
- package/dist/validation/index.cjs.map +1 -0
- package/dist/validation/index.d.ts +171 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +309 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/lifecycle-validation.cjs +2 -0
- package/dist/validation/lifecycle-validation.cjs.map +1 -0
- package/dist/validation/lifecycle-validation.d.ts +165 -0
- package/dist/validation/lifecycle-validation.d.ts.map +1 -0
- package/dist/validation/lifecycle-validation.js +314 -0
- package/dist/validation/lifecycle-validation.js.map +1 -0
- package/dist/validation/performance-optimizer.cjs +2 -0
- package/dist/validation/performance-optimizer.cjs.map +1 -0
- package/dist/validation/performance-optimizer.d.ts +218 -0
- package/dist/validation/performance-optimizer.d.ts.map +1 -0
- package/dist/validation/performance-optimizer.js +338 -0
- package/dist/validation/performance-optimizer.js.map +1 -0
- package/dist/validation/plugin-registration.cjs +2 -0
- package/dist/validation/plugin-registration.cjs.map +1 -0
- package/dist/validation/plugin-registration.d.ts +88 -0
- package/dist/validation/plugin-registration.d.ts.map +1 -0
- package/dist/validation/plugin-registration.js +126 -0
- package/dist/validation/plugin-registration.js.map +1 -0
- package/dist/validation/production-bypass.cjs +2 -0
- package/dist/validation/production-bypass.cjs.map +1 -0
- package/dist/validation/production-bypass.d.ts +175 -0
- package/dist/validation/production-bypass.d.ts.map +1 -0
- package/dist/validation/production-bypass.js +218 -0
- package/dist/validation/production-bypass.js.map +1 -0
- package/dist/validation/simple.cjs +9 -0
- package/dist/validation/simple.cjs.map +1 -0
- package/dist/validation/simple.d.ts +111 -0
- package/dist/validation/simple.d.ts.map +1 -0
- package/dist/validation/simple.js +146 -0
- package/dist/validation/simple.js.map +1 -0
- package/dist/viewport/adapters/web-adapter.cjs +70 -0
- package/dist/viewport/adapters/web-adapter.cjs.map +1 -0
- package/dist/viewport/adapters/web-adapter.d.ts +227 -0
- package/dist/viewport/adapters/web-adapter.d.ts.map +1 -0
- package/dist/viewport/adapters/web-adapter.js +823 -0
- package/dist/viewport/adapters/web-adapter.js.map +1 -0
- package/dist/viewport/components.cjs +2 -0
- package/dist/viewport/components.cjs.map +1 -0
- package/dist/viewport/components.d.ts +131 -0
- package/dist/viewport/components.d.ts.map +1 -0
- package/dist/viewport/components.js +298 -0
- package/dist/viewport/components.js.map +1 -0
- package/dist/viewport/environment.cjs +2 -0
- package/dist/viewport/environment.cjs.map +1 -0
- package/dist/viewport/environment.d.ts +75 -0
- package/dist/viewport/environment.d.ts.map +1 -0
- package/dist/viewport/environment.js +86 -0
- package/dist/viewport/environment.js.map +1 -0
- package/dist/viewport/index.cjs +2 -0
- package/dist/viewport/index.cjs.map +1 -0
- package/dist/viewport/index.d.ts +138 -0
- package/dist/viewport/index.d.ts.map +1 -0
- package/dist/viewport/index.js +166 -0
- package/dist/viewport/index.js.map +1 -0
- package/dist/viewport/platform-detection.cjs +2 -0
- package/dist/viewport/platform-detection.cjs.map +1 -0
- package/dist/viewport/platform-detection.d.ts +59 -0
- package/dist/viewport/platform-detection.d.ts.map +1 -0
- package/dist/viewport/platform-detection.js +205 -0
- package/dist/viewport/platform-detection.js.map +1 -0
- package/dist/viewport/types.cjs +2 -0
- package/dist/viewport/types.cjs.map +1 -0
- package/dist/viewport/types.d.ts +301 -0
- package/dist/viewport/types.d.ts.map +1 -0
- package/dist/viewport/types.js +13 -0
- package/dist/viewport/types.js.map +1 -0
- package/dist/viewport/viewport-manager.cjs +2 -0
- package/dist/viewport/viewport-manager.cjs.map +1 -0
- package/dist/viewport/viewport-manager.d.ts +118 -0
- package/dist/viewport/viewport-manager.d.ts.map +1 -0
- package/dist/viewport/viewport-manager.js +524 -0
- package/dist/viewport/viewport-manager.js.map +1 -0
- package/package.json +128 -0
- package/src/assets/Asset.ts +11 -0
- package/src/assets/AssetCollection.ts +99 -0
- package/src/assets/ColorAsset.ts +210 -0
- package/src/assets/FontAsset.ts +380 -0
- package/src/assets/ImageAsset.ts +91 -0
- package/src/assets/README.md +190 -0
- package/src/assets/index.ts +175 -0
- package/src/assets/test-assets.ts +69 -0
- package/src/assets/test-integration.ts +46 -0
- package/src/assets/test-simple.ts +28 -0
- package/src/assets/types.ts +79 -0
- package/src/bundles/common.ts +30 -0
- package/src/bundles/complete.ts +29 -0
- package/src/bundles/essential.ts +26 -0
- package/src/bundles/minimal.ts +26 -0
- package/src/bundles/production-minimal.ts +67 -0
- package/src/compiler/advanced-parser.ts +871 -0
- package/src/compiler/codegen.ts +450 -0
- package/src/compiler/enhanced-codegen.ts +729 -0
- package/src/compiler/index.ts +25 -0
- package/src/compiler/parser.ts +461 -0
- package/src/compiler/plugin.ts +181 -0
- package/src/compiler/types.ts +177 -0
- package/src/components/BasicInput.ts +352 -0
- package/src/components/Button.ts +963 -0
- package/src/components/Divider.ts +341 -0
- package/src/components/EnhancedLink.ts +676 -0
- package/src/components/Form.ts +414 -0
- package/src/components/Grid.ts +2507 -0
- package/src/components/GridResponsive.ts +637 -0
- package/src/components/Image.ts +426 -0
- package/src/components/List.ts +1084 -0
- package/src/components/Menu.ts +807 -0
- package/src/components/Picker.ts +678 -0
- package/src/components/ScrollView.ts +725 -0
- package/src/components/Section.ts +472 -0
- package/src/components/Show.ts +205 -0
- package/src/components/Spacer.ts +93 -0
- package/src/components/Text.ts +447 -0
- package/src/components/Toggle.ts +700 -0
- package/src/components/index.ts +231 -0
- package/src/components/wrapper.ts +828 -0
- package/src/concatenation/concatenatable.ts +211 -0
- package/src/concatenation/concatenated-component.ts +471 -0
- package/src/concatenation/index.ts +41 -0
- package/src/concatenation/styles.css +120 -0
- package/src/concatenation/text-optimizer.ts +440 -0
- package/src/concatenation/types.ts +116 -0
- package/src/constants/README.md +339 -0
- package/src/constants/__tests__/frame-utils.test.ts +276 -0
- package/src/constants/__tests__/layout.test.ts +215 -0
- package/src/constants/frame-utils.ts +174 -0
- package/src/constants/index.ts +8 -0
- package/src/constants/layout.ts +120 -0
- package/src/css-classes/component-base.ts +117 -0
- package/src/css-classes/css-class-manager.ts +372 -0
- package/src/css-classes/dom-integration.ts +162 -0
- package/src/css-classes/enhanced-renderer.ts +166 -0
- package/src/css-classes/index.ts +45 -0
- package/src/css-classes/types.ts +73 -0
- package/src/css-classes/utilities.ts +175 -0
- package/src/debug/index.ts +267 -0
- package/src/developer-experience/enhanced-errors.ts +556 -0
- package/src/developer-experience/enhanced-types.ts +427 -0
- package/src/developer-experience/index.ts +220 -0
- package/src/globals.d.ts +43 -0
- package/src/gradients/__tests__/angular-gradient.test.ts +111 -0
- package/src/gradients/__tests__/background-modifier.test.ts +81 -0
- package/src/gradients/__tests__/comprehensive-gradients.test.ts +296 -0
- package/src/gradients/__tests__/gradient-asset.test.ts +144 -0
- package/src/gradients/__tests__/linear-gradient.test.ts +92 -0
- package/src/gradients/__tests__/phase4-features.test.ts +386 -0
- package/src/gradients/__tests__/radial-gradient.test.ts +110 -0
- package/src/gradients/__tests__/repeating-gradients.test.ts +125 -0
- package/src/gradients/__tests__/state-background-modifier.test.ts +340 -0
- package/src/gradients/__tests__/state-gradient-asset.test.ts +262 -0
- package/src/gradients/__tests__/state-gradient-integration.test.ts +277 -0
- package/src/gradients/css-generator.ts +158 -0
- package/src/gradients/examples.ts +632 -0
- package/src/gradients/gradient-asset.ts +30 -0
- package/src/gradients/index.ts +85 -0
- package/src/gradients/performance.ts +521 -0
- package/src/gradients/presets.ts +422 -0
- package/src/gradients/reactive.ts +470 -0
- package/src/gradients/state-gradient-asset.ts +179 -0
- package/src/gradients/types.ts +148 -0
- package/src/gradients/utils.ts +579 -0
- package/src/gradients/validation.ts +489 -0
- package/src/index.ts +168 -0
- package/src/lifecycle/hooks.ts +332 -0
- package/src/modifiers/__tests__/as-html-integration.test.ts +204 -0
- package/src/modifiers/__tests__/as-html.test.ts +437 -0
- package/src/modifiers/__tests__/basic-sanitizer-security.test.ts +294 -0
- package/src/modifiers/__tests__/border.test.ts +371 -0
- package/src/modifiers/__tests__/margin-string-support.test.ts +41 -0
- package/src/modifiers/__tests__/padding-string-support.test.ts +41 -0
- package/src/modifiers/as-html-validator.ts +68 -0
- package/src/modifiers/as-html.ts +216 -0
- package/src/modifiers/attributes.ts +574 -0
- package/src/modifiers/backdrop.ts +290 -0
- package/src/modifiers/background.ts +165 -0
- package/src/modifiers/base.ts +1815 -0
- package/src/modifiers/basic-sanitizer.ts +227 -0
- package/src/modifiers/border.ts +574 -0
- package/src/modifiers/builder.ts +1747 -0
- package/src/modifiers/core.ts +521 -0
- package/src/modifiers/css.ts +148 -0
- package/src/modifiers/effects.ts +412 -0
- package/src/modifiers/elements.ts +541 -0
- package/src/modifiers/filters.ts +501 -0
- package/src/modifiers/flexbox.ts +180 -0
- package/src/modifiers/font.ts +149 -0
- package/src/modifiers/grid.ts +238 -0
- package/src/modifiers/index.ts +481 -0
- package/src/modifiers/margin.ts +218 -0
- package/src/modifiers/padding.ts +318 -0
- package/src/modifiers/registry.ts +444 -0
- package/src/modifiers/responsive/__tests__/advanced-media-queries.test.ts +392 -0
- package/src/modifiers/responsive/__tests__/advanced-utilities.test.ts +368 -0
- package/src/modifiers/responsive/__tests__/comprehensive-browser-tests.test.ts +556 -0
- package/src/modifiers/responsive/__tests__/layout-patterns.test.ts +558 -0
- package/src/modifiers/responsive/advanced-utilities.ts +562 -0
- package/src/modifiers/responsive/breakpoints.ts +330 -0
- package/src/modifiers/responsive/css-generator.ts +432 -0
- package/src/modifiers/responsive/dev-tools.ts +650 -0
- package/src/modifiers/responsive/index.ts +119 -0
- package/src/modifiers/responsive/layout-patterns.ts +592 -0
- package/src/modifiers/responsive/performance.ts +385 -0
- package/src/modifiers/responsive/responsive-builder.ts +620 -0
- package/src/modifiers/responsive/responsive-modifier.ts +410 -0
- package/src/modifiers/responsive/types.ts +226 -0
- package/src/modifiers/responsive/utilities.ts +478 -0
- package/src/modifiers/scroll.ts +297 -0
- package/src/modifiers/shadows.ts +321 -0
- package/src/modifiers/size.ts +208 -0
- package/src/modifiers/text.ts +416 -0
- package/src/modifiers/transformations.ts +640 -0
- package/src/modifiers/transitions.ts +218 -0
- package/src/modifiers/types.ts +889 -0
- package/src/modifiers/typography.ts +341 -0
- package/src/modifiers/utility.ts +209 -0
- package/src/modifiers/utils.ts +413 -0
- package/src/plugins/__tests__/simplified-plugin-system.test.ts +190 -0
- package/src/plugins/component-loader-registry.ts +371 -0
- package/src/plugins/index.ts +61 -0
- package/src/plugins/legacy-adapter.ts +84 -0
- package/src/plugins/simplified-component-registry.ts +130 -0
- package/src/plugins/simplified-error-handler.ts +372 -0
- package/src/plugins/simplified-index.ts +61 -0
- package/src/plugins/simplified-lazy-loader.ts +242 -0
- package/src/plugins/simplified-plugin-manager.ts +93 -0
- package/src/plugins/simplified-tachui-instance.ts +142 -0
- package/src/plugins/simplified-types.ts +79 -0
- package/src/plugins/simplified-utils.ts +118 -0
- package/src/reactive/cleanup.ts +241 -0
- package/src/reactive/computed.ts +281 -0
- package/src/reactive/context.ts +287 -0
- package/src/reactive/effect.ts +194 -0
- package/src/reactive/enhanced-effect.ts +318 -0
- package/src/reactive/enhanced-signal.ts +227 -0
- package/src/reactive/equality.ts +188 -0
- package/src/reactive/globals.d.ts +5 -0
- package/src/reactive/index.ts +150 -0
- package/src/reactive/migration.ts +335 -0
- package/src/reactive/ownership.ts +182 -0
- package/src/reactive/scheduler.ts +300 -0
- package/src/reactive/signal.ts +201 -0
- package/src/reactive/theme.ts +49 -0
- package/src/reactive/types.ts +103 -0
- package/src/reactive/unified-scheduler.ts +357 -0
- package/src/runtime/component-context.ts +343 -0
- package/src/runtime/component.ts +499 -0
- package/src/runtime/context.ts +527 -0
- package/src/runtime/dev-tools.ts +752 -0
- package/src/runtime/development-warnings.ts +114 -0
- package/src/runtime/dom-bridge.ts +570 -0
- package/src/runtime/element-override.ts +282 -0
- package/src/runtime/error-boundary.ts +955 -0
- package/src/runtime/error-recovery.ts +638 -0
- package/src/runtime/error-reporting.ts +808 -0
- package/src/runtime/error-utils.ts +698 -0
- package/src/runtime/index.ts +202 -0
- package/src/runtime/lazy-component.ts +268 -0
- package/src/runtime/lifecycle.ts +10 -0
- package/src/runtime/mounting.ts +17 -0
- package/src/runtime/optimization.ts +13 -0
- package/src/runtime/performance.ts +693 -0
- package/src/runtime/props.ts +434 -0
- package/src/runtime/refs.ts +13 -0
- package/src/runtime/renderer.ts +674 -0
- package/src/runtime/semantic-role-manager.ts +140 -0
- package/src/runtime/types.ts +282 -0
- package/src/state/binding.ts +381 -0
- package/src/state/environment-object.ts +444 -0
- package/src/state/environment.ts +351 -0
- package/src/state/index.ts +179 -0
- package/src/state/observed-object.ts +405 -0
- package/src/state/state-manager.ts +366 -0
- package/src/state/state.ts +339 -0
- package/src/state/types.ts +192 -0
- package/src/sui-compat.ts +163 -0
- package/src/validation/__tests__/phase-1d-integration.test.ts +558 -0
- package/src/validation/advanced-debugging.ts +860 -0
- package/src/validation/build-time/detection.ts +373 -0
- package/src/validation/build-time/index.ts +222 -0
- package/src/validation/build-time/plugins.ts +515 -0
- package/src/validation/build-time/rules.ts +624 -0
- package/src/validation/build-time/transformer.ts +372 -0
- package/src/validation/build-time/types.ts +232 -0
- package/src/validation/comprehensive.ts +1272 -0
- package/src/validation/debug-tools.ts +724 -0
- package/src/validation/developer-experience.ts +712 -0
- package/src/validation/documentation-integration.ts +835 -0
- package/src/validation/enhanced-runtime.ts +765 -0
- package/src/validation/error-reporting.ts +587 -0
- package/src/validation/ide-integration.ts +845 -0
- package/src/validation/index.ts +353 -0
- package/src/validation/lifecycle-validation.ts +636 -0
- package/src/validation/performance-optimizer.ts +599 -0
- package/src/validation/plugin-registration.ts +249 -0
- package/src/validation/production-bypass.ts +466 -0
- package/src/validation/simple.ts +465 -0
- package/src/viewport/adapters/web-adapter.ts +1385 -0
- package/src/viewport/components.ts +505 -0
- package/src/viewport/environment.ts +173 -0
- package/src/viewport/index.ts +290 -0
- package/src/viewport/platform-detection.ts +431 -0
- package/src/viewport/types.ts +371 -0
- package/src/viewport/viewport-manager.ts +979 -0
|
@@ -0,0 +1,443 @@
|
|
|
1
|
+
import "../reactive/cleanup.js";
|
|
2
|
+
import "../reactive/unified-scheduler.js";
|
|
3
|
+
import { createEffect as x } from "../reactive/effect.js";
|
|
4
|
+
import { createSignal as g, isSignal as E } from "../reactive/signal.js";
|
|
5
|
+
import "../reactive/scheduler.js";
|
|
6
|
+
import "../reactive/theme.js";
|
|
7
|
+
import "../runtime/component.js";
|
|
8
|
+
import "../runtime/context.js";
|
|
9
|
+
import "../runtime/dev-tools.js";
|
|
10
|
+
import "../runtime/dom-bridge.js";
|
|
11
|
+
import "../runtime/error-boundary.js";
|
|
12
|
+
import "../runtime/error-reporting.js";
|
|
13
|
+
import "../runtime/performance.js";
|
|
14
|
+
import { h as m } from "../runtime/renderer.js";
|
|
15
|
+
import "../runtime/element-override.js";
|
|
16
|
+
import "../runtime/semantic-role-manager.js";
|
|
17
|
+
import "../runtime/development-warnings.js";
|
|
18
|
+
import { useLifecycle as y, setupPositioning as I, AnimationManager as v, FocusManager as O } from "../lifecycle/hooks.js";
|
|
19
|
+
import { withModifiers as k } from "./wrapper.js";
|
|
20
|
+
var w = Object.defineProperty, C = (o, e, t) => e in o ? w(o, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : o[e] = t, c = (o, e, t) => C(o, typeof e != "symbol" ? e + "" : e, t);
|
|
21
|
+
const f = {
|
|
22
|
+
colors: {
|
|
23
|
+
background: "#FFFFFF",
|
|
24
|
+
surface: "#F8F9FA",
|
|
25
|
+
text: "#1A1A1A",
|
|
26
|
+
textSecondary: "#6B7280",
|
|
27
|
+
textDisabled: "#A0A0A0",
|
|
28
|
+
textDestructive: "#FF3B30",
|
|
29
|
+
border: "#E5E5E5",
|
|
30
|
+
hover: "#F0F0F0",
|
|
31
|
+
active: "#E3F2FD",
|
|
32
|
+
separator: "#E5E5E5",
|
|
33
|
+
shortcut: "#8E8E93",
|
|
34
|
+
backdrop: "rgba(0, 0, 0, 0.1)"
|
|
35
|
+
},
|
|
36
|
+
spacing: {
|
|
37
|
+
padding: 8,
|
|
38
|
+
itemPadding: 12,
|
|
39
|
+
gap: 4
|
|
40
|
+
},
|
|
41
|
+
borderRadius: 8,
|
|
42
|
+
minWidth: 200,
|
|
43
|
+
maxWidth: 320,
|
|
44
|
+
itemHeight: 36,
|
|
45
|
+
shadow: "0 4px 12px rgba(0, 0, 0, 0.15)",
|
|
46
|
+
backdropBlur: "blur(2px)"
|
|
47
|
+
};
|
|
48
|
+
class A {
|
|
49
|
+
constructor(e) {
|
|
50
|
+
c(this, "type", "component"), c(this, "id"), c(this, "props"), c(this, "cleanup", []), c(this, "theme", f), c(this, "isOpenSignal", g(!1)), c(this, "focusedIndex", -1), c(this, "menuElement", null), c(this, "triggerElement", null), c(this, "handleKeyDown", (t) => {
|
|
51
|
+
if (!this.isOpen()) return;
|
|
52
|
+
const i = this.getVisibleItems();
|
|
53
|
+
switch (t.key) {
|
|
54
|
+
case "Escape":
|
|
55
|
+
(this.props.escapeKeyCloses ?? !0) && (t.preventDefault(), this.setIsOpenValue(!1));
|
|
56
|
+
break;
|
|
57
|
+
case "ArrowDown":
|
|
58
|
+
t.preventDefault(), this.focusedIndex = Math.min(this.focusedIndex + 1, i.length - 1), this.updateItemFocus();
|
|
59
|
+
break;
|
|
60
|
+
case "ArrowUp":
|
|
61
|
+
t.preventDefault(), this.focusedIndex = Math.max(this.focusedIndex - 1, 0), this.updateItemFocus();
|
|
62
|
+
break;
|
|
63
|
+
case "Enter":
|
|
64
|
+
case " ":
|
|
65
|
+
if (this.focusedIndex >= 0 && this.focusedIndex < i.length) {
|
|
66
|
+
t.preventDefault();
|
|
67
|
+
const n = this.menuElement?.querySelector(
|
|
68
|
+
`[data-menu-item-index="${this.focusedIndex}"]`
|
|
69
|
+
);
|
|
70
|
+
n && n.click();
|
|
71
|
+
}
|
|
72
|
+
break;
|
|
73
|
+
case "Home":
|
|
74
|
+
t.preventDefault(), this.focusedIndex = 0, this.updateItemFocus();
|
|
75
|
+
break;
|
|
76
|
+
case "End":
|
|
77
|
+
t.preventDefault(), this.focusedIndex = i.length - 1, this.updateItemFocus();
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
}), c(this, "handleClickOutside", (t) => {
|
|
81
|
+
if (!(this.props.closeOnClickOutside ?? !0)) return;
|
|
82
|
+
const i = t.target, n = this.menuElement?.contains(i), s = this.triggerElement?.contains(i);
|
|
83
|
+
!n && !s && this.setIsOpenValue(!1);
|
|
84
|
+
}), c(this, "setIsOpenValue", (t) => {
|
|
85
|
+
this.props.isOpen ? typeof this.props.isOpen == "function" && this.props.isOpen(t) : this.setIsOpen(t);
|
|
86
|
+
}), this.props = e, this.id = `menu-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`, this.props.isOpen && (this.isOpenSignal = [
|
|
87
|
+
this.props.isOpen,
|
|
88
|
+
((t) => {
|
|
89
|
+
typeof this.props.isOpen == "function" && this.props.isOpen(
|
|
90
|
+
typeof t == "function" ? t(this.props.isOpen()) : t
|
|
91
|
+
);
|
|
92
|
+
})
|
|
93
|
+
]), y(this, {
|
|
94
|
+
onDOMReady: (t, i) => {
|
|
95
|
+
i && (this.setupMenuPositioning(i), this.setupMenuAnimations(i));
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
get isOpen() {
|
|
100
|
+
return this.isOpenSignal[0];
|
|
101
|
+
}
|
|
102
|
+
get setIsOpen() {
|
|
103
|
+
return this.isOpenSignal[1];
|
|
104
|
+
}
|
|
105
|
+
resolveValue(e) {
|
|
106
|
+
return E(e) ? e() : e;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Set up menu positioning using enhanced lifecycle (ENHANCED Phase 3)
|
|
110
|
+
*/
|
|
111
|
+
setupMenuPositioning(e) {
|
|
112
|
+
this.cleanup || (this.cleanup = []), I(
|
|
113
|
+
this,
|
|
114
|
+
`[data-menu-trigger="${this.id}"]`,
|
|
115
|
+
`[data-menu-content="${this.id}"]`,
|
|
116
|
+
(t, i) => this.calculatePosition(t, i)
|
|
117
|
+
);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Set up menu animations using enhanced lifecycle (ENHANCED Phase 3)
|
|
121
|
+
*/
|
|
122
|
+
setupMenuAnimations(e) {
|
|
123
|
+
this.cleanup || (this.cleanup = []);
|
|
124
|
+
}
|
|
125
|
+
getVisibleItems() {
|
|
126
|
+
return this.props.items.filter((e) => e.title !== "---");
|
|
127
|
+
}
|
|
128
|
+
createMenuItem(e, t) {
|
|
129
|
+
if (e.title === "---")
|
|
130
|
+
return m("div", {
|
|
131
|
+
role: "separator",
|
|
132
|
+
style: {
|
|
133
|
+
height: "1px",
|
|
134
|
+
backgroundColor: this.theme.colors.separator,
|
|
135
|
+
margin: `${this.theme.spacing.gap}px 0`
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
const i = this.resolveValue(e.disabled ?? !1), n = this.resolveValue(e.title), s = m("div", {
|
|
139
|
+
role: "menuitem",
|
|
140
|
+
tabindex: i ? "-1" : "0",
|
|
141
|
+
"aria-disabled": i,
|
|
142
|
+
"data-menu-item-index": t,
|
|
143
|
+
style: {
|
|
144
|
+
display: "flex",
|
|
145
|
+
alignItems: "center",
|
|
146
|
+
justifyContent: "space-between",
|
|
147
|
+
padding: `${this.theme.spacing.itemPadding}px`,
|
|
148
|
+
minHeight: `${this.theme.itemHeight}px`,
|
|
149
|
+
fontSize: "14px",
|
|
150
|
+
fontWeight: "400",
|
|
151
|
+
color: i ? this.theme.colors.textDisabled : e.destructive || e.role === "destructive" ? this.theme.colors.textDestructive : this.theme.colors.text,
|
|
152
|
+
cursor: i ? "default" : "pointer",
|
|
153
|
+
borderRadius: `${this.theme.borderRadius / 2}px`,
|
|
154
|
+
transition: "all 150ms ease-out",
|
|
155
|
+
userSelect: "none"
|
|
156
|
+
},
|
|
157
|
+
onclick: async (p) => {
|
|
158
|
+
if (!i) {
|
|
159
|
+
if (p.preventDefault(), p.stopPropagation(), e.action)
|
|
160
|
+
try {
|
|
161
|
+
await e.action();
|
|
162
|
+
} catch (r) {
|
|
163
|
+
console.error("Menu item action failed:", r);
|
|
164
|
+
}
|
|
165
|
+
(this.props.closeOnSelect ?? !0) && this.setIsOpenValue(!1);
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
onmouseenter: () => {
|
|
169
|
+
if (!i) {
|
|
170
|
+
this.focusedIndex = t, this.updateItemFocus();
|
|
171
|
+
const p = s.element;
|
|
172
|
+
p && (p.style.backgroundColor = this.theme.colors.hover);
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
onmouseleave: () => {
|
|
176
|
+
if (!i) {
|
|
177
|
+
const p = s.element;
|
|
178
|
+
p && (p.style.backgroundColor = "transparent");
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}), a = m("div", {
|
|
182
|
+
style: {
|
|
183
|
+
display: "flex",
|
|
184
|
+
alignItems: "center",
|
|
185
|
+
gap: `${this.theme.spacing.gap * 2}px`
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
if (e.systemImage) {
|
|
189
|
+
const r = m("span", {
|
|
190
|
+
style: {
|
|
191
|
+
fontSize: "16px",
|
|
192
|
+
color: "inherit"
|
|
193
|
+
}
|
|
194
|
+
}).element;
|
|
195
|
+
r && (r.textContent = e.systemImage);
|
|
196
|
+
const b = a.element;
|
|
197
|
+
b && r && b.appendChild(r);
|
|
198
|
+
}
|
|
199
|
+
const l = m("span").element;
|
|
200
|
+
l && (l.textContent = n);
|
|
201
|
+
const h = a.element;
|
|
202
|
+
h && l && h.appendChild(l);
|
|
203
|
+
const d = s.element;
|
|
204
|
+
if (d && h && d.appendChild(h), e.shortcut) {
|
|
205
|
+
const r = m("span", {
|
|
206
|
+
style: {
|
|
207
|
+
fontSize: "12px",
|
|
208
|
+
color: this.theme.colors.shortcut,
|
|
209
|
+
fontFamily: "monospace"
|
|
210
|
+
}
|
|
211
|
+
}).element;
|
|
212
|
+
r && (r.textContent = e.shortcut), d && r && d.appendChild(r);
|
|
213
|
+
}
|
|
214
|
+
if (e.submenu && e.submenu.length > 0) {
|
|
215
|
+
const r = m("span", {
|
|
216
|
+
style: {
|
|
217
|
+
fontSize: "12px",
|
|
218
|
+
color: this.theme.colors.textSecondary
|
|
219
|
+
}
|
|
220
|
+
}).element;
|
|
221
|
+
r && (r.textContent = "▶"), d && r && d.appendChild(r);
|
|
222
|
+
}
|
|
223
|
+
return s;
|
|
224
|
+
}
|
|
225
|
+
updateItemFocus() {
|
|
226
|
+
if (!this.menuElement) return;
|
|
227
|
+
this.menuElement.querySelectorAll('[role="menuitem"]').forEach((t, i) => {
|
|
228
|
+
const n = t;
|
|
229
|
+
i === this.focusedIndex ? (n.style.backgroundColor = this.theme.colors.hover, n.focus()) : n.style.backgroundColor = "transparent";
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
calculatePosition(e, t) {
|
|
233
|
+
const i = e.getBoundingClientRect(), n = t.getBoundingClientRect(), s = {
|
|
234
|
+
width: window.innerWidth,
|
|
235
|
+
height: window.innerHeight
|
|
236
|
+
}, a = this.props.placement ?? "bottom", u = this.props.offset ?? { x: 0, y: 4 };
|
|
237
|
+
let l = 0, h = 0;
|
|
238
|
+
switch (a) {
|
|
239
|
+
case "bottom":
|
|
240
|
+
case "bottom-start":
|
|
241
|
+
case "bottom-end":
|
|
242
|
+
h = i.bottom + u.y;
|
|
243
|
+
break;
|
|
244
|
+
case "top":
|
|
245
|
+
case "top-start":
|
|
246
|
+
case "top-end":
|
|
247
|
+
h = i.top - n.height - u.y;
|
|
248
|
+
break;
|
|
249
|
+
case "right":
|
|
250
|
+
case "right-start":
|
|
251
|
+
case "right-end":
|
|
252
|
+
l = i.right + u.x;
|
|
253
|
+
break;
|
|
254
|
+
case "left":
|
|
255
|
+
case "left-start":
|
|
256
|
+
case "left-end":
|
|
257
|
+
l = i.left - n.width - u.x;
|
|
258
|
+
break;
|
|
259
|
+
}
|
|
260
|
+
switch (a) {
|
|
261
|
+
case "bottom":
|
|
262
|
+
case "top":
|
|
263
|
+
l = i.left + (i.width - n.width) / 2;
|
|
264
|
+
break;
|
|
265
|
+
case "bottom-start":
|
|
266
|
+
case "top-start":
|
|
267
|
+
l = i.left;
|
|
268
|
+
break;
|
|
269
|
+
case "bottom-end":
|
|
270
|
+
case "top-end":
|
|
271
|
+
l = i.right - n.width;
|
|
272
|
+
break;
|
|
273
|
+
case "right":
|
|
274
|
+
case "left":
|
|
275
|
+
h = i.top + (i.height - n.height) / 2;
|
|
276
|
+
break;
|
|
277
|
+
case "right-start":
|
|
278
|
+
case "left-start":
|
|
279
|
+
h = i.top;
|
|
280
|
+
break;
|
|
281
|
+
case "right-end":
|
|
282
|
+
case "left-end":
|
|
283
|
+
h = i.bottom - n.height;
|
|
284
|
+
break;
|
|
285
|
+
}
|
|
286
|
+
return (this.props.flip ?? !0) && (h + n.height > s.height && i.top > n.height && (h = i.top - n.height - u.y), l + n.width > s.width && i.left > n.width && (l = i.left - n.width - u.x)), (this.props.shift ?? !0) && (l = Math.max(8, Math.min(l, s.width - n.width - 8)), h = Math.max(8, Math.min(h, s.height - n.height - 8))), { x: l, y: h };
|
|
287
|
+
}
|
|
288
|
+
createMenuContent() {
|
|
289
|
+
const e = m("div", {
|
|
290
|
+
role: "menu",
|
|
291
|
+
"aria-labelledby": `${this.id}-trigger`,
|
|
292
|
+
"data-menu-id": this.id,
|
|
293
|
+
"data-menu-content": this.id,
|
|
294
|
+
// ENHANCED: Add data attribute for lifecycle hooks
|
|
295
|
+
style: {
|
|
296
|
+
position: "fixed",
|
|
297
|
+
backgroundColor: this.theme.colors.background,
|
|
298
|
+
border: `1px solid ${this.theme.colors.border}`,
|
|
299
|
+
borderRadius: `${this.theme.borderRadius}px`,
|
|
300
|
+
boxShadow: this.theme.shadow,
|
|
301
|
+
minWidth: `${this.theme.minWidth}px`,
|
|
302
|
+
maxWidth: `${this.theme.maxWidth}px`,
|
|
303
|
+
padding: `${this.theme.spacing.padding}px`,
|
|
304
|
+
zIndex: "9999",
|
|
305
|
+
opacity: "0",
|
|
306
|
+
transform: "scale(0.95)",
|
|
307
|
+
transformOrigin: "top",
|
|
308
|
+
transition: `all ${this.props.animationDuration || 150}ms cubic-bezier(0.16, 1, 0.3, 1)`
|
|
309
|
+
}
|
|
310
|
+
});
|
|
311
|
+
return this.props.items.forEach((t, i) => {
|
|
312
|
+
const n = this.createMenuItem(t, i), s = e.element, a = n.element;
|
|
313
|
+
s && a && s.appendChild(a);
|
|
314
|
+
}), this.menuElement = e.element, e;
|
|
315
|
+
}
|
|
316
|
+
setupTrigger() {
|
|
317
|
+
let e;
|
|
318
|
+
if (typeof this.props.trigger == "function") {
|
|
319
|
+
const t = this.props.trigger();
|
|
320
|
+
if ("render" in t) {
|
|
321
|
+
const i = t.render();
|
|
322
|
+
Array.isArray(i) ? e = i[0]?.element : e = i instanceof HTMLElement ? i : i?.element;
|
|
323
|
+
} else
|
|
324
|
+
e = t;
|
|
325
|
+
} else if ("render" in this.props.trigger) {
|
|
326
|
+
const t = this.props.trigger.render();
|
|
327
|
+
Array.isArray(t) ? e = t[0]?.element : e = t instanceof HTMLElement ? t : t?.element;
|
|
328
|
+
} else
|
|
329
|
+
e = this.props.trigger;
|
|
330
|
+
return e.id = e.id || `${this.id}-trigger`, e.setAttribute("aria-haspopup", "menu"), e.setAttribute("aria-expanded", String(this.isOpen())), e.setAttribute("data-menu-trigger", this.id), e.addEventListener("click", (t) => {
|
|
331
|
+
t.preventDefault(), t.stopPropagation(), this.setIsOpenValue(!this.isOpen());
|
|
332
|
+
}), this.triggerElement = e, e;
|
|
333
|
+
}
|
|
334
|
+
render() {
|
|
335
|
+
const e = m("div", {
|
|
336
|
+
style: {
|
|
337
|
+
position: "relative",
|
|
338
|
+
display: "inline-block"
|
|
339
|
+
}
|
|
340
|
+
}), t = this.setupTrigger();
|
|
341
|
+
return e.element && t && e.element.appendChild(t), x(() => {
|
|
342
|
+
if (this.isOpen()) {
|
|
343
|
+
const s = this.createMenuContent().element;
|
|
344
|
+
if (s && (document.body.appendChild(s), this.menuElement = s), this.triggerElement && this.menuElement) {
|
|
345
|
+
const a = this.calculatePosition(this.triggerElement, this.menuElement);
|
|
346
|
+
this.menuElement.style.left = `${a.x}px`, this.menuElement.style.top = `${a.y}px`, v.scaleIn(this, this.menuElement, this.props.animationDuration || 150), this.focusedIndex = 0, O.focusWhenReady(this, '[role="menuitem"]', this.menuElement);
|
|
347
|
+
}
|
|
348
|
+
document.addEventListener("keydown", this.handleKeyDown), document.addEventListener("click", this.handleClickOutside), this.triggerElement?.setAttribute("aria-expanded", "true");
|
|
349
|
+
} else {
|
|
350
|
+
if (this.menuElement) {
|
|
351
|
+
this.menuElement.style.opacity = "0", this.menuElement.style.transform = "scale(0.95)";
|
|
352
|
+
const n = () => {
|
|
353
|
+
this.menuElement?.parentNode && (document.body.removeChild(this.menuElement), this.menuElement = null), this.menuElement?.removeEventListener("transitionend", n);
|
|
354
|
+
};
|
|
355
|
+
this.menuElement.addEventListener("transitionend", n);
|
|
356
|
+
const s = setTimeout(() => {
|
|
357
|
+
this.menuElement?.removeEventListener("transitionend", n), n();
|
|
358
|
+
}, this.props.animationDuration || 150);
|
|
359
|
+
this.cleanup || (this.cleanup = []), this.cleanup.push(() => {
|
|
360
|
+
s && clearTimeout(s);
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
document.removeEventListener("keydown", this.handleKeyDown), document.removeEventListener("click", this.handleClickOutside), this.triggerElement?.setAttribute("aria-expanded", "false"), this.focusedIndex = -1;
|
|
364
|
+
}
|
|
365
|
+
}), e;
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
function X(o) {
|
|
369
|
+
return k(new A(o));
|
|
370
|
+
}
|
|
371
|
+
const Y = {
|
|
372
|
+
/**
|
|
373
|
+
* Create a separator item
|
|
374
|
+
*/
|
|
375
|
+
separator() {
|
|
376
|
+
return { title: "---" };
|
|
377
|
+
},
|
|
378
|
+
/**
|
|
379
|
+
* Create a destructive menu item
|
|
380
|
+
*/
|
|
381
|
+
destructive(o, e, t) {
|
|
382
|
+
return {
|
|
383
|
+
title: o,
|
|
384
|
+
action: e,
|
|
385
|
+
destructive: !0,
|
|
386
|
+
systemImage: t
|
|
387
|
+
};
|
|
388
|
+
},
|
|
389
|
+
/**
|
|
390
|
+
* Create a menu item with keyboard shortcut
|
|
391
|
+
*/
|
|
392
|
+
withShortcut(o, e, t, i) {
|
|
393
|
+
return {
|
|
394
|
+
title: o,
|
|
395
|
+
shortcut: e,
|
|
396
|
+
action: t,
|
|
397
|
+
systemImage: i
|
|
398
|
+
};
|
|
399
|
+
},
|
|
400
|
+
/**
|
|
401
|
+
* Create a context menu for right-click interactions
|
|
402
|
+
*/
|
|
403
|
+
contextMenu(o, e) {
|
|
404
|
+
const [t, i] = g(!1), [n, s] = g({ x: 0, y: 0 });
|
|
405
|
+
o.addEventListener("contextmenu", (a) => {
|
|
406
|
+
a.preventDefault(), s({ x: a.clientX, y: a.clientY }), i(!0);
|
|
407
|
+
}), console.log("Context menu requested", { items: e, position: n(), isOpen: t() });
|
|
408
|
+
}
|
|
409
|
+
}, j = {
|
|
410
|
+
theme: f,
|
|
411
|
+
/**
|
|
412
|
+
* Create a custom menu theme
|
|
413
|
+
*/
|
|
414
|
+
createTheme(o) {
|
|
415
|
+
return { ...f, ...o };
|
|
416
|
+
},
|
|
417
|
+
/**
|
|
418
|
+
* Dark theme preset
|
|
419
|
+
*/
|
|
420
|
+
darkTheme() {
|
|
421
|
+
return {
|
|
422
|
+
...f,
|
|
423
|
+
colors: {
|
|
424
|
+
...f.colors,
|
|
425
|
+
background: "#2A2A2A",
|
|
426
|
+
surface: "#3A3A3A",
|
|
427
|
+
text: "#FFFFFF",
|
|
428
|
+
textSecondary: "#A0A0A0",
|
|
429
|
+
border: "#404040",
|
|
430
|
+
hover: "#404040",
|
|
431
|
+
active: "#0066CC"
|
|
432
|
+
}
|
|
433
|
+
};
|
|
434
|
+
}
|
|
435
|
+
};
|
|
436
|
+
export {
|
|
437
|
+
X as Menu,
|
|
438
|
+
A as MenuComponent,
|
|
439
|
+
j as MenuStyles,
|
|
440
|
+
Y as MenuUtils,
|
|
441
|
+
f as defaultMenuTheme
|
|
442
|
+
};
|
|
443
|
+
//# sourceMappingURL=Menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Menu.js","sources":["../../src/components/Menu.ts"],"sourcesContent":["/**\n * Menu Component\n *\n * SwiftUI-inspired Menu component with dropdowns, context menus,\n * positioning, and keyboard navigation support.\n */\n\nimport type { ModifiableComponent, ModifierBuilder } from '../modifiers/types'\nimport { createEffect, createSignal, isSignal } from '../reactive'\nimport type { Signal } from '../reactive/types'\nimport { h } from '../runtime'\nimport type { ComponentInstance, ComponentProps, DOMNode } from '../runtime/types'\nimport { withModifiers } from './wrapper'\nimport { useLifecycle, AnimationManager, FocusManager, setupPositioning } from '../lifecycle/hooks'\n\n/**\n * Menu item configuration\n */\nexport interface MenuItem {\n id?: string\n title: string | Signal<string>\n systemImage?: string\n shortcut?: string\n disabled?: boolean | Signal<boolean>\n destructive?: boolean\n role?: 'default' | 'destructive' | 'cancel'\n action?: () => void | Promise<void>\n submenu?: MenuItem[]\n}\n\n/**\n * Menu positioning options\n */\nexport type MenuPlacement =\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'left'\n | 'left-start'\n | 'left-end'\n\n/**\n * Menu component properties\n */\nexport interface MenuProps extends ComponentProps {\n // Content\n items: MenuItem[]\n\n // Trigger\n trigger: ComponentInstance | HTMLElement | (() => ComponentInstance | HTMLElement)\n\n // Visibility\n isOpen?: Signal<boolean>\n\n // Behavior\n placement?: MenuPlacement\n closeOnSelect?: boolean\n closeOnClickOutside?: boolean\n escapeKeyCloses?: boolean\n\n // Positioning\n offset?: { x: number; y: number }\n flip?: boolean\n shift?: boolean\n\n // Animation\n animationDuration?: number\n\n // Accessibility\n accessibilityLabel?: string\n}\n\n/**\n * Menu theme configuration\n */\nexport interface MenuTheme {\n colors: {\n background: string\n surface: string\n text: string\n textSecondary: string\n textDisabled: string\n textDestructive: string\n border: string\n hover: string\n active: string\n separator: string\n shortcut: string\n backdrop: string\n }\n spacing: {\n padding: number\n itemPadding: number\n gap: number\n }\n borderRadius: number\n minWidth: number\n maxWidth: number\n itemHeight: number\n shadow: string\n backdropBlur: string\n}\n\n/**\n * Default menu theme\n */\nexport const defaultMenuTheme: MenuTheme = {\n colors: {\n background: '#FFFFFF',\n surface: '#F8F9FA',\n text: '#1A1A1A',\n textSecondary: '#6B7280',\n textDisabled: '#A0A0A0',\n textDestructive: '#FF3B30',\n border: '#E5E5E5',\n hover: '#F0F0F0',\n active: '#E3F2FD',\n separator: '#E5E5E5',\n shortcut: '#8E8E93',\n backdrop: 'rgba(0, 0, 0, 0.1)',\n },\n spacing: {\n padding: 8,\n itemPadding: 12,\n gap: 4,\n },\n borderRadius: 8,\n minWidth: 200,\n maxWidth: 320,\n itemHeight: 36,\n shadow: '0 4px 12px rgba(0, 0, 0, 0.15)',\n backdropBlur: 'blur(2px)',\n}\n\n/**\n * Menu component implementation\n */\nexport class MenuComponent implements ComponentInstance<MenuProps> {\n public readonly type = 'component' as const\n public readonly id: string\n public readonly props: MenuProps\n public cleanup: (() => void)[] = []\n private theme: MenuTheme = defaultMenuTheme\n private isOpenSignal = createSignal(false)\n private get isOpen() {\n return this.isOpenSignal[0]\n }\n private get setIsOpen() {\n return this.isOpenSignal[1]\n }\n private focusedIndex = -1\n private menuElement: HTMLElement | null = null\n private triggerElement: HTMLElement | null = null\n\n constructor(props: MenuProps) {\n this.props = props\n this.id = `menu-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n\n // Use provided isOpen signal or internal one\n if (this.props.isOpen) {\n this.isOpenSignal = [\n this.props.isOpen,\n ((value: boolean | ((prev: boolean) => boolean)) => {\n if (typeof this.props.isOpen === 'function') {\n ;(this.props.isOpen as any)(\n typeof value === 'function' ? value((this.props.isOpen as any)()) : value\n )\n }\n }) as any,\n ]\n }\n\n // ENHANCED: Set up lifecycle hooks for menu positioning and animations\n useLifecycle(this, {\n onDOMReady: (_elements, primaryElement) => {\n if (primaryElement) {\n // Set up menu positioning when DOM is ready\n this.setupMenuPositioning(primaryElement)\n \n // Set up animation and focus management\n this.setupMenuAnimations(primaryElement)\n }\n }\n })\n }\n\n private resolveValue<T>(value: T | Signal<T>): T {\n return isSignal(value) ? value() : value\n }\n\n /**\n * Set up menu positioning using enhanced lifecycle (ENHANCED Phase 3)\n */\n private setupMenuPositioning(_containerElement: Element): void {\n // Positioning is now handled via onDOMReady hooks when menu elements are guaranteed to exist\n // No more setTimeout positioning hacks needed\n if (!this.cleanup) this.cleanup = []\n \n // Set up positioning calculation that runs when both trigger and menu exist\n setupPositioning(\n this,\n `[data-menu-trigger=\"${this.id}\"]`,\n `[data-menu-content=\"${this.id}\"]`,\n (trigger, menu) => this.calculatePosition(trigger as HTMLElement, menu as HTMLElement)\n )\n }\n\n /**\n * Set up menu animations using enhanced lifecycle (ENHANCED Phase 3)\n */\n private setupMenuAnimations(_containerElement: Element): void {\n // Animation coordination now handled by AnimationManager instead of setTimeout\n // Focus management handled by FocusManager instead of setTimeout\n if (!this.cleanup) this.cleanup = []\n }\n\n private getVisibleItems(): MenuItem[] {\n return this.props.items.filter((item) => item.title !== '---') // Exclude separators\n }\n\n private createMenuItem(item: MenuItem, index: number): DOMNode {\n if (item.title === '---') {\n // Separator\n return h('div', {\n role: 'separator',\n style: {\n height: '1px',\n backgroundColor: this.theme.colors.separator,\n margin: `${this.theme.spacing.gap}px 0`,\n },\n })\n }\n\n const isDisabled = this.resolveValue(item.disabled ?? false)\n const title = this.resolveValue(item.title)\n\n const menuItem = h('div', {\n role: 'menuitem',\n tabindex: isDisabled ? '-1' : '0',\n 'aria-disabled': isDisabled,\n 'data-menu-item-index': index,\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: `${this.theme.spacing.itemPadding}px`,\n minHeight: `${this.theme.itemHeight}px`,\n fontSize: '14px',\n fontWeight: '400',\n color: isDisabled\n ? this.theme.colors.textDisabled\n : item.destructive || item.role === 'destructive'\n ? this.theme.colors.textDestructive\n : this.theme.colors.text,\n cursor: isDisabled ? 'default' : 'pointer',\n borderRadius: `${this.theme.borderRadius / 2}px`,\n transition: 'all 150ms ease-out',\n userSelect: 'none',\n },\n onclick: async (e: Event) => {\n if (isDisabled) return\n\n e.preventDefault()\n e.stopPropagation()\n\n if (item.action) {\n try {\n await item.action()\n } catch (error) {\n console.error('Menu item action failed:', error)\n }\n }\n\n if (this.props.closeOnSelect ?? true) {\n this.setIsOpenValue(false)\n }\n },\n onmouseenter: () => {\n if (!isDisabled) {\n this.focusedIndex = index\n this.updateItemFocus()\n const element = menuItem.element as HTMLElement\n if (element) element.style.backgroundColor = this.theme.colors.hover\n }\n },\n onmouseleave: () => {\n if (!isDisabled) {\n const element = menuItem.element as HTMLElement\n if (element) element.style.backgroundColor = 'transparent'\n }\n },\n })\n\n // Content container\n const content = h('div', {\n style: {\n display: 'flex',\n alignItems: 'center',\n gap: `${this.theme.spacing.gap * 2}px`,\n },\n })\n\n // System image/icon\n if (item.systemImage) {\n const icon = h('span', {\n style: {\n fontSize: '16px',\n color: 'inherit',\n },\n })\n const iconElement = icon.element as HTMLElement\n if (iconElement) iconElement.textContent = item.systemImage\n const contentElement = content.element as HTMLElement\n if (contentElement && iconElement) contentElement.appendChild(iconElement)\n }\n\n // Title\n const titleElement = h('span')\n const titleElementDOM = titleElement.element as HTMLElement\n if (titleElementDOM) titleElementDOM.textContent = title\n const contentElement = content.element as HTMLElement\n if (contentElement && titleElementDOM) contentElement.appendChild(titleElementDOM)\n\n const menuItemElement = menuItem.element as HTMLElement\n if (menuItemElement && contentElement) menuItemElement.appendChild(contentElement)\n\n // Keyboard shortcut\n if (item.shortcut) {\n const shortcut = h('span', {\n style: {\n fontSize: '12px',\n color: this.theme.colors.shortcut,\n fontFamily: 'monospace',\n },\n })\n const shortcutElement = shortcut.element as HTMLElement\n if (shortcutElement) shortcutElement.textContent = item.shortcut\n if (menuItemElement && shortcutElement) menuItemElement.appendChild(shortcutElement)\n }\n\n // Submenu indicator\n if (item.submenu && item.submenu.length > 0) {\n const indicator = h('span', {\n style: {\n fontSize: '12px',\n color: this.theme.colors.textSecondary,\n },\n })\n const indicatorElement = indicator.element as HTMLElement\n if (indicatorElement) indicatorElement.textContent = '▶'\n if (menuItemElement && indicatorElement) menuItemElement.appendChild(indicatorElement)\n }\n\n return menuItem\n }\n\n private updateItemFocus(): void {\n if (!this.menuElement) return\n\n const items = this.menuElement.querySelectorAll('[role=\"menuitem\"]')\n items.forEach((item, index) => {\n const element = item as HTMLElement\n if (index === this.focusedIndex) {\n element.style.backgroundColor = this.theme.colors.hover\n element.focus()\n } else {\n element.style.backgroundColor = 'transparent'\n }\n })\n }\n\n private handleKeyDown = (e: KeyboardEvent): void => {\n if (!this.isOpen()) return\n\n const visibleItems = this.getVisibleItems()\n\n switch (e.key) {\n case 'Escape':\n if (this.props.escapeKeyCloses ?? true) {\n e.preventDefault()\n this.setIsOpenValue(false)\n }\n break\n\n case 'ArrowDown':\n e.preventDefault()\n this.focusedIndex = Math.min(this.focusedIndex + 1, visibleItems.length - 1)\n this.updateItemFocus()\n break\n\n case 'ArrowUp':\n e.preventDefault()\n this.focusedIndex = Math.max(this.focusedIndex - 1, 0)\n this.updateItemFocus()\n break\n\n case 'Enter':\n case ' ':\n if (this.focusedIndex >= 0 && this.focusedIndex < visibleItems.length) {\n e.preventDefault()\n // const item = visibleItems[this.focusedIndex]\n const menuItem = this.menuElement?.querySelector(\n `[data-menu-item-index=\"${this.focusedIndex}\"]`\n ) as HTMLElement\n if (menuItem) {\n menuItem.click()\n }\n }\n break\n\n case 'Home':\n e.preventDefault()\n this.focusedIndex = 0\n this.updateItemFocus()\n break\n\n case 'End':\n e.preventDefault()\n this.focusedIndex = visibleItems.length - 1\n this.updateItemFocus()\n break\n }\n }\n\n private calculatePosition(trigger: HTMLElement, menu: HTMLElement): { x: number; y: number } {\n const triggerRect = trigger.getBoundingClientRect()\n const menuRect = menu.getBoundingClientRect()\n const viewport = {\n width: window.innerWidth,\n height: window.innerHeight,\n }\n\n const placement = this.props.placement ?? 'bottom'\n const offset = this.props.offset ?? { x: 0, y: 4 }\n\n let x = 0\n let y = 0\n\n // Calculate base position based on placement\n switch (placement) {\n case 'bottom':\n case 'bottom-start':\n case 'bottom-end':\n y = triggerRect.bottom + offset.y\n break\n case 'top':\n case 'top-start':\n case 'top-end':\n y = triggerRect.top - menuRect.height - offset.y\n break\n case 'right':\n case 'right-start':\n case 'right-end':\n x = triggerRect.right + offset.x\n break\n case 'left':\n case 'left-start':\n case 'left-end':\n x = triggerRect.left - menuRect.width - offset.x\n break\n }\n\n switch (placement) {\n case 'bottom':\n case 'top':\n x = triggerRect.left + (triggerRect.width - menuRect.width) / 2\n break\n case 'bottom-start':\n case 'top-start':\n x = triggerRect.left\n break\n case 'bottom-end':\n case 'top-end':\n x = triggerRect.right - menuRect.width\n break\n case 'right':\n case 'left':\n y = triggerRect.top + (triggerRect.height - menuRect.height) / 2\n break\n case 'right-start':\n case 'left-start':\n y = triggerRect.top\n break\n case 'right-end':\n case 'left-end':\n y = triggerRect.bottom - menuRect.height\n break\n }\n\n // Handle flipping and shifting if enabled\n if (this.props.flip ?? true) {\n if (y + menuRect.height > viewport.height && triggerRect.top > menuRect.height) {\n y = triggerRect.top - menuRect.height - offset.y\n }\n if (x + menuRect.width > viewport.width && triggerRect.left > menuRect.width) {\n x = triggerRect.left - menuRect.width - offset.x\n }\n }\n\n if (this.props.shift ?? true) {\n x = Math.max(8, Math.min(x, viewport.width - menuRect.width - 8))\n y = Math.max(8, Math.min(y, viewport.height - menuRect.height - 8))\n }\n\n return { x, y }\n }\n\n private createMenuContent(): DOMNode {\n const menu = h('div', {\n role: 'menu',\n 'aria-labelledby': `${this.id}-trigger`,\n 'data-menu-id': this.id,\n 'data-menu-content': this.id, // ENHANCED: Add data attribute for lifecycle hooks\n style: {\n position: 'fixed',\n backgroundColor: this.theme.colors.background,\n border: `1px solid ${this.theme.colors.border}`,\n borderRadius: `${this.theme.borderRadius}px`,\n boxShadow: this.theme.shadow,\n minWidth: `${this.theme.minWidth}px`,\n maxWidth: `${this.theme.maxWidth}px`,\n padding: `${this.theme.spacing.padding}px`,\n zIndex: '9999',\n opacity: '0',\n transform: 'scale(0.95)',\n transformOrigin: 'top',\n transition: `all ${this.props.animationDuration || 150}ms cubic-bezier(0.16, 1, 0.3, 1)`,\n },\n })\n\n // Create menu items\n this.props.items.forEach((item, index) => {\n const menuItem = this.createMenuItem(item, index)\n const menuElement = menu.element as HTMLElement\n const menuItemElement = menuItem.element as HTMLElement\n if (menuElement && menuItemElement) {\n menuElement.appendChild(menuItemElement)\n }\n })\n\n this.menuElement = menu.element as HTMLElement\n return menu\n }\n\n private setupTrigger(): HTMLElement {\n let trigger: HTMLElement\n\n if (typeof this.props.trigger === 'function') {\n const result = this.props.trigger()\n if ('render' in result) {\n const rendered = result.render()\n if (Array.isArray(rendered)) {\n trigger = rendered[0]?.element as HTMLElement\n } else {\n trigger = rendered instanceof HTMLElement ? rendered : (rendered?.element as HTMLElement)\n }\n } else {\n trigger = result as HTMLElement\n }\n } else if ('render' in this.props.trigger) {\n const rendered = this.props.trigger.render()\n if (Array.isArray(rendered)) {\n trigger = rendered[0]?.element as HTMLElement\n } else {\n trigger = rendered instanceof HTMLElement ? rendered : (rendered?.element as HTMLElement)\n }\n } else {\n trigger = this.props.trigger as HTMLElement\n }\n\n trigger.id = trigger.id || `${this.id}-trigger`\n trigger.setAttribute('aria-haspopup', 'menu')\n trigger.setAttribute('aria-expanded', String(this.isOpen()))\n trigger.setAttribute('data-menu-trigger', this.id) // ENHANCED: Add data attribute for lifecycle hooks\n\n trigger.addEventListener('click', (e) => {\n e.preventDefault()\n e.stopPropagation()\n this.setIsOpenValue(!this.isOpen())\n })\n\n this.triggerElement = trigger\n return trigger\n }\n\n render(): DOMNode {\n const container = h('div', {\n style: {\n position: 'relative',\n display: 'inline-block',\n },\n })\n\n // Setup trigger\n const trigger = this.setupTrigger()\n if (container.element && trigger) {\n ;(container.element as HTMLElement).appendChild(trigger)\n }\n\n // Create reactive effect for menu visibility\n createEffect(() => {\n const isOpenValue = this.isOpen()\n\n if (isOpenValue) {\n // Show menu\n const menu = this.createMenuContent()\n const menuElement = menu.element as HTMLElement\n if (menuElement) {\n document.body.appendChild(menuElement)\n this.menuElement = menuElement\n }\n\n // ENHANCED: Position and animate menu using lifecycle hooks\n if (this.triggerElement && this.menuElement) {\n // Immediate positioning - no setTimeout needed\n const position = this.calculatePosition(this.triggerElement, this.menuElement)\n this.menuElement.style.left = `${position.x}px`\n this.menuElement.style.top = `${position.y}px`\n \n // Use AnimationManager for smooth animation\n AnimationManager.scaleIn(this, this.menuElement, this.props.animationDuration || 150)\n \n // Use FocusManager for proper focus handling\n this.focusedIndex = 0\n FocusManager.focusWhenReady(this, '[role=\"menuitem\"]', this.menuElement)\n }\n\n // Add event listeners\n document.addEventListener('keydown', this.handleKeyDown)\n document.addEventListener('click', this.handleClickOutside)\n\n // Update trigger aria-expanded\n this.triggerElement?.setAttribute('aria-expanded', 'true')\n } else {\n // ENHANCED: Hide menu using transition event listener instead of setTimeout\n if (this.menuElement) {\n this.menuElement.style.opacity = '0'\n this.menuElement.style.transform = 'scale(0.95)'\n\n // Use transition event listener for cleanup\n const handleTransitionEnd = () => {\n if (this.menuElement?.parentNode) {\n document.body.removeChild(this.menuElement)\n this.menuElement = null\n }\n this.menuElement?.removeEventListener('transitionend', handleTransitionEnd)\n }\n this.menuElement.addEventListener('transitionend', handleTransitionEnd)\n \n // Fallback timeout in case transition doesn't fire (rare edge case)\n const fallbackTimeout = setTimeout(() => {\n this.menuElement?.removeEventListener('transitionend', handleTransitionEnd)\n handleTransitionEnd()\n }, this.props.animationDuration || 150)\n \n // Store cleanup for fallback timeout\n if (!this.cleanup) this.cleanup = []\n this.cleanup.push(() => {\n if (fallbackTimeout) clearTimeout(fallbackTimeout)\n })\n }\n\n // Remove event listeners\n document.removeEventListener('keydown', this.handleKeyDown)\n document.removeEventListener('click', this.handleClickOutside)\n\n // Update trigger aria-expanded\n this.triggerElement?.setAttribute('aria-expanded', 'false')\n\n // Reset focus index\n this.focusedIndex = -1\n }\n })\n\n return container\n }\n\n private handleClickOutside = (e: Event): void => {\n if (!(this.props.closeOnClickOutside ?? true)) return\n\n const target = e.target as Element\n const isInsideMenu = this.menuElement?.contains(target)\n const isInsideTrigger = this.triggerElement?.contains(target)\n\n if (!isInsideMenu && !isInsideTrigger) {\n this.setIsOpenValue(false)\n }\n }\n\n private setIsOpenValue = (value: boolean): void => {\n if (this.props.isOpen) {\n // For controlled component, the signal setter should be used directly\n if (typeof this.props.isOpen === 'function') {\n ;(this.props.isOpen as any)(value)\n }\n } else {\n this.setIsOpen(value)\n }\n }\n}\n\n/**\n * Create a Menu component\n */\nexport function Menu(\n props: MenuProps\n): ModifiableComponent<MenuProps> & { modifier: ModifierBuilder<ModifiableComponent<MenuProps>> } {\n return withModifiers(new MenuComponent(props))\n}\n\n/**\n * Menu utility functions and presets\n */\nexport const MenuUtils = {\n /**\n * Create a separator item\n */\n separator(): MenuItem {\n return { title: '---' }\n },\n\n /**\n * Create a destructive menu item\n */\n destructive(title: string, action: () => void, systemImage?: string): MenuItem {\n return {\n title,\n action,\n destructive: true,\n systemImage,\n }\n },\n\n /**\n * Create a menu item with keyboard shortcut\n */\n withShortcut(\n title: string,\n shortcut: string,\n action: () => void,\n systemImage?: string\n ): MenuItem {\n return {\n title,\n shortcut,\n action,\n systemImage,\n }\n },\n\n /**\n * Create a context menu for right-click interactions\n */\n contextMenu(target: HTMLElement, items: MenuItem[]): void {\n const [isOpen, setIsOpen] = createSignal(false)\n const [position, setPosition] = createSignal({ x: 0, y: 0 })\n\n target.addEventListener('contextmenu', (e) => {\n e.preventDefault()\n setPosition({ x: e.clientX, y: e.clientY })\n setIsOpen(true)\n })\n\n // Note: This is a stub implementation\n // Full context menu positioning would require additional DOM manipulation\n console.log('Context menu requested', { items, position: position(), isOpen: isOpen() })\n },\n}\n\n/**\n * Menu styles and theming\n */\nexport const MenuStyles = {\n theme: defaultMenuTheme,\n\n /**\n * Create a custom menu theme\n */\n createTheme(overrides: Partial<MenuTheme>): MenuTheme {\n return { ...defaultMenuTheme, ...overrides }\n },\n\n /**\n * Dark theme preset\n */\n darkTheme(): MenuTheme {\n return {\n ...defaultMenuTheme,\n colors: {\n ...defaultMenuTheme.colors,\n background: '#2A2A2A',\n surface: '#3A3A3A',\n text: '#FFFFFF',\n textSecondary: '#A0A0A0',\n border: '#404040',\n hover: '#404040',\n active: '#0066CC',\n },\n }\n },\n}\n"],"names":["defaultMenuTheme","MenuComponent","props","__publicField","createSignal","e","visibleItems","menuItem","target","isInsideMenu","isInsideTrigger","value","useLifecycle","_elements","primaryElement","isSignal","_containerElement","setupPositioning","trigger","menu","item","index","h","isDisabled","title","error","element","content","iconElement","contentElement","titleElementDOM","menuItemElement","shortcutElement","indicatorElement","triggerRect","menuRect","viewport","placement","offset","x","y","menuElement","result","rendered","container","createEffect","position","AnimationManager","FocusManager","handleTransitionEnd","fallbackTimeout","Menu","withModifiers","MenuUtils","action","systemImage","shortcut","items","isOpen","setIsOpen","setPosition","MenuStyles","overrides"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../reactive/cleanup.cjs");require("../reactive/unified-scheduler.cjs");const d=require("../reactive/signal.cjs");require("../reactive/scheduler.cjs");require("../reactive/theme.cjs");require("../runtime/component.cjs");require("../runtime/context.cjs");require("../runtime/dev-tools.cjs");require("../runtime/dom-bridge.cjs");require("../runtime/error-boundary.cjs");require("../runtime/error-reporting.cjs");require("../runtime/performance.cjs");const i=require("../runtime/renderer.cjs");require("../runtime/element-override.cjs");require("../runtime/semantic-role-manager.cjs");require("../runtime/development-warnings.cjs");const b=require("./wrapper.cjs");var g=Object.defineProperty,f=(o,e,t)=>e in o?g(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,a=(o,e,t)=>f(o,typeof e!="symbol"?e+"":e,t);class h{constructor(e){this.props=e,a(this,"type","component"),a(this,"id"),a(this,"mounted",!1),a(this,"cleanup",[]),a(this,"isOpen"),a(this,"setIsOpen"),a(this,"searchTerm"),a(this,"setSearchTerm"),a(this,"handleSelection",l=>{this.props.onSelectionChange&&this.props.onSelectionChange(l),(this.props.variant==="dropdown"||this.props.variant==="menu")&&this.setIsOpen(!1),this.setSearchTerm("")}),a(this,"toggleOpen",()=>{this.isDisabled()||this.setIsOpen(!this.isOpen())}),this.id=`picker-${Date.now()}-${Math.random().toString(36).substr(2,9)}`;const[t,r]=d.createSignal(!1),[n,s]=d.createSignal("");if(this.isOpen=t,this.setIsOpen=r,this.searchTerm=n,this.setSearchTerm=s,typeof window<"u"){const l=u=>{const c=document.getElementById(this.id);c&&!c.contains(u.target)&&this.setIsOpen(!1)};document.addEventListener("click",l),this.cleanup.push(()=>{document.removeEventListener("click",l)})}}getSelection(){const{selection:e}=this.props;return d.isSignal(e)?e():e}getOptions(){const{options:e}=this.props;return d.isSignal(e)?e():e}getFilteredOptions(){const e=this.getOptions(),t=this.searchTerm().toLowerCase();return!t||!this.props.searchable?e:e.filter(r=>r.label.toLowerCase().includes(t)||r.description?.toLowerCase().includes(t))}isDisabled(){const{disabled:e}=this.props;return typeof e=="boolean"?e:d.isSignal(e)?e():!1}getSelectedOption(){const e=this.getSelection();return this.getOptions().find(r=>r.value===e)||null}getSizeStyles(){const{size:e="medium"}=this.props;switch(e){case"small":return{fontSize:"14px",padding:"6px 12px",minHeight:"32px"};case"large":return{fontSize:"18px",padding:"12px 16px",minHeight:"48px"};default:return{fontSize:"16px",padding:"8px 12px",minHeight:"40px"}}}renderDropdown(){const e=this.getSelectedOption(),t=this.getFilteredOptions(),r=this.getSizeStyles(),n=this.isOpen();return i.h("div",{id:this.id,style:{position:"relative",display:"inline-block",minWidth:"200px"}},i.h("button",{type:"button",onClick:this.toggleOpen,disabled:this.isDisabled(),style:{...r,width:"100%",display:"flex",alignItems:"center",justifyContent:"space-between",backgroundColor:"#ffffff",border:"1px solid #d1d5db",borderRadius:"6px",cursor:this.isDisabled()?"not-allowed":"pointer",opacity:this.isDisabled()?.6:1,...n&&{borderColor:this.props.tint||"#007AFF",boxShadow:`0 0 0 1px ${this.props.tint||"#007AFF"}`}}},i.h("span",{style:{color:e?"#1a1a1a":"#6b7280"}},i.text(e?.label||this.props.placeholder||"Select an option")),i.h("span",{style:{fontSize:"12px",color:"#6b7280",transform:n?"rotate(180deg)":"rotate(0deg)",transition:"transform 0.2s"}},i.text("▼"))),...n?[i.h("div",{style:{position:"absolute",top:"100%",left:"0",right:"0",zIndex:1e3,backgroundColor:"#ffffff",border:"1px solid #d1d5db",borderRadius:"6px",boxShadow:"0 4px 6px -1px rgba(0, 0, 0, 0.1)",maxHeight:"200px",overflowY:"auto",marginTop:"2px"}},...this.props.searchable?[i.h("div",{style:{padding:"8px",borderBottom:"1px solid #e5e7eb"}},i.h("input",{type:"text",placeholder:"Search options...",value:this.searchTerm(),onInput:s=>{const l=s.target;this.setSearchTerm(l.value)},style:{width:"100%",padding:"6px 8px",border:"1px solid #d1d5db",borderRadius:"4px",fontSize:"14px"}}))]:[],...t.map(s=>i.h("button",{type:"button",key:String(s.value),onClick:()=>this.handleSelection(s.value),disabled:s.disabled,style:{width:"100%",padding:"8px 12px",textAlign:"left",backgroundColor:s.value===this.getSelection()?"#f3f4f6":"transparent",border:"none",cursor:s.disabled?"not-allowed":"pointer",opacity:s.disabled?.5:1,fontSize:"14px",display:"flex",alignItems:"center",gap:"8px",":hover":{backgroundColor:"#f9fafb"}}},...s.icon?[i.h("span",{style:{fontSize:"16px"}},i.text(s.icon))]:[],i.h("div",{},i.h("div",{},i.text(s.label)),...s.description?[i.h("div",{style:{fontSize:"12px",color:"#6b7280",marginTop:"2px"}},i.text(s.description))]:[]))),...t.length===0?[i.h("div",{style:{padding:"12px",textAlign:"center",color:"#6b7280",fontSize:"14px"}},i.text("No options found"))]:[])]:[])}renderSegmented(){const e=this.getOptions(),t=this.getSelection(),r=this.getSizeStyles();return i.h("div",{style:{display:"flex",backgroundColor:"#f3f4f6",borderRadius:"8px",padding:"2px"},role:"radiogroup","aria-label":this.props.accessibilityLabel},...e.map((n,s)=>i.h("button",{type:"button",key:String(n.value),onClick:()=>this.handleSelection(n.value),disabled:n.disabled||this.isDisabled(),role:"radio","aria-checked":n.value===t,style:{...r,flex:1,border:"none",borderRadius:"6px",backgroundColor:n.value===t?"#ffffff":"transparent",color:n.value===t?"#1a1a1a":"#6b7280",fontWeight:n.value===t?"600":"400",cursor:n.disabled||this.isDisabled()?"not-allowed":"pointer",opacity:n.disabled||this.isDisabled()?.5:1,boxShadow:n.value===t?"0 1px 2px rgba(0, 0, 0, 0.1)":"none",transition:"all 0.2s",margin:"0",...s===0&&{marginRight:"1px"},...s===e.length-1&&{marginLeft:"1px"}}},...n.icon?[i.h("span",{style:{marginRight:"6px",fontSize:"14px"}},i.text(n.icon))]:[],i.text(n.label))))}renderWheel(){const e=this.getOptions(),t=this.getSelection();return i.h("select",{value:String(t),onChange:r=>{const n=r.target,s=e.find(l=>String(l.value)===n.value);s&&this.handleSelection(s.value)},disabled:this.isDisabled(),style:{...this.getSizeStyles(),minWidth:"200px",backgroundColor:"#ffffff",border:"1px solid #d1d5db",borderRadius:"6px",cursor:this.isDisabled()?"not-allowed":"pointer",opacity:this.isDisabled()?.6:1}},...e.map(r=>i.h("option",{key:String(r.value),value:String(r.value),disabled:r.disabled},i.text(r.label))))}render(){const{variant:e="dropdown",accessibilityLabel:t,accessibilityHint:r}=this.props,n={"aria-label":t,"aria-describedby":r?`${this.id}-hint`:void 0};let s;switch(e){case"segmented":s=this.renderSegmented();break;case"wheel":s=this.renderWheel();break;default:s=this.renderDropdown();break}return i.h("div",n,s,...r?[i.h("div",{id:`${this.id}-hint`,style:{fontSize:"12px",color:"#6b7280",marginTop:"4px"}},i.text(r))]:[])}}function p(o,e,t={}){const r={...t,selection:o,options:e},n=new h(r);return b.withModifiers(n)}const x={Dropdown(o,e,t={}){return p(o,e,{...t,variant:"dropdown"})},Segmented(o,e,t={}){return p(o,e,{...t,variant:"segmented"})},Wheel(o,e,t={}){return p(o,e,{...t,variant:"wheel"})},Menu(o,e,t={}){return p(o,e,{...t,variant:"menu"})}},S={fromArray(o,e){return o.map(t=>({value:t,label:String(e&&typeof t=="object"&&t!==null?t[e]:t)}))},fromEnum(o){return Object.entries(o).map(([e,t])=>({value:t,label:e.replace(/([A-Z])/g," $1").trim()}))},grouped(o){return o.reduce((e,t)=>{const r=t.category||"Other";return e[r]||(e[r]=[]),e[r].push(t),e},{})}};exports.EnhancedPicker=h;exports.Picker=p;exports.PickerStyles=x;exports.PickerUtils=S;
|
|
2
|
+
//# sourceMappingURL=Picker.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Picker.cjs","sources":["../../src/components/Picker.ts"],"sourcesContent":["/**\n * Enhanced Picker Component (Phase 6.4.3)\n *\n * SwiftUI-inspired Picker component with dropdown, wheel, and segmented\n * variants for selecting from a list of options.\n */\n\nimport type { ModifiableComponent, ModifierBuilder } from '../modifiers/types'\nimport { createSignal, isSignal } from '../reactive'\nimport type { Signal } from '../reactive/types'\nimport { h, text } from '../runtime'\nimport type { ComponentInstance, ComponentProps } from '../runtime/types'\nimport { withModifiers } from './wrapper'\n\n/**\n * Picker option structure\n */\n// biome-ignore lint/suspicious/noExplicitAny: Generic picker options require flexible type\nexport interface PickerOption<T = any> {\n value: T\n label: string\n disabled?: boolean\n icon?: string\n description?: string\n}\n\n/**\n * Picker component properties\n */\n// biome-ignore lint/suspicious/noExplicitAny: Generic picker props require flexible type\nexport interface PickerProps<T = any> extends ComponentProps {\n // Selection\n selection: T | Signal<T>\n options: PickerOption<T>[] | Signal<PickerOption<T>[]>\n onSelectionChange?: (value: T) => void\n\n // Appearance\n variant?: 'dropdown' | 'wheel' | 'segmented' | 'menu'\n title?: string | (() => string) | Signal<string>\n placeholder?: string\n\n // Behavior\n multiple?: boolean\n searchable?: boolean\n clearable?: boolean\n disabled?: boolean | Signal<boolean>\n\n // Styling\n size?: 'small' | 'medium' | 'large'\n tint?: string\n\n // Accessibility\n accessibilityLabel?: string\n accessibilityHint?: string\n}\n\n/**\n * Enhanced Picker component class\n */\n// biome-ignore lint/suspicious/noExplicitAny: Generic picker implementation requires flexible type\nexport class EnhancedPicker<T = any> implements ComponentInstance<PickerProps<T>> {\n public readonly type = 'component' as const\n public readonly id: string\n public mounted = false\n public cleanup: (() => void)[] = []\n private isOpen: () => boolean\n private setIsOpen: (open: boolean) => boolean\n private searchTerm: () => string\n private setSearchTerm: (term: string) => string\n\n constructor(public props: PickerProps<T>) {\n this.id = `picker-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n\n // Initialize internal state\n const [open, setOpen] = createSignal(false)\n const [search, setSearch] = createSignal('')\n this.isOpen = open\n this.setIsOpen = setOpen\n this.searchTerm = search\n this.setSearchTerm = setSearch\n\n // Close picker when clicking outside\n if (typeof window !== 'undefined') {\n const handleClickOutside = (event: MouseEvent) => {\n const element = document.getElementById(this.id)\n if (element && !element.contains(event.target as Node)) {\n this.setIsOpen(false)\n }\n }\n\n document.addEventListener('click', handleClickOutside)\n this.cleanup.push(() => {\n document.removeEventListener('click', handleClickOutside)\n })\n }\n }\n\n /**\n * Get current selection value\n */\n private getSelection(): T {\n const { selection } = this.props\n if (isSignal(selection)) {\n return (selection as () => T)()\n }\n return selection as T\n }\n\n /**\n * Get current options\n */\n private getOptions(): PickerOption<T>[] {\n const { options } = this.props\n if (isSignal(options)) {\n return (options as () => PickerOption<T>[])()\n }\n return options as PickerOption<T>[]\n }\n\n /**\n * Filter options based on search term\n */\n private getFilteredOptions(): PickerOption<T>[] {\n const options = this.getOptions()\n const search = this.searchTerm().toLowerCase()\n\n if (!search || !this.props.searchable) {\n return options\n }\n\n return options.filter(\n (option) =>\n option.label.toLowerCase().includes(search) ||\n option.description?.toLowerCase().includes(search)\n )\n }\n\n /**\n * Check if picker is disabled\n */\n private isDisabled(): boolean {\n const { disabled } = this.props\n if (typeof disabled === 'boolean') return disabled\n if (isSignal(disabled)) return (disabled as () => boolean)()\n return false\n }\n\n /**\n * Get selected option\n */\n private getSelectedOption(): PickerOption<T> | null {\n const selection = this.getSelection()\n const options = this.getOptions()\n return options.find((option) => option.value === selection) || null\n }\n\n /**\n * Handle option selection\n */\n private handleSelection = (value: T) => {\n if (this.props.onSelectionChange) {\n this.props.onSelectionChange(value)\n }\n\n // Close dropdown after selection\n if (this.props.variant === 'dropdown' || this.props.variant === 'menu') {\n this.setIsOpen(false)\n }\n\n // Clear search term\n this.setSearchTerm('')\n }\n\n /**\n * Toggle picker open state\n */\n private toggleOpen = () => {\n if (!this.isDisabled()) {\n this.setIsOpen(!this.isOpen())\n }\n }\n\n /**\n * Get picker size styles\n */\n private getSizeStyles() {\n const { size = 'medium' } = this.props\n\n switch (size) {\n case 'small':\n return {\n fontSize: '14px',\n padding: '6px 12px',\n minHeight: '32px',\n }\n case 'large':\n return {\n fontSize: '18px',\n padding: '12px 16px',\n minHeight: '48px',\n }\n default:\n return {\n fontSize: '16px',\n padding: '8px 12px',\n minHeight: '40px',\n }\n }\n }\n\n /**\n * Render dropdown variant\n */\n private renderDropdown() {\n const selectedOption = this.getSelectedOption()\n const filteredOptions = this.getFilteredOptions()\n const sizeStyles = this.getSizeStyles()\n const isOpen = this.isOpen()\n\n return h(\n 'div',\n {\n id: this.id,\n style: {\n position: 'relative',\n display: 'inline-block',\n minWidth: '200px',\n },\n },\n // Trigger button\n h(\n 'button',\n {\n type: 'button',\n onClick: this.toggleOpen,\n disabled: this.isDisabled(),\n style: {\n ...sizeStyles,\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n backgroundColor: '#ffffff',\n border: '1px solid #d1d5db',\n borderRadius: '6px',\n cursor: this.isDisabled() ? 'not-allowed' : 'pointer',\n opacity: this.isDisabled() ? 0.6 : 1,\n ...(isOpen && {\n borderColor: this.props.tint || '#007AFF',\n boxShadow: `0 0 0 1px ${this.props.tint || '#007AFF'}`,\n }),\n },\n },\n h(\n 'span',\n {\n style: {\n color: selectedOption ? '#1a1a1a' : '#6b7280',\n },\n },\n text(selectedOption?.label || this.props.placeholder || 'Select an option')\n ),\n\n h(\n 'span',\n {\n style: {\n fontSize: '12px',\n color: '#6b7280',\n transform: isOpen ? 'rotate(180deg)' : 'rotate(0deg)',\n transition: 'transform 0.2s',\n },\n },\n text('▼')\n )\n ),\n\n // Dropdown menu\n ...(isOpen\n ? [\n h(\n 'div',\n {\n style: {\n position: 'absolute',\n top: '100%',\n left: '0',\n right: '0',\n zIndex: 1000,\n backgroundColor: '#ffffff',\n border: '1px solid #d1d5db',\n borderRadius: '6px',\n boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1)',\n maxHeight: '200px',\n overflowY: 'auto' as const,\n marginTop: '2px',\n },\n },\n // Search input (if searchable)\n ...(this.props.searchable\n ? [\n h(\n 'div',\n {\n style: {\n padding: '8px',\n borderBottom: '1px solid #e5e7eb',\n },\n },\n h('input', {\n type: 'text',\n placeholder: 'Search options...',\n value: this.searchTerm(),\n onInput: (e: Event) => {\n const target = e.target as HTMLInputElement\n this.setSearchTerm(target.value)\n },\n style: {\n width: '100%',\n padding: '6px 8px',\n border: '1px solid #d1d5db',\n borderRadius: '4px',\n fontSize: '14px',\n },\n })\n ),\n ]\n : []),\n\n // Options\n ...filteredOptions.map((option) =>\n h(\n 'button',\n {\n type: 'button',\n key: String(option.value),\n onClick: () => this.handleSelection(option.value),\n disabled: option.disabled,\n style: {\n width: '100%',\n padding: '8px 12px',\n textAlign: 'left' as const,\n backgroundColor:\n option.value === this.getSelection() ? '#f3f4f6' : 'transparent',\n border: 'none',\n cursor: option.disabled ? 'not-allowed' : 'pointer',\n opacity: option.disabled ? 0.5 : 1,\n fontSize: '14px',\n display: 'flex',\n alignItems: 'center',\n gap: '8px',\n ':hover': {\n backgroundColor: '#f9fafb',\n },\n },\n },\n ...(option.icon\n ? [h('span', { style: { fontSize: '16px' } }, text(option.icon))]\n : []),\n\n h(\n 'div',\n {},\n h('div', {}, text(option.label)),\n ...(option.description\n ? [\n h(\n 'div',\n {\n style: {\n fontSize: '12px',\n color: '#6b7280',\n marginTop: '2px',\n },\n },\n text(option.description)\n ),\n ]\n : [])\n )\n )\n ),\n\n // No results message\n ...(filteredOptions.length === 0\n ? [\n h(\n 'div',\n {\n style: {\n padding: '12px',\n textAlign: 'center' as const,\n color: '#6b7280',\n fontSize: '14px',\n },\n },\n text('No options found')\n ),\n ]\n : [])\n ),\n ]\n : [])\n )\n }\n\n /**\n * Render segmented variant\n */\n private renderSegmented() {\n const options = this.getOptions()\n const selection = this.getSelection()\n const sizeStyles = this.getSizeStyles()\n\n return h(\n 'div',\n {\n style: {\n display: 'flex',\n backgroundColor: '#f3f4f6',\n borderRadius: '8px',\n padding: '2px',\n },\n role: 'radiogroup',\n 'aria-label': this.props.accessibilityLabel,\n },\n ...options.map((option, index) =>\n h(\n 'button',\n {\n type: 'button',\n key: String(option.value),\n onClick: () => this.handleSelection(option.value),\n disabled: option.disabled || this.isDisabled(),\n role: 'radio',\n 'aria-checked': option.value === selection,\n style: {\n ...sizeStyles,\n flex: 1,\n border: 'none',\n borderRadius: '6px',\n backgroundColor: option.value === selection ? '#ffffff' : 'transparent',\n color: option.value === selection ? '#1a1a1a' : '#6b7280',\n fontWeight: option.value === selection ? '600' : '400',\n cursor: option.disabled || this.isDisabled() ? 'not-allowed' : 'pointer',\n opacity: option.disabled || this.isDisabled() ? 0.5 : 1,\n boxShadow: option.value === selection ? '0 1px 2px rgba(0, 0, 0, 0.1)' : 'none',\n transition: 'all 0.2s',\n margin: '0',\n ...(index === 0 && { marginRight: '1px' }),\n ...(index === options.length - 1 && { marginLeft: '1px' }),\n },\n },\n ...(option.icon\n ? [\n h(\n 'span',\n {\n style: {\n marginRight: '6px',\n fontSize: '14px',\n },\n },\n text(option.icon)\n ),\n ]\n : []),\n text(option.label)\n )\n )\n )\n }\n\n /**\n * Render wheel variant (simplified)\n */\n private renderWheel() {\n const options = this.getOptions()\n const selection = this.getSelection()\n\n return h(\n 'select',\n {\n value: String(selection),\n onChange: (e: Event) => {\n const target = e.target as HTMLSelectElement\n const selectedOption = options.find((opt) => String(opt.value) === target.value)\n if (selectedOption) {\n this.handleSelection(selectedOption.value)\n }\n },\n disabled: this.isDisabled(),\n style: {\n ...this.getSizeStyles(),\n minWidth: '200px',\n backgroundColor: '#ffffff',\n border: '1px solid #d1d5db',\n borderRadius: '6px',\n cursor: this.isDisabled() ? 'not-allowed' : 'pointer',\n opacity: this.isDisabled() ? 0.6 : 1,\n },\n },\n ...options.map((option) =>\n h(\n 'option',\n {\n key: String(option.value),\n value: String(option.value),\n disabled: option.disabled,\n },\n text(option.label)\n )\n )\n )\n }\n\n render() {\n const { variant = 'dropdown', accessibilityLabel, accessibilityHint } = this.props\n\n const containerProps = {\n 'aria-label': accessibilityLabel,\n 'aria-describedby': accessibilityHint ? `${this.id}-hint` : undefined,\n }\n\n // biome-ignore lint/suspicious/noExplicitAny: Content can be various component types\n let content: any\n\n switch (variant) {\n case 'segmented':\n content = this.renderSegmented()\n break\n case 'wheel':\n content = this.renderWheel()\n break\n default:\n content = this.renderDropdown()\n break\n }\n\n return h(\n 'div',\n containerProps,\n content,\n ...(accessibilityHint\n ? [\n h(\n 'div',\n {\n id: `${this.id}-hint`,\n style: {\n fontSize: '12px',\n color: '#6b7280',\n marginTop: '4px',\n },\n },\n text(accessibilityHint)\n ),\n ]\n : [])\n )\n }\n}\n\n/**\n * Picker component function\n */\n// biome-ignore lint/suspicious/noExplicitAny: Generic picker function requires flexible type\nexport function Picker<T = any>(\n selection: T | Signal<T>,\n options: PickerOption<T>[] | Signal<PickerOption<T>[]>,\n props: Omit<PickerProps<T>, 'selection' | 'options'> = {}\n): ModifiableComponent<PickerProps<T>> & {\n modifier: ModifierBuilder<ModifiableComponent<PickerProps<T>>>\n} {\n const pickerProps: PickerProps<T> = { ...props, selection, options }\n const component = new EnhancedPicker(pickerProps)\n return withModifiers(component)\n}\n\n/**\n * Picker style variants\n */\nexport const PickerStyles = {\n /**\n * Dropdown picker (default)\n */\n // biome-ignore lint/suspicious/noExplicitAny: Generic dropdown picker requires flexible type\n Dropdown<T = any>(\n selection: T | Signal<T>,\n options: PickerOption<T>[] | Signal<PickerOption<T>[]>,\n props: Omit<PickerProps<T>, 'selection' | 'options' | 'variant'> = {}\n ) {\n return Picker(selection, options, { ...props, variant: 'dropdown' })\n },\n\n /**\n * Segmented picker\n */\n // biome-ignore lint/suspicious/noExplicitAny: Generic segmented picker requires flexible type\n Segmented<T = any>(\n selection: T | Signal<T>,\n options: PickerOption<T>[] | Signal<PickerOption<T>[]>,\n props: Omit<PickerProps<T>, 'selection' | 'options' | 'variant'> = {}\n ) {\n return Picker(selection, options, { ...props, variant: 'segmented' })\n },\n\n /**\n * Wheel picker (native select)\n */\n // biome-ignore lint/suspicious/noExplicitAny: Generic wheel picker requires flexible type\n Wheel<T = any>(\n selection: T | Signal<T>,\n options: PickerOption<T>[] | Signal<PickerOption<T>[]>,\n props: Omit<PickerProps<T>, 'selection' | 'options' | 'variant'> = {}\n ) {\n return Picker(selection, options, { ...props, variant: 'wheel' })\n },\n\n /**\n * Menu picker\n */\n // biome-ignore lint/suspicious/noExplicitAny: Generic menu picker requires flexible type\n Menu<T = any>(\n selection: T | Signal<T>,\n options: PickerOption<T>[] | Signal<PickerOption<T>[]>,\n props: Omit<PickerProps<T>, 'selection' | 'options' | 'variant'> = {}\n ) {\n return Picker(selection, options, { ...props, variant: 'menu' })\n },\n}\n\n/**\n * Picker utilities\n */\nexport const PickerUtils = {\n /**\n * Create options from simple array\n */\n fromArray<T>(items: T[], labelKey?: keyof T): PickerOption<T>[] {\n return items.map((item) => ({\n value: item,\n label:\n labelKey && typeof item === 'object' && item !== null\n ? String(item[labelKey])\n : String(item),\n }))\n },\n\n /**\n * Create options from enum\n */\n fromEnum(enumObject: Record<string, string | number>): PickerOption<string | number>[] {\n return Object.entries(enumObject).map(([key, value]) => ({\n value,\n label: key.replace(/([A-Z])/g, ' $1').trim(),\n }))\n },\n\n /**\n * Group options by category\n */\n grouped<T>(\n options: (PickerOption<T> & { category?: string })[]\n ): Record<string, PickerOption<T>[]> {\n return options.reduce(\n (groups, option) => {\n const category = option.category || 'Other'\n if (!groups[category]) {\n groups[category] = []\n }\n groups[category].push(option)\n return groups\n },\n {} as Record<string, PickerOption<T>[]>\n )\n },\n}\n"],"names":["EnhancedPicker","props","__publicField","value","open","setOpen","createSignal","search","setSearch","handleClickOutside","event","element","selection","isSignal","options","option","disabled","size","selectedOption","filteredOptions","sizeStyles","isOpen","h","text","e","target","index","opt","variant","accessibilityLabel","accessibilityHint","containerProps","content","Picker","pickerProps","component","withModifiers","PickerStyles","PickerUtils","items","labelKey","item","enumObject","key","groups","category"],"mappings":"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"}
|