@tachui/core 0.7.0-alpha1 → 0.7.1-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +195 -0
- package/dist/ScrollView-h-6wYMAm.js +515 -0
- package/dist/Spacer-BbteDQ9I.js +5337 -0
- package/dist/binding-CmdpowkI.js +2276 -0
- package/dist/bundles/minimal.d.ts +30 -4
- package/dist/bundles/minimal.d.ts.map +1 -1
- package/dist/common.js +825 -954
- package/dist/compiler/index.js +1386 -10
- package/dist/components/index.js +4166 -101
- package/dist/concatenated-component-DPcl2TEO.js +6779 -0
- package/dist/{runtime/context.js → context--zQFIImS.js} +65 -71
- package/dist/debug.js +0 -1
- package/dist/dom-bridge-Cx-s6Ihx.js +406 -0
- package/dist/effect-CytAc9em.js +66 -0
- package/dist/essential.js +825 -954
- package/dist/index-Nfi2SBQh.js +3268 -0
- package/dist/index.js +825 -954
- package/dist/minimal-prod.js +162 -191
- package/dist/minimal.js +183 -957
- package/dist/modifiers/responsive/index.d.ts +10 -9
- package/dist/modifiers/responsive/index.d.ts.map +1 -1
- package/dist/plugins/index.js +543 -32
- package/dist/reactive/index.js +490 -93
- package/dist/runtime/dom-bridge.js +12 -239
- package/dist/runtime/renderer.js +8 -388
- package/dist/scheduler-7SvC3a21.js +814 -0
- package/dist/validation/index.js +6614 -198
- package/dist/viewport/index.js +2002 -83
- package/package.json +3 -4
- package/dist/assets/Asset.cjs +0 -2
- package/dist/assets/Asset.cjs.map +0 -1
- package/dist/assets/Asset.js +0 -9
- package/dist/assets/Asset.js.map +0 -1
- package/dist/assets/AssetCollection.cjs +0 -2
- package/dist/assets/AssetCollection.cjs.map +0 -1
- package/dist/assets/AssetCollection.js +0 -44
- package/dist/assets/AssetCollection.js.map +0 -1
- package/dist/assets/ColorAsset.cjs +0 -2
- package/dist/assets/ColorAsset.cjs.map +0 -1
- package/dist/assets/ColorAsset.js +0 -114
- package/dist/assets/ColorAsset.js.map +0 -1
- package/dist/assets/FontAsset.cjs +0 -9
- package/dist/assets/FontAsset.cjs.map +0 -1
- package/dist/assets/FontAsset.js +0 -173
- package/dist/assets/FontAsset.js.map +0 -1
- package/dist/assets/ImageAsset.cjs +0 -2
- package/dist/assets/ImageAsset.cjs.map +0 -1
- package/dist/assets/ImageAsset.js +0 -39
- package/dist/assets/ImageAsset.js.map +0 -1
- package/dist/assets/index.cjs +0 -2
- package/dist/assets/index.cjs.map +0 -1
- package/dist/assets/index.js +0 -119
- package/dist/assets/index.js.map +0 -1
- package/dist/common.cjs +0 -2
- package/dist/common.cjs.map +0 -1
- package/dist/common.js.map +0 -1
- package/dist/compiler/advanced-parser.cjs +0 -5
- package/dist/compiler/advanced-parser.cjs.map +0 -1
- package/dist/compiler/advanced-parser.js +0 -440
- package/dist/compiler/advanced-parser.js.map +0 -1
- package/dist/compiler/codegen.cjs +0 -6
- package/dist/compiler/codegen.cjs.map +0 -1
- package/dist/compiler/codegen.js +0 -241
- package/dist/compiler/codegen.js.map +0 -1
- package/dist/compiler/enhanced-codegen.cjs +0 -6
- package/dist/compiler/enhanced-codegen.cjs.map +0 -1
- package/dist/compiler/enhanced-codegen.js +0 -347
- package/dist/compiler/enhanced-codegen.js.map +0 -1
- package/dist/compiler/index.cjs +0 -2
- package/dist/compiler/index.cjs.map +0 -1
- package/dist/compiler/index.js.map +0 -1
- package/dist/compiler/parser.cjs +0 -5
- package/dist/compiler/parser.cjs.map +0 -1
- package/dist/compiler/parser.js +0 -275
- package/dist/compiler/parser.js.map +0 -1
- package/dist/compiler/plugin.cjs +0 -33
- package/dist/compiler/plugin.cjs.map +0 -1
- package/dist/compiler/plugin.js +0 -103
- package/dist/compiler/plugin.js.map +0 -1
- package/dist/components/BasicInput.cjs +0 -2
- package/dist/components/BasicInput.cjs.map +0 -1
- package/dist/components/BasicInput.js +0 -182
- package/dist/components/BasicInput.js.map +0 -1
- package/dist/components/Button.cjs +0 -7
- package/dist/components/Button.cjs.map +0 -1
- package/dist/components/Button.js +0 -408
- package/dist/components/Button.js.map +0 -1
- package/dist/components/Divider.cjs +0 -2
- package/dist/components/Divider.cjs.map +0 -1
- package/dist/components/Divider.js +0 -187
- package/dist/components/Divider.js.map +0 -1
- package/dist/components/EnhancedLink.cjs +0 -2
- package/dist/components/EnhancedLink.cjs.map +0 -1
- package/dist/components/EnhancedLink.js +0 -345
- package/dist/components/EnhancedLink.js.map +0 -1
- package/dist/components/Form.cjs +0 -2
- package/dist/components/Form.cjs.map +0 -1
- package/dist/components/Form.js +0 -244
- package/dist/components/Form.js.map +0 -1
- package/dist/components/Grid.cjs +0 -2
- package/dist/components/Grid.cjs.map +0 -1
- package/dist/components/Grid.js +0 -1045
- package/dist/components/Grid.js.map +0 -1
- package/dist/components/GridResponsive.cjs +0 -2
- package/dist/components/GridResponsive.cjs.map +0 -1
- package/dist/components/GridResponsive.js +0 -382
- package/dist/components/GridResponsive.js.map +0 -1
- package/dist/components/Image.cjs +0 -2
- package/dist/components/Image.cjs.map +0 -1
- package/dist/components/Image.js +0 -212
- package/dist/components/Image.js.map +0 -1
- package/dist/components/List.cjs +0 -2
- package/dist/components/List.cjs.map +0 -1
- package/dist/components/List.js +0 -561
- package/dist/components/List.js.map +0 -1
- package/dist/components/Menu.cjs +0 -2
- package/dist/components/Menu.cjs.map +0 -1
- package/dist/components/Menu.js +0 -443
- package/dist/components/Menu.js.map +0 -1
- package/dist/components/Picker.cjs +0 -2
- package/dist/components/Picker.cjs.map +0 -1
- package/dist/components/Picker.js +0 -478
- package/dist/components/Picker.js.map +0 -1
- package/dist/components/ScrollView.cjs +0 -6
- package/dist/components/ScrollView.cjs.map +0 -1
- package/dist/components/ScrollView.js +0 -363
- package/dist/components/ScrollView.js.map +0 -1
- package/dist/components/Section.cjs +0 -2
- package/dist/components/Section.cjs.map +0 -1
- package/dist/components/Section.js +0 -323
- package/dist/components/Section.js.map +0 -1
- package/dist/components/Show.cjs +0 -2
- package/dist/components/Show.cjs.map +0 -1
- package/dist/components/Show.js +0 -112
- package/dist/components/Show.js.map +0 -1
- package/dist/components/Spacer.cjs +0 -2
- package/dist/components/Spacer.cjs.map +0 -1
- package/dist/components/Spacer.js +0 -53
- package/dist/components/Spacer.js.map +0 -1
- package/dist/components/Text.cjs +0 -2
- package/dist/components/Text.cjs.map +0 -1
- package/dist/components/Text.js +0 -193
- package/dist/components/Text.js.map +0 -1
- package/dist/components/Toggle.cjs +0 -2
- package/dist/components/Toggle.cjs.map +0 -1
- package/dist/components/Toggle.js +0 -477
- package/dist/components/Toggle.js.map +0 -1
- package/dist/components/index.cjs +0 -2
- package/dist/components/index.cjs.map +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/components/wrapper.cjs +0 -2
- package/dist/components/wrapper.cjs.map +0 -1
- package/dist/components/wrapper.js +0 -484
- package/dist/components/wrapper.js.map +0 -1
- package/dist/concatenation/concatenatable.cjs +0 -2
- package/dist/concatenation/concatenatable.cjs.map +0 -1
- package/dist/concatenation/concatenatable.js +0 -118
- package/dist/concatenation/concatenatable.js.map +0 -1
- package/dist/concatenation/concatenated-component.cjs +0 -2
- package/dist/concatenation/concatenated-component.cjs.map +0 -1
- package/dist/concatenation/concatenated-component.js +0 -276
- package/dist/concatenation/concatenated-component.js.map +0 -1
- package/dist/concatenation/text-optimizer.cjs +0 -2
- package/dist/concatenation/text-optimizer.cjs.map +0 -1
- package/dist/concatenation/text-optimizer.js +0 -236
- package/dist/concatenation/text-optimizer.js.map +0 -1
- package/dist/concatenation/types.cjs +0 -2
- package/dist/concatenation/types.cjs.map +0 -1
- package/dist/concatenation/types.js +0 -13
- package/dist/concatenation/types.js.map +0 -1
- package/dist/constants/frame-utils.cjs +0 -2
- package/dist/constants/frame-utils.cjs.map +0 -1
- package/dist/constants/frame-utils.js +0 -116
- package/dist/constants/frame-utils.js.map +0 -1
- package/dist/constants/layout.cjs +0 -2
- package/dist/constants/layout.cjs.map +0 -1
- package/dist/constants/layout.js +0 -46
- package/dist/constants/layout.js.map +0 -1
- package/dist/css-classes/component-base.cjs +0 -2
- package/dist/css-classes/component-base.cjs.map +0 -1
- package/dist/css-classes/component-base.js +0 -62
- package/dist/css-classes/component-base.js.map +0 -1
- package/dist/css-classes/css-class-manager.cjs +0 -2
- package/dist/css-classes/css-class-manager.cjs.map +0 -1
- package/dist/css-classes/css-class-manager.js +0 -209
- package/dist/css-classes/css-class-manager.js.map +0 -1
- package/dist/css-classes/dom-integration.cjs +0 -2
- package/dist/css-classes/dom-integration.cjs.map +0 -1
- package/dist/css-classes/dom-integration.js +0 -67
- package/dist/css-classes/dom-integration.js.map +0 -1
- package/dist/css-classes/enhanced-renderer.cjs +0 -2
- package/dist/css-classes/enhanced-renderer.cjs.map +0 -1
- package/dist/css-classes/enhanced-renderer.js +0 -73
- package/dist/css-classes/enhanced-renderer.js.map +0 -1
- package/dist/css-classes/utilities.cjs +0 -2
- package/dist/css-classes/utilities.cjs.map +0 -1
- package/dist/css-classes/utilities.js +0 -41
- package/dist/css-classes/utilities.js.map +0 -1
- package/dist/debug.cjs +0 -52
- package/dist/debug.cjs.map +0 -1
- package/dist/debug.js.map +0 -1
- package/dist/essential.cjs +0 -2
- package/dist/essential.cjs.map +0 -1
- package/dist/essential.js.map +0 -1
- package/dist/gradients/css-generator.cjs +0 -2
- package/dist/gradients/css-generator.cjs.map +0 -1
- package/dist/gradients/css-generator.js +0 -100
- package/dist/gradients/css-generator.js.map +0 -1
- package/dist/gradients/examples.cjs +0 -2
- package/dist/gradients/examples.cjs.map +0 -1
- package/dist/gradients/examples.js +0 -555
- package/dist/gradients/examples.js.map +0 -1
- package/dist/gradients/gradient-asset.cjs +0 -2
- package/dist/gradients/gradient-asset.cjs.map +0 -1
- package/dist/gradients/gradient-asset.js +0 -22
- package/dist/gradients/gradient-asset.js.map +0 -1
- package/dist/gradients/index.cjs +0 -2
- package/dist/gradients/index.cjs.map +0 -1
- package/dist/gradients/index.js +0 -78
- package/dist/gradients/index.js.map +0 -1
- package/dist/gradients/performance.cjs +0 -2
- package/dist/gradients/performance.cjs.map +0 -1
- package/dist/gradients/performance.js +0 -237
- package/dist/gradients/performance.js.map +0 -1
- package/dist/gradients/presets.cjs +0 -2
- package/dist/gradients/presets.cjs.map +0 -1
- package/dist/gradients/presets.js +0 -254
- package/dist/gradients/presets.js.map +0 -1
- package/dist/gradients/reactive.cjs +0 -2
- package/dist/gradients/reactive.cjs.map +0 -1
- package/dist/gradients/reactive.js +0 -239
- package/dist/gradients/reactive.js.map +0 -1
- package/dist/gradients/state-gradient-asset.cjs +0 -2
- package/dist/gradients/state-gradient-asset.cjs.map +0 -1
- package/dist/gradients/state-gradient-asset.js +0 -111
- package/dist/gradients/state-gradient-asset.js.map +0 -1
- package/dist/gradients/utils.cjs +0 -2
- package/dist/gradients/utils.cjs.map +0 -1
- package/dist/gradients/utils.js +0 -385
- package/dist/gradients/utils.js.map +0 -1
- package/dist/gradients/validation.cjs +0 -2
- package/dist/gradients/validation.cjs.map +0 -1
- package/dist/gradients/validation.js +0 -209
- package/dist/gradients/validation.js.map +0 -1
- package/dist/index.cjs +0 -2
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index2.cjs +0 -2
- package/dist/index2.cjs.map +0 -1
- package/dist/index2.js +0 -293
- package/dist/index2.js.map +0 -1
- package/dist/lifecycle/hooks.cjs +0 -2
- package/dist/lifecycle/hooks.cjs.map +0 -1
- package/dist/lifecycle/hooks.js +0 -159
- package/dist/lifecycle/hooks.js.map +0 -1
- package/dist/minimal-prod.cjs +0 -2
- package/dist/minimal-prod.cjs.map +0 -1
- package/dist/minimal-prod.js.map +0 -1
- package/dist/minimal.cjs +0 -2
- package/dist/minimal.cjs.map +0 -1
- package/dist/minimal.js.map +0 -1
- package/dist/modifiers/as-html-validator.cjs +0 -2
- package/dist/modifiers/as-html-validator.cjs.map +0 -1
- package/dist/modifiers/as-html-validator.js +0 -47
- package/dist/modifiers/as-html-validator.js.map +0 -1
- package/dist/modifiers/as-html.cjs +0 -2
- package/dist/modifiers/as-html.cjs.map +0 -1
- package/dist/modifiers/as-html.js +0 -71
- package/dist/modifiers/as-html.js.map +0 -1
- package/dist/modifiers/attributes.cjs +0 -2
- package/dist/modifiers/attributes.cjs.map +0 -1
- package/dist/modifiers/attributes.js +0 -272
- package/dist/modifiers/attributes.js.map +0 -1
- package/dist/modifiers/backdrop.cjs +0 -2
- package/dist/modifiers/backdrop.cjs.map +0 -1
- package/dist/modifiers/backdrop.js +0 -109
- package/dist/modifiers/backdrop.js.map +0 -1
- package/dist/modifiers/background.cjs +0 -2
- package/dist/modifiers/background.cjs.map +0 -1
- package/dist/modifiers/background.js +0 -67
- package/dist/modifiers/background.js.map +0 -1
- package/dist/modifiers/base.cjs +0 -25
- package/dist/modifiers/base.cjs.map +0 -1
- package/dist/modifiers/base.js +0 -745
- package/dist/modifiers/base.js.map +0 -1
- package/dist/modifiers/basic-sanitizer.cjs +0 -2
- package/dist/modifiers/basic-sanitizer.cjs.map +0 -1
- package/dist/modifiers/basic-sanitizer.js +0 -162
- package/dist/modifiers/basic-sanitizer.js.map +0 -1
- package/dist/modifiers/border.cjs +0 -2
- package/dist/modifiers/border.cjs.map +0 -1
- package/dist/modifiers/border.js +0 -160
- package/dist/modifiers/border.js.map +0 -1
- package/dist/modifiers/builder.cjs +0 -2
- package/dist/modifiers/builder.cjs.map +0 -1
- package/dist/modifiers/builder.js +0 -930
- package/dist/modifiers/builder.js.map +0 -1
- package/dist/modifiers/core.cjs +0 -2
- package/dist/modifiers/core.cjs.map +0 -1
- package/dist/modifiers/core.js +0 -398
- package/dist/modifiers/core.js.map +0 -1
- package/dist/modifiers/css.cjs +0 -2
- package/dist/modifiers/css.cjs.map +0 -1
- package/dist/modifiers/css.js +0 -50
- package/dist/modifiers/css.js.map +0 -1
- package/dist/modifiers/effects.cjs +0 -2
- package/dist/modifiers/effects.cjs.map +0 -1
- package/dist/modifiers/effects.js +0 -178
- package/dist/modifiers/effects.js.map +0 -1
- package/dist/modifiers/elements.cjs +0 -2
- package/dist/modifiers/elements.cjs.map +0 -1
- package/dist/modifiers/elements.js +0 -216
- package/dist/modifiers/elements.js.map +0 -1
- package/dist/modifiers/filters.cjs +0 -2
- package/dist/modifiers/filters.cjs.map +0 -1
- package/dist/modifiers/filters.js +0 -223
- package/dist/modifiers/filters.js.map +0 -1
- package/dist/modifiers/flexbox.cjs +0 -2
- package/dist/modifiers/flexbox.cjs.map +0 -1
- package/dist/modifiers/flexbox.js +0 -56
- package/dist/modifiers/flexbox.js.map +0 -1
- package/dist/modifiers/font.cjs +0 -2
- package/dist/modifiers/font.cjs.map +0 -1
- package/dist/modifiers/font.js +0 -60
- package/dist/modifiers/font.js.map +0 -1
- package/dist/modifiers/grid.cjs +0 -2
- package/dist/modifiers/grid.cjs.map +0 -1
- package/dist/modifiers/grid.js +0 -92
- package/dist/modifiers/grid.js.map +0 -1
- package/dist/modifiers/margin.cjs +0 -2
- package/dist/modifiers/margin.cjs.map +0 -1
- package/dist/modifiers/margin.js +0 -65
- package/dist/modifiers/margin.js.map +0 -1
- package/dist/modifiers/padding.cjs +0 -2
- package/dist/modifiers/padding.cjs.map +0 -1
- package/dist/modifiers/padding.js +0 -109
- package/dist/modifiers/padding.js.map +0 -1
- package/dist/modifiers/registry.cjs +0 -2
- package/dist/modifiers/registry.cjs.map +0 -1
- package/dist/modifiers/registry.js +0 -163
- package/dist/modifiers/registry.js.map +0 -1
- package/dist/modifiers/responsive/advanced-utilities.cjs +0 -2
- package/dist/modifiers/responsive/advanced-utilities.cjs.map +0 -1
- package/dist/modifiers/responsive/advanced-utilities.js +0 -291
- package/dist/modifiers/responsive/advanced-utilities.js.map +0 -1
- package/dist/modifiers/responsive/breakpoints.cjs +0 -2
- package/dist/modifiers/responsive/breakpoints.cjs.map +0 -1
- package/dist/modifiers/responsive/breakpoints.js +0 -168
- package/dist/modifiers/responsive/breakpoints.js.map +0 -1
- package/dist/modifiers/responsive/css-generator.cjs +0 -5
- package/dist/modifiers/responsive/css-generator.cjs.map +0 -1
- package/dist/modifiers/responsive/css-generator.js +0 -261
- package/dist/modifiers/responsive/css-generator.js.map +0 -1
- package/dist/modifiers/responsive/dev-tools.cjs +0 -77
- package/dist/modifiers/responsive/dev-tools.cjs.map +0 -1
- package/dist/modifiers/responsive/dev-tools.js +0 -380
- package/dist/modifiers/responsive/dev-tools.js.map +0 -1
- package/dist/modifiers/responsive/layout-patterns.cjs +0 -2
- package/dist/modifiers/responsive/layout-patterns.cjs.map +0 -1
- package/dist/modifiers/responsive/layout-patterns.js +0 -254
- package/dist/modifiers/responsive/layout-patterns.js.map +0 -1
- package/dist/modifiers/responsive/performance.cjs +0 -3
- package/dist/modifiers/responsive/performance.cjs.map +0 -1
- package/dist/modifiers/responsive/performance.js +0 -212
- package/dist/modifiers/responsive/performance.js.map +0 -1
- package/dist/modifiers/responsive/responsive-builder.cjs +0 -2
- package/dist/modifiers/responsive/responsive-builder.cjs.map +0 -1
- package/dist/modifiers/responsive/responsive-builder.js +0 -272
- package/dist/modifiers/responsive/responsive-builder.js.map +0 -1
- package/dist/modifiers/responsive/responsive-modifier.cjs +0 -3
- package/dist/modifiers/responsive/responsive-modifier.cjs.map +0 -1
- package/dist/modifiers/responsive/responsive-modifier.js +0 -204
- package/dist/modifiers/responsive/responsive-modifier.js.map +0 -1
- package/dist/modifiers/responsive/types.cjs +0 -2
- package/dist/modifiers/responsive/types.cjs.map +0 -1
- package/dist/modifiers/responsive/types.js +0 -26
- package/dist/modifiers/responsive/types.js.map +0 -1
- package/dist/modifiers/responsive/utilities.cjs +0 -16
- package/dist/modifiers/responsive/utilities.cjs.map +0 -1
- package/dist/modifiers/responsive/utilities.js +0 -273
- package/dist/modifiers/responsive/utilities.js.map +0 -1
- package/dist/modifiers/scroll.cjs +0 -2
- package/dist/modifiers/scroll.cjs.map +0 -1
- package/dist/modifiers/scroll.js +0 -82
- package/dist/modifiers/scroll.js.map +0 -1
- package/dist/modifiers/shadows.cjs +0 -2
- package/dist/modifiers/shadows.cjs.map +0 -1
- package/dist/modifiers/shadows.js +0 -147
- package/dist/modifiers/shadows.js.map +0 -1
- package/dist/modifiers/size.cjs +0 -2
- package/dist/modifiers/size.cjs.map +0 -1
- package/dist/modifiers/size.js +0 -74
- package/dist/modifiers/size.js.map +0 -1
- package/dist/modifiers/text.cjs +0 -2
- package/dist/modifiers/text.cjs.map +0 -1
- package/dist/modifiers/text.js +0 -166
- package/dist/modifiers/text.js.map +0 -1
- package/dist/modifiers/transformations.cjs +0 -2
- package/dist/modifiers/transformations.cjs.map +0 -1
- package/dist/modifiers/transformations.js +0 -216
- package/dist/modifiers/transformations.js.map +0 -1
- package/dist/modifiers/transitions.cjs +0 -2
- package/dist/modifiers/transitions.cjs.map +0 -1
- package/dist/modifiers/transitions.js +0 -102
- package/dist/modifiers/transitions.js.map +0 -1
- package/dist/modifiers/types.cjs +0 -2
- package/dist/modifiers/types.cjs.map +0 -1
- package/dist/modifiers/types.js +0 -5
- package/dist/modifiers/types.js.map +0 -1
- package/dist/modifiers/typography.cjs +0 -2
- package/dist/modifiers/typography.cjs.map +0 -1
- package/dist/modifiers/typography.js +0 -76
- package/dist/modifiers/typography.js.map +0 -1
- package/dist/modifiers/utility.cjs +0 -2
- package/dist/modifiers/utility.cjs.map +0 -1
- package/dist/modifiers/utility.js +0 -71
- package/dist/modifiers/utility.js.map +0 -1
- package/dist/modifiers/utils.cjs +0 -2
- package/dist/modifiers/utils.cjs.map +0 -1
- package/dist/modifiers/utils.js +0 -250
- package/dist/modifiers/utils.js.map +0 -1
- package/dist/plugins/index.cjs +0 -2
- package/dist/plugins/index.cjs.map +0 -1
- package/dist/plugins/index.js.map +0 -1
- package/dist/plugins/legacy-adapter.cjs +0 -2
- package/dist/plugins/legacy-adapter.cjs.map +0 -1
- package/dist/plugins/legacy-adapter.js +0 -30
- package/dist/plugins/legacy-adapter.js.map +0 -1
- package/dist/plugins/simplified-component-registry.cjs +0 -2
- package/dist/plugins/simplified-component-registry.cjs.map +0 -1
- package/dist/plugins/simplified-component-registry.js +0 -71
- package/dist/plugins/simplified-component-registry.js.map +0 -1
- package/dist/plugins/simplified-error-handler.cjs +0 -2
- package/dist/plugins/simplified-error-handler.cjs.map +0 -1
- package/dist/plugins/simplified-error-handler.js +0 -154
- package/dist/plugins/simplified-error-handler.js.map +0 -1
- package/dist/plugins/simplified-lazy-loader.cjs +0 -2
- package/dist/plugins/simplified-lazy-loader.cjs.map +0 -1
- package/dist/plugins/simplified-lazy-loader.js +0 -129
- package/dist/plugins/simplified-lazy-loader.js.map +0 -1
- package/dist/plugins/simplified-plugin-manager.cjs +0 -2
- package/dist/plugins/simplified-plugin-manager.cjs.map +0 -1
- package/dist/plugins/simplified-plugin-manager.js +0 -51
- package/dist/plugins/simplified-plugin-manager.js.map +0 -1
- package/dist/plugins/simplified-tachui-instance.cjs +0 -2
- package/dist/plugins/simplified-tachui-instance.cjs.map +0 -1
- package/dist/plugins/simplified-tachui-instance.js +0 -88
- package/dist/plugins/simplified-tachui-instance.js.map +0 -1
- package/dist/plugins/simplified-types.cjs +0 -2
- package/dist/plugins/simplified-types.cjs.map +0 -1
- package/dist/plugins/simplified-types.js +0 -9
- package/dist/plugins/simplified-types.js.map +0 -1
- package/dist/plugins/simplified-utils.cjs +0 -2
- package/dist/plugins/simplified-utils.cjs.map +0 -1
- package/dist/plugins/simplified-utils.js +0 -40
- package/dist/plugins/simplified-utils.js.map +0 -1
- package/dist/reactive/cleanup.cjs +0 -2
- package/dist/reactive/cleanup.cjs.map +0 -1
- package/dist/reactive/cleanup.js +0 -62
- package/dist/reactive/cleanup.js.map +0 -1
- package/dist/reactive/computed.cjs +0 -2
- package/dist/reactive/computed.cjs.map +0 -1
- package/dist/reactive/computed.js +0 -121
- package/dist/reactive/computed.js.map +0 -1
- package/dist/reactive/context.cjs +0 -2
- package/dist/reactive/context.cjs.map +0 -1
- package/dist/reactive/context.js +0 -143
- package/dist/reactive/context.js.map +0 -1
- package/dist/reactive/effect.cjs +0 -2
- package/dist/reactive/effect.cjs.map +0 -1
- package/dist/reactive/effect.js +0 -67
- package/dist/reactive/effect.js.map +0 -1
- package/dist/reactive/enhanced-effect.cjs +0 -2
- package/dist/reactive/enhanced-effect.cjs.map +0 -1
- package/dist/reactive/enhanced-effect.js +0 -153
- package/dist/reactive/enhanced-effect.js.map +0 -1
- package/dist/reactive/enhanced-signal.cjs +0 -2
- package/dist/reactive/enhanced-signal.cjs.map +0 -1
- package/dist/reactive/enhanced-signal.js +0 -117
- package/dist/reactive/enhanced-signal.js.map +0 -1
- package/dist/reactive/equality.cjs +0 -2
- package/dist/reactive/equality.cjs.map +0 -1
- package/dist/reactive/equality.js +0 -66
- package/dist/reactive/equality.js.map +0 -1
- package/dist/reactive/index.cjs +0 -2
- package/dist/reactive/index.cjs.map +0 -1
- package/dist/reactive/index.js.map +0 -1
- package/dist/reactive/migration.cjs +0 -18
- package/dist/reactive/migration.cjs.map +0 -1
- package/dist/reactive/migration.js +0 -164
- package/dist/reactive/migration.js.map +0 -1
- package/dist/reactive/ownership.cjs +0 -2
- package/dist/reactive/ownership.cjs.map +0 -1
- package/dist/reactive/ownership.js +0 -34
- package/dist/reactive/ownership.js.map +0 -1
- package/dist/reactive/scheduler.cjs +0 -2
- package/dist/reactive/scheduler.cjs.map +0 -1
- package/dist/reactive/scheduler.js +0 -111
- package/dist/reactive/scheduler.js.map +0 -1
- package/dist/reactive/signal.cjs +0 -2
- package/dist/reactive/signal.cjs.map +0 -1
- package/dist/reactive/signal.js +0 -96
- package/dist/reactive/signal.js.map +0 -1
- package/dist/reactive/theme.cjs +0 -2
- package/dist/reactive/theme.cjs.map +0 -1
- package/dist/reactive/theme.js +0 -27
- package/dist/reactive/theme.js.map +0 -1
- package/dist/reactive/types.cjs +0 -2
- package/dist/reactive/types.cjs.map +0 -1
- package/dist/reactive/types.js +0 -5
- package/dist/reactive/types.js.map +0 -1
- package/dist/reactive/unified-scheduler.cjs +0 -2
- package/dist/reactive/unified-scheduler.cjs.map +0 -1
- package/dist/reactive/unified-scheduler.js +0 -219
- package/dist/reactive/unified-scheduler.js.map +0 -1
- package/dist/runtime/component-context.cjs +0 -2
- package/dist/runtime/component-context.cjs.map +0 -1
- package/dist/runtime/component-context.js +0 -177
- package/dist/runtime/component-context.js.map +0 -1
- package/dist/runtime/component.cjs +0 -2
- package/dist/runtime/component.cjs.map +0 -1
- package/dist/runtime/component.js +0 -238
- package/dist/runtime/component.js.map +0 -1
- package/dist/runtime/context.cjs +0 -2
- package/dist/runtime/context.cjs.map +0 -1
- package/dist/runtime/context.js.map +0 -1
- package/dist/runtime/dev-tools.cjs +0 -2
- package/dist/runtime/dev-tools.cjs.map +0 -1
- package/dist/runtime/dev-tools.js +0 -391
- package/dist/runtime/dev-tools.js.map +0 -1
- package/dist/runtime/development-warnings.cjs +0 -2
- package/dist/runtime/development-warnings.cjs.map +0 -1
- package/dist/runtime/development-warnings.js +0 -69
- package/dist/runtime/development-warnings.js.map +0 -1
- package/dist/runtime/dom-bridge.cjs +0 -2
- package/dist/runtime/dom-bridge.cjs.map +0 -1
- package/dist/runtime/dom-bridge.js.map +0 -1
- package/dist/runtime/element-override.cjs +0 -2
- package/dist/runtime/element-override.cjs.map +0 -1
- package/dist/runtime/element-override.js +0 -214
- package/dist/runtime/element-override.js.map +0 -1
- package/dist/runtime/error-boundary.cjs +0 -2
- package/dist/runtime/error-boundary.cjs.map +0 -1
- package/dist/runtime/error-boundary.js +0 -559
- package/dist/runtime/error-boundary.js.map +0 -1
- package/dist/runtime/error-recovery.cjs +0 -2
- package/dist/runtime/error-recovery.cjs.map +0 -1
- package/dist/runtime/error-recovery.js +0 -385
- package/dist/runtime/error-recovery.js.map +0 -1
- package/dist/runtime/error-reporting.cjs +0 -3
- package/dist/runtime/error-reporting.cjs.map +0 -1
- package/dist/runtime/error-reporting.js +0 -479
- package/dist/runtime/error-reporting.js.map +0 -1
- package/dist/runtime/error-utils.cjs +0 -3
- package/dist/runtime/error-utils.cjs.map +0 -1
- package/dist/runtime/error-utils.js +0 -352
- package/dist/runtime/error-utils.js.map +0 -1
- package/dist/runtime/lazy-component.cjs +0 -2
- package/dist/runtime/lazy-component.cjs.map +0 -1
- package/dist/runtime/lazy-component.js +0 -129
- package/dist/runtime/lazy-component.js.map +0 -1
- package/dist/runtime/lifecycle.cjs +0 -2
- package/dist/runtime/lifecycle.cjs.map +0 -1
- package/dist/runtime/lifecycle.js +0 -7
- package/dist/runtime/lifecycle.js.map +0 -1
- package/dist/runtime/mounting.cjs +0 -2
- package/dist/runtime/mounting.cjs.map +0 -1
- package/dist/runtime/mounting.js +0 -12
- package/dist/runtime/mounting.js.map +0 -1
- package/dist/runtime/optimization.cjs +0 -2
- package/dist/runtime/optimization.cjs.map +0 -1
- package/dist/runtime/optimization.js +0 -6
- package/dist/runtime/optimization.js.map +0 -1
- package/dist/runtime/performance.cjs +0 -2
- package/dist/runtime/performance.cjs.map +0 -1
- package/dist/runtime/performance.js +0 -399
- package/dist/runtime/performance.js.map +0 -1
- package/dist/runtime/props.cjs +0 -2
- package/dist/runtime/props.cjs.map +0 -1
- package/dist/runtime/props.js +0 -265
- package/dist/runtime/props.js.map +0 -1
- package/dist/runtime/renderer.cjs +0 -2
- package/dist/runtime/renderer.cjs.map +0 -1
- package/dist/runtime/renderer.js.map +0 -1
- package/dist/runtime/semantic-role-manager.cjs +0 -2
- package/dist/runtime/semantic-role-manager.cjs.map +0 -1
- package/dist/runtime/semantic-role-manager.js +0 -82
- package/dist/runtime/semantic-role-manager.js.map +0 -1
- package/dist/state/binding.cjs +0 -2
- package/dist/state/binding.cjs.map +0 -1
- package/dist/state/binding.js +0 -155
- package/dist/state/binding.js.map +0 -1
- package/dist/state/environment.cjs +0 -2
- package/dist/state/environment.cjs.map +0 -1
- package/dist/state/environment.js +0 -115
- package/dist/state/environment.js.map +0 -1
- package/dist/state/index.cjs +0 -2
- package/dist/state/index.cjs.map +0 -1
- package/dist/state/index.js +0 -63
- package/dist/state/index.js.map +0 -1
- package/dist/state/observed-object.cjs +0 -2
- package/dist/state/observed-object.cjs.map +0 -1
- package/dist/state/observed-object.js +0 -163
- package/dist/state/observed-object.js.map +0 -1
- package/dist/state/state-manager.cjs +0 -2
- package/dist/state/state-manager.cjs.map +0 -1
- package/dist/state/state-manager.js +0 -233
- package/dist/state/state-manager.js.map +0 -1
- package/dist/state/state.cjs +0 -2
- package/dist/state/state.cjs.map +0 -1
- package/dist/state/state.js +0 -159
- package/dist/state/state.js.map +0 -1
- package/dist/sui-compat.cjs +0 -2
- package/dist/sui-compat.cjs.map +0 -1
- package/dist/sui-compat.js +0 -88
- package/dist/sui-compat.js.map +0 -1
- package/dist/validation/advanced-debugging.cjs +0 -44
- package/dist/validation/advanced-debugging.cjs.map +0 -1
- package/dist/validation/advanced-debugging.js +0 -455
- package/dist/validation/advanced-debugging.js.map +0 -1
- package/dist/validation/build-time/detection.cjs +0 -2
- package/dist/validation/build-time/detection.cjs.map +0 -1
- package/dist/validation/build-time/detection.js +0 -199
- package/dist/validation/build-time/detection.js.map +0 -1
- package/dist/validation/build-time/index.cjs +0 -2
- package/dist/validation/build-time/index.cjs.map +0 -1
- package/dist/validation/build-time/index.js +0 -122
- package/dist/validation/build-time/index.js.map +0 -1
- package/dist/validation/build-time/plugins.cjs +0 -3
- package/dist/validation/build-time/plugins.cjs.map +0 -1
- package/dist/validation/build-time/plugins.js +0 -282
- package/dist/validation/build-time/plugins.js.map +0 -1
- package/dist/validation/build-time/rules.cjs +0 -2
- package/dist/validation/build-time/rules.cjs.map +0 -1
- package/dist/validation/build-time/rules.js +0 -576
- package/dist/validation/build-time/rules.js.map +0 -1
- package/dist/validation/build-time/transformer.cjs +0 -3
- package/dist/validation/build-time/transformer.cjs.map +0 -1
- package/dist/validation/build-time/transformer.js +0 -177
- package/dist/validation/build-time/transformer.js.map +0 -1
- package/dist/validation/comprehensive.cjs +0 -9
- package/dist/validation/comprehensive.cjs.map +0 -1
- package/dist/validation/comprehensive.js +0 -916
- package/dist/validation/comprehensive.js.map +0 -1
- package/dist/validation/debug-tools.cjs +0 -16
- package/dist/validation/debug-tools.cjs.map +0 -1
- package/dist/validation/debug-tools.js +0 -405
- package/dist/validation/debug-tools.js.map +0 -1
- package/dist/validation/developer-experience.cjs +0 -17
- package/dist/validation/developer-experience.cjs.map +0 -1
- package/dist/validation/developer-experience.js +0 -433
- package/dist/validation/developer-experience.js.map +0 -1
- package/dist/validation/documentation-integration.cjs +0 -7
- package/dist/validation/documentation-integration.cjs.map +0 -1
- package/dist/validation/documentation-integration.js +0 -440
- package/dist/validation/documentation-integration.js.map +0 -1
- package/dist/validation/enhanced-runtime.cjs +0 -6
- package/dist/validation/enhanced-runtime.cjs.map +0 -1
- package/dist/validation/enhanced-runtime.js +0 -465
- package/dist/validation/enhanced-runtime.js.map +0 -1
- package/dist/validation/error-reporting.cjs +0 -32
- package/dist/validation/error-reporting.cjs.map +0 -1
- package/dist/validation/error-reporting.js +0 -370
- package/dist/validation/error-reporting.js.map +0 -1
- package/dist/validation/ide-integration.cjs +0 -85
- package/dist/validation/ide-integration.cjs.map +0 -1
- package/dist/validation/ide-integration.js +0 -557
- package/dist/validation/ide-integration.js.map +0 -1
- package/dist/validation/index.cjs +0 -6
- package/dist/validation/index.cjs.map +0 -1
- package/dist/validation/index.js.map +0 -1
- package/dist/validation/lifecycle-validation.cjs +0 -2
- package/dist/validation/lifecycle-validation.cjs.map +0 -1
- package/dist/validation/lifecycle-validation.js +0 -314
- package/dist/validation/lifecycle-validation.js.map +0 -1
- package/dist/validation/performance-optimizer.cjs +0 -2
- package/dist/validation/performance-optimizer.cjs.map +0 -1
- package/dist/validation/performance-optimizer.js +0 -338
- package/dist/validation/performance-optimizer.js.map +0 -1
- package/dist/validation/plugin-registration.cjs +0 -2
- package/dist/validation/plugin-registration.cjs.map +0 -1
- package/dist/validation/plugin-registration.js +0 -126
- package/dist/validation/plugin-registration.js.map +0 -1
- package/dist/validation/production-bypass.cjs +0 -2
- package/dist/validation/production-bypass.cjs.map +0 -1
- package/dist/validation/production-bypass.js +0 -218
- package/dist/validation/production-bypass.js.map +0 -1
- package/dist/validation/simple.cjs +0 -9
- package/dist/validation/simple.cjs.map +0 -1
- package/dist/validation/simple.js +0 -146
- package/dist/validation/simple.js.map +0 -1
- package/dist/viewport/adapters/web-adapter.cjs +0 -70
- package/dist/viewport/adapters/web-adapter.cjs.map +0 -1
- package/dist/viewport/adapters/web-adapter.js +0 -823
- package/dist/viewport/adapters/web-adapter.js.map +0 -1
- package/dist/viewport/components.cjs +0 -2
- package/dist/viewport/components.cjs.map +0 -1
- package/dist/viewport/components.js +0 -298
- package/dist/viewport/components.js.map +0 -1
- package/dist/viewport/environment.cjs +0 -2
- package/dist/viewport/environment.cjs.map +0 -1
- package/dist/viewport/environment.js +0 -86
- package/dist/viewport/environment.js.map +0 -1
- package/dist/viewport/index.cjs +0 -2
- package/dist/viewport/index.cjs.map +0 -1
- package/dist/viewport/index.js.map +0 -1
- package/dist/viewport/platform-detection.cjs +0 -2
- package/dist/viewport/platform-detection.cjs.map +0 -1
- package/dist/viewport/platform-detection.js +0 -205
- package/dist/viewport/platform-detection.js.map +0 -1
- package/dist/viewport/types.cjs +0 -2
- package/dist/viewport/types.cjs.map +0 -1
- package/dist/viewport/types.js +0 -13
- package/dist/viewport/types.js.map +0 -1
- package/dist/viewport/viewport-manager.cjs +0 -2
- package/dist/viewport/viewport-manager.cjs.map +0 -1
- package/dist/viewport/viewport-manager.js +0 -524
- package/dist/viewport/viewport-manager.js.map +0 -1
- package/src/assets/Asset.ts +0 -11
- package/src/assets/AssetCollection.ts +0 -99
- package/src/assets/ColorAsset.ts +0 -210
- package/src/assets/FontAsset.ts +0 -380
- package/src/assets/ImageAsset.ts +0 -91
- package/src/assets/README.md +0 -190
- package/src/assets/index.ts +0 -175
- package/src/assets/test-assets.ts +0 -69
- package/src/assets/test-integration.ts +0 -46
- package/src/assets/test-simple.ts +0 -28
- package/src/assets/types.ts +0 -79
- package/src/bundles/common.ts +0 -30
- package/src/bundles/complete.ts +0 -29
- package/src/bundles/essential.ts +0 -26
- package/src/bundles/minimal.ts +0 -26
- package/src/bundles/production-minimal.ts +0 -67
- package/src/compiler/advanced-parser.ts +0 -871
- package/src/compiler/codegen.ts +0 -450
- package/src/compiler/enhanced-codegen.ts +0 -729
- package/src/compiler/index.ts +0 -25
- package/src/compiler/parser.ts +0 -461
- package/src/compiler/plugin.ts +0 -181
- package/src/compiler/types.ts +0 -177
- package/src/components/BasicInput.ts +0 -352
- package/src/components/Button.ts +0 -963
- package/src/components/Divider.ts +0 -341
- package/src/components/EnhancedLink.ts +0 -676
- package/src/components/Form.ts +0 -414
- package/src/components/Grid.ts +0 -2507
- package/src/components/GridResponsive.ts +0 -637
- package/src/components/Image.ts +0 -426
- package/src/components/List.ts +0 -1084
- package/src/components/Menu.ts +0 -807
- package/src/components/Picker.ts +0 -678
- package/src/components/ScrollView.ts +0 -725
- package/src/components/Section.ts +0 -472
- package/src/components/Show.ts +0 -205
- package/src/components/Spacer.ts +0 -93
- package/src/components/Text.ts +0 -447
- package/src/components/Toggle.ts +0 -700
- package/src/components/index.ts +0 -231
- package/src/components/wrapper.ts +0 -828
- package/src/concatenation/concatenatable.ts +0 -211
- package/src/concatenation/concatenated-component.ts +0 -471
- package/src/concatenation/index.ts +0 -41
- package/src/concatenation/styles.css +0 -120
- package/src/concatenation/text-optimizer.ts +0 -440
- package/src/concatenation/types.ts +0 -116
- package/src/constants/README.md +0 -339
- package/src/constants/__tests__/frame-utils.test.ts +0 -276
- package/src/constants/__tests__/layout.test.ts +0 -215
- package/src/constants/frame-utils.ts +0 -174
- package/src/constants/index.ts +0 -8
- package/src/constants/layout.ts +0 -120
- package/src/css-classes/component-base.ts +0 -117
- package/src/css-classes/css-class-manager.ts +0 -372
- package/src/css-classes/dom-integration.ts +0 -162
- package/src/css-classes/enhanced-renderer.ts +0 -166
- package/src/css-classes/index.ts +0 -45
- package/src/css-classes/types.ts +0 -73
- package/src/css-classes/utilities.ts +0 -175
- package/src/debug/index.ts +0 -267
- package/src/developer-experience/enhanced-errors.ts +0 -556
- package/src/developer-experience/enhanced-types.ts +0 -427
- package/src/developer-experience/index.ts +0 -220
- package/src/globals.d.ts +0 -43
- package/src/gradients/__tests__/angular-gradient.test.ts +0 -111
- package/src/gradients/__tests__/background-modifier.test.ts +0 -81
- package/src/gradients/__tests__/comprehensive-gradients.test.ts +0 -296
- package/src/gradients/__tests__/gradient-asset.test.ts +0 -144
- package/src/gradients/__tests__/linear-gradient.test.ts +0 -92
- package/src/gradients/__tests__/phase4-features.test.ts +0 -386
- package/src/gradients/__tests__/radial-gradient.test.ts +0 -110
- package/src/gradients/__tests__/repeating-gradients.test.ts +0 -125
- package/src/gradients/__tests__/state-background-modifier.test.ts +0 -340
- package/src/gradients/__tests__/state-gradient-asset.test.ts +0 -262
- package/src/gradients/__tests__/state-gradient-integration.test.ts +0 -277
- package/src/gradients/css-generator.ts +0 -158
- package/src/gradients/examples.ts +0 -632
- package/src/gradients/gradient-asset.ts +0 -30
- package/src/gradients/index.ts +0 -85
- package/src/gradients/performance.ts +0 -521
- package/src/gradients/presets.ts +0 -422
- package/src/gradients/reactive.ts +0 -470
- package/src/gradients/state-gradient-asset.ts +0 -179
- package/src/gradients/types.ts +0 -148
- package/src/gradients/utils.ts +0 -579
- package/src/gradients/validation.ts +0 -489
- package/src/index.ts +0 -168
- package/src/lifecycle/hooks.ts +0 -332
- package/src/modifiers/__tests__/as-html-integration.test.ts +0 -204
- package/src/modifiers/__tests__/as-html.test.ts +0 -437
- package/src/modifiers/__tests__/basic-sanitizer-security.test.ts +0 -294
- package/src/modifiers/__tests__/border.test.ts +0 -371
- package/src/modifiers/__tests__/margin-string-support.test.ts +0 -41
- package/src/modifiers/__tests__/padding-string-support.test.ts +0 -41
- package/src/modifiers/as-html-validator.ts +0 -68
- package/src/modifiers/as-html.ts +0 -216
- package/src/modifiers/attributes.ts +0 -574
- package/src/modifiers/backdrop.ts +0 -290
- package/src/modifiers/background.ts +0 -165
- package/src/modifiers/base.ts +0 -1815
- package/src/modifiers/basic-sanitizer.ts +0 -227
- package/src/modifiers/border.ts +0 -574
- package/src/modifiers/builder.ts +0 -1747
- package/src/modifiers/core.ts +0 -521
- package/src/modifiers/css.ts +0 -148
- package/src/modifiers/effects.ts +0 -412
- package/src/modifiers/elements.ts +0 -541
- package/src/modifiers/filters.ts +0 -501
- package/src/modifiers/flexbox.ts +0 -180
- package/src/modifiers/font.ts +0 -149
- package/src/modifiers/grid.ts +0 -238
- package/src/modifiers/index.ts +0 -481
- package/src/modifiers/margin.ts +0 -218
- package/src/modifiers/padding.ts +0 -318
- package/src/modifiers/registry.ts +0 -444
- package/src/modifiers/responsive/__tests__/advanced-media-queries.test.ts +0 -392
- package/src/modifiers/responsive/__tests__/advanced-utilities.test.ts +0 -368
- package/src/modifiers/responsive/__tests__/comprehensive-browser-tests.test.ts +0 -556
- package/src/modifiers/responsive/__tests__/layout-patterns.test.ts +0 -558
- package/src/modifiers/responsive/advanced-utilities.ts +0 -562
- package/src/modifiers/responsive/breakpoints.ts +0 -330
- package/src/modifiers/responsive/css-generator.ts +0 -432
- package/src/modifiers/responsive/dev-tools.ts +0 -650
- package/src/modifiers/responsive/index.ts +0 -119
- package/src/modifiers/responsive/layout-patterns.ts +0 -592
- package/src/modifiers/responsive/performance.ts +0 -385
- package/src/modifiers/responsive/responsive-builder.ts +0 -620
- package/src/modifiers/responsive/responsive-modifier.ts +0 -410
- package/src/modifiers/responsive/types.ts +0 -226
- package/src/modifiers/responsive/utilities.ts +0 -478
- package/src/modifiers/scroll.ts +0 -297
- package/src/modifiers/shadows.ts +0 -321
- package/src/modifiers/size.ts +0 -208
- package/src/modifiers/text.ts +0 -416
- package/src/modifiers/transformations.ts +0 -640
- package/src/modifiers/transitions.ts +0 -218
- package/src/modifiers/types.ts +0 -889
- package/src/modifiers/typography.ts +0 -341
- package/src/modifiers/utility.ts +0 -209
- package/src/modifiers/utils.ts +0 -413
- package/src/plugins/__tests__/simplified-plugin-system.test.ts +0 -190
- package/src/plugins/component-loader-registry.ts +0 -371
- package/src/plugins/index.ts +0 -61
- package/src/plugins/legacy-adapter.ts +0 -84
- package/src/plugins/simplified-component-registry.ts +0 -130
- package/src/plugins/simplified-error-handler.ts +0 -372
- package/src/plugins/simplified-index.ts +0 -61
- package/src/plugins/simplified-lazy-loader.ts +0 -242
- package/src/plugins/simplified-plugin-manager.ts +0 -93
- package/src/plugins/simplified-tachui-instance.ts +0 -142
- package/src/plugins/simplified-types.ts +0 -79
- package/src/plugins/simplified-utils.ts +0 -118
- package/src/reactive/cleanup.ts +0 -241
- package/src/reactive/computed.ts +0 -281
- package/src/reactive/context.ts +0 -287
- package/src/reactive/effect.ts +0 -194
- package/src/reactive/enhanced-effect.ts +0 -318
- package/src/reactive/enhanced-signal.ts +0 -227
- package/src/reactive/equality.ts +0 -188
- package/src/reactive/globals.d.ts +0 -5
- package/src/reactive/index.ts +0 -150
- package/src/reactive/migration.ts +0 -335
- package/src/reactive/ownership.ts +0 -182
- package/src/reactive/scheduler.ts +0 -300
- package/src/reactive/signal.ts +0 -201
- package/src/reactive/theme.ts +0 -49
- package/src/reactive/types.ts +0 -103
- package/src/reactive/unified-scheduler.ts +0 -357
- package/src/runtime/component-context.ts +0 -343
- package/src/runtime/component.ts +0 -499
- package/src/runtime/context.ts +0 -527
- package/src/runtime/dev-tools.ts +0 -752
- package/src/runtime/development-warnings.ts +0 -114
- package/src/runtime/dom-bridge.ts +0 -570
- package/src/runtime/element-override.ts +0 -282
- package/src/runtime/error-boundary.ts +0 -955
- package/src/runtime/error-recovery.ts +0 -638
- package/src/runtime/error-reporting.ts +0 -808
- package/src/runtime/error-utils.ts +0 -698
- package/src/runtime/index.ts +0 -202
- package/src/runtime/lazy-component.ts +0 -268
- package/src/runtime/lifecycle.ts +0 -10
- package/src/runtime/mounting.ts +0 -17
- package/src/runtime/optimization.ts +0 -13
- package/src/runtime/performance.ts +0 -693
- package/src/runtime/props.ts +0 -434
- package/src/runtime/refs.ts +0 -13
- package/src/runtime/renderer.ts +0 -674
- package/src/runtime/semantic-role-manager.ts +0 -140
- package/src/runtime/types.ts +0 -282
- package/src/state/binding.ts +0 -381
- package/src/state/environment-object.ts +0 -444
- package/src/state/environment.ts +0 -351
- package/src/state/index.ts +0 -179
- package/src/state/observed-object.ts +0 -405
- package/src/state/state-manager.ts +0 -366
- package/src/state/state.ts +0 -339
- package/src/state/types.ts +0 -192
- package/src/sui-compat.ts +0 -163
- package/src/validation/__tests__/phase-1d-integration.test.ts +0 -558
- package/src/validation/advanced-debugging.ts +0 -860
- package/src/validation/build-time/detection.ts +0 -373
- package/src/validation/build-time/index.ts +0 -222
- package/src/validation/build-time/plugins.ts +0 -515
- package/src/validation/build-time/rules.ts +0 -624
- package/src/validation/build-time/transformer.ts +0 -372
- package/src/validation/build-time/types.ts +0 -232
- package/src/validation/comprehensive.ts +0 -1272
- package/src/validation/debug-tools.ts +0 -724
- package/src/validation/developer-experience.ts +0 -712
- package/src/validation/documentation-integration.ts +0 -835
- package/src/validation/enhanced-runtime.ts +0 -765
- package/src/validation/error-reporting.ts +0 -587
- package/src/validation/ide-integration.ts +0 -845
- package/src/validation/index.ts +0 -353
- package/src/validation/lifecycle-validation.ts +0 -636
- package/src/validation/performance-optimizer.ts +0 -599
- package/src/validation/plugin-registration.ts +0 -249
- package/src/validation/production-bypass.ts +0 -466
- package/src/validation/simple.ts +0 -465
- package/src/viewport/adapters/web-adapter.ts +0 -1385
- package/src/viewport/components.ts +0 -505
- package/src/viewport/environment.ts +0 -173
- package/src/viewport/index.ts +0 -290
- package/src/viewport/platform-detection.ts +0 -431
- package/src/viewport/types.ts +0 -371
- package/src/viewport/viewport-manager.ts +0 -979
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"wrapper.js","sources":["../../src/components/wrapper.ts"],"sourcesContent":["/**\n * Component Wrapper System\n *\n * Provides wrapper functions to enhance regular components with modifier support\n * and integrate them with the TachUI modifier system.\n */\n\nimport { createModifiableComponent, createModifierBuilder } from '../modifiers'\nimport type { ModifiableComponent, ModifierBuilder } from '../modifiers/types'\nimport { h, text } from '../runtime'\nimport type { ComponentInstance, ComponentProps, DOMNode } from '../runtime/types'\nimport { useLifecycle } from '../lifecycle/hooks'\nimport { registerComponentWithLifecycleHooks } from '../runtime/dom-bridge'\nimport { \n processElementOverride, \n type ElementOverrideProps \n} from '../runtime/element-override'\nimport {\n ComponentWithCSSClasses,\n type CSSClassesProps\n} from '../css-classes'\nimport type { Concatenatable } from '../concatenation/types'\n// Lazy import debug manager to avoid circular dependencies\nlet debugManager: any = null\nconst getDebugManager = () => {\n if (!debugManager) {\n try {\n const debugModule = require('../debug')\n debugManager = debugModule.debugManager\n } catch {\n // Debug module not available, create a mock\n debugManager = {\n isEnabled: () => false,\n logComponent: () => {},\n }\n }\n }\n return debugManager\n}\n\n/**\n * Wrapper options for enhancing components\n */\nexport interface WrapperOptions {\n enableModifiers?: boolean\n enableReactivity?: boolean\n enableErrorBoundary?: boolean\n enablePerformanceTracking?: boolean\n}\n\n/**\n * Helper function to check if a component implements Concatenatable\n */\nfunction isConcatenatable(component: any): component is Concatenatable {\n return component && \n typeof component.concat === 'function' && \n typeof component.toSegment === 'function' && \n typeof component.isConcatenatable === 'function'\n}\n\n/**\n * Enhanced component wrapper that adds modifier support and preserves concatenation methods\n */\nexport function withModifiers<P extends ComponentProps>(\n component: ComponentInstance<P>\n): ModifiableComponent<P> & { modifier: ModifierBuilder<ModifiableComponent<P>> } & (ComponentInstance<P> extends Concatenatable ? Concatenatable : {}) {\n const modifiableComponent = createModifiableComponent(component)\n const modifierBuilder = createModifierBuilder(modifiableComponent)\n\n const result: any = {\n ...modifiableComponent,\n modifier: modifierBuilder,\n modifierBuilder: modifierBuilder,\n }\n\n // If the original component supports concatenation, preserve those methods\n if (isConcatenatable(component)) {\n result.concat = function(other: any) {\n return (component as any).concat(other)\n }\n result.toSegment = function() {\n return (component as any).toSegment()\n }\n result.isConcatenatable = function() {\n return (component as any).isConcatenatable()\n }\n }\n\n return result\n}\n\n/**\n * Create a reactive component wrapper with full TachUI features\n */\nexport function createReactiveWrapper<P extends ComponentProps>(\n renderFn: (props: P) => DOMNode | DOMNode[],\n options: WrapperOptions = {}\n): (props: P) => ModifiableComponent<P> & { modifier: ModifierBuilder<ModifiableComponent<P>> } {\n const { enableModifiers = true } = options\n\n return (props: P) => {\n // Create a simple component instance that uses the render function\n const component: ComponentInstance<P> = {\n type: 'component' as const,\n id: `wrapper-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,\n props,\n mounted: false,\n cleanup: [],\n render() {\n const result = renderFn(props)\n return Array.isArray(result) ? result : [result]\n },\n }\n\n // Add modifier support if enabled\n if (enableModifiers) {\n return withModifiers(component)\n }\n\n // Return basic component with minimal wrapper\n return withModifiers(component)\n }\n}\n\n/**\n * Simple element component class\n */\nclass ElementComponent implements ComponentInstance<ComponentProps> {\n public readonly type = 'component' as const\n public readonly id: string\n public mounted = false\n public cleanup: (() => void)[] = []\n\n constructor(\n public props: ComponentProps,\n private tag: string,\n private content?: string,\n private attributes: Record<string, any> = {}\n ) {\n this.id = `element-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n }\n\n render() {\n return [h(this.tag, this.attributes, this.content ? text(this.content) : '')]\n }\n}\n\n/**\n * Simple HTML element wrappers with modifier support\n *\n * These are basic HTML element wrappers for simple use cases.\n * For enhanced SwiftUI-style components with advanced features,\n * use the main component exports (Button, Image, Text, etc.).\n */\nexport const HTML = {\n /**\n * Create a div element with modifier support\n */\n div: (props: { children?: any } = {}) => {\n const component = new ElementComponent(\n props,\n 'div',\n props.children ? String(props.children) : undefined\n )\n return withModifiers(component)\n },\n\n /**\n * Create a span element with modifier support\n */\n span: (props: { children?: any } = {}) => {\n const component = new ElementComponent(\n props,\n 'span',\n props.children ? String(props.children) : undefined\n )\n return withModifiers(component)\n },\n\n /**\n * Create a paragraph element with modifier support\n */\n p: (props: { children?: any } = {}) => {\n const component = new ElementComponent(\n props,\n 'p',\n props.children ? String(props.children) : undefined\n )\n return withModifiers(component)\n },\n\n /**\n * Create a button element with modifier support\n *\n * Note: For enhanced button features (press states, variants, accessibility),\n * use the main Button component instead.\n */\n button: (props: { children?: any; onClick?: () => void } = {}) => {\n const component = new ElementComponent(\n props,\n 'button',\n props.children ? String(props.children) : undefined,\n {\n onclick: props.onClick,\n }\n )\n return withModifiers(component)\n },\n\n /**\n * Create an input element with modifier support\n */\n input: (\n props: {\n type?: string\n value?: string\n placeholder?: string\n onChange?: (value: string) => void\n } = {}\n ) => {\n const component = new ElementComponent(props, 'input', undefined, {\n type: props.type || 'text',\n value: props.value || '',\n placeholder: props.placeholder || '',\n oninput: (e: Event) => {\n const target = e.target as HTMLInputElement\n props.onChange?.(target.value)\n },\n })\n return withModifiers(component)\n },\n\n /**\n * Create an image element with modifier support\n *\n * Note: For enhanced image features (loading states, content modes, progressive loading),\n * use the main Image component instead.\n */\n img: (props: {\n src: string\n alt?: string\n width?: number | string\n height?: number | string\n }) => {\n const component = new ElementComponent(props, 'img', undefined, {\n src: props.src,\n alt: props.alt || '',\n width: props.width,\n height: props.height,\n })\n return withModifiers(component)\n },\n\n /**\n * Create a heading element with modifier support\n */\n heading:\n (level: 1 | 2 | 3 | 4 | 5 | 6) =>\n (props: { children?: any } = {}) => {\n const component = new ElementComponent(\n props,\n `h${level}`,\n props.children ? String(props.children) : undefined\n )\n return withModifiers(component)\n },\n}\n\n/**\n * Shorthand for heading elements\n */\nexport const H1 = HTML.heading(1)\nexport const H2 = HTML.heading(2)\nexport const H3 = HTML.heading(3)\nexport const H4 = HTML.heading(4)\nexport const H5 = HTML.heading(5)\nexport const H6 = HTML.heading(6)\n\n/**\n * Layout container component class with element override support\n */\nclass LayoutComponent extends ComponentWithCSSClasses implements ComponentInstance<ComponentProps & ElementOverrideProps & CSSClassesProps> {\n public readonly type = 'component' as const\n public readonly id: string\n public mounted = false\n public cleanup: (() => void)[] = []\n private effectiveTag: string\n private validationResult: any\n\n constructor(\n public props: ComponentProps & ElementOverrideProps & CSSClassesProps,\n private layoutType: 'vstack' | 'hstack' | 'zstack',\n public children: ComponentInstance[] = [],\n private layoutProps: any = {}\n ) {\n super()\n this.id = `layout-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n \n // Process element override for tag specification enhancement\n const componentType = this.layoutType === 'hstack' ? 'HStack' : \n this.layoutType === 'vstack' ? 'VStack' : 'ZStack'\n const override = processElementOverride(componentType, 'div', this.props.element)\n this.effectiveTag = override.tag\n this.validationResult = override.validation\n\n\n // Set up lifecycle hooks to process child components\n useLifecycle(this, {\n onDOMReady: (_elements, primaryElement) => {\n // Process lifecycle hooks for child components that have them\n this.children.forEach((child, index) => {\n const enhancedLifecycle = (child as any)._enhancedLifecycle\n \n if (enhancedLifecycle && enhancedLifecycle.onDOMReady && !child.domReady) {\n try {\n // Find DOM elements for this child by searching within our container\n if (primaryElement) {\n // For layout components, children are rendered as direct children\n // Try to find the child's DOM element(s)\n const childElements = this.findChildDOMElements(child, primaryElement, index)\n \n if (childElements.length > 0) {\n // Set up DOM tracking for the child\n child.domElements = new Map()\n childElements.forEach((element, idx) => {\n const key = element.id || `element-${idx}`\n child.domElements!.set(key, element)\n if (!child.primaryElement) {\n child.primaryElement = element\n }\n })\n\n child.domReady = true\n\n // Call the child's onDOMReady hook\n const cleanup = enhancedLifecycle.onDOMReady(\n child.domElements,\n child.primaryElement\n )\n if (typeof cleanup === 'function') {\n child.cleanup = child.cleanup || []\n child.cleanup.push(cleanup)\n }\n\n // Also call onMount if it exists\n if (enhancedLifecycle.onMount) {\n const mountCleanup = enhancedLifecycle.onMount()\n if (typeof mountCleanup === 'function') {\n child.cleanup = child.cleanup || []\n child.cleanup.push(mountCleanup)\n }\n }\n }\n }\n } catch (error) {\n console.error(`Error processing lifecycle hooks for child ${child.id}:`, error)\n // Continue processing other children even if one fails\n }\n }\n })\n }\n })\n\n // Register this component for lifecycle processing\n registerComponentWithLifecycleHooks(this)\n }\n\n /**\n * Find DOM elements for a specific child component within the layout container\n */\n private findChildDOMElements(child: ComponentInstance, container: Element, childIndex: number): Element[] {\n // For Image components, look for img elements with the tachui-image class\n if (child.id.startsWith('image-')) {\n const images = container.querySelectorAll('img.tachui-image')\n // Since we don't have a perfect way to match, we'll use the childIndex as a heuristic\n if (images[childIndex]) {\n return [images[childIndex]]\n }\n // Fallback: return all images and let the component handle it\n return Array.from(images)\n }\n\n // For Button components, look for button elements with the tachui-button class\n if (child.id.startsWith('button-')) {\n const buttons = container.querySelectorAll('button.tachui-button')\n if (buttons[childIndex]) {\n return [buttons[childIndex]]\n }\n // Fallback: return all buttons and let the component handle it\n return Array.from(buttons)\n }\n\n // For Text components, look for span elements with the tachui-text class\n if (child.id.startsWith('text-')) {\n const textElements = container.querySelectorAll('span.tachui-text, .tachui-text')\n if (textElements[childIndex]) {\n return [textElements[childIndex]]\n }\n return Array.from(textElements)\n }\n\n // For other components, try to find any direct children elements\n // This is a fallback that should work for most components\n const allChildren = Array.from(container.children)\n if (allChildren[childIndex]) {\n return [allChildren[childIndex]]\n }\n\n // Final fallback: return all children and let the component handle it\n return allChildren\n }\n\n render() {\n const { spacing = 0, debugLabel } = this.layoutProps\n // Explicitly handle alignment to avoid default override\n const alignment = this.layoutProps.alignment !== undefined ? this.layoutProps.alignment : 'center'\n\n // Log component for debugging\n const debug = getDebugManager()\n debug.logComponent(this.layoutType.toUpperCase(), debugLabel)\n \n // Process CSS classes for this component\n const baseClasses = [`tachui-${this.layoutType}`, ...(debug.isEnabled() ? ['tachui-debug'] : [])]\n const classString = this.createClassString(this.props, baseClasses)\n\n\n switch (this.layoutType) {\n case 'vstack': {\n // Render children normally but also make them available for DOM bridge processing\n const vstackRenderedChildren = this.children.map((child) => {\n const childResult = child.render()\n const resultArray = Array.isArray(childResult) ? childResult : [childResult]\n return resultArray\n })\n const vstackFlattened = vstackRenderedChildren.flat()\n\n const element = {\n type: 'element' as const,\n tag: this.effectiveTag,\n props: {\n className: classString,\n style: {\n display: 'flex',\n flexDirection: 'column',\n gap: spacing ? `${spacing}px` : '0',\n alignItems:\n alignment === 'leading'\n ? 'flex-start'\n : alignment === 'trailing'\n ? 'flex-end'\n : 'center',\n },\n // Add debug attributes\n ...(debug.isEnabled() && {\n 'data-tachui-component': 'VStack',\n ...(debugLabel && { 'data-tachui-label': debugLabel })\n })\n },\n children: vstackFlattened,\n // Add component metadata for semantic role processing\n componentMetadata: {\n originalType: 'VStack',\n overriddenTo: this.effectiveTag !== 'div' ? this.effectiveTag : undefined,\n validationResult: this.validationResult\n }\n }\n\n return [element]\n }\n\n case 'hstack': {\n const hstackRenderedChildren = this.children.map((child) => {\n const childResult = child.render()\n const resultArray = Array.isArray(childResult) ? childResult : [childResult]\n return resultArray\n })\n const hstackFlattened = hstackRenderedChildren.flat()\n\n const element = {\n type: 'element' as const,\n tag: this.effectiveTag,\n props: {\n className: classString,\n style: {\n display: 'flex',\n flexDirection: 'row',\n gap: spacing ? `${spacing}px` : '0',\n alignItems:\n alignment === 'top'\n ? 'flex-start'\n : alignment === 'bottom'\n ? 'flex-end'\n : 'center',\n },\n // Add debug attributes\n ...(debug.isEnabled() && {\n 'data-tachui-component': 'HStack',\n ...(debugLabel && { 'data-tachui-label': debugLabel })\n })\n },\n children: hstackFlattened,\n // Add component metadata for semantic role processing\n componentMetadata: {\n originalType: 'HStack',\n overriddenTo: this.effectiveTag !== 'div' ? this.effectiveTag : undefined,\n validationResult: this.validationResult\n }\n }\n\n return [element]\n }\n\n case 'zstack': {\n // Find the highest layoutPriority child to determine container size\n let maxPriority = -Infinity\n let highestPriorityChild: ComponentInstance | null = null\n\n this.children.forEach((child) => {\n if ('modifiers' in child && Array.isArray(child.modifiers)) {\n const layoutMod = child.modifiers.find(\n (m) =>\n m.type === 'layout' &&\n m.properties &&\n 'layoutPriority' in m.properties &&\n typeof m.properties.layoutPriority === 'number'\n )\n if (layoutMod) {\n const priority = layoutMod.properties.layoutPriority as number\n if (priority > maxPriority) {\n maxPriority = priority\n highestPriorityChild = child\n }\n }\n }\n })\n\n const container = h('div', {\n className: classString,\n style: {\n position: 'relative',\n display: 'flex',\n justifyContent: alignment.includes('Leading')\n ? 'flex-start'\n : alignment.includes('Trailing')\n ? 'flex-end'\n : 'center',\n alignItems: alignment.includes('top')\n ? 'flex-start'\n : alignment.includes('bottom')\n ? 'flex-end'\n : 'center',\n // Container sizes to the highest priority child\n ...(highestPriorityChild\n ? {\n minWidth: 'fit-content',\n minHeight: 'fit-content',\n }\n : {}),\n },\n // Add debug attributes\n ...(debug.isEnabled() && {\n 'data-tachui-component': 'ZStack',\n ...(debugLabel && { 'data-tachui-label': debugLabel })\n })\n })\n\n // Apply absolute positioning to children for z-stack\n const renderedChildren = this.children.flatMap((child, index) => {\n const childNodes = child.render()\n const nodeArray = Array.isArray(childNodes) ? childNodes : [childNodes]\n\n // Get layoutPriority from child's modifiers\n let childPriority = index // Default to index-based z-index\n if ('modifiers' in child && Array.isArray(child.modifiers)) {\n const layoutMod = child.modifiers.find(\n (m) => m.type === 'layout' && m.properties && 'layoutPriority' in m.properties\n )\n if (layoutMod && typeof layoutMod.properties.layoutPriority === 'number') {\n childPriority = layoutMod.properties.layoutPriority\n }\n }\n\n return nodeArray.map((node) => {\n if (node.type === 'element') {\n const isHighestPriority = child === highestPriorityChild\n return {\n ...node,\n props: {\n ...node.props,\n style: {\n ...node.props?.style,\n // Highest priority child determines container size\n ...(isHighestPriority\n ? {\n position: 'relative',\n zIndex: childPriority,\n }\n : {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: childPriority,\n }),\n },\n },\n }\n }\n return node\n })\n })\n\n return [\n {\n type: 'element' as const,\n tag: this.effectiveTag,\n props: {\n ...container.props,\n className: classString\n },\n children: renderedChildren,\n // Add component metadata for semantic role processing\n componentMetadata: {\n originalType: 'ZStack',\n overriddenTo: this.effectiveTag !== 'div' ? this.effectiveTag : undefined,\n validationResult: this.validationResult\n }\n },\n ]\n }\n\n default:\n return [\n {\n type: 'element' as const,\n tag: 'div',\n props: {},\n children: [],\n },\n ]\n }\n }\n}\n\n/**\n * Layout container components with modifier support\n */\nexport const Layout = {\n /**\n * Vertical stack container (flexbox column)\n */\n VStack: (\n props: {\n children?: ComponentInstance[]\n spacing?: number\n alignment?: 'leading' | 'center' | 'trailing'\n } = {}\n ) => {\n const { children = [], spacing = 0, alignment = 'center' } = props\n const component = new LayoutComponent(props, 'vstack', children, { spacing, alignment })\n return withModifiers(component)\n },\n\n /**\n * Horizontal stack container (flexbox row)\n */\n HStack: (\n props: {\n children?: ComponentInstance[]\n spacing?: number\n alignment?: 'top' | 'center' | 'bottom'\n } = {}\n ) => {\n const { children = [], spacing = 0, alignment = 'center' } = props\n const component = new LayoutComponent(props, 'hstack', children, { spacing, alignment })\n return withModifiers(component)\n },\n\n /**\n * Z-index stack container (absolute positioning)\n */\n ZStack: (\n props: {\n children?: ComponentInstance[]\n alignment?:\n | 'topLeading'\n | 'top'\n | 'topTrailing'\n | 'leading'\n | 'center'\n | 'trailing'\n | 'bottomLeading'\n | 'bottom'\n | 'bottomTrailing'\n } = {}\n ) => {\n const { children = [], alignment = 'center' } = props\n const component = new LayoutComponent(props, 'zstack', children, { alignment })\n return withModifiers(component)\n },\n}\n\n/**\n * SwiftUI-aligned direct exports for layout components\n * These provide the same functionality as Layout.VStack, Layout.HStack, Layout.ZStack\n * but with direct component names for better SwiftUI syntax alignment\n */\nexport function VStack(\n props: {\n children?: ComponentInstance[]\n spacing?: number\n alignment?: 'leading' | 'center' | 'trailing'\n debugLabel?: string\n element?: string\n } = {}\n) {\n const { children = [], spacing = 0, debugLabel } = props\n // Explicitly handle alignment to avoid default override\n const alignment = props.alignment !== undefined ? props.alignment : 'center'\n const component = new LayoutComponent(props, 'vstack', children, { spacing, alignment, debugLabel })\n return withModifiers(component)\n}\n\nexport function HStack(\n props: {\n children?: ComponentInstance[]\n spacing?: number\n alignment?: 'top' | 'center' | 'bottom'\n debugLabel?: string\n element?: string\n } = {}\n) {\n const { children = [], spacing = 0, debugLabel } = props\n // Explicitly handle alignment to avoid default override\n const alignment = props.alignment !== undefined ? props.alignment : 'center'\n const component = new LayoutComponent(props, 'hstack', children, { spacing, alignment, debugLabel })\n return withModifiers(component)\n}\n\nexport function ZStack(\n props: {\n children?: ComponentInstance[]\n alignment?:\n | 'topLeading'\n | 'top'\n | 'topTrailing'\n | 'leading'\n | 'center'\n | 'trailing'\n | 'bottomLeading'\n | 'bottom'\n | 'bottomTrailing'\n element?: string\n } = {}\n) {\n const { children = [], alignment = 'center' } = props\n const component = new LayoutComponent(props, 'zstack', children, { alignment })\n return withModifiers(component)\n}\n\n/**\n * Simple Text component with modifier support\n */\nexport function Text(content: string | (() => string)) {\n const component = new ElementComponent(\n { content },\n 'span',\n typeof content === 'function' ? content() : content\n )\n return withModifiers(component)\n}\n\n/**\n * Utility to wrap any component with modifier support\n */\nexport function wrapComponent<P extends ComponentProps>(\n component: ComponentInstance<P>\n): ModifiableComponent<P> & { modifier: ModifierBuilder<ModifiableComponent<P>> } {\n return withModifiers(component)\n}\n\n/**\n * Higher-order component wrapper\n */\nexport function withModifierSupport<P extends ComponentProps>(\n ComponentClass: new (props: P) => ComponentInstance<P>\n) {\n return class extends ComponentClass {\n public _modifiableComponent?: ModifiableComponent<P>\n\n constructor(props: P) {\n super(props)\n this._modifiableComponent = withModifiers(this)\n }\n\n get modifier(): ModifierBuilder<ModifiableComponent<P>> {\n return createModifierBuilder(this._modifiableComponent!)\n }\n\n get modifiers() {\n return this._modifiableComponent!.modifiers\n }\n }\n}\n\n/**\n * Factory function for creating modifiable components\n */\nexport function createModifiableComponentFactory<P extends ComponentProps>(\n renderFn: (props: P) => DOMNode | DOMNode[]\n) {\n return (props: P) => {\n // Create a simple component instance that uses the render function\n const component: ComponentInstance<P> = {\n type: 'component' as const,\n id: `factory-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`,\n props,\n mounted: false,\n cleanup: [],\n render() {\n const result = renderFn(props)\n return Array.isArray(result) ? result : [result]\n },\n }\n return withModifiers(component)\n }\n}\n"],"names":["debugManager","getDebugManager","isConcatenatable","component","withModifiers","modifiableComponent","createModifiableComponent","modifierBuilder","createModifierBuilder","result","other","createReactiveWrapper","renderFn","options","enableModifiers","props","ElementComponent","tag","content","attributes","__publicField","h","text","HTML","e","target","level","H1","H2","H3","H4","H5","H6","LayoutComponent","ComponentWithCSSClasses","layoutType","children","layoutProps","componentType","override","processElementOverride","useLifecycle","_elements","primaryElement","child","index","enhancedLifecycle","childElements","element","idx","key","cleanup","mountCleanup","error","registerComponentWithLifecycleHooks","container","childIndex","images","buttons","textElements","allChildren","spacing","debugLabel","alignment","debug","baseClasses","classString","vstackFlattened","childResult","hstackFlattened","maxPriority","highestPriorityChild","layoutMod","m","priority","renderedChildren","childNodes","nodeArray","childPriority","node","isHighestPriority","Layout","VStack","HStack","ZStack","wrapComponent","withModifierSupport","ComponentClass","createModifiableComponentFactory"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,IAAIA,IAAoB;AACxB,MAAMC,IAAkB,MAAM;AAC5B,MAAI,CAACD;AACH,QAAI;AAEF,MAAAA,IADoB,QAAQ,UAAU,EACX;AAAA,IAC7B,QAAQ;AAEN,MAAAA,IAAe;AAAA,QACb,WAAW,MAAM;AAAA,QACjB,cAAc,MAAM;AAAA,QAAC;AAAA,MAAA;AAAA,IAEzB;AAEF,SAAOA;AACT;AAeA,SAASE,EAAiBC,GAA6C;AACrE,SAAOA,KACA,OAAOA,EAAU,UAAW,cAC5B,OAAOA,EAAU,aAAc,cAC/B,OAAOA,EAAU,oBAAqB;AAC/C;AAKO,SAASC,EACdD,GACsJ;AACtJ,QAAME,IAAsBC,EAA0BH,CAAS,GACzDI,IAAkBC,EAAsBH,CAAmB,GAE3DI,IAAc;AAAA,IAClB,GAAGJ;AAAA,IACH,UAAUE;AAAA,IACV,iBAAAA;AAAA,EAAA;AAIF,SAAIL,EAAiBC,CAAS,MAC5BM,EAAO,SAAS,SAASC,GAAY;AACnC,WAAQP,EAAkB,OAAOO,CAAK;AAAA,EACxC,GACAD,EAAO,YAAY,WAAW;AAC5B,WAAQN,EAAkB,UAAA;AAAA,EAC5B,GACAM,EAAO,mBAAmB,WAAW;AACnC,WAAQN,EAAkB,iBAAA;AAAA,EAC5B,IAGKM;AACT;AAKO,SAASE,GACdC,GACAC,IAA0B,IACoE;AAC9F,QAAM,EAAE,iBAAAC,IAAkB,GAAA,IAASD;AAEnC,SAAO,CAACE,MAAa;AAEnB,UAAMZ,IAAkC;AAAA,MACtC,MAAM;AAAA,MACN,IAAI,WAAW,KAAK,IAAA,CAAK,IAAI,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,OAAO,GAAG,CAAC,CAAC;AAAA,MACpE,OAAAY;AAAA,MACA,SAAS;AAAA,MACT,SAAS,CAAA;AAAA,MACT,SAAS;AACP,cAAMN,IAASG,EAASG,CAAK;AAC7B,eAAO,MAAM,QAAQN,CAAM,IAAIA,IAAS,CAACA,CAAM;AAAA,MACjD;AAAA,IAAA;AAIF,WACSL,EAAcD,CAAS;AAAA,EAKlC;AACF;AAKA,MAAMa,EAA8D;AAAA,EAMlE,YACSD,GACCE,GACAC,GACAC,IAAkC,CAAA,GAC1C;AAJO,SAAA,QAAAJ,GACC,KAAA,MAAAE,GACA,KAAA,UAAAC,GACA,KAAA,aAAAC,GATVC,EAAA,MAAgB,QAAO,WAAA,GACvBA,EAAA,MAAgB,IAAA,GAChBA,EAAA,MAAO,WAAU,EAAA,GACjBA,EAAA,MAAO,WAA0B,EAAC,GAQhC,KAAK,KAAK,WAAW,KAAK,IAAA,CAAK,IAAI,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,OAAO,GAAG,CAAC,CAAC;AAAA,EAC5E;AAAA,EAEA,SAAS;AACP,WAAO,CAACC,EAAE,KAAK,KAAK,KAAK,YAAY,KAAK,UAAUC,EAAK,KAAK,OAAO,IAAI,EAAE,CAAC;AAAA,EAC9E;AACF;AASO,MAAMC,IAAO;AAAA;AAAA;AAAA;AAAA,EAIlB,KAAK,CAACR,IAA4B,OAAO;AACvC,UAAMZ,IAAY,IAAIa;AAAA,MACpBD;AAAA,MACA;AAAA,MACAA,EAAM,WAAW,OAAOA,EAAM,QAAQ,IAAI;AAAA,IAAA;AAE5C,WAAOX,EAAcD,CAAS;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,CAACY,IAA4B,OAAO;AACxC,UAAMZ,IAAY,IAAIa;AAAA,MACpBD;AAAA,MACA;AAAA,MACAA,EAAM,WAAW,OAAOA,EAAM,QAAQ,IAAI;AAAA,IAAA;AAE5C,WAAOX,EAAcD,CAAS;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,GAAG,CAACY,IAA4B,OAAO;AACrC,UAAMZ,IAAY,IAAIa;AAAA,MACpBD;AAAA,MACA;AAAA,MACAA,EAAM,WAAW,OAAOA,EAAM,QAAQ,IAAI;AAAA,IAAA;AAE5C,WAAOX,EAAcD,CAAS;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,QAAQ,CAACY,IAAkD,OAAO;AAChE,UAAMZ,IAAY,IAAIa;AAAA,MACpBD;AAAA,MACA;AAAA,MACAA,EAAM,WAAW,OAAOA,EAAM,QAAQ,IAAI;AAAA,MAC1C;AAAA,QACE,SAASA,EAAM;AAAA,MAAA;AAAA,IACjB;AAEF,WAAOX,EAAcD,CAAS;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,CACLY,IAKI,OACD;AACH,UAAMZ,IAAY,IAAIa,EAAiBD,GAAO,SAAS,QAAW;AAAA,MAChE,MAAMA,EAAM,QAAQ;AAAA,MACpB,OAAOA,EAAM,SAAS;AAAA,MACtB,aAAaA,EAAM,eAAe;AAAA,MAClC,SAAS,CAACS,MAAa;AACrB,cAAMC,IAASD,EAAE;AACjB,QAAAT,EAAM,WAAWU,EAAO,KAAK;AAAA,MAC/B;AAAA,IAAA,CACD;AACD,WAAOrB,EAAcD,CAAS;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,KAAK,CAACY,MAKA;AACJ,UAAMZ,IAAY,IAAIa,EAAiBD,GAAO,OAAO,QAAW;AAAA,MAC9D,KAAKA,EAAM;AAAA,MACX,KAAKA,EAAM,OAAO;AAAA,MAClB,OAAOA,EAAM;AAAA,MACb,QAAQA,EAAM;AAAA,IAAA,CACf;AACD,WAAOX,EAAcD,CAAS;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,SACE,CAACuB,MACD,CAACX,IAA4B,CAAA,MAAO;AAClC,UAAMZ,IAAY,IAAIa;AAAA,MACpBD;AAAA,MACA,IAAIW,CAAK;AAAA,MACTX,EAAM,WAAW,OAAOA,EAAM,QAAQ,IAAI;AAAA,IAAA;AAE5C,WAAOX,EAAcD,CAAS;AAAA,EAChC;AACJ,GAKawB,KAAKJ,EAAK,QAAQ,CAAC,GACnBK,KAAKL,EAAK,QAAQ,CAAC,GACnBM,KAAKN,EAAK,QAAQ,CAAC,GACnBO,KAAKP,EAAK,QAAQ,CAAC,GACnBQ,KAAKR,EAAK,QAAQ,CAAC,GACnBS,KAAKT,EAAK,QAAQ,CAAC;AAKhC,MAAMU,UAAwBC,EAA8G;AAAA,EAQ1I,YACSnB,GACCoB,GACDC,IAAgC,CAAA,GAC/BC,IAAmB,IAC3B;AACA,UAAA,GALO,KAAA,QAAAtB,GACC,KAAA,aAAAoB,GACD,KAAA,WAAAC,GACC,KAAA,cAAAC,GAXVjB,EAAA,MAAgB,QAAO,WAAA,GACvBA,EAAA,MAAgB,IAAA,GAChBA,EAAA,MAAO,WAAU,EAAA,GACjBA,EAAA,MAAO,WAA0B,EAAC,GAClCA,EAAA,MAAQ,cAAA,GACRA,EAAA,MAAQ,kBAAA,GASN,KAAK,KAAK,UAAU,KAAK,IAAA,CAAK,IAAI,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,OAAO,GAAG,CAAC,CAAC;AAGzE,UAAMkB,IAAgB,KAAK,eAAe,WAAW,WAChC,KAAK,eAAe,WAAW,WAAW,UACzDC,IAAWC,EAAuBF,GAAe,OAAO,KAAK,MAAM,OAAO;AAChF,SAAK,eAAeC,EAAS,KAC7B,KAAK,mBAAmBA,EAAS,YAIjCE,EAAa,MAAM;AAAA,MACjB,YAAY,CAACC,GAAWC,MAAmB;AAEzC,aAAK,SAAS,QAAQ,CAACC,GAAOC,MAAU;AACtC,gBAAMC,IAAqBF,EAAc;AAEzC,cAAIE,KAAqBA,EAAkB,cAAc,CAACF,EAAM;AAC9D,gBAAI;AAEF,kBAAID,GAAgB;AAGlB,sBAAMI,IAAgB,KAAK,qBAAqBH,GAAOD,GAAgBE,CAAK;AAE5E,oBAAIE,EAAc,SAAS,GAAG;AAE5B,kBAAAH,EAAM,kCAAkB,IAAA,GACxBG,EAAc,QAAQ,CAACC,GAASC,MAAQ;AACtC,0BAAMC,IAAMF,EAAQ,MAAM,WAAWC,CAAG;AACxC,oBAAAL,EAAM,YAAa,IAAIM,GAAKF,CAAO,GAC9BJ,EAAM,mBACTA,EAAM,iBAAiBI;AAAA,kBAE3B,CAAC,GAEDJ,EAAM,WAAW;AAGjB,wBAAMO,IAAUL,EAAkB;AAAA,oBAChCF,EAAM;AAAA,oBACNA,EAAM;AAAA,kBAAA;AAQR,sBANI,OAAOO,KAAY,eACrBP,EAAM,UAAUA,EAAM,WAAW,CAAA,GACjCA,EAAM,QAAQ,KAAKO,CAAO,IAIxBL,EAAkB,SAAS;AAC7B,0BAAMM,IAAeN,EAAkB,QAAA;AACvC,oBAAI,OAAOM,KAAiB,eAC1BR,EAAM,UAAUA,EAAM,WAAW,CAAA,GACjCA,EAAM,QAAQ,KAAKQ,CAAY;AAAA,kBAEnC;AAAA,gBACF;AAAA,cACF;AAAA,YACF,SAASC,GAAO;AACd,sBAAQ,MAAM,8CAA8CT,EAAM,EAAE,KAAKS,CAAK;AAAA,YAEhF;AAAA,QAEJ,CAAC;AAAA,MACH;AAAA,IAAA,CACD,GAGDC,EAAoC,IAAI;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKQ,qBAAqBV,GAA0BW,GAAoBC,GAA+B;AAExG,QAAIZ,EAAM,GAAG,WAAW,QAAQ,GAAG;AACjC,YAAMa,IAASF,EAAU,iBAAiB,kBAAkB;AAE5D,aAAIE,EAAOD,CAAU,IACZ,CAACC,EAAOD,CAAU,CAAC,IAGrB,MAAM,KAAKC,CAAM;AAAA,IAC1B;AAGA,QAAIb,EAAM,GAAG,WAAW,SAAS,GAAG;AAClC,YAAMc,IAAUH,EAAU,iBAAiB,sBAAsB;AACjE,aAAIG,EAAQF,CAAU,IACb,CAACE,EAAQF,CAAU,CAAC,IAGtB,MAAM,KAAKE,CAAO;AAAA,IAC3B;AAGA,QAAId,EAAM,GAAG,WAAW,OAAO,GAAG;AAChC,YAAMe,IAAeJ,EAAU,iBAAiB,gCAAgC;AAChF,aAAII,EAAaH,CAAU,IAClB,CAACG,EAAaH,CAAU,CAAC,IAE3B,MAAM,KAAKG,CAAY;AAAA,IAChC;AAIA,UAAMC,IAAc,MAAM,KAAKL,EAAU,QAAQ;AACjD,WAAIK,EAAYJ,CAAU,IACjB,CAACI,EAAYJ,CAAU,CAAC,IAI1BI;AAAA,EACT;AAAA,EAEA,SAAS;AACP,UAAM,EAAE,SAAAC,IAAU,GAAG,YAAAC,EAAA,IAAe,KAAK,aAEnCC,IAAY,KAAK,YAAY,cAAc,SAAY,KAAK,YAAY,YAAY,UAGpFC,IAAQ/D,EAAA;AACd,IAAA+D,EAAM,aAAa,KAAK,WAAW,YAAA,GAAeF,CAAU;AAG5D,UAAMG,IAAc,CAAC,UAAU,KAAK,UAAU,IAAI,GAAID,EAAM,UAAA,IAAc,CAAC,cAAc,IAAI,CAAA,CAAG,GAC1FE,IAAc,KAAK,kBAAkB,KAAK,OAAOD,CAAW;AAGlE,YAAQ,KAAK,YAAA;AAAA,MACX,KAAK,UAAU;AAOb,cAAME,IALyB,KAAK,SAAS,IAAI,CAACvB,MAAU;AAC1D,gBAAMwB,IAAcxB,EAAM,OAAA;AAE1B,iBADoB,MAAM,QAAQwB,CAAW,IAAIA,IAAc,CAACA,CAAW;AAAA,QAE7E,CAAC,EAC8C,KAAA;AAiC/C,eAAO,CA/BS;AAAA,UACd,MAAM;AAAA,UACN,KAAK,KAAK;AAAA,UACV,OAAO;AAAA,YACL,WAAWF;AAAA,YACX,OAAO;AAAA,cACL,SAAS;AAAA,cACT,eAAe;AAAA,cACf,KAAKL,IAAU,GAAGA,CAAO,OAAO;AAAA,cAChC,YACEE,MAAc,YACV,eACAA,MAAc,aACZ,aACA;AAAA,YAAA;AAAA;AAAA,YAGV,GAAIC,EAAM,eAAe;AAAA,cACvB,yBAAyB;AAAA,cACzB,GAAIF,KAAc,EAAE,qBAAqBA,EAAA;AAAA,YAAW;AAAA,UACtD;AAAA,UAEF,UAAUK;AAAA;AAAA,UAEV,mBAAmB;AAAA,YACjB,cAAc;AAAA,YACd,cAAc,KAAK,iBAAiB,QAAQ,KAAK,eAAe;AAAA,YAChE,kBAAkB,KAAK;AAAA,UAAA;AAAA,QACzB,CAGa;AAAA,MACjB;AAAA,MAEA,KAAK,UAAU;AAMb,cAAME,IALyB,KAAK,SAAS,IAAI,CAACzB,MAAU;AAC1D,gBAAMwB,IAAcxB,EAAM,OAAA;AAE1B,iBADoB,MAAM,QAAQwB,CAAW,IAAIA,IAAc,CAACA,CAAW;AAAA,QAE7E,CAAC,EAC8C,KAAA;AAiC/C,eAAO,CA/BS;AAAA,UACd,MAAM;AAAA,UACN,KAAK,KAAK;AAAA,UACV,OAAO;AAAA,YACL,WAAWF;AAAA,YACX,OAAO;AAAA,cACL,SAAS;AAAA,cACT,eAAe;AAAA,cACf,KAAKL,IAAU,GAAGA,CAAO,OAAO;AAAA,cAChC,YACEE,MAAc,QACV,eACAA,MAAc,WACZ,aACA;AAAA,YAAA;AAAA;AAAA,YAGV,GAAIC,EAAM,eAAe;AAAA,cACvB,yBAAyB;AAAA,cACzB,GAAIF,KAAc,EAAE,qBAAqBA,EAAA;AAAA,YAAW;AAAA,UACtD;AAAA,UAEF,UAAUO;AAAA;AAAA,UAEV,mBAAmB;AAAA,YACjB,cAAc;AAAA,YACd,cAAc,KAAK,iBAAiB,QAAQ,KAAK,eAAe;AAAA,YAChE,kBAAkB,KAAK;AAAA,UAAA;AAAA,QACzB,CAGa;AAAA,MACjB;AAAA,MAEA,KAAK,UAAU;AAEb,YAAIC,IAAc,QACdC,IAAiD;AAErD,aAAK,SAAS,QAAQ,CAAC3B,MAAU;AAC/B,cAAI,eAAeA,KAAS,MAAM,QAAQA,EAAM,SAAS,GAAG;AAC1D,kBAAM4B,IAAY5B,EAAM,UAAU;AAAA,cAChC,CAAC6B,MACCA,EAAE,SAAS,YACXA,EAAE,cACF,oBAAoBA,EAAE,cACtB,OAAOA,EAAE,WAAW,kBAAmB;AAAA,YAAA;AAE3C,gBAAID,GAAW;AACb,oBAAME,IAAWF,EAAU,WAAW;AACtC,cAAIE,IAAWJ,MACbA,IAAcI,GACdH,IAAuB3B;AAAA,YAE3B;AAAA,UACF;AAAA,QACF,CAAC;AAED,cAAMW,IAAYlC,EAAE,OAAO;AAAA,UACzB,WAAW6C;AAAA,UACX,OAAO;AAAA,YACL,UAAU;AAAA,YACV,SAAS;AAAA,YACT,gBAAgBH,EAAU,SAAS,SAAS,IACxC,eACAA,EAAU,SAAS,UAAU,IAC3B,aACA;AAAA,YACN,YAAYA,EAAU,SAAS,KAAK,IAChC,eACAA,EAAU,SAAS,QAAQ,IACzB,aACA;AAAA;AAAA,YAEN,GAAIQ,IACA;AAAA,cACE,UAAU;AAAA,cACV,WAAW;AAAA,YAAA,IAEb,CAAA;AAAA,UAAC;AAAA;AAAA,UAGP,GAAIP,EAAM,eAAe;AAAA,YACvB,yBAAyB;AAAA,YACzB,GAAIF,KAAc,EAAE,qBAAqBA,EAAA;AAAA,UAAW;AAAA,QACtD,CACD,GAGKa,IAAmB,KAAK,SAAS,QAAQ,CAAC/B,GAAOC,MAAU;AAC/D,gBAAM+B,IAAahC,EAAM,OAAA,GACnBiC,IAAY,MAAM,QAAQD,CAAU,IAAIA,IAAa,CAACA,CAAU;AAGtE,cAAIE,IAAgBjC;AACpB,cAAI,eAAeD,KAAS,MAAM,QAAQA,EAAM,SAAS,GAAG;AAC1D,kBAAM4B,IAAY5B,EAAM,UAAU;AAAA,cAChC,CAAC6B,MAAMA,EAAE,SAAS,YAAYA,EAAE,cAAc,oBAAoBA,EAAE;AAAA,YAAA;AAEtE,YAAID,KAAa,OAAOA,EAAU,WAAW,kBAAmB,aAC9DM,IAAgBN,EAAU,WAAW;AAAA,UAEzC;AAEA,iBAAOK,EAAU,IAAI,CAACE,MAAS;AAC7B,gBAAIA,EAAK,SAAS,WAAW;AAC3B,oBAAMC,IAAoBpC,MAAU2B;AACpC,qBAAO;AAAA,gBACL,GAAGQ;AAAA,gBACH,OAAO;AAAA,kBACL,GAAGA,EAAK;AAAA,kBACR,OAAO;AAAA,oBACL,GAAGA,EAAK,OAAO;AAAA;AAAA,oBAEf,GAAIC,IACA;AAAA,sBACE,UAAU;AAAA,sBACV,QAAQF;AAAA,oBAAA,IAEV;AAAA,sBACE,UAAU;AAAA,sBACV,KAAK;AAAA,sBACL,MAAM;AAAA,sBACN,OAAO;AAAA,sBACP,QAAQ;AAAA,sBACR,QAAQA;AAAA,oBAAA;AAAA,kBACV;AAAA,gBACN;AAAA,cACF;AAAA,YAEJ;AACA,mBAAOC;AAAA,UACT,CAAC;AAAA,QACH,CAAC;AAED,eAAO;AAAA,UACL;AAAA,YACE,MAAM;AAAA,YACN,KAAK,KAAK;AAAA,YACV,OAAO;AAAA,cACL,GAAGxB,EAAU;AAAA,cACb,WAAWW;AAAA,YAAA;AAAA,YAEb,UAAUS;AAAA;AAAA,YAEV,mBAAmB;AAAA,cACjB,cAAc;AAAA,cACd,cAAc,KAAK,iBAAiB,QAAQ,KAAK,eAAe;AAAA,cAChE,kBAAkB,KAAK;AAAA,YAAA;AAAA,UACzB;AAAA,QACF;AAAA,MAEJ;AAAA,MAEA;AACE,eAAO;AAAA,UACL;AAAA,YACE,MAAM;AAAA,YACN,KAAK;AAAA,YACL,OAAO,CAAA;AAAA,YACP,UAAU,CAAA;AAAA,UAAC;AAAA,QACb;AAAA,IACF;AAAA,EAEN;AACF;AAKO,MAAMM,KAAS;AAAA;AAAA;AAAA;AAAA,EAIpB,QAAQ,CACNlE,IAII,OACD;AACH,UAAM,EAAE,UAAAqB,IAAW,IAAI,SAAAyB,IAAU,GAAG,WAAAE,IAAY,aAAahD,GACvDZ,IAAY,IAAI8B,EAAgBlB,GAAO,UAAUqB,GAAU,EAAE,SAAAyB,GAAS,WAAAE,GAAW;AACvF,WAAO3D,EAAcD,CAAS;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQ,CACNY,IAII,OACD;AACH,UAAM,EAAE,UAAAqB,IAAW,IAAI,SAAAyB,IAAU,GAAG,WAAAE,IAAY,aAAahD,GACvDZ,IAAY,IAAI8B,EAAgBlB,GAAO,UAAUqB,GAAU,EAAE,SAAAyB,GAAS,WAAAE,GAAW;AACvF,WAAO3D,EAAcD,CAAS;AAAA,EAChC;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQ,CACNY,IAYI,OACD;AACH,UAAM,EAAE,UAAAqB,IAAW,CAAA,GAAI,WAAA2B,IAAY,aAAahD,GAC1CZ,IAAY,IAAI8B,EAAgBlB,GAAO,UAAUqB,GAAU,EAAE,WAAA2B,GAAW;AAC9E,WAAO3D,EAAcD,CAAS;AAAA,EAChC;AACF;AAOO,SAAS+E,GACdnE,IAMI,IACJ;AACA,QAAM,EAAE,UAAAqB,IAAW,CAAA,GAAI,SAAAyB,IAAU,GAAG,YAAAC,MAAe/C,GAE7CgD,IAAYhD,EAAM,cAAc,SAAYA,EAAM,YAAY,UAC9DZ,IAAY,IAAI8B,EAAgBlB,GAAO,UAAUqB,GAAU,EAAE,SAAAyB,GAAS,WAAAE,GAAW,YAAAD,GAAY;AACnG,SAAO1D,EAAcD,CAAS;AAChC;AAEO,SAASgF,GACdpE,IAMI,IACJ;AACA,QAAM,EAAE,UAAAqB,IAAW,CAAA,GAAI,SAAAyB,IAAU,GAAG,YAAAC,MAAe/C,GAE7CgD,IAAYhD,EAAM,cAAc,SAAYA,EAAM,YAAY,UAC9DZ,IAAY,IAAI8B,EAAgBlB,GAAO,UAAUqB,GAAU,EAAE,SAAAyB,GAAS,WAAAE,GAAW,YAAAD,GAAY;AACnG,SAAO1D,EAAcD,CAAS;AAChC;AAEO,SAASiF,GACdrE,IAaI,IACJ;AACA,QAAM,EAAE,UAAAqB,IAAW,CAAA,GAAI,WAAA2B,IAAY,aAAahD,GAC1CZ,IAAY,IAAI8B,EAAgBlB,GAAO,UAAUqB,GAAU,EAAE,WAAA2B,GAAW;AAC9E,SAAO3D,EAAcD,CAAS;AAChC;AAiBO,SAASkF,GACdlF,GACgF;AAChF,SAAOC,EAAcD,CAAS;AAChC;AAKO,SAASmF,GACdC,GACA;AACA,SAAO,cAAcA,EAAe;AAAA,IAGlC,YAAYxE,GAAU;AACpB,YAAMA,CAAK,GAHbK,EAAA,MAAO,sBAAA,GAIL,KAAK,uBAAuBhB,EAAc,IAAI;AAAA,IAChD;AAAA,IAEA,IAAI,WAAoD;AACtD,aAAOI,EAAsB,KAAK,oBAAqB;AAAA,IACzD;AAAA,IAEA,IAAI,YAAY;AACd,aAAO,KAAK,qBAAsB;AAAA,IACpC;AAAA,EAAA;AAEJ;AAKO,SAASgF,GACd5E,GACA;AACA,SAAO,CAACG,MAAa;AAEnB,UAAMZ,IAAkC;AAAA,MACtC,MAAM;AAAA,MACN,IAAI,WAAW,KAAK,IAAA,CAAK,IAAI,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,OAAO,GAAG,CAAC,CAAC;AAAA,MACpE,OAAAY;AAAA,MACA,SAAS;AAAA,MACT,SAAS,CAAA;AAAA,MACT,SAAS;AACP,cAAMN,IAASG,EAASG,CAAK;AAC7B,eAAO,MAAM,QAAQN,CAAM,IAAIA,IAAS,CAACA,CAAM;AAAA,MACjD;AAAA,IAAA;AAEF,WAAOL,EAAcD,CAAS;AAAA,EAChC;AACF;"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./concatenated-component.cjs"),a=Symbol.for("tachui.concat");class s{concat(e){const t=this.toSegment(),r=e.toSegment();return e instanceof n.ConcatenatedComponent?new n.ConcatenatedComponent([t,...e.segments],this.mergeMetadata(e.metadata,e.segments.length+1)):new n.ConcatenatedComponent([t,r],this.createMetadata(2))}isConcatenatable(){return!0}createMetadata(e){return{totalSegments:e,accessibilityRole:this.determineAccessibilityRole(),semanticStructure:this.determineSemanticStructure()}}mergeMetadata(e,t){return{totalSegments:t,accessibilityRole:this.mergeAccessibilityRoles(e.accessibilityRole),semanticStructure:this.mergeSemanticStructures(e.semanticStructure)}}determineAccessibilityRole(){const e=this.constructor.name;return e==="EnhancedText"?"text":e==="EnhancedImage"||e==="EnhancedButton"||e==="EnhancedLink"?"group":"composite"}determineSemanticStructure(){const e=this.constructor.name;return e==="EnhancedText"||e==="EnhancedImage"?"inline":"mixed"}mergeAccessibilityRoles(e){const t=this.determineAccessibilityRole();return t==="text"&&e==="text"?"text":t==="composite"||e==="composite"?"composite":"group"}mergeSemanticStructures(e){const t=this.determineSemanticStructure();return t==="inline"&&e==="inline"?"inline":t==="block"&&e==="block"?"block":"mixed"}}function m(c){const e=c;return e.concat=function(t){const r={id:this.id,component:this,modifiers:this.modifiers||[],render:()=>{const i=this.render();return Array.isArray(i)?i[0]:i}},o=t.toSegment();return t instanceof n.ConcatenatedComponent?new n.ConcatenatedComponent([r,...t.segments],{totalSegments:t.segments.length+1,accessibilityRole:"group",semanticStructure:"mixed"}):new n.ConcatenatedComponent([r,o],{totalSegments:2,accessibilityRole:"group",semanticStructure:"mixed"})},e.toSegment=function(){return{id:this.id,component:this,modifiers:this.modifiers||[],render:()=>{const t=this.render();return Array.isArray(t)?t[0]:t}}},e.isConcatenatable=function(){return!0},e}exports.CONCAT_SYMBOL=a;exports.ConcatenatableBase=s;exports.makeConcatenatable=m;
|
|
2
|
-
//# sourceMappingURL=concatenatable.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"concatenatable.cjs","sources":["../../src/concatenation/concatenatable.ts"],"sourcesContent":["/**\n * Concatenatable Interface Implementation\n * \n * Provides the base implementation for components that support concatenation\n * using the SwiftUI-style + operator syntax.\n */\n\nimport type { ComponentInstance } from '../runtime/types'\nimport type { Concatenatable, ComponentSegment } from './types'\nimport { ConcatenatedComponent } from './concatenated-component'\n\n/**\n * Symbol for concatenation operations - matches the one used in types\n */\nexport const CONCAT_SYMBOL = Symbol.for('tachui.concat')\n\n/**\n * Base implementation for concatenatable functionality\n * This can be mixed into component classes\n */\nexport abstract class ConcatenatableBase<T = any> implements Concatenatable<T> {\n abstract readonly id: string\n abstract readonly type: string\n \n /**\n * Concatenate this component with another concatenatable component\n */\n concat<U extends Concatenatable<any>>(other: U): ConcatenatedComponent<T | U> {\n const thisSegment = this.toSegment()\n const otherSegment = other.toSegment()\n \n // If other is already a concatenated component, merge segments\n if (other instanceof ConcatenatedComponent) {\n return new ConcatenatedComponent(\n [thisSegment, ...other.segments],\n this.mergeMetadata(other.metadata, other.segments.length + 1)\n )\n }\n \n // Create new concatenated component with both segments\n return new ConcatenatedComponent(\n [thisSegment, otherSegment],\n this.createMetadata(2)\n )\n }\n \n /**\n * Convert this component to a segment for concatenation\n */\n abstract toSegment(): ComponentSegment\n \n /**\n * Check if this component supports concatenation\n */\n isConcatenatable(): boolean {\n return true\n }\n \n /**\n * Create metadata for a new concatenated component\n */\n protected createMetadata(totalSegments: number): import('./types').ConcatenationMetadata {\n return {\n totalSegments,\n accessibilityRole: this.determineAccessibilityRole(),\n semanticStructure: this.determineSemanticStructure()\n }\n }\n \n /**\n * Merge metadata when concatenating with existing concatenated component\n */\n protected mergeMetadata(\n existing: import('./types').ConcatenationMetadata, \n newTotal: number\n ): import('./types').ConcatenationMetadata {\n return {\n totalSegments: newTotal,\n accessibilityRole: this.mergeAccessibilityRoles(existing.accessibilityRole),\n semanticStructure: this.mergeSemanticStructures(existing.semanticStructure)\n }\n }\n \n /**\n * Determine the accessibility role for this component\n */\n protected determineAccessibilityRole(): 'text' | 'group' | 'composite' {\n // Default implementation - subclasses should override\n const componentType = this.constructor.name\n \n if (componentType === 'EnhancedText') return 'text'\n if (componentType === 'EnhancedImage') return 'group'\n if (componentType === 'EnhancedButton' || componentType === 'EnhancedLink') return 'group'\n \n return 'composite'\n }\n \n /**\n * Determine the semantic structure for this component\n */\n protected determineSemanticStructure(): 'inline' | 'block' | 'mixed' {\n // Default implementation - subclasses should override\n const componentType = this.constructor.name\n \n if (componentType === 'EnhancedText') return 'inline'\n if (componentType === 'EnhancedImage') return 'inline'\n \n return 'mixed'\n }\n \n /**\n * Merge accessibility roles when combining components\n */\n protected mergeAccessibilityRoles(\n existing: 'text' | 'group' | 'composite'\n ): 'text' | 'group' | 'composite' {\n const thisRole = this.determineAccessibilityRole()\n \n // If both are text, keep text\n if (thisRole === 'text' && existing === 'text') return 'text'\n \n // If either is composite, result is composite\n if (thisRole === 'composite' || existing === 'composite') return 'composite'\n \n // Otherwise, it's a group\n return 'group'\n }\n \n /**\n * Merge semantic structures when combining components\n */\n protected mergeSemanticStructures(\n existing: 'inline' | 'block' | 'mixed'\n ): 'inline' | 'block' | 'mixed' {\n const thisStructure = this.determineSemanticStructure()\n \n // If both are inline, keep inline\n if (thisStructure === 'inline' && existing === 'inline') return 'inline'\n \n // If both are block, keep block\n if (thisStructure === 'block' && existing === 'block') return 'block'\n \n // Otherwise, it's mixed\n return 'mixed'\n }\n}\n\n/**\n * Utility function to make any component concatenatable\n * This can be used as a mixin for existing components\n */\nexport function makeConcatenatable<T extends ComponentInstance>(\n component: T\n): T & Concatenatable {\n const concatenatable = component as T & Concatenatable\n \n // Add concatenation method\n concatenatable.concat = function<U extends Concatenatable<any>>(\n other: U\n ): ConcatenatedComponent<any> {\n const thisSegment: ComponentSegment = {\n id: this.id,\n component: this,\n modifiers: (this as any).modifiers || [],\n render: () => {\n const rendered = this.render()\n return Array.isArray(rendered) ? rendered[0] : rendered\n }\n }\n \n const otherSegment = other.toSegment()\n \n if (other instanceof ConcatenatedComponent) {\n return new ConcatenatedComponent(\n [thisSegment, ...other.segments],\n {\n totalSegments: other.segments.length + 1,\n accessibilityRole: 'group',\n semanticStructure: 'mixed'\n }\n )\n }\n \n return new ConcatenatedComponent(\n [thisSegment, otherSegment],\n {\n totalSegments: 2,\n accessibilityRole: 'group',\n semanticStructure: 'mixed'\n }\n )\n }\n \n concatenatable.toSegment = function(): ComponentSegment {\n return {\n id: this.id,\n component: this,\n modifiers: (this as any).modifiers || [],\n render: () => {\n const rendered = this.render()\n return Array.isArray(rendered) ? rendered[0] : rendered\n }\n }\n }\n \n concatenatable.isConcatenatable = function(): boolean {\n return true\n }\n \n return concatenatable\n}"],"names":["CONCAT_SYMBOL","ConcatenatableBase","other","thisSegment","otherSegment","ConcatenatedComponent","totalSegments","existing","newTotal","componentType","thisRole","thisStructure","makeConcatenatable","component","concatenatable","rendered"],"mappings":"gIAcaA,EAAgB,OAAO,IAAI,eAAe,EAMhD,MAAeC,CAAyD,CAO7E,OAAsCC,EAAwC,CAC5E,MAAMC,EAAc,KAAK,UAAA,EACnBC,EAAeF,EAAM,UAAA,EAG3B,OAAIA,aAAiBG,EAAAA,sBACZ,IAAIA,EAAAA,sBACT,CAACF,EAAa,GAAGD,EAAM,QAAQ,EAC/B,KAAK,cAAcA,EAAM,SAAUA,EAAM,SAAS,OAAS,CAAC,CAAA,EAKzD,IAAIG,EAAAA,sBACT,CAACF,EAAaC,CAAY,EAC1B,KAAK,eAAe,CAAC,CAAA,CAEzB,CAUA,kBAA4B,CAC1B,MAAO,EACT,CAKU,eAAeE,EAAgE,CACvF,MAAO,CACL,cAAAA,EACA,kBAAmB,KAAK,2BAAA,EACxB,kBAAmB,KAAK,2BAAA,CAA2B,CAEvD,CAKU,cACRC,EACAC,EACyC,CACzC,MAAO,CACL,cAAeA,EACf,kBAAmB,KAAK,wBAAwBD,EAAS,iBAAiB,EAC1E,kBAAmB,KAAK,wBAAwBA,EAAS,iBAAiB,CAAA,CAE9E,CAKU,4BAA6D,CAErE,MAAME,EAAgB,KAAK,YAAY,KAEvC,OAAIA,IAAkB,eAAuB,OACzCA,IAAkB,iBAClBA,IAAkB,kBAAoBA,IAAkB,eAAuB,QAE5E,WACT,CAKU,4BAA2D,CAEnE,MAAMA,EAAgB,KAAK,YAAY,KAGvC,OADIA,IAAkB,gBAClBA,IAAkB,gBAAwB,SAEvC,OACT,CAKU,wBACRF,EACgC,CAChC,MAAMG,EAAW,KAAK,2BAAA,EAGtB,OAAIA,IAAa,QAAUH,IAAa,OAAe,OAGnDG,IAAa,aAAeH,IAAa,YAAoB,YAG1D,OACT,CAKU,wBACRA,EAC8B,CAC9B,MAAMI,EAAgB,KAAK,2BAAA,EAG3B,OAAIA,IAAkB,UAAYJ,IAAa,SAAiB,SAG5DI,IAAkB,SAAWJ,IAAa,QAAgB,QAGvD,OACT,CACF,CAMO,SAASK,EACdC,EACoB,CACpB,MAAMC,EAAiBD,EAGvB,OAAAC,EAAe,OAAS,SACtBZ,EAC4B,CAC5B,MAAMC,EAAgC,CACpC,GAAI,KAAK,GACT,UAAW,KACX,UAAY,KAAa,WAAa,CAAA,EACtC,OAAQ,IAAM,CACZ,MAAMY,EAAW,KAAK,OAAA,EACtB,OAAO,MAAM,QAAQA,CAAQ,EAAIA,EAAS,CAAC,EAAIA,CACjD,CAAA,EAGIX,EAAeF,EAAM,UAAA,EAE3B,OAAIA,aAAiBG,EAAAA,sBACZ,IAAIA,EAAAA,sBACT,CAACF,EAAa,GAAGD,EAAM,QAAQ,EAC/B,CACE,cAAeA,EAAM,SAAS,OAAS,EACvC,kBAAmB,QACnB,kBAAmB,OAAA,CACrB,EAIG,IAAIG,EAAAA,sBACT,CAACF,EAAaC,CAAY,EAC1B,CACE,cAAe,EACf,kBAAmB,QACnB,kBAAmB,OAAA,CACrB,CAEJ,EAEAU,EAAe,UAAY,UAA6B,CACtD,MAAO,CACL,GAAI,KAAK,GACT,UAAW,KACX,UAAY,KAAa,WAAa,CAAA,EACtC,OAAQ,IAAM,CACZ,MAAMC,EAAW,KAAK,OAAA,EACtB,OAAO,MAAM,QAAQA,CAAQ,EAAIA,EAAS,CAAC,EAAIA,CACjD,CAAA,CAEJ,EAEAD,EAAe,iBAAmB,UAAoB,CACpD,MAAO,EACT,EAEOA,CACT"}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import { ConcatenatedComponent as n } from "./concatenated-component.js";
|
|
2
|
-
const a = Symbol.for("tachui.concat");
|
|
3
|
-
class m {
|
|
4
|
-
/**
|
|
5
|
-
* Concatenate this component with another concatenatable component
|
|
6
|
-
*/
|
|
7
|
-
concat(e) {
|
|
8
|
-
const t = this.toSegment(), r = e.toSegment();
|
|
9
|
-
return e instanceof n ? new n(
|
|
10
|
-
[t, ...e.segments],
|
|
11
|
-
this.mergeMetadata(e.metadata, e.segments.length + 1)
|
|
12
|
-
) : new n(
|
|
13
|
-
[t, r],
|
|
14
|
-
this.createMetadata(2)
|
|
15
|
-
);
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Check if this component supports concatenation
|
|
19
|
-
*/
|
|
20
|
-
isConcatenatable() {
|
|
21
|
-
return !0;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Create metadata for a new concatenated component
|
|
25
|
-
*/
|
|
26
|
-
createMetadata(e) {
|
|
27
|
-
return {
|
|
28
|
-
totalSegments: e,
|
|
29
|
-
accessibilityRole: this.determineAccessibilityRole(),
|
|
30
|
-
semanticStructure: this.determineSemanticStructure()
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Merge metadata when concatenating with existing concatenated component
|
|
35
|
-
*/
|
|
36
|
-
mergeMetadata(e, t) {
|
|
37
|
-
return {
|
|
38
|
-
totalSegments: t,
|
|
39
|
-
accessibilityRole: this.mergeAccessibilityRoles(e.accessibilityRole),
|
|
40
|
-
semanticStructure: this.mergeSemanticStructures(e.semanticStructure)
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Determine the accessibility role for this component
|
|
45
|
-
*/
|
|
46
|
-
determineAccessibilityRole() {
|
|
47
|
-
const e = this.constructor.name;
|
|
48
|
-
return e === "EnhancedText" ? "text" : e === "EnhancedImage" || e === "EnhancedButton" || e === "EnhancedLink" ? "group" : "composite";
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Determine the semantic structure for this component
|
|
52
|
-
*/
|
|
53
|
-
determineSemanticStructure() {
|
|
54
|
-
const e = this.constructor.name;
|
|
55
|
-
return e === "EnhancedText" || e === "EnhancedImage" ? "inline" : "mixed";
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Merge accessibility roles when combining components
|
|
59
|
-
*/
|
|
60
|
-
mergeAccessibilityRoles(e) {
|
|
61
|
-
const t = this.determineAccessibilityRole();
|
|
62
|
-
return t === "text" && e === "text" ? "text" : t === "composite" || e === "composite" ? "composite" : "group";
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Merge semantic structures when combining components
|
|
66
|
-
*/
|
|
67
|
-
mergeSemanticStructures(e) {
|
|
68
|
-
const t = this.determineSemanticStructure();
|
|
69
|
-
return t === "inline" && e === "inline" ? "inline" : t === "block" && e === "block" ? "block" : "mixed";
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
function u(c) {
|
|
73
|
-
const e = c;
|
|
74
|
-
return e.concat = function(t) {
|
|
75
|
-
const r = {
|
|
76
|
-
id: this.id,
|
|
77
|
-
component: this,
|
|
78
|
-
modifiers: this.modifiers || [],
|
|
79
|
-
render: () => {
|
|
80
|
-
const i = this.render();
|
|
81
|
-
return Array.isArray(i) ? i[0] : i;
|
|
82
|
-
}
|
|
83
|
-
}, s = t.toSegment();
|
|
84
|
-
return t instanceof n ? new n(
|
|
85
|
-
[r, ...t.segments],
|
|
86
|
-
{
|
|
87
|
-
totalSegments: t.segments.length + 1,
|
|
88
|
-
accessibilityRole: "group",
|
|
89
|
-
semanticStructure: "mixed"
|
|
90
|
-
}
|
|
91
|
-
) : new n(
|
|
92
|
-
[r, s],
|
|
93
|
-
{
|
|
94
|
-
totalSegments: 2,
|
|
95
|
-
accessibilityRole: "group",
|
|
96
|
-
semanticStructure: "mixed"
|
|
97
|
-
}
|
|
98
|
-
);
|
|
99
|
-
}, e.toSegment = function() {
|
|
100
|
-
return {
|
|
101
|
-
id: this.id,
|
|
102
|
-
component: this,
|
|
103
|
-
modifiers: this.modifiers || [],
|
|
104
|
-
render: () => {
|
|
105
|
-
const t = this.render();
|
|
106
|
-
return Array.isArray(t) ? t[0] : t;
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
}, e.isConcatenatable = function() {
|
|
110
|
-
return !0;
|
|
111
|
-
}, e;
|
|
112
|
-
}
|
|
113
|
-
export {
|
|
114
|
-
a as CONCAT_SYMBOL,
|
|
115
|
-
m as ConcatenatableBase,
|
|
116
|
-
u as makeConcatenatable
|
|
117
|
-
};
|
|
118
|
-
//# sourceMappingURL=concatenatable.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"concatenatable.js","sources":["../../src/concatenation/concatenatable.ts"],"sourcesContent":["/**\n * Concatenatable Interface Implementation\n * \n * Provides the base implementation for components that support concatenation\n * using the SwiftUI-style + operator syntax.\n */\n\nimport type { ComponentInstance } from '../runtime/types'\nimport type { Concatenatable, ComponentSegment } from './types'\nimport { ConcatenatedComponent } from './concatenated-component'\n\n/**\n * Symbol for concatenation operations - matches the one used in types\n */\nexport const CONCAT_SYMBOL = Symbol.for('tachui.concat')\n\n/**\n * Base implementation for concatenatable functionality\n * This can be mixed into component classes\n */\nexport abstract class ConcatenatableBase<T = any> implements Concatenatable<T> {\n abstract readonly id: string\n abstract readonly type: string\n \n /**\n * Concatenate this component with another concatenatable component\n */\n concat<U extends Concatenatable<any>>(other: U): ConcatenatedComponent<T | U> {\n const thisSegment = this.toSegment()\n const otherSegment = other.toSegment()\n \n // If other is already a concatenated component, merge segments\n if (other instanceof ConcatenatedComponent) {\n return new ConcatenatedComponent(\n [thisSegment, ...other.segments],\n this.mergeMetadata(other.metadata, other.segments.length + 1)\n )\n }\n \n // Create new concatenated component with both segments\n return new ConcatenatedComponent(\n [thisSegment, otherSegment],\n this.createMetadata(2)\n )\n }\n \n /**\n * Convert this component to a segment for concatenation\n */\n abstract toSegment(): ComponentSegment\n \n /**\n * Check if this component supports concatenation\n */\n isConcatenatable(): boolean {\n return true\n }\n \n /**\n * Create metadata for a new concatenated component\n */\n protected createMetadata(totalSegments: number): import('./types').ConcatenationMetadata {\n return {\n totalSegments,\n accessibilityRole: this.determineAccessibilityRole(),\n semanticStructure: this.determineSemanticStructure()\n }\n }\n \n /**\n * Merge metadata when concatenating with existing concatenated component\n */\n protected mergeMetadata(\n existing: import('./types').ConcatenationMetadata, \n newTotal: number\n ): import('./types').ConcatenationMetadata {\n return {\n totalSegments: newTotal,\n accessibilityRole: this.mergeAccessibilityRoles(existing.accessibilityRole),\n semanticStructure: this.mergeSemanticStructures(existing.semanticStructure)\n }\n }\n \n /**\n * Determine the accessibility role for this component\n */\n protected determineAccessibilityRole(): 'text' | 'group' | 'composite' {\n // Default implementation - subclasses should override\n const componentType = this.constructor.name\n \n if (componentType === 'EnhancedText') return 'text'\n if (componentType === 'EnhancedImage') return 'group'\n if (componentType === 'EnhancedButton' || componentType === 'EnhancedLink') return 'group'\n \n return 'composite'\n }\n \n /**\n * Determine the semantic structure for this component\n */\n protected determineSemanticStructure(): 'inline' | 'block' | 'mixed' {\n // Default implementation - subclasses should override\n const componentType = this.constructor.name\n \n if (componentType === 'EnhancedText') return 'inline'\n if (componentType === 'EnhancedImage') return 'inline'\n \n return 'mixed'\n }\n \n /**\n * Merge accessibility roles when combining components\n */\n protected mergeAccessibilityRoles(\n existing: 'text' | 'group' | 'composite'\n ): 'text' | 'group' | 'composite' {\n const thisRole = this.determineAccessibilityRole()\n \n // If both are text, keep text\n if (thisRole === 'text' && existing === 'text') return 'text'\n \n // If either is composite, result is composite\n if (thisRole === 'composite' || existing === 'composite') return 'composite'\n \n // Otherwise, it's a group\n return 'group'\n }\n \n /**\n * Merge semantic structures when combining components\n */\n protected mergeSemanticStructures(\n existing: 'inline' | 'block' | 'mixed'\n ): 'inline' | 'block' | 'mixed' {\n const thisStructure = this.determineSemanticStructure()\n \n // If both are inline, keep inline\n if (thisStructure === 'inline' && existing === 'inline') return 'inline'\n \n // If both are block, keep block\n if (thisStructure === 'block' && existing === 'block') return 'block'\n \n // Otherwise, it's mixed\n return 'mixed'\n }\n}\n\n/**\n * Utility function to make any component concatenatable\n * This can be used as a mixin for existing components\n */\nexport function makeConcatenatable<T extends ComponentInstance>(\n component: T\n): T & Concatenatable {\n const concatenatable = component as T & Concatenatable\n \n // Add concatenation method\n concatenatable.concat = function<U extends Concatenatable<any>>(\n other: U\n ): ConcatenatedComponent<any> {\n const thisSegment: ComponentSegment = {\n id: this.id,\n component: this,\n modifiers: (this as any).modifiers || [],\n render: () => {\n const rendered = this.render()\n return Array.isArray(rendered) ? rendered[0] : rendered\n }\n }\n \n const otherSegment = other.toSegment()\n \n if (other instanceof ConcatenatedComponent) {\n return new ConcatenatedComponent(\n [thisSegment, ...other.segments],\n {\n totalSegments: other.segments.length + 1,\n accessibilityRole: 'group',\n semanticStructure: 'mixed'\n }\n )\n }\n \n return new ConcatenatedComponent(\n [thisSegment, otherSegment],\n {\n totalSegments: 2,\n accessibilityRole: 'group',\n semanticStructure: 'mixed'\n }\n )\n }\n \n concatenatable.toSegment = function(): ComponentSegment {\n return {\n id: this.id,\n component: this,\n modifiers: (this as any).modifiers || [],\n render: () => {\n const rendered = this.render()\n return Array.isArray(rendered) ? rendered[0] : rendered\n }\n }\n }\n \n concatenatable.isConcatenatable = function(): boolean {\n return true\n }\n \n return concatenatable\n}"],"names":["CONCAT_SYMBOL","ConcatenatableBase","other","thisSegment","otherSegment","ConcatenatedComponent","totalSegments","existing","newTotal","componentType","thisRole","thisStructure","makeConcatenatable","component","concatenatable","rendered"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("../runtime/renderer.cjs");var l=Object.defineProperty,u=(c,e,t)=>e in c?l(c,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):c[e]=t,r=(c,e,t)=>u(c,typeof e!="symbol"?e+"":e,t);class o{constructor(e,t,n=!0){this.metadata=t,r(this,"type","component"),r(this,"id"),r(this,"mounted",!1),r(this,"cleanup",[]),r(this,"props",{}),r(this,"segments"),this.id=`concat-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,this.segments=e}render(){const e=this.determineContainerClass(),t=this.buildAccessibilityLabel(),n=this.buildAccessibilityAttributes(),s=this.segments.map(i=>i.render()).flat();return[m.h("span",{class:`tachui-concatenated ${e}`,...n,"aria-label":t||void 0,...this.hasInteractiveContent()&&{"aria-live":"polite","aria-atomic":"true"},...process.env.NODE_ENV==="development"&&{"data-concatenated-segments":this.segments.length,"data-semantic-structure":this.metadata.semanticStructure,"data-accessibility-role":this.metadata.accessibilityRole}},...s)]}buildAccessibilityAttributes(){const e={};switch(this.metadata.accessibilityRole){case"text":break;case"group":e.role="group",e["aria-describedby"]=this.generateGroupDescription();break;case"composite":e.role="group",e["aria-roledescription"]="interactive content group";break}return this.metadata.semanticStructure==="mixed"&&this.segments.length>2&&(e["aria-flowto"]=this.generateFlowTargets()),this.hasInteractiveContent()&&(e.tabindex="0",e["aria-description"]="Contains interactive elements. Use Tab to navigate."),e}generateGroupDescription(){const e=this.getUniqueComponentTypes();return e.length===1?`Group of ${this.segments.length} ${e[0]} elements`:`Group containing ${e.join(", ")} elements`}generateFlowTargets(){return""}hasInteractiveContent(){return this.segments.some(e=>{const t=e.component.constructor.name;return t==="EnhancedButton"||t==="EnhancedLinkComponent"})}getUniqueComponentTypes(){const e=new Set(this.segments.map(t=>{switch(t.component.constructor.name){case"EnhancedText":return"text";case"EnhancedImage":return"image";case"EnhancedButton":return"button";case"EnhancedLinkComponent":return"link";default:return"component"}}));return Array.from(e)}concat(e){let t,n;return e instanceof o?(t=[...this.segments,...e.segments],n=this.mergeMetadata(this.metadata,e.metadata,t.length)):(t=[...this.segments,e.toSegment()],n=this.mergeMetadata(this.metadata,{totalSegments:1,accessibilityRole:this.determineComponentAccessibilityRole(e),semanticStructure:this.determineComponentSemanticStructure(e)},t.length)),new o(t,n)}toSegment(){return{id:this.id,component:this,modifiers:[],render:()=>this.render()[0]}}isConcatenatable(){return!0}determineContainerClass(){const e=this.segments.map(i=>i.component.constructor.name),t=e.some(i=>i==="EnhancedImage"),n=e.some(i=>i==="EnhancedText"),s=e.some(i=>i==="EnhancedButton"),a=e.some(i=>i==="EnhancedLink");return t&&n&&(s||a)?"mixed-content":t&&n?"image-text-composition":t&&!n?"image-composition":n&&!t?"text-composition":"generic-composition"}buildAccessibilityLabel(){const t=this.segments.map(n=>this.extractAccessibilityText(n)).filter(Boolean);return t.length===0?"":this.joinAccessibilityLabels(t)}joinAccessibilityLabels(e){if(e.length===1)return e[0];switch(this.metadata.semanticStructure){case"inline":return e.join(" ");case"block":return e.join(". ");case"mixed":return this.smartJoinLabels(e);default:return e.join(" ")}}smartJoinLabels(e){const t=[];for(let n=0;n<e.length;n++){const s=e[n],a=e[n+1];t.push(s),a&&(this.needsExplicitSeparator(s,a)?t.push(". "):t.push(" "))}return t.join("")}needsExplicitSeparator(e,t){const n=/[.!?:;]$/.test(e.trim()),s=/^[A-Z]/.test(t.trim());return!n&&s}extractAccessibilityText(e){const t=e.component;switch(t.constructor.name){case"EnhancedText":return t.content||t.title||"";case"EnhancedImage":return t.alt||t.accessibilityLabel||"Image";case"EnhancedButton":return t.title||t.accessibilityLabel||"Button";case"EnhancedLink":return t.title||t.accessibilityLabel||"Link";case"ConcatenatedComponent":return t.buildAccessibilityLabel();default:return t.accessibilityLabel||""}}mergeMetadata(e,t,n){return{totalSegments:n,accessibilityRole:this.mergeAccessibilityRoles(e.accessibilityRole,t.accessibilityRole),semanticStructure:this.mergeSemanticStructures(e.semanticStructure,t.semanticStructure)}}mergeAccessibilityRoles(e,t){return e==="text"&&t==="text"?"text":e==="composite"||t==="composite"?"composite":"group"}mergeSemanticStructures(e,t){return e==="inline"&&t==="inline"?"inline":e==="block"&&t==="block"?"block":"mixed"}determineComponentAccessibilityRole(e){switch(e.constructor.name){case"EnhancedText":return"text";case"EnhancedImage":return"group";case"EnhancedButton":case"EnhancedLink":return"group";default:return"composite"}}determineComponentSemanticStructure(e){switch(e.constructor.name){case"EnhancedText":case"EnhancedImage":return"inline";case"EnhancedButton":case"EnhancedLink":return"inline";default:return"mixed"}}generateAccessibilityTree(){return{role:this.metadata.accessibilityRole,label:this.buildAccessibilityLabel(),children:this.segments.map(e=>this.segmentToAccessibilityNode(e))}}segmentToAccessibilityNode(e){const t=e.component;return{role:this.determineComponentAccessibilityRole(t),label:this.extractAccessibilityText(e),children:t instanceof o?t.generateAccessibilityTree().children:void 0}}}exports.ConcatenatedComponent=o;
|
|
2
|
-
//# sourceMappingURL=concatenated-component.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"concatenated-component.cjs","sources":["../../src/concatenation/concatenated-component.ts"],"sourcesContent":["/**\n * ConcatenatedComponent Implementation\n * \n * The main class that represents a concatenated component composed of multiple\n * component segments. Handles rendering, accessibility, and further concatenation.\n */\n\nimport { h } from '../runtime/renderer'\nimport type { ComponentInstance, DOMNode } from '../runtime/types'\nimport type { \n Concatenatable, \n ComponentSegment, \n ConcatenationMetadata,\n AccessibilityNode \n} from './types'\n// import { CONCAT_SYMBOL } from './concatenatable' // Unused\n\n/**\n * A component that represents the concatenation of multiple components\n */\nexport class ConcatenatedComponent<T = any> \n implements ComponentInstance<any>, Concatenatable<T> {\n \n public readonly type = 'component' as const\n public readonly id: string\n public mounted = false\n public cleanup: (() => void)[] = []\n public props: any = {} // Required by ComponentInstance interface\n public segments: ComponentSegment[] // Make segments public\n \n constructor(\n segments: ComponentSegment[],\n public metadata: ConcatenationMetadata,\n _enableOptimization: boolean = true\n ) {\n this.id = `concat-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n \n // Temporarily disable optimization to avoid require() issues in browser\n // TODO: Fix text optimization to work in browser environment\n this.segments = segments\n \n // Apply text optimization if enabled and beneficial (disabled for now)\n // if (enableOptimization && TextConcatenationOptimizer.shouldOptimize(segments)) {\n // this.segments = TextConcatenationOptimizer.optimize(segments)\n // \n // // Log optimization stats in development\n // if (process.env.NODE_ENV === 'development') {\n // const stats = TextConcatenationOptimizer.getOptimizationStats(segments, this.segments)\n // console.log(`TachUI Concatenation: Optimized ${stats.originalCount} → ${stats.optimizedCount} segments (${stats.reductionPercent}% reduction)`)\n // }\n // } else {\n // this.segments = segments\n // }\n }\n \n /**\n * Render the concatenated component to DOM nodes (Enhanced - Phase 4.2)\n */\n render(): DOMNode[] {\n const containerClass = this.determineContainerClass()\n const ariaLabel = this.buildAccessibilityLabel()\n const accessibilityAttributes = this.buildAccessibilityAttributes()\n \n // Render all segments and flatten the results\n const segmentNodes = this.segments.map(segment => segment.render()).flat()\n \n // Create container element with comprehensive accessibility\n const container = h('span', {\n class: `tachui-concatenated ${containerClass}`,\n ...accessibilityAttributes,\n 'aria-label': ariaLabel || undefined,\n // Enhanced live region support for dynamic content\n ...(this.hasInteractiveContent() && {\n 'aria-live': 'polite',\n 'aria-atomic': 'true'\n }),\n // Add debug information in development\n ...(process.env.NODE_ENV === 'development' && {\n 'data-concatenated-segments': this.segments.length,\n 'data-semantic-structure': this.metadata.semanticStructure,\n 'data-accessibility-role': this.metadata.accessibilityRole\n })\n }, ...segmentNodes)\n \n return [container]\n }\n \n /**\n * Build comprehensive accessibility attributes\n */\n private buildAccessibilityAttributes(): Record<string, string> {\n const attributes: Record<string, string> = {}\n \n // Set appropriate role based on metadata\n switch (this.metadata.accessibilityRole) {\n case 'text':\n // For text-only content, no explicit role needed (default text semantics)\n break\n \n case 'group':\n attributes.role = 'group'\n // Add description for groups to clarify purpose\n attributes['aria-describedby'] = this.generateGroupDescription()\n break\n \n case 'composite':\n attributes.role = 'group'\n // For composite content (with interactive elements), mark as application region\n attributes['aria-roledescription'] = 'interactive content group'\n break\n }\n \n // Add reading order hints for complex layouts\n if (this.metadata.semanticStructure === 'mixed' && this.segments.length > 2) {\n attributes['aria-flowto'] = this.generateFlowTargets()\n }\n \n // Add keyboard navigation hints for interactive content\n if (this.hasInteractiveContent()) {\n attributes.tabindex = '0'\n attributes['aria-description'] = 'Contains interactive elements. Use Tab to navigate.'\n }\n \n return attributes\n }\n \n /**\n * Generate description for grouped content\n */\n private generateGroupDescription(): string {\n const componentTypes = this.getUniqueComponentTypes()\n \n if (componentTypes.length === 1) {\n return `Group of ${this.segments.length} ${componentTypes[0]} elements`\n }\n \n return `Group containing ${componentTypes.join(', ')} elements`\n }\n \n /**\n * Generate flow targets for reading order\n */\n private generateFlowTargets(): string {\n // This would typically reference IDs of next focusable elements\n // For now, return empty string as it requires DOM coordination\n return ''\n }\n \n /**\n * Check if concatenated content contains interactive elements\n */\n private hasInteractiveContent(): boolean {\n return this.segments.some(segment => {\n const componentType = segment.component.constructor.name\n return componentType === 'EnhancedButton' || componentType === 'EnhancedLinkComponent'\n })\n }\n \n /**\n * Get unique component types in this concatenation\n */\n private getUniqueComponentTypes(): string[] {\n const types = new Set(this.segments.map(segment => {\n const componentType = segment.component.constructor.name\n switch (componentType) {\n case 'EnhancedText': return 'text'\n case 'EnhancedImage': return 'image'\n case 'EnhancedButton': return 'button'\n case 'EnhancedLinkComponent': return 'link'\n default: return 'component'\n }\n }))\n \n return Array.from(types)\n }\n \n /**\n * Concatenate this component with another concatenatable component\n */\n concat<U extends Concatenatable<any>>(other: U): ConcatenatedComponent<T | U> {\n let newSegments: ComponentSegment[]\n let newMetadata: ConcatenationMetadata\n \n if (other instanceof ConcatenatedComponent) {\n // Merging with another concatenated component\n newSegments = [...this.segments, ...other.segments]\n newMetadata = this.mergeMetadata(this.metadata, other.metadata, newSegments.length)\n } else {\n // Adding a single component\n newSegments = [...this.segments, other.toSegment()]\n newMetadata = this.mergeMetadata(\n this.metadata, \n {\n totalSegments: 1,\n accessibilityRole: this.determineComponentAccessibilityRole(other),\n semanticStructure: this.determineComponentSemanticStructure(other)\n },\n newSegments.length\n )\n }\n \n return new ConcatenatedComponent(newSegments, newMetadata)\n }\n \n /**\n * Convert this concatenated component to a segment (for further concatenation)\n */\n toSegment(): ComponentSegment {\n return {\n id: this.id,\n component: this as any, // Cast to satisfy interface requirements\n modifiers: [], // Concatenated components don't have their own modifiers\n render: () => this.render()[0]\n }\n }\n \n /**\n * Check if this component supports concatenation\n */\n isConcatenatable(): boolean {\n return true\n }\n \n /**\n * Determine the appropriate CSS class for the container\n */\n private determineContainerClass(): string {\n const componentTypes = this.segments.map(s => s.component.constructor.name)\n \n const hasImages = componentTypes.some(type => type === 'EnhancedImage')\n const hasText = componentTypes.some(type => type === 'EnhancedText')\n const hasButtons = componentTypes.some(type => type === 'EnhancedButton')\n const hasLinks = componentTypes.some(type => type === 'EnhancedLink')\n \n // Determine the most appropriate container class\n if (hasImages && hasText && (hasButtons || hasLinks)) {\n return 'mixed-content'\n } else if (hasImages && hasText) {\n return 'image-text-composition'\n } else if (hasImages && !hasText) {\n return 'image-composition'\n } else if (hasText && !hasImages) {\n return 'text-composition'\n } else {\n return 'generic-composition'\n }\n }\n \n /**\n * Build comprehensive accessibility label for screen readers (Enhanced - Phase 4.2)\n */\n private buildAccessibilityLabel(): string {\n const labels = this.segments.map(segment => this.extractAccessibilityText(segment))\n \n // Filter out empty labels and format appropriately\n const cleanLabels = labels.filter(Boolean)\n \n if (cleanLabels.length === 0) return ''\n \n // Apply intelligent joining based on content type\n return this.joinAccessibilityLabels(cleanLabels)\n }\n \n /**\n * Intelligently join accessibility labels based on content and structure\n */\n private joinAccessibilityLabels(labels: string[]): string {\n if (labels.length === 1) return labels[0]\n \n // Analyze the semantic structure to determine appropriate joining\n switch (this.metadata.semanticStructure) {\n case 'inline':\n // For inline content, join with spaces (natural reading flow)\n return labels.join(' ')\n \n case 'block':\n // For block content, use more explicit separators\n return labels.join('. ')\n \n case 'mixed':\n // For mixed content, use context-aware joining\n return this.smartJoinLabels(labels)\n \n default:\n return labels.join(' ')\n }\n }\n \n /**\n * Context-aware label joining for mixed content\n */\n private smartJoinLabels(labels: string[]): string {\n const result: string[] = []\n \n for (let i = 0; i < labels.length; i++) {\n const current = labels[i]\n const next = labels[i + 1]\n \n result.push(current)\n \n if (next) {\n // Add appropriate separator based on content\n if (this.needsExplicitSeparator(current, next)) {\n result.push('. ')\n } else {\n result.push(' ')\n }\n }\n }\n \n return result.join('')\n }\n \n /**\n * Determine if two accessibility labels need explicit separation\n */\n private needsExplicitSeparator(current: string, next: string): boolean {\n // Add separator if current doesn't end with punctuation and next is a new concept\n const currentEndsWithPunctuation = /[.!?:;]$/.test(current.trim())\n const nextStartsWithCapital = /^[A-Z]/.test(next.trim())\n \n return !currentEndsWithPunctuation && nextStartsWithCapital\n }\n \n /**\n * Extract accessibility text from a component segment\n */\n private extractAccessibilityText(segment: ComponentSegment): string {\n const component = segment.component\n const componentType = component.constructor.name\n \n // Handle different component types\n switch (componentType) {\n case 'EnhancedText':\n return (component as any).content || (component as any).title || ''\n \n case 'EnhancedImage':\n return (component as any).alt || (component as any).accessibilityLabel || 'Image'\n \n case 'EnhancedButton':\n return (component as any).title || (component as any).accessibilityLabel || 'Button'\n \n case 'EnhancedLink':\n return (component as any).title || (component as any).accessibilityLabel || 'Link'\n \n case 'ConcatenatedComponent':\n return (component as unknown as ConcatenatedComponent).buildAccessibilityLabel()\n \n default:\n return (component as any).accessibilityLabel || ''\n }\n }\n \n /**\n * Merge metadata from two concatenation operations\n */\n private mergeMetadata(\n metadata1: ConcatenationMetadata,\n metadata2: ConcatenationMetadata,\n totalSegments: number\n ): ConcatenationMetadata {\n return {\n totalSegments,\n accessibilityRole: this.mergeAccessibilityRoles(\n metadata1.accessibilityRole, \n metadata2.accessibilityRole\n ),\n semanticStructure: this.mergeSemanticStructures(\n metadata1.semanticStructure, \n metadata2.semanticStructure\n )\n }\n }\n \n /**\n * Merge accessibility roles from two components\n */\n private mergeAccessibilityRoles(\n role1: 'text' | 'group' | 'composite',\n role2: 'text' | 'group' | 'composite'\n ): 'text' | 'group' | 'composite' {\n // If both are text, keep text\n if (role1 === 'text' && role2 === 'text') return 'text'\n \n // If either is composite, result is composite\n if (role1 === 'composite' || role2 === 'composite') return 'composite'\n \n // Otherwise, it's a group\n return 'group'\n }\n \n /**\n * Merge semantic structures from two components\n */\n private mergeSemanticStructures(\n structure1: 'inline' | 'block' | 'mixed',\n structure2: 'inline' | 'block' | 'mixed'\n ): 'inline' | 'block' | 'mixed' {\n // If both are inline, keep inline\n if (structure1 === 'inline' && structure2 === 'inline') return 'inline'\n \n // If both are block, keep block\n if (structure1 === 'block' && structure2 === 'block') return 'block'\n \n // Otherwise, it's mixed\n return 'mixed'\n }\n \n /**\n * Determine accessibility role for a single component\n */\n private determineComponentAccessibilityRole(component: Concatenatable): 'text' | 'group' | 'composite' {\n const componentType = (component as any).constructor.name\n \n switch (componentType) {\n case 'EnhancedText':\n return 'text'\n case 'EnhancedImage':\n return 'group'\n case 'EnhancedButton':\n case 'EnhancedLink':\n return 'group'\n default:\n return 'composite'\n }\n }\n \n /**\n * Determine semantic structure for a single component\n */\n private determineComponentSemanticStructure(component: Concatenatable): 'inline' | 'block' | 'mixed' {\n const componentType = (component as any).constructor.name\n \n switch (componentType) {\n case 'EnhancedText':\n case 'EnhancedImage':\n return 'inline'\n case 'EnhancedButton':\n case 'EnhancedLink':\n return 'inline' // Buttons and links are typically inline in concatenation\n default:\n return 'mixed'\n }\n }\n \n /**\n * Generate comprehensive accessibility tree for this concatenated component\n */\n generateAccessibilityTree(): AccessibilityNode {\n return {\n role: this.metadata.accessibilityRole,\n label: this.buildAccessibilityLabel(),\n children: this.segments.map(segment => this.segmentToAccessibilityNode(segment))\n }\n }\n \n /**\n * Convert a component segment to an accessibility node\n */\n private segmentToAccessibilityNode(segment: ComponentSegment): AccessibilityNode {\n const component = segment.component\n \n return {\n role: this.determineComponentAccessibilityRole(component as unknown as Concatenatable),\n label: this.extractAccessibilityText(segment),\n children: component instanceof ConcatenatedComponent \n ? component.generateAccessibilityTree().children \n : undefined\n }\n }\n}"],"names":["ConcatenatedComponent","segments","metadata","_enableOptimization","__publicField","containerClass","ariaLabel","accessibilityAttributes","segmentNodes","segment","h","attributes","componentTypes","componentType","types","other","newSegments","newMetadata","s","hasImages","type","hasText","hasButtons","hasLinks","cleanLabels","labels","result","i","current","next","currentEndsWithPunctuation","nextStartsWithCapital","component","metadata1","metadata2","totalSegments","role1","role2","structure1","structure2"],"mappings":"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"}
|
|
@@ -1,276 +0,0 @@
|
|
|
1
|
-
import { h as m } from "../runtime/renderer.js";
|
|
2
|
-
var l = Object.defineProperty, u = (r, e, t) => e in r ? l(r, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[e] = t, c = (r, e, t) => u(r, typeof e != "symbol" ? e + "" : e, t);
|
|
3
|
-
class o {
|
|
4
|
-
// Make segments public
|
|
5
|
-
constructor(e, t, n = !0) {
|
|
6
|
-
this.metadata = t, c(this, "type", "component"), c(this, "id"), c(this, "mounted", !1), c(this, "cleanup", []), c(this, "props", {}), c(this, "segments"), this.id = `concat-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`, this.segments = e;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Render the concatenated component to DOM nodes (Enhanced - Phase 4.2)
|
|
10
|
-
*/
|
|
11
|
-
render() {
|
|
12
|
-
const e = this.determineContainerClass(), t = this.buildAccessibilityLabel(), n = this.buildAccessibilityAttributes(), s = this.segments.map((i) => i.render()).flat();
|
|
13
|
-
return [m("span", {
|
|
14
|
-
class: `tachui-concatenated ${e}`,
|
|
15
|
-
...n,
|
|
16
|
-
"aria-label": t || void 0,
|
|
17
|
-
// Enhanced live region support for dynamic content
|
|
18
|
-
...this.hasInteractiveContent() && {
|
|
19
|
-
"aria-live": "polite",
|
|
20
|
-
"aria-atomic": "true"
|
|
21
|
-
},
|
|
22
|
-
// Add debug information in development
|
|
23
|
-
...process.env.NODE_ENV === "development" && {
|
|
24
|
-
"data-concatenated-segments": this.segments.length,
|
|
25
|
-
"data-semantic-structure": this.metadata.semanticStructure,
|
|
26
|
-
"data-accessibility-role": this.metadata.accessibilityRole
|
|
27
|
-
}
|
|
28
|
-
}, ...s)];
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Build comprehensive accessibility attributes
|
|
32
|
-
*/
|
|
33
|
-
buildAccessibilityAttributes() {
|
|
34
|
-
const e = {};
|
|
35
|
-
switch (this.metadata.accessibilityRole) {
|
|
36
|
-
case "text":
|
|
37
|
-
break;
|
|
38
|
-
case "group":
|
|
39
|
-
e.role = "group", e["aria-describedby"] = this.generateGroupDescription();
|
|
40
|
-
break;
|
|
41
|
-
case "composite":
|
|
42
|
-
e.role = "group", e["aria-roledescription"] = "interactive content group";
|
|
43
|
-
break;
|
|
44
|
-
}
|
|
45
|
-
return this.metadata.semanticStructure === "mixed" && this.segments.length > 2 && (e["aria-flowto"] = this.generateFlowTargets()), this.hasInteractiveContent() && (e.tabindex = "0", e["aria-description"] = "Contains interactive elements. Use Tab to navigate."), e;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Generate description for grouped content
|
|
49
|
-
*/
|
|
50
|
-
generateGroupDescription() {
|
|
51
|
-
const e = this.getUniqueComponentTypes();
|
|
52
|
-
return e.length === 1 ? `Group of ${this.segments.length} ${e[0]} elements` : `Group containing ${e.join(", ")} elements`;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Generate flow targets for reading order
|
|
56
|
-
*/
|
|
57
|
-
generateFlowTargets() {
|
|
58
|
-
return "";
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Check if concatenated content contains interactive elements
|
|
62
|
-
*/
|
|
63
|
-
hasInteractiveContent() {
|
|
64
|
-
return this.segments.some((e) => {
|
|
65
|
-
const t = e.component.constructor.name;
|
|
66
|
-
return t === "EnhancedButton" || t === "EnhancedLinkComponent";
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Get unique component types in this concatenation
|
|
71
|
-
*/
|
|
72
|
-
getUniqueComponentTypes() {
|
|
73
|
-
const e = new Set(this.segments.map((t) => {
|
|
74
|
-
switch (t.component.constructor.name) {
|
|
75
|
-
case "EnhancedText":
|
|
76
|
-
return "text";
|
|
77
|
-
case "EnhancedImage":
|
|
78
|
-
return "image";
|
|
79
|
-
case "EnhancedButton":
|
|
80
|
-
return "button";
|
|
81
|
-
case "EnhancedLinkComponent":
|
|
82
|
-
return "link";
|
|
83
|
-
default:
|
|
84
|
-
return "component";
|
|
85
|
-
}
|
|
86
|
-
}));
|
|
87
|
-
return Array.from(e);
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Concatenate this component with another concatenatable component
|
|
91
|
-
*/
|
|
92
|
-
concat(e) {
|
|
93
|
-
let t, n;
|
|
94
|
-
return e instanceof o ? (t = [...this.segments, ...e.segments], n = this.mergeMetadata(this.metadata, e.metadata, t.length)) : (t = [...this.segments, e.toSegment()], n = this.mergeMetadata(
|
|
95
|
-
this.metadata,
|
|
96
|
-
{
|
|
97
|
-
totalSegments: 1,
|
|
98
|
-
accessibilityRole: this.determineComponentAccessibilityRole(e),
|
|
99
|
-
semanticStructure: this.determineComponentSemanticStructure(e)
|
|
100
|
-
},
|
|
101
|
-
t.length
|
|
102
|
-
)), new o(t, n);
|
|
103
|
-
}
|
|
104
|
-
/**
|
|
105
|
-
* Convert this concatenated component to a segment (for further concatenation)
|
|
106
|
-
*/
|
|
107
|
-
toSegment() {
|
|
108
|
-
return {
|
|
109
|
-
id: this.id,
|
|
110
|
-
component: this,
|
|
111
|
-
// Cast to satisfy interface requirements
|
|
112
|
-
modifiers: [],
|
|
113
|
-
// Concatenated components don't have their own modifiers
|
|
114
|
-
render: () => this.render()[0]
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Check if this component supports concatenation
|
|
119
|
-
*/
|
|
120
|
-
isConcatenatable() {
|
|
121
|
-
return !0;
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Determine the appropriate CSS class for the container
|
|
125
|
-
*/
|
|
126
|
-
determineContainerClass() {
|
|
127
|
-
const e = this.segments.map((i) => i.component.constructor.name), t = e.some((i) => i === "EnhancedImage"), n = e.some((i) => i === "EnhancedText"), s = e.some((i) => i === "EnhancedButton"), a = e.some((i) => i === "EnhancedLink");
|
|
128
|
-
return t && n && (s || a) ? "mixed-content" : t && n ? "image-text-composition" : t && !n ? "image-composition" : n && !t ? "text-composition" : "generic-composition";
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Build comprehensive accessibility label for screen readers (Enhanced - Phase 4.2)
|
|
132
|
-
*/
|
|
133
|
-
buildAccessibilityLabel() {
|
|
134
|
-
const t = this.segments.map((n) => this.extractAccessibilityText(n)).filter(Boolean);
|
|
135
|
-
return t.length === 0 ? "" : this.joinAccessibilityLabels(t);
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Intelligently join accessibility labels based on content and structure
|
|
139
|
-
*/
|
|
140
|
-
joinAccessibilityLabels(e) {
|
|
141
|
-
if (e.length === 1) return e[0];
|
|
142
|
-
switch (this.metadata.semanticStructure) {
|
|
143
|
-
case "inline":
|
|
144
|
-
return e.join(" ");
|
|
145
|
-
case "block":
|
|
146
|
-
return e.join(". ");
|
|
147
|
-
case "mixed":
|
|
148
|
-
return this.smartJoinLabels(e);
|
|
149
|
-
default:
|
|
150
|
-
return e.join(" ");
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Context-aware label joining for mixed content
|
|
155
|
-
*/
|
|
156
|
-
smartJoinLabels(e) {
|
|
157
|
-
const t = [];
|
|
158
|
-
for (let n = 0; n < e.length; n++) {
|
|
159
|
-
const s = e[n], a = e[n + 1];
|
|
160
|
-
t.push(s), a && (this.needsExplicitSeparator(s, a) ? t.push(". ") : t.push(" "));
|
|
161
|
-
}
|
|
162
|
-
return t.join("");
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Determine if two accessibility labels need explicit separation
|
|
166
|
-
*/
|
|
167
|
-
needsExplicitSeparator(e, t) {
|
|
168
|
-
const n = /[.!?:;]$/.test(e.trim()), s = /^[A-Z]/.test(t.trim());
|
|
169
|
-
return !n && s;
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Extract accessibility text from a component segment
|
|
173
|
-
*/
|
|
174
|
-
extractAccessibilityText(e) {
|
|
175
|
-
const t = e.component;
|
|
176
|
-
switch (t.constructor.name) {
|
|
177
|
-
case "EnhancedText":
|
|
178
|
-
return t.content || t.title || "";
|
|
179
|
-
case "EnhancedImage":
|
|
180
|
-
return t.alt || t.accessibilityLabel || "Image";
|
|
181
|
-
case "EnhancedButton":
|
|
182
|
-
return t.title || t.accessibilityLabel || "Button";
|
|
183
|
-
case "EnhancedLink":
|
|
184
|
-
return t.title || t.accessibilityLabel || "Link";
|
|
185
|
-
case "ConcatenatedComponent":
|
|
186
|
-
return t.buildAccessibilityLabel();
|
|
187
|
-
default:
|
|
188
|
-
return t.accessibilityLabel || "";
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
/**
|
|
192
|
-
* Merge metadata from two concatenation operations
|
|
193
|
-
*/
|
|
194
|
-
mergeMetadata(e, t, n) {
|
|
195
|
-
return {
|
|
196
|
-
totalSegments: n,
|
|
197
|
-
accessibilityRole: this.mergeAccessibilityRoles(
|
|
198
|
-
e.accessibilityRole,
|
|
199
|
-
t.accessibilityRole
|
|
200
|
-
),
|
|
201
|
-
semanticStructure: this.mergeSemanticStructures(
|
|
202
|
-
e.semanticStructure,
|
|
203
|
-
t.semanticStructure
|
|
204
|
-
)
|
|
205
|
-
};
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* Merge accessibility roles from two components
|
|
209
|
-
*/
|
|
210
|
-
mergeAccessibilityRoles(e, t) {
|
|
211
|
-
return e === "text" && t === "text" ? "text" : e === "composite" || t === "composite" ? "composite" : "group";
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* Merge semantic structures from two components
|
|
215
|
-
*/
|
|
216
|
-
mergeSemanticStructures(e, t) {
|
|
217
|
-
return e === "inline" && t === "inline" ? "inline" : e === "block" && t === "block" ? "block" : "mixed";
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Determine accessibility role for a single component
|
|
221
|
-
*/
|
|
222
|
-
determineComponentAccessibilityRole(e) {
|
|
223
|
-
switch (e.constructor.name) {
|
|
224
|
-
case "EnhancedText":
|
|
225
|
-
return "text";
|
|
226
|
-
case "EnhancedImage":
|
|
227
|
-
return "group";
|
|
228
|
-
case "EnhancedButton":
|
|
229
|
-
case "EnhancedLink":
|
|
230
|
-
return "group";
|
|
231
|
-
default:
|
|
232
|
-
return "composite";
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
/**
|
|
236
|
-
* Determine semantic structure for a single component
|
|
237
|
-
*/
|
|
238
|
-
determineComponentSemanticStructure(e) {
|
|
239
|
-
switch (e.constructor.name) {
|
|
240
|
-
case "EnhancedText":
|
|
241
|
-
case "EnhancedImage":
|
|
242
|
-
return "inline";
|
|
243
|
-
case "EnhancedButton":
|
|
244
|
-
case "EnhancedLink":
|
|
245
|
-
return "inline";
|
|
246
|
-
// Buttons and links are typically inline in concatenation
|
|
247
|
-
default:
|
|
248
|
-
return "mixed";
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
/**
|
|
252
|
-
* Generate comprehensive accessibility tree for this concatenated component
|
|
253
|
-
*/
|
|
254
|
-
generateAccessibilityTree() {
|
|
255
|
-
return {
|
|
256
|
-
role: this.metadata.accessibilityRole,
|
|
257
|
-
label: this.buildAccessibilityLabel(),
|
|
258
|
-
children: this.segments.map((e) => this.segmentToAccessibilityNode(e))
|
|
259
|
-
};
|
|
260
|
-
}
|
|
261
|
-
/**
|
|
262
|
-
* Convert a component segment to an accessibility node
|
|
263
|
-
*/
|
|
264
|
-
segmentToAccessibilityNode(e) {
|
|
265
|
-
const t = e.component;
|
|
266
|
-
return {
|
|
267
|
-
role: this.determineComponentAccessibilityRole(t),
|
|
268
|
-
label: this.extractAccessibilityText(e),
|
|
269
|
-
children: t instanceof o ? t.generateAccessibilityTree().children : void 0
|
|
270
|
-
};
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
export {
|
|
274
|
-
o as ConcatenatedComponent
|
|
275
|
-
};
|
|
276
|
-
//# sourceMappingURL=concatenated-component.js.map
|