@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 @@
|
|
|
1
|
+
{"version":3,"file":"minimal.js","sources":["../src/bundles/minimal.ts"],"sourcesContent":["/**\n * @fileoverview TachUI Minimal Bundle (~60KB)\n * \n * Optimized for calculator-style apps and landing pages.\n * This bundle re-exports the complete framework but with metadata\n * to guide bundlers on tree-shaking optimization.\n */\n\n// For Phase 3, we export everything but provide metadata for optimal tree-shaking\nexport * from '../index'\n\n/**\n * Minimal Bundle Metadata - guides tree-shaking tools\n */\nexport const BUNDLE_INFO = {\n name: '@tachui/core/minimal',\n version: '0.1.0',\n description: 'Minimal TachUI bundle for calculator-style apps and landing pages',\n targetSize: '~60KB',\n recommendedComponents: ['Text', 'Button', 'Image', 'HStack', 'VStack', 'Spacer', 'Show'],\n useCase: 'Calculator-style apps, landing pages, simple UIs',\n treeShakingHints: {\n include: ['reactive', 'runtime', 'components/basic', 'modifiers/basic'],\n exclude: ['components/advanced', 'modifiers/advanced', 'gradients', 'animations']\n }\n} as const"],"names":["BUNDLE_INFO"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcO,MAAMA,IAAc;AAAA,EACzB,MAAM;AAAA,EACN,SAAS;AAAA,EACT,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,uBAAuB,CAAC,QAAQ,UAAU,SAAS,UAAU,UAAU,UAAU,MAAM;AAAA,EACvF,SAAS;AAAA,EACT,kBAAkB;AAAA,IAChB,SAAS,CAAC,YAAY,WAAW,oBAAoB,iBAAiB;AAAA,IACtE,SAAS,CAAC,uBAAuB,sBAAsB,aAAa,YAAY;AAAA,EAAA;AAEpF;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var p=Object.defineProperty,d=(s,e,t)=>e in s?p(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,c=(s,e,t)=>d(s,e+"",t);class a{static validate(e,t={}){if(t.suppressWarnings)return{isValid:!0,warnings:[]};const r=[];for(const{pattern:i,message:n}of this.SUSPICIOUS_PATTERNS)i.test(e)&&r.push(n);return this.looksLikeUserInput(e)&&r.push("Content appears to contain user input - ensure it's properly sanitized"),{isValid:r.length===0,warnings:r}}static looksLikeUserInput(e){return[/<script/i,/&#/,/%3Cscript/i,/\{\{.*\}\}/,/\$\{.*\}/].some(r=>r.test(e))}}c(a,"SUSPICIOUS_PATTERNS",[{pattern:/<script/i,message:"Script tags detected"},{pattern:/javascript:/i,message:"JavaScript URLs detected"},{pattern:/on\w+\s*=/i,message:"Event handlers detected"},{pattern:/<iframe/i,message:"Iframe elements detected"},{pattern:/<object/i,message:"Object elements detected"},{pattern:/<embed/i,message:"Embed elements detected"},{pattern:/<form/i,message:"Form elements detected"},{pattern:/data:.*script/i,message:"Data URLs with scripts detected"},{pattern:/@import/i,message:"CSS import statements detected"},{pattern:/expression\s*\(/i,message:"CSS expressions detected"}]);exports.AsHTMLValidator=a;
|
|
2
|
+
//# sourceMappingURL=as-html-validator.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"as-html-validator.cjs","sources":["../../src/modifiers/as-html-validator.ts"],"sourcesContent":["/**\n * Development-time validator for AsHTML content\n * Provides warnings about potentially dangerous content patterns\n */\n\nexport class AsHTMLValidator {\n private static readonly SUSPICIOUS_PATTERNS = [\n { pattern: /<script/i, message: 'Script tags detected' },\n { pattern: /javascript:/i, message: 'JavaScript URLs detected' },\n { pattern: /on\\w+\\s*=/i, message: 'Event handlers detected' },\n { pattern: /<iframe/i, message: 'Iframe elements detected' },\n { pattern: /<object/i, message: 'Object elements detected' },\n { pattern: /<embed/i, message: 'Embed elements detected' },\n { pattern: /<form/i, message: 'Form elements detected' },\n { pattern: /data:.*script/i, message: 'Data URLs with scripts detected' },\n { pattern: /@import/i, message: 'CSS import statements detected' },\n { pattern: /expression\\s*\\(/i, message: 'CSS expressions detected' }\n ]\n\n /**\n * Validate HTML content in development mode\n */\n static validate(html: string, options: ValidationOptions = {}): ValidationResult {\n if (options.suppressWarnings) {\n return { isValid: true, warnings: [] }\n }\n\n const warnings: string[] = []\n \n for (const { pattern, message } of this.SUSPICIOUS_PATTERNS) {\n if (pattern.test(html)) {\n warnings.push(message)\n }\n }\n\n // Check for user input patterns\n if (this.looksLikeUserInput(html)) {\n warnings.push('Content appears to contain user input - ensure it\\'s properly sanitized')\n }\n\n return {\n isValid: warnings.length === 0,\n warnings\n }\n }\n\n private static looksLikeUserInput(html: string): boolean {\n // Heuristics to detect potential user input\n const userInputIndicators = [\n /<script/i, // HTML-encoded script tags\n /&#/, // HTML entities that might be user input\n /%3Cscript/i, // URL-encoded script tags\n /\\{\\{.*\\}\\}/, // Template syntax\n /\\$\\{.*\\}/ // ES6 template literals\n ]\n\n return userInputIndicators.some(pattern => pattern.test(html))\n }\n}\n\nexport interface ValidationOptions {\n suppressWarnings?: boolean\n}\n\nexport interface ValidationResult {\n isValid: boolean\n warnings: string[]\n}"],"names":["AsHTMLValidator","html","options","warnings","pattern","message","__publicField"],"mappings":"uNAKO,MAAMA,CAAgB,CAiB3B,OAAO,SAASC,EAAcC,EAA6B,GAAsB,CAC/E,GAAIA,EAAQ,iBACV,MAAO,CAAE,QAAS,GAAM,SAAU,CAAA,CAAC,EAGrC,MAAMC,EAAqB,CAAA,EAE3B,SAAW,CAAE,QAAAC,EAAS,QAAAC,CAAA,IAAa,KAAK,oBAClCD,EAAQ,KAAKH,CAAI,GACnBE,EAAS,KAAKE,CAAO,EAKzB,OAAI,KAAK,mBAAmBJ,CAAI,GAC9BE,EAAS,KAAK,wEAAyE,EAGlF,CACL,QAASA,EAAS,SAAW,EAC7B,SAAAA,CAAA,CAEJ,CAEA,OAAe,mBAAmBF,EAAuB,CAUvD,MAR4B,CAC1B,cACA,SACA,aACA,aACA,UAAA,EAGyB,KAAKG,GAAWA,EAAQ,KAAKH,CAAI,CAAC,CAC/D,CACF,CApDEK,EADWN,EACa,sBAAsB,CAC5C,CAAE,QAAS,WAAY,QAAS,sBAAA,EAChC,CAAE,QAAS,eAAgB,QAAS,0BAAA,EACpC,CAAE,QAAS,aAAc,QAAS,yBAAA,EAClC,CAAE,QAAS,WAAY,QAAS,0BAAA,EAChC,CAAE,QAAS,WAAY,QAAS,0BAAA,EAChC,CAAE,QAAS,UAAW,QAAS,yBAAA,EAC/B,CAAE,QAAS,SAAU,QAAS,wBAAA,EAC9B,CAAE,QAAS,iBAAkB,QAAS,iCAAA,EACtC,CAAE,QAAS,WAAY,QAAS,gCAAA,EAChC,CAAE,QAAS,mBAAoB,QAAS,0BAAA,CAC1C,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Development-time validator for AsHTML content
|
|
3
|
+
* Provides warnings about potentially dangerous content patterns
|
|
4
|
+
*/
|
|
5
|
+
export declare class AsHTMLValidator {
|
|
6
|
+
private static readonly SUSPICIOUS_PATTERNS;
|
|
7
|
+
/**
|
|
8
|
+
* Validate HTML content in development mode
|
|
9
|
+
*/
|
|
10
|
+
static validate(html: string, options?: ValidationOptions): ValidationResult;
|
|
11
|
+
private static looksLikeUserInput;
|
|
12
|
+
}
|
|
13
|
+
export interface ValidationOptions {
|
|
14
|
+
suppressWarnings?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface ValidationResult {
|
|
17
|
+
isValid: boolean;
|
|
18
|
+
warnings: string[];
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=as-html-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"as-html-validator.d.ts","sourceRoot":"","sources":["../../src/modifiers/as-html-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAW1C;IAED;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,gBAAgB;IAwBhF,OAAO,CAAC,MAAM,CAAC,kBAAkB;CAYlC;AAED,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
var n = Object.defineProperty, p = (s, e, t) => e in s ? n(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t, d = (s, e, t) => p(s, e + "", t);
|
|
2
|
+
class c {
|
|
3
|
+
/**
|
|
4
|
+
* Validate HTML content in development mode
|
|
5
|
+
*/
|
|
6
|
+
static validate(e, t = {}) {
|
|
7
|
+
if (t.suppressWarnings)
|
|
8
|
+
return { isValid: !0, warnings: [] };
|
|
9
|
+
const r = [];
|
|
10
|
+
for (const { pattern: a, message: i } of this.SUSPICIOUS_PATTERNS)
|
|
11
|
+
a.test(e) && r.push(i);
|
|
12
|
+
return this.looksLikeUserInput(e) && r.push("Content appears to contain user input - ensure it's properly sanitized"), {
|
|
13
|
+
isValid: r.length === 0,
|
|
14
|
+
warnings: r
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
static looksLikeUserInput(e) {
|
|
18
|
+
return [
|
|
19
|
+
/<script/i,
|
|
20
|
+
// HTML-encoded script tags
|
|
21
|
+
/&#/,
|
|
22
|
+
// HTML entities that might be user input
|
|
23
|
+
/%3Cscript/i,
|
|
24
|
+
// URL-encoded script tags
|
|
25
|
+
/\{\{.*\}\}/,
|
|
26
|
+
// Template syntax
|
|
27
|
+
/\$\{.*\}/
|
|
28
|
+
// ES6 template literals
|
|
29
|
+
].some((r) => r.test(e));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
d(c, "SUSPICIOUS_PATTERNS", [
|
|
33
|
+
{ pattern: /<script/i, message: "Script tags detected" },
|
|
34
|
+
{ pattern: /javascript:/i, message: "JavaScript URLs detected" },
|
|
35
|
+
{ pattern: /on\w+\s*=/i, message: "Event handlers detected" },
|
|
36
|
+
{ pattern: /<iframe/i, message: "Iframe elements detected" },
|
|
37
|
+
{ pattern: /<object/i, message: "Object elements detected" },
|
|
38
|
+
{ pattern: /<embed/i, message: "Embed elements detected" },
|
|
39
|
+
{ pattern: /<form/i, message: "Form elements detected" },
|
|
40
|
+
{ pattern: /data:.*script/i, message: "Data URLs with scripts detected" },
|
|
41
|
+
{ pattern: /@import/i, message: "CSS import statements detected" },
|
|
42
|
+
{ pattern: /expression\s*\(/i, message: "CSS expressions detected" }
|
|
43
|
+
]);
|
|
44
|
+
export {
|
|
45
|
+
c as AsHTMLValidator
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=as-html-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"as-html-validator.js","sources":["../../src/modifiers/as-html-validator.ts"],"sourcesContent":["/**\n * Development-time validator for AsHTML content\n * Provides warnings about potentially dangerous content patterns\n */\n\nexport class AsHTMLValidator {\n private static readonly SUSPICIOUS_PATTERNS = [\n { pattern: /<script/i, message: 'Script tags detected' },\n { pattern: /javascript:/i, message: 'JavaScript URLs detected' },\n { pattern: /on\\w+\\s*=/i, message: 'Event handlers detected' },\n { pattern: /<iframe/i, message: 'Iframe elements detected' },\n { pattern: /<object/i, message: 'Object elements detected' },\n { pattern: /<embed/i, message: 'Embed elements detected' },\n { pattern: /<form/i, message: 'Form elements detected' },\n { pattern: /data:.*script/i, message: 'Data URLs with scripts detected' },\n { pattern: /@import/i, message: 'CSS import statements detected' },\n { pattern: /expression\\s*\\(/i, message: 'CSS expressions detected' }\n ]\n\n /**\n * Validate HTML content in development mode\n */\n static validate(html: string, options: ValidationOptions = {}): ValidationResult {\n if (options.suppressWarnings) {\n return { isValid: true, warnings: [] }\n }\n\n const warnings: string[] = []\n \n for (const { pattern, message } of this.SUSPICIOUS_PATTERNS) {\n if (pattern.test(html)) {\n warnings.push(message)\n }\n }\n\n // Check for user input patterns\n if (this.looksLikeUserInput(html)) {\n warnings.push('Content appears to contain user input - ensure it\\'s properly sanitized')\n }\n\n return {\n isValid: warnings.length === 0,\n warnings\n }\n }\n\n private static looksLikeUserInput(html: string): boolean {\n // Heuristics to detect potential user input\n const userInputIndicators = [\n /<script/i, // HTML-encoded script tags\n /&#/, // HTML entities that might be user input\n /%3Cscript/i, // URL-encoded script tags\n /\\{\\{.*\\}\\}/, // Template syntax\n /\\$\\{.*\\}/ // ES6 template literals\n ]\n\n return userInputIndicators.some(pattern => pattern.test(html))\n }\n}\n\nexport interface ValidationOptions {\n suppressWarnings?: boolean\n}\n\nexport interface ValidationResult {\n isValid: boolean\n warnings: string[]\n}"],"names":["AsHTMLValidator","html","options","warnings","pattern","message","__publicField"],"mappings":";AAKO,MAAMA,EAAgB;AAAA;AAAA;AAAA;AAAA,EAiB3B,OAAO,SAASC,GAAcC,IAA6B,IAAsB;AAC/E,QAAIA,EAAQ;AACV,aAAO,EAAE,SAAS,IAAM,UAAU,CAAA,EAAC;AAGrC,UAAMC,IAAqB,CAAA;AAE3B,eAAW,EAAE,SAAAC,GAAS,SAAAC,EAAA,KAAa,KAAK;AACtC,MAAID,EAAQ,KAAKH,CAAI,KACnBE,EAAS,KAAKE,CAAO;AAKzB,WAAI,KAAK,mBAAmBJ,CAAI,KAC9BE,EAAS,KAAK,wEAAyE,GAGlF;AAAA,MACL,SAASA,EAAS,WAAW;AAAA,MAC7B,UAAAA;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEA,OAAe,mBAAmBF,GAAuB;AAUvD,WAR4B;AAAA,MAC1B;AAAA;AAAA,MACA;AAAA;AAAA,MACA;AAAA;AAAA,MACA;AAAA;AAAA,MACA;AAAA;AAAA,IAAA,EAGyB,KAAK,CAAAG,MAAWA,EAAQ,KAAKH,CAAI,CAAC;AAAA,EAC/D;AACF;AApDEK,EADWN,GACa,uBAAsB;AAAA,EAC5C,EAAE,SAAS,YAAY,SAAS,uBAAA;AAAA,EAChC,EAAE,SAAS,gBAAgB,SAAS,2BAAA;AAAA,EACpC,EAAE,SAAS,cAAc,SAAS,0BAAA;AAAA,EAClC,EAAE,SAAS,YAAY,SAAS,2BAAA;AAAA,EAChC,EAAE,SAAS,YAAY,SAAS,2BAAA;AAAA,EAChC,EAAE,SAAS,WAAW,SAAS,0BAAA;AAAA,EAC/B,EAAE,SAAS,UAAU,SAAS,yBAAA;AAAA,EAC9B,EAAE,SAAS,kBAAkB,SAAS,kCAAA;AAAA,EACtC,EAAE,SAAS,YAAY,SAAS,iCAAA;AAAA,EAChC,EAAE,SAAS,oBAAoB,SAAS,2BAAA;AAC1C,CAAA;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("./base.cjs"),u=require("./basic-sanitizer.cjs"),l=require("./as-html-validator.cjs");var d=Object.defineProperty,f=(r,e,t)=>e in r?d(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,n=(r,e,t)=>f(r,typeof e!="symbol"?e+"":e,t);class o extends p.BaseModifier{constructor(e={}){super(e),n(this,"type","asHTML"),n(this,"priority",25)}apply(e,t){if(!t.element||!t.componentInstance)return;const i=t.componentInstance;if(!this.isTextComponent(i))throw new Error(`AsHTML modifier can only be applied to Text components. Found: ${i.type||"unknown"} component. Use Text('<your-html>').modifier.asHTML() instead.`);const s=this.getTextComponentContent(i);if(!s){process.env.NODE_ENV==="development"&&console.warn("asHTML: No content found in Text component");return}const a=this.sanitizeHTML(s);for(;t.element.firstChild;)t.element.removeChild(t.element.firstChild);t.element.innerHTML=a,t.element.__tachui_asHTML=!0,process.env.NODE_ENV==="development"&&this.validateContent(s)}isTextComponent(e){return e.type==="Text"||e.constructor?.name==="TextComponent"||e.__tachui_component_type==="Text"||e.props&&e.props.__componentType==="Text"||e.componentMetadata&&e.componentMetadata.type==="Text"||e.componentMetadata&&e.componentMetadata.originalType==="Text"}getTextComponentContent(e){if(typeof e.content=="string")return e.content;if(e.props&&typeof e.props.content=="string")return e.props.content;if(e.children&&Array.isArray(e.children)&&e.children.length>0){const t=e.children[0];if(t&&t.type==="text"&&typeof t.text=="string")return t.text}if(typeof e.text=="string")return e.text;if(e.props){if(typeof e.props.text=="string")return e.props.text;if(typeof e.props.children=="string")return e.props.children}return typeof e=="string"?e:""}sanitizeHTML(e){return!e||typeof e!="string"?"":this.properties.skipSanitizer?e:this.properties.customSanitizer?this.properties.customSanitizer(e):u.BasicSanitizer.sanitize(e,this.properties)}validateContent(e){if(this.properties.__suppressWarnings)return;const t=l.AsHTMLValidator.validate(e,{suppressWarnings:this.properties.__suppressWarnings});!t.isValid&&t.warnings.length>0&&(console.group("🔒 AsHTML Security Warnings"),console.warn("Potentially dangerous content detected in asHTML:"),t.warnings.forEach(i=>{console.warn(` • ${i}`)}),console.warn("Consider using a more comprehensive sanitization solution like DOMPurify"),console.warn("To suppress these warnings, use { __suppressWarnings: true }"),console.groupEnd()),this.properties.skipSanitizer&&console.warn("🚨 AsHTML: Sanitization is DISABLED. Ensure content is safe!")}}function c(r={}){return new o(r)}exports.AsHTMLModifier=o;exports.asHTML=c;
|
|
2
|
+
//# sourceMappingURL=as-html.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"as-html.cjs","sources":["../../src/modifiers/as-html.ts"],"sourcesContent":["/**\n * AsHTML Modifier - Renders Text component content as HTML\n * \n * Security-first design with:\n * - Text component restriction only\n * - Built-in basic sanitization by default\n * - Non-reactive for performance\n * - Clear error messages for misuse\n */\n\nimport { BaseModifier } from './base'\nimport type { DOMNode, ComponentInstance } from '../runtime/types'\nimport type { ModifierContext } from './types'\nimport { BasicSanitizer, type BasicSanitizerOptions } from './basic-sanitizer'\nimport { AsHTMLValidator } from './as-html-validator'\n\nexport interface AsHTMLOptions extends BasicSanitizerOptions {\n /** Skip basic sanitization (use with extreme caution) */\n skipSanitizer?: boolean\n /** Custom sanitization function */\n customSanitizer?: (html: string) => string\n /** Development-only validation */\n __devModeValidate?: boolean\n /** Suppress development warnings */\n __suppressWarnings?: boolean\n}\n\n/**\n * Text component interface for type safety\n */\nexport interface TextComponent extends ComponentInstance {\n readonly __tachui_component_type: 'Text'\n content: string\n}\n\nexport class AsHTMLModifier extends BaseModifier<AsHTMLOptions> {\n readonly type = 'asHTML'\n readonly priority = 25 // After layout, before styling\n\n constructor(options: AsHTMLOptions = {}) {\n super(options)\n }\n\n apply(_node: DOMNode, context: ModifierContext): DOMNode | undefined {\n if (!context.element || !context.componentInstance) return\n\n // Security check: Only allow Text components\n const component = context.componentInstance\n if (!this.isTextComponent(component)) {\n throw new Error(\n `AsHTML modifier can only be applied to Text components. ` +\n `Found: ${component.type || 'unknown'} component. ` +\n `Use Text('<your-html>').modifier.asHTML() instead.`\n )\n }\n\n // Get the content from the Text component\n const htmlContent = this.getTextComponentContent(component)\n \n if (!htmlContent) {\n if (process.env.NODE_ENV === 'development') {\n console.warn('asHTML: No content found in Text component')\n }\n return undefined\n }\n\n // Process and apply HTML content (non-reactive for performance)\n const processedHTML = this.sanitizeHTML(htmlContent)\n \n // Clear all existing child nodes first\n while (context.element.firstChild) {\n context.element.removeChild(context.element.firstChild)\n }\n \n // Set HTML content\n context.element.innerHTML = processedHTML\n \n // Mark element to prevent text() function from overwriting innerHTML\n ;(context.element as any).__tachui_asHTML = true\n\n // Perform validation after processing (development only)\n if (process.env.NODE_ENV === 'development') {\n this.validateContent(htmlContent) // Validate original content, not processed\n }\n\n return undefined\n }\n\n private isTextComponent(component: any): boolean {\n // Check if component is a Text component\n // Multiple checks for different ways Text components might be identified\n return component.type === 'Text' || \n component.constructor?.name === 'TextComponent' ||\n component.__tachui_component_type === 'Text' ||\n (component.props && component.props.__componentType === 'Text') ||\n // Check componentMetadata for enhanced Text components\n (component.componentMetadata && component.componentMetadata.type === 'Text') ||\n (component.componentMetadata && component.componentMetadata.originalType === 'Text')\n }\n\n private getTextComponentContent(component: any): string {\n // Extract content from Text component\n // Text components should have their content in a predictable location\n \n // Primary: Direct content property\n if (typeof component.content === 'string') {\n return component.content\n }\n \n // Secondary: Props content\n if (component.props && typeof component.props.content === 'string') {\n return component.props.content\n }\n \n // Tertiary: Check children array for text nodes (for enhanced Text components)\n if (component.children && Array.isArray(component.children) && component.children.length > 0) {\n const firstChild = component.children[0]\n if (firstChild && firstChild.type === 'text' && typeof firstChild.text === 'string') {\n return firstChild.text\n }\n }\n \n // Quaternary: Text property\n if (typeof component.text === 'string') {\n return component.text\n }\n \n // Fifth: Check props for common text properties\n if (component.props) {\n if (typeof component.props.text === 'string') {\n return component.props.text\n }\n if (typeof component.props.children === 'string') {\n return component.props.children\n }\n }\n\n // Fallback: Check for direct string (in case of simple Text usage)\n if (typeof component === 'string') {\n return component\n }\n\n return ''\n }\n\n private sanitizeHTML(html: string): string {\n if (!html || typeof html !== 'string') {\n return ''\n }\n\n // Skip sanitization if explicitly requested\n if (this.properties.skipSanitizer) {\n return html\n }\n\n // Use custom sanitizer if provided\n if (this.properties.customSanitizer) {\n return this.properties.customSanitizer(html)\n }\n\n // Apply basic sanitization\n return BasicSanitizer.sanitize(html, this.properties)\n }\n\n private validateContent(html: string): void {\n if (this.properties.__suppressWarnings) return\n\n // Validate content\n const validationResult = AsHTMLValidator.validate(html, {\n suppressWarnings: this.properties.__suppressWarnings\n })\n\n if (!validationResult.isValid && validationResult.warnings.length > 0) {\n console.group('🔒 AsHTML Security Warnings')\n console.warn('Potentially dangerous content detected in asHTML:')\n validationResult.warnings.forEach(warning => {\n console.warn(` • ${warning}`)\n })\n console.warn('Consider using a more comprehensive sanitization solution like DOMPurify')\n console.warn('To suppress these warnings, use { __suppressWarnings: true }')\n console.groupEnd()\n }\n\n // Warn about skipped sanitization\n if (this.properties.skipSanitizer) {\n console.warn('🚨 AsHTML: Sanitization is DISABLED. Ensure content is safe!')\n }\n }\n}\n\n/**\n * Create an asHTML modifier for rendering HTML content\n * \n * By default, applies basic sanitization to remove common XSS vectors.\n * Use { skipSanitizer: true } to bypass sanitization (dangerous).\n * \n * The modifier treats the component's content as HTML instead of plain text.\n * SECURITY: Only works on Text components.\n * \n * @param options - Configuration options\n * \n * @example\n * ```typescript\n * // Safe: Basic sanitization applied\n * Text('<p>Hello <strong>world</strong></p>').modifier.asHTML().build()\n * \n * // Dangerous: Skip sanitization\n * Text(serverTemplate).modifier.asHTML({ skipSanitizer: true }).build()\n * \n * // Custom sanitization\n * Text(content).modifier.asHTML({ customSanitizer: DOMPurify.sanitize }).build()\n * ```\n */\nexport function asHTML(options: AsHTMLOptions = {}): AsHTMLModifier {\n return new AsHTMLModifier(options)\n}"],"names":["AsHTMLModifier","BaseModifier","options","__publicField","_node","context","component","htmlContent","processedHTML","firstChild","html","BasicSanitizer","validationResult","AsHTMLValidator","warning","asHTML"],"mappings":"kVAmCO,MAAMA,UAAuBC,EAAAA,YAA4B,CAI9D,YAAYC,EAAyB,GAAI,CACvC,MAAMA,CAAO,EAJfC,EAAA,KAAS,OAAO,QAAA,EAChBA,EAAA,KAAS,WAAW,EAAA,CAIpB,CAEA,MAAMC,EAAgBC,EAA+C,CACnE,GAAI,CAACA,EAAQ,SAAW,CAACA,EAAQ,kBAAmB,OAGpD,MAAMC,EAAYD,EAAQ,kBAC1B,GAAI,CAAC,KAAK,gBAAgBC,CAAS,EACjC,MAAM,IAAI,MACR,kEACUA,EAAU,MAAQ,SAAS,gEAAA,EAMzC,MAAMC,EAAc,KAAK,wBAAwBD,CAAS,EAE1D,GAAI,CAACC,EAAa,CACZ,QAAQ,IAAI,WAAa,eAC3B,QAAQ,KAAK,4CAA4C,EAE3D,MACF,CAGA,MAAMC,EAAgB,KAAK,aAAaD,CAAW,EAGnD,KAAOF,EAAQ,QAAQ,YACrBA,EAAQ,QAAQ,YAAYA,EAAQ,QAAQ,UAAU,EAIxDA,EAAQ,QAAQ,UAAYG,EAG1BH,EAAQ,QAAgB,gBAAkB,GAGxC,QAAQ,IAAI,WAAa,eAC3B,KAAK,gBAAgBE,CAAW,CAIpC,CAEQ,gBAAgBD,EAAyB,CAG/C,OAAOA,EAAU,OAAS,QACnBA,EAAU,aAAa,OAAS,iBAChCA,EAAU,0BAA4B,QACrCA,EAAU,OAASA,EAAU,MAAM,kBAAoB,QAEvDA,EAAU,mBAAqBA,EAAU,kBAAkB,OAAS,QACpEA,EAAU,mBAAqBA,EAAU,kBAAkB,eAAiB,MACtF,CAEQ,wBAAwBA,EAAwB,CAKtD,GAAI,OAAOA,EAAU,SAAY,SAC/B,OAAOA,EAAU,QAInB,GAAIA,EAAU,OAAS,OAAOA,EAAU,MAAM,SAAY,SACxD,OAAOA,EAAU,MAAM,QAIzB,GAAIA,EAAU,UAAY,MAAM,QAAQA,EAAU,QAAQ,GAAKA,EAAU,SAAS,OAAS,EAAG,CAC5F,MAAMG,EAAaH,EAAU,SAAS,CAAC,EACvC,GAAIG,GAAcA,EAAW,OAAS,QAAU,OAAOA,EAAW,MAAS,SACzE,OAAOA,EAAW,IAEtB,CAGA,GAAI,OAAOH,EAAU,MAAS,SAC5B,OAAOA,EAAU,KAInB,GAAIA,EAAU,MAAO,CACnB,GAAI,OAAOA,EAAU,MAAM,MAAS,SAClC,OAAOA,EAAU,MAAM,KAEzB,GAAI,OAAOA,EAAU,MAAM,UAAa,SACtC,OAAOA,EAAU,MAAM,QAE3B,CAGA,OAAI,OAAOA,GAAc,SAChBA,EAGF,EACT,CAEQ,aAAaI,EAAsB,CACzC,MAAI,CAACA,GAAQ,OAAOA,GAAS,SACpB,GAIL,KAAK,WAAW,cACXA,EAIL,KAAK,WAAW,gBACX,KAAK,WAAW,gBAAgBA,CAAI,EAItCC,EAAAA,eAAe,SAASD,EAAM,KAAK,UAAU,CACtD,CAEQ,gBAAgBA,EAAoB,CAC1C,GAAI,KAAK,WAAW,mBAAoB,OAGxC,MAAME,EAAmBC,EAAAA,gBAAgB,SAASH,EAAM,CACtD,iBAAkB,KAAK,WAAW,kBAAA,CACnC,EAEG,CAACE,EAAiB,SAAWA,EAAiB,SAAS,OAAS,IAClE,QAAQ,MAAM,6BAA6B,EAC3C,QAAQ,KAAK,mDAAmD,EAChEA,EAAiB,SAAS,QAAQE,GAAW,CAC3C,QAAQ,KAAK,OAAOA,CAAO,EAAE,CAC/B,CAAC,EACD,QAAQ,KAAK,0EAA0E,EACvF,QAAQ,KAAK,8DAA8D,EAC3E,QAAQ,SAAA,GAIN,KAAK,WAAW,eAClB,QAAQ,KAAK,8DAA8D,CAE/E,CACF,CAyBO,SAASC,EAAOb,EAAyB,GAAoB,CAClE,OAAO,IAAIF,EAAeE,CAAO,CACnC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AsHTML Modifier - Renders Text component content as HTML
|
|
3
|
+
*
|
|
4
|
+
* Security-first design with:
|
|
5
|
+
* - Text component restriction only
|
|
6
|
+
* - Built-in basic sanitization by default
|
|
7
|
+
* - Non-reactive for performance
|
|
8
|
+
* - Clear error messages for misuse
|
|
9
|
+
*/
|
|
10
|
+
import { BaseModifier } from './base';
|
|
11
|
+
import type { DOMNode, ComponentInstance } from '../runtime/types';
|
|
12
|
+
import type { ModifierContext } from './types';
|
|
13
|
+
import { type BasicSanitizerOptions } from './basic-sanitizer';
|
|
14
|
+
export interface AsHTMLOptions extends BasicSanitizerOptions {
|
|
15
|
+
/** Skip basic sanitization (use with extreme caution) */
|
|
16
|
+
skipSanitizer?: boolean;
|
|
17
|
+
/** Custom sanitization function */
|
|
18
|
+
customSanitizer?: (html: string) => string;
|
|
19
|
+
/** Development-only validation */
|
|
20
|
+
__devModeValidate?: boolean;
|
|
21
|
+
/** Suppress development warnings */
|
|
22
|
+
__suppressWarnings?: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Text component interface for type safety
|
|
26
|
+
*/
|
|
27
|
+
export interface TextComponent extends ComponentInstance {
|
|
28
|
+
readonly __tachui_component_type: 'Text';
|
|
29
|
+
content: string;
|
|
30
|
+
}
|
|
31
|
+
export declare class AsHTMLModifier extends BaseModifier<AsHTMLOptions> {
|
|
32
|
+
readonly type = "asHTML";
|
|
33
|
+
readonly priority = 25;
|
|
34
|
+
constructor(options?: AsHTMLOptions);
|
|
35
|
+
apply(_node: DOMNode, context: ModifierContext): DOMNode | undefined;
|
|
36
|
+
private isTextComponent;
|
|
37
|
+
private getTextComponentContent;
|
|
38
|
+
private sanitizeHTML;
|
|
39
|
+
private validateContent;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Create an asHTML modifier for rendering HTML content
|
|
43
|
+
*
|
|
44
|
+
* By default, applies basic sanitization to remove common XSS vectors.
|
|
45
|
+
* Use { skipSanitizer: true } to bypass sanitization (dangerous).
|
|
46
|
+
*
|
|
47
|
+
* The modifier treats the component's content as HTML instead of plain text.
|
|
48
|
+
* SECURITY: Only works on Text components.
|
|
49
|
+
*
|
|
50
|
+
* @param options - Configuration options
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* // Safe: Basic sanitization applied
|
|
55
|
+
* Text('<p>Hello <strong>world</strong></p>').modifier.asHTML().build()
|
|
56
|
+
*
|
|
57
|
+
* // Dangerous: Skip sanitization
|
|
58
|
+
* Text(serverTemplate).modifier.asHTML({ skipSanitizer: true }).build()
|
|
59
|
+
*
|
|
60
|
+
* // Custom sanitization
|
|
61
|
+
* Text(content).modifier.asHTML({ customSanitizer: DOMPurify.sanitize }).build()
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export declare function asHTML(options?: AsHTMLOptions): AsHTMLModifier;
|
|
65
|
+
//# sourceMappingURL=as-html.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"as-html.d.ts","sourceRoot":"","sources":["../../src/modifiers/as-html.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,EAAkB,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAG9E,MAAM,WAAW,aAAc,SAAQ,qBAAqB;IAC1D,yDAAyD;IACzD,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,mCAAmC;IACnC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IAC1C,kCAAkC;IAClC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,oCAAoC;IACpC,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,iBAAiB;IACtD,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAA;IACxC,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,qBAAa,cAAe,SAAQ,YAAY,CAAC,aAAa,CAAC;IAC7D,QAAQ,CAAC,IAAI,YAAW;IACxB,QAAQ,CAAC,QAAQ,MAAK;gBAEV,OAAO,GAAE,aAAkB;IAIvC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,GAAG,SAAS;IA6CpE,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,uBAAuB;IA6C/B,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,eAAe;CAwBxB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,cAAc,CAElE"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { BaseModifier as a } from "./base.js";
|
|
2
|
+
import { BasicSanitizer as p } from "./basic-sanitizer.js";
|
|
3
|
+
import { AsHTMLValidator as u } from "./as-html-validator.js";
|
|
4
|
+
var l = Object.defineProperty, f = (r, e, t) => e in r ? l(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t, n = (r, e, t) => f(r, typeof e != "symbol" ? e + "" : e, t);
|
|
5
|
+
class d extends a {
|
|
6
|
+
// After layout, before styling
|
|
7
|
+
constructor(e = {}) {
|
|
8
|
+
super(e), n(this, "type", "asHTML"), n(this, "priority", 25);
|
|
9
|
+
}
|
|
10
|
+
apply(e, t) {
|
|
11
|
+
if (!t.element || !t.componentInstance) return;
|
|
12
|
+
const i = t.componentInstance;
|
|
13
|
+
if (!this.isTextComponent(i))
|
|
14
|
+
throw new Error(
|
|
15
|
+
`AsHTML modifier can only be applied to Text components. Found: ${i.type || "unknown"} component. Use Text('<your-html>').modifier.asHTML() instead.`
|
|
16
|
+
);
|
|
17
|
+
const s = this.getTextComponentContent(i);
|
|
18
|
+
if (!s) {
|
|
19
|
+
process.env.NODE_ENV === "development" && console.warn("asHTML: No content found in Text component");
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const o = this.sanitizeHTML(s);
|
|
23
|
+
for (; t.element.firstChild; )
|
|
24
|
+
t.element.removeChild(t.element.firstChild);
|
|
25
|
+
t.element.innerHTML = o, t.element.__tachui_asHTML = !0, process.env.NODE_ENV === "development" && this.validateContent(s);
|
|
26
|
+
}
|
|
27
|
+
isTextComponent(e) {
|
|
28
|
+
return e.type === "Text" || e.constructor?.name === "TextComponent" || e.__tachui_component_type === "Text" || e.props && e.props.__componentType === "Text" || // Check componentMetadata for enhanced Text components
|
|
29
|
+
e.componentMetadata && e.componentMetadata.type === "Text" || e.componentMetadata && e.componentMetadata.originalType === "Text";
|
|
30
|
+
}
|
|
31
|
+
getTextComponentContent(e) {
|
|
32
|
+
if (typeof e.content == "string")
|
|
33
|
+
return e.content;
|
|
34
|
+
if (e.props && typeof e.props.content == "string")
|
|
35
|
+
return e.props.content;
|
|
36
|
+
if (e.children && Array.isArray(e.children) && e.children.length > 0) {
|
|
37
|
+
const t = e.children[0];
|
|
38
|
+
if (t && t.type === "text" && typeof t.text == "string")
|
|
39
|
+
return t.text;
|
|
40
|
+
}
|
|
41
|
+
if (typeof e.text == "string")
|
|
42
|
+
return e.text;
|
|
43
|
+
if (e.props) {
|
|
44
|
+
if (typeof e.props.text == "string")
|
|
45
|
+
return e.props.text;
|
|
46
|
+
if (typeof e.props.children == "string")
|
|
47
|
+
return e.props.children;
|
|
48
|
+
}
|
|
49
|
+
return typeof e == "string" ? e : "";
|
|
50
|
+
}
|
|
51
|
+
sanitizeHTML(e) {
|
|
52
|
+
return !e || typeof e != "string" ? "" : this.properties.skipSanitizer ? e : this.properties.customSanitizer ? this.properties.customSanitizer(e) : p.sanitize(e, this.properties);
|
|
53
|
+
}
|
|
54
|
+
validateContent(e) {
|
|
55
|
+
if (this.properties.__suppressWarnings) return;
|
|
56
|
+
const t = u.validate(e, {
|
|
57
|
+
suppressWarnings: this.properties.__suppressWarnings
|
|
58
|
+
});
|
|
59
|
+
!t.isValid && t.warnings.length > 0 && (console.group("🔒 AsHTML Security Warnings"), console.warn("Potentially dangerous content detected in asHTML:"), t.warnings.forEach((i) => {
|
|
60
|
+
console.warn(` • ${i}`);
|
|
61
|
+
}), console.warn("Consider using a more comprehensive sanitization solution like DOMPurify"), console.warn("To suppress these warnings, use { __suppressWarnings: true }"), console.groupEnd()), this.properties.skipSanitizer && console.warn("🚨 AsHTML: Sanitization is DISABLED. Ensure content is safe!");
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function g(r = {}) {
|
|
65
|
+
return new d(r);
|
|
66
|
+
}
|
|
67
|
+
export {
|
|
68
|
+
d as AsHTMLModifier,
|
|
69
|
+
g as asHTML
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=as-html.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"as-html.js","sources":["../../src/modifiers/as-html.ts"],"sourcesContent":["/**\n * AsHTML Modifier - Renders Text component content as HTML\n * \n * Security-first design with:\n * - Text component restriction only\n * - Built-in basic sanitization by default\n * - Non-reactive for performance\n * - Clear error messages for misuse\n */\n\nimport { BaseModifier } from './base'\nimport type { DOMNode, ComponentInstance } from '../runtime/types'\nimport type { ModifierContext } from './types'\nimport { BasicSanitizer, type BasicSanitizerOptions } from './basic-sanitizer'\nimport { AsHTMLValidator } from './as-html-validator'\n\nexport interface AsHTMLOptions extends BasicSanitizerOptions {\n /** Skip basic sanitization (use with extreme caution) */\n skipSanitizer?: boolean\n /** Custom sanitization function */\n customSanitizer?: (html: string) => string\n /** Development-only validation */\n __devModeValidate?: boolean\n /** Suppress development warnings */\n __suppressWarnings?: boolean\n}\n\n/**\n * Text component interface for type safety\n */\nexport interface TextComponent extends ComponentInstance {\n readonly __tachui_component_type: 'Text'\n content: string\n}\n\nexport class AsHTMLModifier extends BaseModifier<AsHTMLOptions> {\n readonly type = 'asHTML'\n readonly priority = 25 // After layout, before styling\n\n constructor(options: AsHTMLOptions = {}) {\n super(options)\n }\n\n apply(_node: DOMNode, context: ModifierContext): DOMNode | undefined {\n if (!context.element || !context.componentInstance) return\n\n // Security check: Only allow Text components\n const component = context.componentInstance\n if (!this.isTextComponent(component)) {\n throw new Error(\n `AsHTML modifier can only be applied to Text components. ` +\n `Found: ${component.type || 'unknown'} component. ` +\n `Use Text('<your-html>').modifier.asHTML() instead.`\n )\n }\n\n // Get the content from the Text component\n const htmlContent = this.getTextComponentContent(component)\n \n if (!htmlContent) {\n if (process.env.NODE_ENV === 'development') {\n console.warn('asHTML: No content found in Text component')\n }\n return undefined\n }\n\n // Process and apply HTML content (non-reactive for performance)\n const processedHTML = this.sanitizeHTML(htmlContent)\n \n // Clear all existing child nodes first\n while (context.element.firstChild) {\n context.element.removeChild(context.element.firstChild)\n }\n \n // Set HTML content\n context.element.innerHTML = processedHTML\n \n // Mark element to prevent text() function from overwriting innerHTML\n ;(context.element as any).__tachui_asHTML = true\n\n // Perform validation after processing (development only)\n if (process.env.NODE_ENV === 'development') {\n this.validateContent(htmlContent) // Validate original content, not processed\n }\n\n return undefined\n }\n\n private isTextComponent(component: any): boolean {\n // Check if component is a Text component\n // Multiple checks for different ways Text components might be identified\n return component.type === 'Text' || \n component.constructor?.name === 'TextComponent' ||\n component.__tachui_component_type === 'Text' ||\n (component.props && component.props.__componentType === 'Text') ||\n // Check componentMetadata for enhanced Text components\n (component.componentMetadata && component.componentMetadata.type === 'Text') ||\n (component.componentMetadata && component.componentMetadata.originalType === 'Text')\n }\n\n private getTextComponentContent(component: any): string {\n // Extract content from Text component\n // Text components should have their content in a predictable location\n \n // Primary: Direct content property\n if (typeof component.content === 'string') {\n return component.content\n }\n \n // Secondary: Props content\n if (component.props && typeof component.props.content === 'string') {\n return component.props.content\n }\n \n // Tertiary: Check children array for text nodes (for enhanced Text components)\n if (component.children && Array.isArray(component.children) && component.children.length > 0) {\n const firstChild = component.children[0]\n if (firstChild && firstChild.type === 'text' && typeof firstChild.text === 'string') {\n return firstChild.text\n }\n }\n \n // Quaternary: Text property\n if (typeof component.text === 'string') {\n return component.text\n }\n \n // Fifth: Check props for common text properties\n if (component.props) {\n if (typeof component.props.text === 'string') {\n return component.props.text\n }\n if (typeof component.props.children === 'string') {\n return component.props.children\n }\n }\n\n // Fallback: Check for direct string (in case of simple Text usage)\n if (typeof component === 'string') {\n return component\n }\n\n return ''\n }\n\n private sanitizeHTML(html: string): string {\n if (!html || typeof html !== 'string') {\n return ''\n }\n\n // Skip sanitization if explicitly requested\n if (this.properties.skipSanitizer) {\n return html\n }\n\n // Use custom sanitizer if provided\n if (this.properties.customSanitizer) {\n return this.properties.customSanitizer(html)\n }\n\n // Apply basic sanitization\n return BasicSanitizer.sanitize(html, this.properties)\n }\n\n private validateContent(html: string): void {\n if (this.properties.__suppressWarnings) return\n\n // Validate content\n const validationResult = AsHTMLValidator.validate(html, {\n suppressWarnings: this.properties.__suppressWarnings\n })\n\n if (!validationResult.isValid && validationResult.warnings.length > 0) {\n console.group('🔒 AsHTML Security Warnings')\n console.warn('Potentially dangerous content detected in asHTML:')\n validationResult.warnings.forEach(warning => {\n console.warn(` • ${warning}`)\n })\n console.warn('Consider using a more comprehensive sanitization solution like DOMPurify')\n console.warn('To suppress these warnings, use { __suppressWarnings: true }')\n console.groupEnd()\n }\n\n // Warn about skipped sanitization\n if (this.properties.skipSanitizer) {\n console.warn('🚨 AsHTML: Sanitization is DISABLED. Ensure content is safe!')\n }\n }\n}\n\n/**\n * Create an asHTML modifier for rendering HTML content\n * \n * By default, applies basic sanitization to remove common XSS vectors.\n * Use { skipSanitizer: true } to bypass sanitization (dangerous).\n * \n * The modifier treats the component's content as HTML instead of plain text.\n * SECURITY: Only works on Text components.\n * \n * @param options - Configuration options\n * \n * @example\n * ```typescript\n * // Safe: Basic sanitization applied\n * Text('<p>Hello <strong>world</strong></p>').modifier.asHTML().build()\n * \n * // Dangerous: Skip sanitization\n * Text(serverTemplate).modifier.asHTML({ skipSanitizer: true }).build()\n * \n * // Custom sanitization\n * Text(content).modifier.asHTML({ customSanitizer: DOMPurify.sanitize }).build()\n * ```\n */\nexport function asHTML(options: AsHTMLOptions = {}): AsHTMLModifier {\n return new AsHTMLModifier(options)\n}"],"names":["AsHTMLModifier","BaseModifier","options","__publicField","_node","context","component","htmlContent","processedHTML","firstChild","html","BasicSanitizer","validationResult","AsHTMLValidator","warning","asHTML"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("./base.cjs"),l=require("./types.cjs");var h=Object.defineProperty,y=(i,t,e)=>t in i?h(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,s=(i,t,e)=>y(i,typeof t!="symbol"?t+"":t,e);class p extends d.BaseModifier{constructor(){super(...arguments),s(this,"type","id"),s(this,"priority",l.ModifierPriority.CUSTOM+10)}apply(t,e){if(!e.element)return;const{id:r}=this.properties;process.env.NODE_ENV==="development"&&this.validateId(r),e.element.setAttribute("id",r)}validateId(t){if(!t||typeof t!="string"){console.warn("TachUI ID Modifier: ID must be a non-empty string");return}/^[a-zA-Z][a-zA-Z0-9_:-]*$/.test(t)||console.warn(`TachUI ID Modifier: Invalid ID format "${t}". IDs must start with a letter and contain only letters, digits, hyphens, underscores, colons, and periods.`),document.getElementById(t)&&console.warn(`TachUI ID Modifier: Duplicate ID "${t}" detected. IDs should be unique within the document.`)}}function I(i){return new p({id:i})}class f extends d.BaseModifier{constructor(){super(...arguments),s(this,"type","data"),s(this,"priority",l.ModifierPriority.CUSTOM+5)}apply(t,e){if(!e.element)return;const{data:r}=this.properties;process.env.NODE_ENV==="development"&&this.validateDataAttributes(r),Object.entries(r).forEach(([a,o])=>{const c=this.formatDataAttributeName(a),u=this.formatDataAttributeValue(o);e.element.setAttribute(c,u)})}formatDataAttributeName(t){const e=t.replace(/[A-Z]/g,r=>`-${r.toLowerCase()}`);return e.startsWith("data-")?e:`data-${e}`}formatDataAttributeValue(t){return typeof t=="boolean"?t?"true":"false":String(t)}validateDataAttributes(t){Object.entries(t).forEach(([e,r])=>{if(!e||typeof e!="string"){console.warn("TachUI Data Modifier: Data attribute keys must be non-empty strings");return}/^[a-zA-Z][a-zA-Z0-9-_]*$/.test(e.replace(/^data-/,""))||console.warn(`TachUI Data Modifier: Invalid data attribute key "${e}". Keys should contain only letters, numbers, hyphens, and underscores.`),r!=null&&typeof r!="string"&&typeof r!="number"&&typeof r!="boolean"&&console.warn(`TachUI Data Modifier: Data attribute "${e}" has invalid value type. Only strings, numbers, and booleans are supported.`)})}}function A(i){return new f({data:i})}class b extends d.BaseModifier{constructor(){super(...arguments),s(this,"type","aria"),s(this,"priority",l.ModifierPriority.CUSTOM+15)}apply(t,e){if(!e.element)return;const{aria:r}=this.properties;process.env.NODE_ENV==="development"&&this.validateAriaAttributes(r),Object.entries(r).forEach(([a,o])=>{if(o!=null){const c=this.formatAriaAttributeName(a),u=this.formatAriaAttributeValue(o);e.element.setAttribute(c,u)}})}formatAriaAttributeName(t){if(t==="role")return"role";const e=t.replace(/[A-Z]/g,r=>`-${r.toLowerCase()}`);return e.startsWith("aria-")?e:`aria-${e}`}formatAriaAttributeValue(t){return typeof t=="boolean"?t?"true":"false":String(t)}validateAriaAttributes(t){const e=new Set(["label","labelledby","describedby","expanded","hidden","live","atomic","busy","controls","current","disabled","grabbed","haspopup","invalid","level","multiline","multiselectable","orientation","owns","placeholder","posinset","pressed","readonly","relevant","required","selected","setsize","sort","valuemax","valuemin","valuenow","valuetext","role"]);Object.entries(t).forEach(([r,a])=>{if(!r||typeof r!="string"){console.warn("TachUI ARIA Modifier: ARIA attribute keys must be non-empty strings");return}const o=r.replace(/^aria-/,"");!e.has(o)&&!o.startsWith("aria-")&&console.warn(`TachUI ARIA Modifier: Unknown ARIA attribute "${r}". This may not be a valid ARIA attribute. Did you mean "${this.suggestCorrection(o)}"?`),this.validateSpecificAriaAttribute(r,a)})}validateSpecificAriaAttribute(t,e){const r=t.replace(/^aria-/,"");switch(r){case"live":e!=="off"&&e!=="polite"&&e!=="assertive"&&console.warn(`TachUI ARIA Modifier: Invalid value "${e}" for aria-live. Valid values are: "off", "polite", "assertive"`);break;case"haspopup":typeof e=="string"&&!["false","true","menu","listbox","tree","grid","dialog"].includes(e)&&console.warn(`TachUI ARIA Modifier: Invalid value "${e}" for aria-haspopup. Valid values are: false, true, "menu", "listbox", "tree", "grid", "dialog"`);break;case"current":typeof e=="string"&&!["page","step","location","date","time"].includes(e)&&console.warn(`TachUI ARIA Modifier: Invalid value "${e}" for aria-current. Valid values are: false, true, "page", "step", "location", "date", "time"`);break;case"invalid":typeof e=="string"&&!["false","true","grammar","spelling"].includes(e)&&console.warn(`TachUI ARIA Modifier: Invalid value "${e}" for aria-invalid. Valid values are: false, true, "grammar", "spelling"`);break;case"orientation":e!=="horizontal"&&e!=="vertical"&&console.warn(`TachUI ARIA Modifier: Invalid value "${e}" for aria-orientation. Valid values are: "horizontal", "vertical"`);break;case"sort":["none","ascending","descending","other"].includes(e)||console.warn(`TachUI ARIA Modifier: Invalid value "${e}" for aria-sort. Valid values are: "none", "ascending", "descending", "other"`);break;case"level":case"posinset":case"setsize":case"valuemax":case"valuemin":case"valuenow":typeof e=="number"&&(e<0||!Number.isInteger(e))&&console.warn(`TachUI ARIA Modifier: Invalid value "${e}" for aria-${r}. Must be a non-negative integer.`);break}}suggestCorrection(t){return{lable:"label",labeledby:"labelledby",descripedby:"describedby",descibed:"describedby",controled:"controls",expaned:"expanded",hiden:"hidden",disbled:"disabled",requird:"required",selectd:"selected"}[t]||t}}function g(i){return new b({aria:i})}class m extends d.BaseModifier{constructor(){super(...arguments),s(this,"type","tabIndex"),s(this,"priority",l.ModifierPriority.CUSTOM+12)}apply(t,e){if(!e.element)return;const{tabIndex:r}=this.properties;process.env.NODE_ENV==="development"&&this.validateTabIndex(r),e.element.setAttribute("tabindex",String(r))}validateTabIndex(t){if(typeof t!="number"||!Number.isInteger(t)){console.warn("TachUI TabIndex Modifier: tabIndex must be an integer");return}t>0&&console.info('TachUI TabIndex Modifier: Positive tabIndex values can disrupt natural tab order. Consider using tabIndex="0" for focusable elements and tabIndex="-1" for programmatically focusable elements.'),t<-1&&console.warn("TachUI TabIndex Modifier: tabIndex values less than -1 are not recommended. Use -1 to remove from tab order or 0+ for tab order.")}}function v(i){return new m({tabIndex:i})}class n extends d.BaseModifier{constructor(t){const e={};for(const[r,a]of Object.entries(t))typeof a=="function"&&"peek"in a?e[r]=a.peek():e[r]=a;super(e),s(this,"type","customProperties"),s(this,"priority",5)}apply(t,e){if(!e.element)return;const r=this.computeCustomPropertyStyles(this.properties);this.applyStyles(e.element,r)}computeCustomPropertyStyles(t){const e={};if(t.properties)for(const[r,a]of Object.entries(t.properties)){const o=r.startsWith("--")?r:`--${r}`;e[o]=this.formatPropertyValue(a)}return e}formatPropertyValue(t){return typeof t=="number"?t.toString():t}}function M(i){return new n({properties:i.properties,scope:i.scope||"local"})}function w(i,t,e){const r=i.startsWith("--")?i:`--${i}`;return new n({properties:{[r]:t},scope:e||"local"})}function T(i){return new n({properties:i,scope:"local"})}function D(i){const t={};for(const[e,r]of Object.entries(i))t[`--theme-color-${e}`]=r;return new n({properties:t,scope:"local"})}function P(i){const t={};for(const[e,r]of Object.entries(i))t[`--token-${e}`]=r;return new n({properties:t,scope:"local"})}exports.AriaModifier=b;exports.CustomPropertiesModifier=n;exports.DataModifier=f;exports.IdModifier=p;exports.TabIndexModifier=m;exports.aria=g;exports.cssVariables=T;exports.customProperties=M;exports.customProperty=w;exports.data=A;exports.designTokens=P;exports.id=I;exports.tabIndex=v;exports.themeColors=D;
|
|
2
|
+
//# sourceMappingURL=attributes.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attributes.cjs","sources":["../../src/modifiers/attributes.ts"],"sourcesContent":["/**\n * HTML and ARIA Attributes Implementation\n *\n * Implementation of HTML attributes, ARIA accessibility attributes, and related modifiers.\n * These modifiers provide essential web functionality for accessibility, testing, and semantic markup.\n */\n\nimport type { DOMNode } from '../runtime/types'\nimport { BaseModifier } from './base'\nimport type { ModifierContext, ReactiveModifierProps } from './types'\nimport { ModifierPriority } from './types'\n\n// ============================================================================\n// HTML and ARIA Attribute Modifiers\n// ============================================================================\n\n/**\n * ID Modifier - HTML Element ID\n * Sets the id attribute for page anchoring, accessibility, and testing selectors\n */\nexport interface IdOptions {\n id: string\n}\n\nexport type ReactiveIdOptions = ReactiveModifierProps<IdOptions>\n\nexport class IdModifier extends BaseModifier<IdOptions> {\n readonly type = 'id'\n readonly priority = ModifierPriority.CUSTOM + 10\n\n apply(_node: DOMNode, context: ModifierContext): DOMNode | undefined {\n if (!context.element) return\n\n const { id } = this.properties\n\n // Validate ID in development mode\n if (process.env.NODE_ENV === 'development') {\n this.validateId(id)\n }\n\n // Set id attribute\n context.element.setAttribute('id', id)\n \n return undefined\n }\n\n private validateId(id: string): void {\n // Check for valid HTML ID format\n if (!id || typeof id !== 'string') {\n console.warn('TachUI ID Modifier: ID must be a non-empty string')\n return\n }\n\n // HTML ID rules: must start with letter, can contain letters, digits, hyphens, underscores, colons, periods\n const validIdPattern = /^[a-zA-Z][a-zA-Z0-9_:-]*$/\n if (!validIdPattern.test(id)) {\n console.warn(`TachUI ID Modifier: Invalid ID format \"${id}\". IDs must start with a letter and contain only letters, digits, hyphens, underscores, colons, and periods.`)\n }\n\n // Check for duplicate IDs in development\n if (document.getElementById(id)) {\n console.warn(`TachUI ID Modifier: Duplicate ID \"${id}\" detected. IDs should be unique within the document.`)\n }\n }\n}\n\n/**\n * ID modifier function\n */\nexport function id(value: string): IdModifier {\n return new IdModifier({ id: value })\n}\n\n// ============================================================================\n// Data Attributes Modifier - Data Attributes for Testing and Analytics\n// ============================================================================\n\nexport interface DataAttributes {\n [key: string]: string | number | boolean\n}\n\nexport interface DataOptions {\n data: DataAttributes\n}\n\nexport type ReactiveDataOptions = ReactiveModifierProps<DataOptions>\n\nexport class DataModifier extends BaseModifier<DataOptions> {\n readonly type = 'data'\n readonly priority = ModifierPriority.CUSTOM + 5\n\n apply(_node: DOMNode, context: ModifierContext): DOMNode | undefined {\n if (!context.element) return\n\n const { data } = this.properties\n\n // Validate data attributes in development mode\n if (process.env.NODE_ENV === 'development') {\n this.validateDataAttributes(data)\n }\n\n // Apply data attributes\n Object.entries(data).forEach(([key, value]) => {\n const attributeName = this.formatDataAttributeName(key)\n const attributeValue = this.formatDataAttributeValue(value)\n context.element!.setAttribute(attributeName, attributeValue)\n })\n \n return undefined\n }\n\n private formatDataAttributeName(key: string): string {\n // Convert camelCase to kebab-case and ensure data- prefix\n const kebabKey = key.replace(/[A-Z]/g, letter => `-${letter.toLowerCase()}`)\n return kebabKey.startsWith('data-') ? kebabKey : `data-${kebabKey}`\n }\n\n private formatDataAttributeValue(value: string | number | boolean): string {\n if (typeof value === 'boolean') {\n return value ? 'true' : 'false'\n }\n return String(value)\n }\n\n private validateDataAttributes(data: DataAttributes): void {\n Object.entries(data).forEach(([key, value]) => {\n // Validate key format\n if (!key || typeof key !== 'string') {\n console.warn('TachUI Data Modifier: Data attribute keys must be non-empty strings')\n return\n }\n\n // Check for valid data attribute naming\n const validKeyPattern = /^[a-zA-Z][a-zA-Z0-9-_]*$/\n if (!validKeyPattern.test(key.replace(/^data-/, ''))) {\n console.warn(`TachUI Data Modifier: Invalid data attribute key \"${key}\". Keys should contain only letters, numbers, hyphens, and underscores.`)\n }\n\n // Validate value types\n if (value !== null && value !== undefined && \n typeof value !== 'string' && typeof value !== 'number' && typeof value !== 'boolean') {\n console.warn(`TachUI Data Modifier: Data attribute \"${key}\" has invalid value type. Only strings, numbers, and booleans are supported.`)\n }\n })\n }\n}\n\n/**\n * Data attributes modifier function\n */\nexport function data(attributes: DataAttributes): DataModifier {\n return new DataModifier({ data: attributes })\n}\n\n// ============================================================================\n// ARIA Attributes Modifier - Accessibility Attributes\n// ============================================================================\n\nexport interface AriaAttributes {\n // Common ARIA attributes with type safety\n label?: string\n labelledby?: string\n describedby?: string\n expanded?: boolean\n hidden?: boolean\n live?: 'off' | 'polite' | 'assertive'\n atomic?: boolean\n busy?: boolean\n controls?: string\n current?: boolean | 'page' | 'step' | 'location' | 'date' | 'time'\n disabled?: boolean\n grabbed?: boolean\n haspopup?: boolean | 'false' | 'true' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog'\n invalid?: boolean | 'false' | 'true' | 'grammar' | 'spelling'\n level?: number\n multiline?: boolean\n multiselectable?: boolean\n orientation?: 'horizontal' | 'vertical'\n owns?: string\n placeholder?: string\n posinset?: number\n pressed?: boolean\n readonly?: boolean\n relevant?: 'additions' | 'removals' | 'text' | 'all' | string\n required?: boolean\n selected?: boolean\n setsize?: number\n sort?: 'none' | 'ascending' | 'descending' | 'other'\n valuemax?: number\n valuemin?: number\n valuenow?: number\n valuetext?: string\n role?: string\n // Allow custom ARIA attributes\n [key: string]: string | number | boolean | undefined\n}\n\nexport interface AriaOptions {\n aria: AriaAttributes\n}\n\nexport type ReactiveAriaOptions = ReactiveModifierProps<AriaOptions>\n\nexport class AriaModifier extends BaseModifier<AriaOptions> {\n readonly type = 'aria'\n readonly priority = ModifierPriority.CUSTOM + 15\n\n apply(_node: DOMNode, context: ModifierContext): DOMNode | undefined {\n if (!context.element) return\n\n const { aria } = this.properties\n\n // Validate ARIA attributes in development mode\n if (process.env.NODE_ENV === 'development') {\n this.validateAriaAttributes(aria)\n }\n\n // Apply ARIA attributes\n Object.entries(aria).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n const attributeName = this.formatAriaAttributeName(key)\n const attributeValue = this.formatAriaAttributeValue(value)\n context.element!.setAttribute(attributeName, attributeValue)\n }\n })\n \n return undefined\n }\n\n private formatAriaAttributeName(key: string): string {\n // Handle special case of 'role' attribute\n if (key === 'role') {\n return 'role'\n }\n\n // Convert camelCase to kebab-case and ensure aria- prefix\n const kebabKey = key.replace(/[A-Z]/g, letter => `-${letter.toLowerCase()}`)\n return kebabKey.startsWith('aria-') ? kebabKey : `aria-${kebabKey}`\n }\n\n private formatAriaAttributeValue(value: string | number | boolean): string {\n if (typeof value === 'boolean') {\n return value ? 'true' : 'false'\n }\n return String(value)\n }\n\n private validateAriaAttributes(aria: AriaAttributes): void {\n const knownAttributes = new Set([\n 'label', 'labelledby', 'describedby', 'expanded', 'hidden', 'live', 'atomic',\n 'busy', 'controls', 'current', 'disabled', 'grabbed', 'haspopup', 'invalid',\n 'level', 'multiline', 'multiselectable', 'orientation', 'owns', 'placeholder',\n 'posinset', 'pressed', 'readonly', 'relevant', 'required', 'selected',\n 'setsize', 'sort', 'valuemax', 'valuemin', 'valuenow', 'valuetext', 'role'\n ])\n\n Object.entries(aria).forEach(([key, value]) => {\n // Check for valid attribute names\n if (!key || typeof key !== 'string') {\n console.warn('TachUI ARIA Modifier: ARIA attribute keys must be non-empty strings')\n return\n }\n\n // Warn about unknown ARIA attributes (but still allow them for extensibility)\n const normalizedKey = key.replace(/^aria-/, '')\n if (!knownAttributes.has(normalizedKey) && !normalizedKey.startsWith('aria-')) {\n console.warn(`TachUI ARIA Modifier: Unknown ARIA attribute \"${key}\". This may not be a valid ARIA attribute. Did you mean \"${this.suggestCorrection(normalizedKey)}\"?`)\n }\n\n // Validate specific attribute values\n this.validateSpecificAriaAttribute(key, value)\n })\n }\n\n private validateSpecificAriaAttribute(key: string, value: any): void {\n const normalizedKey = key.replace(/^aria-/, '')\n\n switch (normalizedKey) {\n case 'live':\n if (value !== 'off' && value !== 'polite' && value !== 'assertive') {\n console.warn(`TachUI ARIA Modifier: Invalid value \"${value}\" for aria-live. Valid values are: \"off\", \"polite\", \"assertive\"`)\n }\n break\n case 'haspopup':\n if (typeof value === 'string' && !['false', 'true', 'menu', 'listbox', 'tree', 'grid', 'dialog'].includes(value)) {\n console.warn(`TachUI ARIA Modifier: Invalid value \"${value}\" for aria-haspopup. Valid values are: false, true, \"menu\", \"listbox\", \"tree\", \"grid\", \"dialog\"`)\n }\n break\n case 'current':\n if (typeof value === 'string' && !['page', 'step', 'location', 'date', 'time'].includes(value)) {\n console.warn(`TachUI ARIA Modifier: Invalid value \"${value}\" for aria-current. Valid values are: false, true, \"page\", \"step\", \"location\", \"date\", \"time\"`)\n }\n break\n case 'invalid':\n if (typeof value === 'string' && !['false', 'true', 'grammar', 'spelling'].includes(value)) {\n console.warn(`TachUI ARIA Modifier: Invalid value \"${value}\" for aria-invalid. Valid values are: false, true, \"grammar\", \"spelling\"`)\n }\n break\n case 'orientation':\n if (value !== 'horizontal' && value !== 'vertical') {\n console.warn(`TachUI ARIA Modifier: Invalid value \"${value}\" for aria-orientation. Valid values are: \"horizontal\", \"vertical\"`)\n }\n break\n case 'sort':\n if (!['none', 'ascending', 'descending', 'other'].includes(value as string)) {\n console.warn(`TachUI ARIA Modifier: Invalid value \"${value}\" for aria-sort. Valid values are: \"none\", \"ascending\", \"descending\", \"other\"`)\n }\n break\n case 'level':\n case 'posinset':\n case 'setsize':\n case 'valuemax':\n case 'valuemin':\n case 'valuenow':\n if (typeof value === 'number' && (value < 0 || !Number.isInteger(value))) {\n console.warn(`TachUI ARIA Modifier: Invalid value \"${value}\" for aria-${normalizedKey}. Must be a non-negative integer.`)\n }\n break\n }\n }\n\n private suggestCorrection(key: string): string {\n const suggestions: Record<string, string> = {\n 'lable': 'label',\n 'labeledby': 'labelledby',\n 'descripedby': 'describedby',\n 'descibed': 'describedby',\n 'controled': 'controls',\n 'expaned': 'expanded',\n 'hiden': 'hidden',\n 'disbled': 'disabled',\n 'requird': 'required',\n 'selectd': 'selected'\n }\n \n return suggestions[key] || key\n }\n}\n\n/**\n * ARIA attributes modifier function\n */\nexport function aria(attributes: AriaAttributes): AriaModifier {\n return new AriaModifier({ aria: attributes })\n}\n\n// NOTE: TextShadow functionality has been moved to enhanced.ts for unified shadow system\n// Use the enhanced textShadow modifier instead: import { textShadow } from './enhanced'\n\n// ============================================================================\n// Tab Index Modifier - Tab Navigation Order\n// ============================================================================\n\nexport interface TabIndexOptions {\n tabIndex: number\n}\n\nexport type ReactiveTabIndexOptions = ReactiveModifierProps<TabIndexOptions>\n\nexport class TabIndexModifier extends BaseModifier<TabIndexOptions> {\n readonly type = 'tabIndex'\n readonly priority = ModifierPriority.CUSTOM + 12\n\n apply(_node: DOMNode, context: ModifierContext): DOMNode | undefined {\n if (!context.element) return\n\n const { tabIndex } = this.properties\n\n // Validate tabIndex in development mode\n if (process.env.NODE_ENV === 'development') {\n this.validateTabIndex(tabIndex)\n }\n\n // Set tabindex attribute\n context.element.setAttribute('tabindex', String(tabIndex))\n \n return undefined\n }\n\n private validateTabIndex(tabIndex: number): void {\n if (typeof tabIndex !== 'number' || !Number.isInteger(tabIndex)) {\n console.warn('TachUI TabIndex Modifier: tabIndex must be an integer')\n return\n }\n\n // Provide helpful guidance\n if (tabIndex > 0) {\n console.info('TachUI TabIndex Modifier: Positive tabIndex values can disrupt natural tab order. Consider using tabIndex=\"0\" for focusable elements and tabIndex=\"-1\" for programmatically focusable elements.')\n }\n\n if (tabIndex < -1) {\n console.warn('TachUI TabIndex Modifier: tabIndex values less than -1 are not recommended. Use -1 to remove from tab order or 0+ for tab order.')\n }\n }\n}\n\n/**\n * TabIndex modifier function\n */\nexport function tabIndex(value: number): TabIndexModifier {\n return new TabIndexModifier({ tabIndex: value })\n}\n\n// ============================================================================\n// CSS Custom Properties Modifier (Moved from css-features.ts)\n// ============================================================================\n\nexport interface CSSCustomPropertiesConfig {\n properties: Record<string, string | number>\n scope?: 'local' | 'global' | 'root'\n}\n\nexport interface CustomPropertiesOptions {\n properties?: Record<string, string | number>\n scope?: 'local' | 'global' | 'root'\n}\n\nexport type ReactiveCustomPropertiesOptions = ReactiveModifierProps<CustomPropertiesOptions>\n\nexport class CustomPropertiesModifier extends BaseModifier<CustomPropertiesOptions> {\n readonly type = 'customProperties'\n readonly priority = 5 // Early application for CSS variables\n\n constructor(options: ReactiveCustomPropertiesOptions) {\n const resolvedOptions: CustomPropertiesOptions = {}\n for (const [key, value] of Object.entries(options)) {\n if (typeof value === 'function' && 'peek' in value) {\n ;(resolvedOptions as any)[key] = (value as any).peek()\n } else {\n ;(resolvedOptions as any)[key] = value\n }\n }\n super(resolvedOptions)\n }\n\n apply(_node: DOMNode, context: ModifierContext): DOMNode | undefined {\n if (!context.element) return\n\n const styles = this.computeCustomPropertyStyles(this.properties)\n this.applyStyles(context.element, styles)\n \n return undefined\n }\n\n private computeCustomPropertyStyles(props: CustomPropertiesOptions) {\n const styles: Record<string, string> = {}\n\n if (props.properties) {\n for (const [name, value] of Object.entries(props.properties)) {\n const propertyName = name.startsWith('--') ? name : `--${name}`\n styles[propertyName] = this.formatPropertyValue(value)\n }\n }\n\n return styles\n }\n\n private formatPropertyValue(value: string | number): string {\n if (typeof value === 'number') {\n return value.toString()\n }\n return value\n }\n}\n\n/**\n * CSS custom properties modifier for creating CSS variables\n *\n * @example\n * ```typescript\n * .customProperties({\n * properties: {\n * 'primary-color': '#007AFF',\n * 'font-size': 16,\n * '--custom-spacing': '1rem' // Already prefixed\n * },\n * scope: 'local'\n * })\n * ```\n */\nexport function customProperties(config: CSSCustomPropertiesConfig): CustomPropertiesModifier {\n return new CustomPropertiesModifier({\n properties: config.properties,\n scope: config.scope || 'local'\n })\n}\n\n/**\n * Single CSS custom property modifier\n *\n * @example\n * ```typescript\n * .customProperty('primary-color', '#007AFF')\n * .customProperty('--font-size', 16) // Already prefixed\n * .customProperty('spacing', '1rem', 'global')\n * ```\n */\nexport function customProperty(name: string, value: string | number, scope?: 'local' | 'global' | 'root'): CustomPropertiesModifier {\n const propertyName = name.startsWith('--') ? name : `--${name}`\n return new CustomPropertiesModifier({\n properties: { [propertyName]: value },\n scope: scope || 'local'\n })\n}\n\n/**\n * CSS variables modifier - alias for customProperties\n *\n * @example\n * ```typescript\n * .cssVariables({\n * 'primary': '#007AFF',\n * 'secondary': '#34C759',\n * 'spacing': 16\n * })\n * ```\n */\nexport function cssVariables(variables: Record<string, string | number>): CustomPropertiesModifier {\n return new CustomPropertiesModifier({\n properties: variables,\n scope: 'local'\n })\n}\n\n/**\n * Theme colors as CSS custom properties\n *\n * @example\n * ```typescript\n * .themeColors({\n * primary: '#007AFF',\n * secondary: '#34C759',\n * accent: '#FF9500',\n * background: '#FFFFFF',\n * surface: '#F2F2F7'\n * })\n * ```\n */\nexport function themeColors(colors: Record<string, string>): CustomPropertiesModifier {\n const themeProperties: Record<string, string> = {}\n for (const [name, value] of Object.entries(colors)) {\n themeProperties[`--theme-color-${name}`] = value\n }\n return new CustomPropertiesModifier({\n properties: themeProperties,\n scope: 'local'\n })\n}\n\n/**\n * Design tokens as CSS custom properties\n *\n * @example\n * ```typescript\n * .designTokens({\n * 'spacing-sm': 8,\n * 'spacing-md': 16,\n * 'spacing-lg': 24,\n * 'border-radius': 8,\n * 'font-size-body': 16,\n * 'font-size-title': 24\n * })\n * ```\n */\nexport function designTokens(tokens: Record<string, string | number>): CustomPropertiesModifier {\n const tokenProperties: Record<string, string | number> = {}\n for (const [name, value] of Object.entries(tokens)) {\n tokenProperties[`--token-${name}`] = value\n }\n return new CustomPropertiesModifier({\n properties: tokenProperties,\n scope: 'local'\n })\n}"],"names":["IdModifier","BaseModifier","__publicField","ModifierPriority","_node","context","id","value","DataModifier","data","key","attributeName","attributeValue","kebabKey","letter","attributes","AriaModifier","aria","knownAttributes","normalizedKey","TabIndexModifier","tabIndex","CustomPropertiesModifier","options","resolvedOptions","styles","props","name","propertyName","customProperties","config","customProperty","scope","cssVariables","variables","themeColors","colors","themeProperties","designTokens","tokens","tokenProperties"],"mappings":"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"}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTML and ARIA Attributes Implementation
|
|
3
|
+
*
|
|
4
|
+
* Implementation of HTML attributes, ARIA accessibility attributes, and related modifiers.
|
|
5
|
+
* These modifiers provide essential web functionality for accessibility, testing, and semantic markup.
|
|
6
|
+
*/
|
|
7
|
+
import type { DOMNode } from '../runtime/types';
|
|
8
|
+
import { BaseModifier } from './base';
|
|
9
|
+
import type { ModifierContext, ReactiveModifierProps } from './types';
|
|
10
|
+
/**
|
|
11
|
+
* ID Modifier - HTML Element ID
|
|
12
|
+
* Sets the id attribute for page anchoring, accessibility, and testing selectors
|
|
13
|
+
*/
|
|
14
|
+
export interface IdOptions {
|
|
15
|
+
id: string;
|
|
16
|
+
}
|
|
17
|
+
export type ReactiveIdOptions = ReactiveModifierProps<IdOptions>;
|
|
18
|
+
export declare class IdModifier extends BaseModifier<IdOptions> {
|
|
19
|
+
readonly type = "id";
|
|
20
|
+
readonly priority: number;
|
|
21
|
+
apply(_node: DOMNode, context: ModifierContext): DOMNode | undefined;
|
|
22
|
+
private validateId;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* ID modifier function
|
|
26
|
+
*/
|
|
27
|
+
export declare function id(value: string): IdModifier;
|
|
28
|
+
export interface DataAttributes {
|
|
29
|
+
[key: string]: string | number | boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface DataOptions {
|
|
32
|
+
data: DataAttributes;
|
|
33
|
+
}
|
|
34
|
+
export type ReactiveDataOptions = ReactiveModifierProps<DataOptions>;
|
|
35
|
+
export declare class DataModifier extends BaseModifier<DataOptions> {
|
|
36
|
+
readonly type = "data";
|
|
37
|
+
readonly priority: number;
|
|
38
|
+
apply(_node: DOMNode, context: ModifierContext): DOMNode | undefined;
|
|
39
|
+
private formatDataAttributeName;
|
|
40
|
+
private formatDataAttributeValue;
|
|
41
|
+
private validateDataAttributes;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Data attributes modifier function
|
|
45
|
+
*/
|
|
46
|
+
export declare function data(attributes: DataAttributes): DataModifier;
|
|
47
|
+
export interface AriaAttributes {
|
|
48
|
+
label?: string;
|
|
49
|
+
labelledby?: string;
|
|
50
|
+
describedby?: string;
|
|
51
|
+
expanded?: boolean;
|
|
52
|
+
hidden?: boolean;
|
|
53
|
+
live?: 'off' | 'polite' | 'assertive';
|
|
54
|
+
atomic?: boolean;
|
|
55
|
+
busy?: boolean;
|
|
56
|
+
controls?: string;
|
|
57
|
+
current?: boolean | 'page' | 'step' | 'location' | 'date' | 'time';
|
|
58
|
+
disabled?: boolean;
|
|
59
|
+
grabbed?: boolean;
|
|
60
|
+
haspopup?: boolean | 'false' | 'true' | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog';
|
|
61
|
+
invalid?: boolean | 'false' | 'true' | 'grammar' | 'spelling';
|
|
62
|
+
level?: number;
|
|
63
|
+
multiline?: boolean;
|
|
64
|
+
multiselectable?: boolean;
|
|
65
|
+
orientation?: 'horizontal' | 'vertical';
|
|
66
|
+
owns?: string;
|
|
67
|
+
placeholder?: string;
|
|
68
|
+
posinset?: number;
|
|
69
|
+
pressed?: boolean;
|
|
70
|
+
readonly?: boolean;
|
|
71
|
+
relevant?: 'additions' | 'removals' | 'text' | 'all' | string;
|
|
72
|
+
required?: boolean;
|
|
73
|
+
selected?: boolean;
|
|
74
|
+
setsize?: number;
|
|
75
|
+
sort?: 'none' | 'ascending' | 'descending' | 'other';
|
|
76
|
+
valuemax?: number;
|
|
77
|
+
valuemin?: number;
|
|
78
|
+
valuenow?: number;
|
|
79
|
+
valuetext?: string;
|
|
80
|
+
role?: string;
|
|
81
|
+
[key: string]: string | number | boolean | undefined;
|
|
82
|
+
}
|
|
83
|
+
export interface AriaOptions {
|
|
84
|
+
aria: AriaAttributes;
|
|
85
|
+
}
|
|
86
|
+
export type ReactiveAriaOptions = ReactiveModifierProps<AriaOptions>;
|
|
87
|
+
export declare class AriaModifier extends BaseModifier<AriaOptions> {
|
|
88
|
+
readonly type = "aria";
|
|
89
|
+
readonly priority: number;
|
|
90
|
+
apply(_node: DOMNode, context: ModifierContext): DOMNode | undefined;
|
|
91
|
+
private formatAriaAttributeName;
|
|
92
|
+
private formatAriaAttributeValue;
|
|
93
|
+
private validateAriaAttributes;
|
|
94
|
+
private validateSpecificAriaAttribute;
|
|
95
|
+
private suggestCorrection;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* ARIA attributes modifier function
|
|
99
|
+
*/
|
|
100
|
+
export declare function aria(attributes: AriaAttributes): AriaModifier;
|
|
101
|
+
export interface TabIndexOptions {
|
|
102
|
+
tabIndex: number;
|
|
103
|
+
}
|
|
104
|
+
export type ReactiveTabIndexOptions = ReactiveModifierProps<TabIndexOptions>;
|
|
105
|
+
export declare class TabIndexModifier extends BaseModifier<TabIndexOptions> {
|
|
106
|
+
readonly type = "tabIndex";
|
|
107
|
+
readonly priority: number;
|
|
108
|
+
apply(_node: DOMNode, context: ModifierContext): DOMNode | undefined;
|
|
109
|
+
private validateTabIndex;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* TabIndex modifier function
|
|
113
|
+
*/
|
|
114
|
+
export declare function tabIndex(value: number): TabIndexModifier;
|
|
115
|
+
export interface CSSCustomPropertiesConfig {
|
|
116
|
+
properties: Record<string, string | number>;
|
|
117
|
+
scope?: 'local' | 'global' | 'root';
|
|
118
|
+
}
|
|
119
|
+
export interface CustomPropertiesOptions {
|
|
120
|
+
properties?: Record<string, string | number>;
|
|
121
|
+
scope?: 'local' | 'global' | 'root';
|
|
122
|
+
}
|
|
123
|
+
export type ReactiveCustomPropertiesOptions = ReactiveModifierProps<CustomPropertiesOptions>;
|
|
124
|
+
export declare class CustomPropertiesModifier extends BaseModifier<CustomPropertiesOptions> {
|
|
125
|
+
readonly type = "customProperties";
|
|
126
|
+
readonly priority = 5;
|
|
127
|
+
constructor(options: ReactiveCustomPropertiesOptions);
|
|
128
|
+
apply(_node: DOMNode, context: ModifierContext): DOMNode | undefined;
|
|
129
|
+
private computeCustomPropertyStyles;
|
|
130
|
+
private formatPropertyValue;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* CSS custom properties modifier for creating CSS variables
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```typescript
|
|
137
|
+
* .customProperties({
|
|
138
|
+
* properties: {
|
|
139
|
+
* 'primary-color': '#007AFF',
|
|
140
|
+
* 'font-size': 16,
|
|
141
|
+
* '--custom-spacing': '1rem' // Already prefixed
|
|
142
|
+
* },
|
|
143
|
+
* scope: 'local'
|
|
144
|
+
* })
|
|
145
|
+
* ```
|
|
146
|
+
*/
|
|
147
|
+
export declare function customProperties(config: CSSCustomPropertiesConfig): CustomPropertiesModifier;
|
|
148
|
+
/**
|
|
149
|
+
* Single CSS custom property modifier
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* ```typescript
|
|
153
|
+
* .customProperty('primary-color', '#007AFF')
|
|
154
|
+
* .customProperty('--font-size', 16) // Already prefixed
|
|
155
|
+
* .customProperty('spacing', '1rem', 'global')
|
|
156
|
+
* ```
|
|
157
|
+
*/
|
|
158
|
+
export declare function customProperty(name: string, value: string | number, scope?: 'local' | 'global' | 'root'): CustomPropertiesModifier;
|
|
159
|
+
/**
|
|
160
|
+
* CSS variables modifier - alias for customProperties
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* ```typescript
|
|
164
|
+
* .cssVariables({
|
|
165
|
+
* 'primary': '#007AFF',
|
|
166
|
+
* 'secondary': '#34C759',
|
|
167
|
+
* 'spacing': 16
|
|
168
|
+
* })
|
|
169
|
+
* ```
|
|
170
|
+
*/
|
|
171
|
+
export declare function cssVariables(variables: Record<string, string | number>): CustomPropertiesModifier;
|
|
172
|
+
/**
|
|
173
|
+
* Theme colors as CSS custom properties
|
|
174
|
+
*
|
|
175
|
+
* @example
|
|
176
|
+
* ```typescript
|
|
177
|
+
* .themeColors({
|
|
178
|
+
* primary: '#007AFF',
|
|
179
|
+
* secondary: '#34C759',
|
|
180
|
+
* accent: '#FF9500',
|
|
181
|
+
* background: '#FFFFFF',
|
|
182
|
+
* surface: '#F2F2F7'
|
|
183
|
+
* })
|
|
184
|
+
* ```
|
|
185
|
+
*/
|
|
186
|
+
export declare function themeColors(colors: Record<string, string>): CustomPropertiesModifier;
|
|
187
|
+
/**
|
|
188
|
+
* Design tokens as CSS custom properties
|
|
189
|
+
*
|
|
190
|
+
* @example
|
|
191
|
+
* ```typescript
|
|
192
|
+
* .designTokens({
|
|
193
|
+
* 'spacing-sm': 8,
|
|
194
|
+
* 'spacing-md': 16,
|
|
195
|
+
* 'spacing-lg': 24,
|
|
196
|
+
* 'border-radius': 8,
|
|
197
|
+
* 'font-size-body': 16,
|
|
198
|
+
* 'font-size-title': 24
|
|
199
|
+
* })
|
|
200
|
+
* ```
|
|
201
|
+
*/
|
|
202
|
+
export declare function designTokens(tokens: Record<string, string | number>): CustomPropertiesModifier;
|
|
203
|
+
//# sourceMappingURL=attributes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attributes.d.ts","sourceRoot":"","sources":["../../src/modifiers/attributes.ts"],"names":[],"mappings":"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"}
|