@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":"EnhancedLink.js","sources":["../../src/components/EnhancedLink.ts"],"sourcesContent":["/**\n * Enhanced Link Component\n * \n * A control for navigating to a URL that matches the SwiftUI Link API exactly.\n * iOS 14.0+ equivalent for web applications.\n */\n\nimport { isSignal, createComputed } from '../reactive'\nimport type { Signal } from '../reactive/types'\nimport { h } from '../runtime'\nimport type { ComponentInstance, ComponentProps, DOMNode } from '../runtime/types'\nimport { withModifiers } from './wrapper'\nimport type { Concatenatable, ComponentSegment, ConcatenationMetadata } from '../concatenation/types'\nimport { ConcatenatedComponent } from '../concatenation/concatenated-component'\nimport { Text } from './Text'\n\n/**\n * Link target types for different behaviors\n */\nexport type LinkTarget = '_self' | '_blank' | '_parent' | '_top'\n\n/**\n * Link routing behavior for internal vs external links\n */\nexport type LinkRoutingMode = 'auto' | 'external' | 'internal' | 'spa'\n\n/**\n * Enhanced Link Properties (combines SwiftUI API with web-specific features)\n */\nexport interface EnhancedLinkProps extends ComponentProps {\n /** The destination URL - matches SwiftUI's destination parameter */\n destination: string | URL | Signal<string | URL>\n \n /** Optional text content for simple links */\n text?: string | Signal<string>\n \n /** Label content (for closure-style links) */\n label?: () => ComponentInstance\n \n /** Complex children content (for backward compatibility) */\n children?: string | ComponentInstance | (string | ComponentInstance)[]\n \n /** Environment action override (matches SwiftUI's openURL environment) */\n openURLAction?: (url: string) => 'handled' | 'systemAction'\n\n // Navigation Control\n /** Target window for navigation */\n target?: LinkTarget | Signal<LinkTarget>\n \n /** Routing behavior mode */\n routingMode?: LinkRoutingMode | Signal<LinkRoutingMode>\n \n /** Download file functionality */\n download?: boolean | string | Signal<boolean | string>\n \n /** Custom rel attributes */\n rel?: string | Signal<string>\n\n // Event Handling\n /** Click event handler */\n onPress?: (event: Event) => void\n \n /** Pre-navigation hook with cancellation support */\n onBeforeNavigation?: (url: string) => boolean | Promise<boolean>\n \n /** Custom internal routing handler */\n onInternalNavigation?: (path: string) => boolean | Promise<boolean>\n\n // State Management\n /** Disabled state */\n disabled?: boolean | Signal<boolean>\n\n // Accessibility\n /** Custom ARIA label */\n accessibilityLabel?: string | Signal<string>\n \n /** ARIA description/hint */\n accessibilityHint?: string | Signal<string>\n \n /** Custom ARIA role */\n accessibilityRole?: string | Signal<string>\n}\n\n/**\n * Enhanced Link Component Implementation\n */\nexport class EnhancedLinkComponent implements ComponentInstance<EnhancedLinkProps>, Concatenatable<EnhancedLinkProps> {\n public readonly type = 'component' as const\n public readonly id: string\n public readonly props: EnhancedLinkProps\n\n constructor(props: EnhancedLinkProps) {\n this.props = props\n this.id = `enhanced-link-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n }\n\n private resolveValue<T>(value: T | Signal<T>): T {\n return isSignal(value) ? value() : value\n }\n\n private getDestination(): string {\n const dest = this.resolveValue(this.props.destination)\n return dest instanceof URL ? dest.toString() : dest\n }\n\n private getTarget(): LinkTarget {\n const explicitTarget = this.resolveValue(this.props.target)\n if (explicitTarget) {\n return explicitTarget\n }\n \n // Auto-target: external links default to _blank for security\n const dest = this.resolveValue(this.props.destination)\n const destination = dest instanceof URL ? dest.toString() : dest\n if (this.isExternalURL(destination)) {\n return '_blank'\n }\n \n return '_self'\n }\n\n private getRoutingMode(): LinkRoutingMode {\n return this.resolveValue(this.props.routingMode) || 'auto'\n }\n\n private getRel(): string {\n const customRel = this.resolveValue(this.props.rel)\n const target = this.getTarget()\n const destination = this.getDestination()\n \n // Auto-generate security attributes for external links\n const isExternal = this.isExternalURL(destination)\n const autoRel = isExternal && target === '_blank' ? 'noopener noreferrer' : ''\n \n if (customRel && autoRel) {\n return `${customRel} ${autoRel}`.trim()\n }\n return customRel || autoRel\n }\n\n private getDownload(): boolean | string | undefined {\n return this.resolveValue(this.props.download)\n }\n\n private isDisabled(): boolean {\n return this.resolveValue(this.props.disabled) || false\n }\n\n private getAccessibilityLabel(): string | undefined {\n return this.resolveValue(this.props.accessibilityLabel)\n }\n\n private getAccessibilityHint(): string | undefined {\n return this.resolveValue(this.props.accessibilityHint)\n }\n\n private getAccessibilityRole(): string | undefined {\n return this.resolveValue(this.props.accessibilityRole)\n }\n\n private shouldUseInternalRouting(url: string): boolean {\n const mode = this.getRoutingMode()\n \n if (mode === 'internal') return true\n if (mode === 'external') return false\n if (mode === 'spa') return true\n \n // Auto mode logic\n if (this.isSpecialScheme(url)) return false\n if (this.isExternalURL(url)) return false\n \n return true // Internal path\n }\n\n private isSpecialScheme(url: string): boolean {\n return /^(mailto|tel|sms|ftp|file):/.test(url)\n }\n\n\n private async handleClick(event: Event): Promise<void> {\n // Check if disabled\n if (this.isDisabled()) {\n event.preventDefault()\n return\n }\n\n // Call onPress if provided\n if (this.props.onPress) {\n try {\n this.props.onPress(event)\n } catch (error) {\n console.error('Link onPress error:', error)\n }\n }\n\n // Don't prevent default for special schemes (let browser handle them)\n const destination = this.getDestination()\n if (this.isSpecialScheme(destination)) {\n return // Let browser handle mailto:, tel:, etc.\n }\n\n event.preventDefault()\n\n // Check for custom openURL environment action (SwiftUI pattern)\n if (this.props.openURLAction) {\n const result = this.props.openURLAction(destination)\n if (result === 'handled') {\n return // Custom handler took care of it\n }\n }\n\n // Call onBeforeNavigation hook\n if (this.props.onBeforeNavigation) {\n try {\n const shouldContinue = await this.props.onBeforeNavigation(destination)\n if (!shouldContinue) {\n return // Navigation cancelled\n }\n } catch (error) {\n console.error('Link onBeforeNavigation error:', error)\n throw error // Re-throw to prevent navigation\n }\n }\n\n // Determine navigation method\n const target = this.getTarget()\n const routingMode = this.getRoutingMode()\n\n if (this.shouldUseInternalRouting(destination)) {\n // Internal routing\n if (this.props.onInternalNavigation) {\n try {\n const handled = await this.props.onInternalNavigation(destination)\n if (handled) {\n return // Custom internal navigation handled it\n }\n } catch (error) {\n console.error('Link onInternalNavigation error:', error)\n // Continue with default handling\n }\n }\n\n // Default internal navigation handling\n if (routingMode === 'spa') {\n this.handleSPANavigation(destination)\n } else if (target === '_blank') {\n window.open(destination, target)\n } else {\n window.location.href = destination\n }\n } else {\n // External navigation\n if (target === '_blank' || target === '_top' || target === '_parent') {\n window.open(destination, target)\n } else {\n window.location.href = destination\n }\n }\n }\n\n private handleSPANavigation(path: string): void {\n // Use History API for single-page app navigation\n if (typeof window !== 'undefined' && window.history && window.history.pushState) {\n window.history.pushState(null, '', path)\n // Dispatch popstate event to notify app of navigation\n window.dispatchEvent(new PopStateEvent('popstate'))\n } else {\n // Fallback to regular navigation\n window.location.href = path\n }\n }\n\n private isExternalURL(url: string): boolean {\n try {\n const urlObj = new URL(url, window.location.href)\n return urlObj.hostname !== window.location.hostname\n } catch {\n return false\n }\n }\n\n private renderContent(): DOMNode[] {\n // If we have a label closure, use it (SwiftUI pattern)\n if (this.props.label) {\n const labelComponent = this.props.label()\n const rendered = labelComponent.render()\n return Array.isArray(rendered) ? rendered : [rendered]\n }\n \n // If we have children (backward compatibility)\n if (this.props.children) {\n return this.renderChildren()\n }\n \n // Use Text component for reactive text content\n // Convert URL to string and handle reactive signals properly\n let textContent: string | Signal<string>\n if (this.props.text) {\n textContent = this.props.text\n } else {\n // Fallback to destination, but convert URL to string\n if (isSignal(this.props.destination)) {\n // Create a computed that derives string from the reactive destination\n textContent = createComputed(() => this.getDestination())\n } else {\n textContent = this.getDestination() // Convert static URL to string\n }\n }\n \n const textComponent = Text(textContent)\n const rendered = textComponent.render()\n return Array.isArray(rendered) ? rendered : [rendered]\n }\n\n private renderChildren(): DOMNode[] {\n const { children } = this.props\n if (!children) return []\n\n // Handle array of children\n if (Array.isArray(children)) {\n return children.map(child => this.renderChild(child)).flat()\n }\n\n // Handle single child\n return this.renderChild(children)\n }\n\n private renderChild(child: string | ComponentInstance): DOMNode[] {\n if (typeof child === 'string') {\n const textComponent = Text(child)\n const rendered = textComponent.render()\n return Array.isArray(rendered) ? rendered : [rendered]\n } else {\n const rendered = child.render()\n return Array.isArray(rendered) ? rendered : [rendered]\n }\n }\n\n render(): DOMNode {\n const content = this.renderContent()\n const disabled = this.isDisabled()\n \n // Build props object\n const props: Record<string, any> = {\n id: this.id,\n 'data-component': 'enhanced-link'\n }\n\n // Add href (reactive if needed)\n if (isSignal(this.props.destination)) {\n props.href = () => this.getDestination()\n } else {\n props.href = this.getDestination()\n }\n\n // Add target (reactive if needed)\n if (this.props.target) {\n if (isSignal(this.props.target)) {\n props.target = () => this.getTarget()\n } else {\n props.target = this.getTarget()\n }\n }\n\n // Add rel (reactive if needed)\n const rel = this.getRel()\n if (rel) {\n if (isSignal(this.props.rel) || isSignal(this.props.target)) {\n props.rel = () => this.getRel()\n } else {\n props.rel = rel\n }\n }\n\n // Add download (reactive if needed)\n const download = this.getDownload()\n if (download !== undefined) {\n if (isSignal(this.props.download)) {\n props.download = () => this.getDownload()\n } else if (download === true) {\n props.download = true\n } else if (typeof download === 'string') {\n props.download = download\n }\n }\n\n // Add accessibility attributes\n const accessibilityLabel = this.getAccessibilityLabel()\n if (accessibilityLabel) {\n if (isSignal(this.props.accessibilityLabel)) {\n props['aria-label'] = () => this.getAccessibilityLabel()\n } else {\n props['aria-label'] = accessibilityLabel\n }\n }\n\n const accessibilityHint = this.getAccessibilityHint()\n if (accessibilityHint) {\n if (isSignal(this.props.accessibilityHint)) {\n props['aria-describedby'] = () => this.getAccessibilityHint()\n } else {\n props['aria-describedby'] = accessibilityHint\n }\n }\n\n const accessibilityRole = this.getAccessibilityRole()\n if (accessibilityRole) {\n if (isSignal(this.props.accessibilityRole)) {\n props.role = () => this.getAccessibilityRole()\n } else {\n props.role = accessibilityRole\n }\n }\n\n // Add disabled state\n if (disabled) {\n props['aria-disabled'] = 'true'\n props.tabindex = '-1'\n }\n\n // Add event handlers\n props.onclick = (e: Event) => this.handleClick(e)\n\n // Add base styles (can be overridden by modifiers)\n props.style = {\n textDecoration: 'none',\n color: 'inherit',\n cursor: disabled ? 'not-allowed' : 'pointer',\n opacity: disabled ? 0.6 : 1\n }\n\n const link = h('a', props, ...content)\n \n return link\n }\n\n // Concatenation support\n concat<U extends Concatenatable<any>>(other: U): ConcatenatedComponent<EnhancedLinkProps | U> {\n const thisSegment = this.toSegment()\n const otherSegment = other.toSegment()\n \n const metadata: ConcatenationMetadata = {\n totalSegments: 2,\n accessibilityRole: 'composite',\n semanticStructure: 'inline'\n }\n \n return new ConcatenatedComponent([thisSegment, otherSegment], metadata)\n }\n \n toSegment(): ComponentSegment {\n return {\n id: this.id,\n component: this,\n modifiers: [],\n render: () => this.render()\n }\n }\n \n isConcatenatable(): boolean {\n return true\n }\n}\n\n/**\n * Create enhanced Link component with modifier support\n * \n * Supports both SwiftUI-compatible API and object-based API for backward compatibility:\n * - SwiftUI API: Link(\"text\", \"destination\")\n * - Object API: Link({ destination: \"url\", children: \"text\", ... })\n */\nexport function Link(\n textOrProps: string | Signal<string> | EnhancedLinkProps,\n destination?: string | URL | Signal<string | URL>\n): any {\n // SwiftUI API: Link(text, destination)\n if (destination !== undefined) {\n const linkProps: EnhancedLinkProps = { \n text: textOrProps as string | Signal<string>, \n destination \n }\n const component = new EnhancedLinkComponent(linkProps)\n return withModifiers(component)\n }\n \n // Object API: Link({ destination, children, ... })\n const props = textOrProps as EnhancedLinkProps\n const component = new EnhancedLinkComponent(props)\n return withModifiers(component)\n}\n\n/**\n * Environment-style OpenURL Action (matches SwiftUI pattern)\n */\nexport type OpenURLAction = (url: string) => 'handled' | 'systemAction'\n\n/**\n * Enhanced Link Utilities (comprehensive web link patterns)\n */\nexport const LinkUtils = {\n /**\n * Create an external link that opens in a new tab\n */\n external(url: string, label: string, options: Partial<EnhancedLinkProps> = {}) {\n return {\n destination: url,\n children: label,\n target: '_blank' as LinkTarget,\n routingMode: 'external' as LinkRoutingMode,\n rel: 'noopener noreferrer external',\n accessibilityHint: 'Opens in a new tab',\n ...options,\n }\n },\n\n /**\n * Create an internal link for same-domain navigation\n */\n internal(path: string, label: string, options: Partial<EnhancedLinkProps> = {}) {\n return {\n destination: path,\n children: label,\n routingMode: 'internal' as LinkRoutingMode,\n target: '_self' as LinkTarget,\n ...options,\n }\n },\n\n /**\n * Create a SPA link using History API\n */\n spa(path: string, label: string, options: Partial<EnhancedLinkProps> = {}) {\n return {\n destination: path,\n children: label,\n routingMode: 'spa' as LinkRoutingMode,\n target: '_self' as LinkTarget,\n accessibilityHint: 'Navigates within the app',\n ...options,\n }\n },\n\n /**\n * Create an email link with optional subject and body\n */\n email(\n address: string,\n subject?: string,\n body?: string,\n label?: string\n ) {\n let mailto = `mailto:${address}`\n const params = new URLSearchParams()\n \n if (subject) params.append('subject', subject)\n if (body) params.append('body', body)\n \n if (params.toString()) {\n mailto += `?${params.toString()}`\n }\n\n return {\n destination: mailto,\n children: label || address,\n accessibilityLabel: `Send email to ${address}`,\n accessibilityHint: 'Opens your email app',\n }\n },\n\n /**\n * Create a phone link with formatted display\n */\n phone(phoneNumber: string, label?: string) {\n // Clean phone number for tel: link\n const cleanNumber = phoneNumber.replace(/[^\\d+]/g, '')\n \n return {\n destination: `tel:${cleanNumber}`,\n children: label || phoneNumber,\n accessibilityLabel: `Call ${phoneNumber}`,\n accessibilityHint: 'Opens your phone app',\n }\n },\n\n /**\n * Create a download link\n */\n download(url: string, filename?: string, label?: string) {\n return {\n destination: url,\n children: label || `Download ${filename || 'file'}`,\n download: filename || true,\n accessibilityLabel: `Download ${filename || 'file'}`,\n accessibilityHint: 'Downloads file to your device',\n }\n },\n\n /**\n * Social media link utilities\n */\n social: {\n twitter(username: string, label?: string) {\n return LinkUtils.external(\n `https://twitter.com/${username}`,\n label || `@${username}`,\n { accessibilityLabel: `Visit ${username} on Twitter` }\n )\n },\n\n github(username: string, label?: string) {\n return LinkUtils.external(\n `https://github.com/${username}`,\n label || username,\n { accessibilityLabel: `Visit ${username} on GitHub` }\n )\n },\n\n linkedin(profile: string, label?: string) {\n return LinkUtils.external(\n `https://linkedin.com/in/${profile}`,\n label || profile,\n { accessibilityLabel: `Visit ${profile} on LinkedIn` }\n )\n },\n\n instagram(username: string, label?: string) {\n return LinkUtils.external(\n `https://instagram.com/${username}`,\n label || `@${username}`,\n { accessibilityLabel: `Visit ${username} on Instagram` }\n )\n },\n\n facebook(username: string, label?: string) {\n return LinkUtils.external(\n `https://facebook.com/${username}`,\n label || username,\n { accessibilityLabel: `Visit ${username} on Facebook` }\n )\n },\n },\n\n /**\n * App store link utilities\n */\n appStore: {\n ios(appId: string, label?: string) {\n return LinkUtils.external(\n `https://apps.apple.com/app/id${appId}`,\n label || 'Download from App Store',\n { \n accessibilityLabel: 'Download from the iOS App Store',\n accessibilityHint: 'Opens App Store app or website'\n }\n )\n },\n\n android(packageName: string, label?: string) {\n return LinkUtils.external(\n `https://play.google.com/store/apps/details?id=${packageName}`,\n label || 'Get it on Google Play',\n {\n accessibilityLabel: 'Download from Google Play Store',\n accessibilityHint: 'Opens Google Play Store app or website'\n }\n )\n },\n },\n\n /**\n * Create a custom OpenURL action\n */\n openURLAction(handler: (url: string) => boolean): OpenURLAction {\n return (url: string) => handler(url) ? 'handled' : 'systemAction'\n }\n}"],"names":["EnhancedLinkComponent","props","__publicField","value","isSignal","dest","explicitTarget","destination","customRel","target","autoRel","url","mode","event","error","routingMode","path","rendered","textContent","createComputed","Text","children","child","content","disabled","rel","download","accessibilityLabel","accessibilityHint","accessibilityRole","e","h","other","thisSegment","otherSegment","metadata","ConcatenatedComponent","Link","textOrProps","linkProps","component","withModifiers","LinkUtils","label","options","address","subject","body","mailto","params","phoneNumber","filename","username","profile","appId","packageName","handler"],"mappings":"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"}
|
package/dist/components/Form.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../reactive/cleanup.cjs");require("../reactive/unified-scheduler.cjs");const h=require("../reactive/effect.cjs"),u=require("../reactive/signal.cjs");require("../reactive/scheduler.cjs");require("../reactive/theme.cjs");require("../runtime/component.cjs");require("../runtime/context.cjs");require("../runtime/dev-tools.cjs");require("../runtime/dom-bridge.cjs");require("../runtime/error-boundary.cjs");require("../runtime/error-reporting.cjs");require("../runtime/performance.cjs");const l=require("../runtime/renderer.cjs");require("../runtime/element-override.cjs");require("../runtime/semantic-role-manager.cjs");require("../runtime/development-warnings.cjs");const c=require("./wrapper.cjs");var f=Object.defineProperty,p=(r,e,t)=>e in r?f(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,a=(r,e,t)=>p(r,typeof e!="symbol"?e+"":e,t);class m{constructor(e){this.props=e,a(this,"type","component"),a(this,"id"),a(this,"mounted",!1),a(this,"cleanup",[]),a(this,"formElement",null),a(this,"validationErrors"),a(this,"setValidationErrors"),a(this,"setIsValid"),a(this,"handleSubmit",async n=>{if(n.preventDefault(),this.props.validateOnSubmit!==!1){const o=this.validateForm();if(this.setValidationErrors(o),o.length>0)return}if(this.props.onSubmit){const o=this.extractFormData();await this.props.onSubmit(o)}}),a(this,"handleChange",()=>{if(this.props.validateOnChange){const n=this.validateForm();this.setValidationErrors(n)}}),this.id=`form-${Date.now()}-${Math.random().toString(36).substr(2,9)}`;const[t,i]=u.createSignal([]),[,s]=u.createSignal(!0);this.validationErrors=t,this.setValidationErrors=i,this.setIsValid=s,h.createEffect(()=>{const n=this.validationErrors(),o=n.length===0;this.setIsValid(o),this.props.onValidationChange&&this.props.onValidationChange(o,n)})}extractFormData(){if(!this.formElement)return{};const e=new FormData(this.formElement),t={};for(const[i,s]of e.entries())t[i]?Array.isArray(t[i])?t[i].push(s):t[i]=[t[i],s]:t[i]=s;return t}validateForm(){if(!this.formElement)return[];const e=[];return this.formElement.querySelectorAll("input, select, textarea").forEach(i=>{const s=i,n=s.name||s.id;s.checkValidity()||e.push({field:n,message:s.validationMessage,code:"html5_validation"}),s.hasAttribute("required")&&!s.value.trim()&&e.push({field:n,message:`${n} is required`,code:"required"})}),e}getFormStyles(){const{style:e="automatic",spacing:t=16}=this.props,i={display:"flex",flexDirection:"column",gap:`${t}px`};switch(e){case"grouped":return{...i,backgroundColor:"#ffffff",border:"1px solid #e0e0e0",borderRadius:"12px",padding:"20px",boxShadow:"0 2px 8px rgba(0,0,0,0.1)"};case"inset":return{...i,backgroundColor:"#f8f9fa",border:"1px solid #e9ecef",borderRadius:"8px",padding:"16px",margin:"0 16px"};case"plain":return i;default:return{...i,backgroundColor:"#ffffff",borderRadius:"8px",padding:"16px"}}}renderValidationSummary(){const e=this.validationErrors();return!this.props.showValidationSummary||e.length===0?null:l.h("div",{style:{backgroundColor:"#fff5f5",border:"1px solid #fed7d7",borderRadius:"6px",padding:"12px 16px",marginBottom:"16px"}},l.h("div",{style:{fontSize:"14px",fontWeight:"600",color:"#e53e3e",marginBottom:"8px"}},l.text("Please fix the following errors:")),l.h("ul",{style:{margin:"0",paddingLeft:"20px",fontSize:"14px",color:"#c53030"}},...e.map(t=>l.h("li",{key:t.field},l.text(t.message)))))}render(){const{children:e=[],accessibilityLabel:t,accessibilityRole:i="form"}=this.props;return[l.h("form",{ref:s=>{this.formElement=s,s&&!this.mounted&&(s.addEventListener("submit",this.handleSubmit),s.addEventListener("change",this.handleChange),s.addEventListener("input",this.handleChange),this.cleanup.push(()=>{s.removeEventListener("submit",this.handleSubmit),s.removeEventListener("change",this.handleChange),s.removeEventListener("input",this.handleChange)}),this.mounted=!0)},style:this.getFormStyles(),"aria-label":t,role:i,noValidate:!0},...this.renderValidationSummary()!==null?[this.renderValidationSummary()]:[],...e.flatMap(s=>s.render()))]}}function d(r,e={}){const t={...e,children:r},i=new m(t);return c.withModifiers(i)}const g={Automatic(r,e={}){return d(r,{...e,style:"automatic"})},Grouped(r,e={}){return d(r,{...e,style:"grouped"})},Inset(r,e={}){return d(r,{...e,style:"inset"})},Plain(r,e={}){return d(r,{...e,style:"plain"})}},b={rules:{required:r=>r!=null&&r!=="",email:r=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(r),minLength:r=>e=>e.length>=r,maxLength:r=>e=>e.length<=r,pattern:r=>e=>r.test(e),number:r=>!Number.isNaN(Number(r)),integer:r=>Number.isInteger(Number(r)),min:r=>e=>Number(e)>=r,max:r=>e=>Number(e)<=r},validateField(r,e){for(const t of e){const i=t(r);if(i!==!0)return{field:"field",message:typeof i=="string"?i:"Validation failed",code:"custom_validation"}}return null}};exports.BasicForm=d;exports.BasicFormImplementation=m;exports.BasicFormStyles=g;exports.BasicFormValidation=b;
|
|
2
|
-
//# sourceMappingURL=Form.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Form.cjs","sources":["../../src/components/Form.ts"],"sourcesContent":["/**\n * BasicForm Component (Phase 6.4.1)\n *\n * Lightweight SwiftUI-inspired Form component for Core-only applications.\n * Provides essential form functionality with automatic styling and basic validation\n * without the complexity of the full Forms plugin. Perfect for simple forms,\n * contact forms, and login pages where minimal bundle size is important.\n *\n * For advanced form features (comprehensive validation, state management,\n * multi-step forms), use the Form component from @tachui/forms.\n */\n\nimport type { ModifiableComponent, ModifierBuilder } from '../modifiers/types'\nimport { createEffect, createSignal } from '../reactive'\n// Signal type import removed - using function signatures instead\nimport { h, text } from '../runtime'\nimport type { ComponentInstance, ComponentProps } from '../runtime/types'\nimport { withModifiers } from './wrapper'\n\n/**\n * BasicForm component properties\n */\nexport interface BasicFormProps extends ComponentProps {\n children?: ComponentInstance[]\n\n // Form behavior\n onSubmit?: (data: FormData) => void | Promise<void>\n onValidationChange?: (isValid: boolean, errors: ValidationError[]) => void\n\n // Validation\n validateOnChange?: boolean\n validateOnSubmit?: boolean\n showValidationSummary?: boolean\n\n // Styling\n style?: 'automatic' | 'grouped' | 'inset' | 'plain'\n spacing?: number\n\n // Accessibility\n accessibilityLabel?: string\n accessibilityRole?: string\n}\n\n/**\n * Validation error structure\n */\nexport interface ValidationError {\n field: string\n message: string\n code?: string\n}\n\n/**\n * Form data structure\n */\nexport interface FormData {\n // biome-ignore lint/suspicious/noExplicitAny: Form data requires flexible value types\n [key: string]: any\n}\n\n/**\n * BasicForm component class\n */\nexport class BasicFormImplementation implements ComponentInstance<BasicFormProps> {\n public readonly type = 'component' as const\n public readonly id: string\n public mounted = false\n public cleanup: (() => void)[] = []\n private formElement: HTMLFormElement | null = null\n private validationErrors: () => ValidationError[]\n private setValidationErrors: (errors: ValidationError[]) => ValidationError[]\n // isValid accessor removed - value tracked internally\n private setIsValid: (valid: boolean) => boolean\n\n constructor(public props: BasicFormProps) {\n this.id = `form-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n\n // Initialize validation signals\n const [errors, setErrors] = createSignal<ValidationError[]>([])\n const [, setValid] = createSignal(true)\n this.validationErrors = errors\n this.setValidationErrors = setErrors\n // this.isValid = valid - removed unused accessor\n this.setIsValid = setValid\n\n // Setup validation change effect\n createEffect(() => {\n const currentErrors = this.validationErrors()\n const currentValid = currentErrors.length === 0\n this.setIsValid(currentValid)\n\n if (this.props.onValidationChange) {\n this.props.onValidationChange(currentValid, currentErrors)\n }\n })\n }\n\n /**\n * Extract form data from form elements\n */\n private extractFormData(): FormData {\n if (!this.formElement) return {}\n\n const formData = new FormData(this.formElement)\n const data: FormData = {}\n\n // Convert FormData to plain object\n for (const [key, value] of formData.entries()) {\n if (data[key]) {\n // Handle multiple values (checkboxes, multi-select)\n if (Array.isArray(data[key])) {\n // biome-ignore lint/suspicious/noExplicitAny: Form data array manipulation requires dynamic typing\n ;(data[key] as any[]).push(value)\n } else {\n data[key] = [data[key], value]\n }\n } else {\n data[key] = value\n }\n }\n\n return data\n }\n\n /**\n * Validate all form fields\n */\n private validateForm(): ValidationError[] {\n if (!this.formElement) return []\n\n const errors: ValidationError[] = []\n const inputs = this.formElement.querySelectorAll('input, select, textarea')\n\n inputs.forEach((input) => {\n const element = input as HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement\n const name = element.name || element.id\n\n // Check HTML5 validation\n if (!element.checkValidity()) {\n errors.push({\n field: name,\n message: element.validationMessage,\n code: 'html5_validation',\n })\n }\n\n // Check required fields\n if (element.hasAttribute('required') && !element.value.trim()) {\n errors.push({\n field: name,\n message: `${name} is required`,\n code: 'required',\n })\n }\n })\n\n return errors\n }\n\n /**\n * Handle form submission\n */\n private handleSubmit = async (event: Event) => {\n event.preventDefault()\n\n if (this.props.validateOnSubmit !== false) {\n const errors = this.validateForm()\n this.setValidationErrors(errors)\n\n if (errors.length > 0) {\n return\n }\n }\n\n if (this.props.onSubmit) {\n const data = this.extractFormData()\n await this.props.onSubmit(data)\n }\n }\n\n /**\n * Handle form input changes\n */\n private handleChange = () => {\n if (this.props.validateOnChange) {\n const errors = this.validateForm()\n this.setValidationErrors(errors)\n }\n }\n\n /**\n * Get form styling based on style prop\n */\n private getFormStyles() {\n const { style = 'automatic', spacing = 16 } = this.props\n\n const baseStyles = {\n display: 'flex',\n flexDirection: 'column' as const,\n gap: `${spacing}px`,\n }\n\n switch (style) {\n case 'grouped':\n return {\n ...baseStyles,\n backgroundColor: '#ffffff',\n border: '1px solid #e0e0e0',\n borderRadius: '12px',\n padding: '20px',\n boxShadow: '0 2px 8px rgba(0,0,0,0.1)',\n }\n\n case 'inset':\n return {\n ...baseStyles,\n backgroundColor: '#f8f9fa',\n border: '1px solid #e9ecef',\n borderRadius: '8px',\n padding: '16px',\n margin: '0 16px',\n }\n\n case 'plain':\n return baseStyles\n default:\n return {\n ...baseStyles,\n backgroundColor: '#ffffff',\n borderRadius: '8px',\n padding: '16px',\n }\n }\n }\n\n /**\n * Render validation summary\n */\n private renderValidationSummary() {\n const errors = this.validationErrors()\n\n if (!this.props.showValidationSummary || errors.length === 0) {\n return null\n }\n\n return h(\n 'div',\n {\n style: {\n backgroundColor: '#fff5f5',\n border: '1px solid #fed7d7',\n borderRadius: '6px',\n padding: '12px 16px',\n marginBottom: '16px',\n },\n },\n h(\n 'div',\n {\n style: {\n fontSize: '14px',\n fontWeight: '600',\n color: '#e53e3e',\n marginBottom: '8px',\n },\n },\n text('Please fix the following errors:')\n ),\n\n h(\n 'ul',\n {\n style: {\n margin: '0',\n paddingLeft: '20px',\n fontSize: '14px',\n color: '#c53030',\n },\n },\n ...errors.map((error) => h('li', { key: error.field }, text(error.message)))\n )\n )\n }\n\n render() {\n const { children = [], accessibilityLabel, accessibilityRole = 'form' } = this.props\n\n return [\n h(\n 'form',\n {\n ref: (el: HTMLFormElement) => {\n this.formElement = el\n\n // Add event listeners when mounted\n if (el && !this.mounted) {\n el.addEventListener('submit', this.handleSubmit)\n el.addEventListener('change', this.handleChange)\n el.addEventListener('input', this.handleChange)\n\n this.cleanup.push(() => {\n el.removeEventListener('submit', this.handleSubmit)\n el.removeEventListener('change', this.handleChange)\n el.removeEventListener('input', this.handleChange)\n })\n\n this.mounted = true\n }\n },\n style: this.getFormStyles(),\n 'aria-label': accessibilityLabel,\n role: accessibilityRole,\n noValidate: true, // We handle validation manually\n },\n // Validation summary\n ...(this.renderValidationSummary() !== null ? [this.renderValidationSummary()!] : []),\n\n // Form content\n ...children.flatMap((child) => child.render())\n ),\n ]\n }\n}\n\n/**\n * BasicForm component function\n */\nexport function BasicForm(\n children: ComponentInstance[],\n props: Omit<BasicFormProps, 'children'> = {}\n): ModifiableComponent<BasicFormProps> & { modifier: ModifierBuilder<ModifiableComponent<BasicFormProps>> } {\n const formProps: BasicFormProps = { ...props, children }\n const component = new BasicFormImplementation(formProps)\n return withModifiers(component)\n}\n\n\n/**\n * BasicForm style variants\n */\nexport const BasicFormStyles = {\n /**\n * Automatic form styling (default)\n */\n Automatic(children: ComponentInstance[], props: Omit<BasicFormProps, 'children' | 'style'> = {}) {\n return BasicForm(children, { ...props, style: 'automatic' })\n },\n\n /**\n * Grouped form with container styling\n */\n Grouped(children: ComponentInstance[], props: Omit<BasicFormProps, 'children' | 'style'> = {}) {\n return BasicForm(children, { ...props, style: 'grouped' })\n },\n\n /**\n * Inset form styling\n */\n Inset(children: ComponentInstance[], props: Omit<BasicFormProps, 'children' | 'style'> = {}) {\n return BasicForm(children, { ...props, style: 'inset' })\n },\n\n /**\n * Plain form without styling\n */\n Plain(children: ComponentInstance[], props: Omit<BasicFormProps, 'children' | 'style'> = {}) {\n return BasicForm(children, { ...props, style: 'plain' })\n },\n}\n\n\n/**\n * BasicForm validation utilities\n */\nexport const BasicFormValidation = {\n /**\n * Common validation rules\n */\n rules: {\n // biome-ignore lint/suspicious/noExplicitAny: Validation rules accept any input type\n required: (value: any) => value != null && value !== '',\n email: (value: string) => /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(value),\n minLength: (min: number) => (value: string) => value.length >= min,\n maxLength: (max: number) => (value: string) => value.length <= max,\n pattern: (regex: RegExp) => (value: string) => regex.test(value),\n number: (value: string) => !Number.isNaN(Number(value)),\n integer: (value: string) => Number.isInteger(Number(value)),\n min: (min: number) => (value: string) => Number(value) >= min,\n max: (max: number) => (value: string) => Number(value) <= max,\n },\n\n /**\n * Validate a single field\n */\n validateField(\n // biome-ignore lint/suspicious/noExplicitAny: Validation accepts any field value\n value: any,\n // biome-ignore lint/suspicious/noExplicitAny: Validation rules accept any input type\n rules: Array<(value: any) => boolean | string>\n ): ValidationError | null {\n for (const rule of rules) {\n const result = rule(value)\n if (result !== true) {\n return {\n field: 'field',\n message: typeof result === 'string' ? result : 'Validation failed',\n code: 'custom_validation',\n }\n }\n }\n return null\n },\n}\n\n"],"names":["BasicFormImplementation","props","__publicField","event","errors","data","setErrors","createSignal","setValid","createEffect","currentErrors","currentValid","formData","key","value","input","element","name","style","spacing","baseStyles","h","text","error","children","accessibilityLabel","accessibilityRole","el","child","BasicForm","formProps","component","withModifiers","BasicFormStyles","BasicFormValidation","min","max","regex","rules","rule","result"],"mappings":"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"}
|
package/dist/components/Form.js
DELETED
|
@@ -1,244 +0,0 @@
|
|
|
1
|
-
import "../reactive/cleanup.js";
|
|
2
|
-
import "../reactive/unified-scheduler.js";
|
|
3
|
-
import { createEffect as p } from "../reactive/effect.js";
|
|
4
|
-
import { createSignal as m } from "../reactive/signal.js";
|
|
5
|
-
import "../reactive/scheduler.js";
|
|
6
|
-
import "../reactive/theme.js";
|
|
7
|
-
import "../runtime/component.js";
|
|
8
|
-
import "../runtime/context.js";
|
|
9
|
-
import "../runtime/dev-tools.js";
|
|
10
|
-
import "../runtime/dom-bridge.js";
|
|
11
|
-
import "../runtime/error-boundary.js";
|
|
12
|
-
import "../runtime/error-reporting.js";
|
|
13
|
-
import "../runtime/performance.js";
|
|
14
|
-
import { h as l, text as u } from "../runtime/renderer.js";
|
|
15
|
-
import "../runtime/element-override.js";
|
|
16
|
-
import "../runtime/semantic-role-manager.js";
|
|
17
|
-
import "../runtime/development-warnings.js";
|
|
18
|
-
import { withModifiers as h } from "./wrapper.js";
|
|
19
|
-
var f = Object.defineProperty, c = (e, t, r) => t in e ? f(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r, n = (e, t, r) => c(e, typeof t != "symbol" ? t + "" : t, r);
|
|
20
|
-
class g {
|
|
21
|
-
constructor(t) {
|
|
22
|
-
this.props = t, n(this, "type", "component"), n(this, "id"), n(this, "mounted", !1), n(this, "cleanup", []), n(this, "formElement", null), n(this, "validationErrors"), n(this, "setValidationErrors"), n(this, "setIsValid"), n(this, "handleSubmit", async (o) => {
|
|
23
|
-
if (o.preventDefault(), this.props.validateOnSubmit !== !1) {
|
|
24
|
-
const a = this.validateForm();
|
|
25
|
-
if (this.setValidationErrors(a), a.length > 0)
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
if (this.props.onSubmit) {
|
|
29
|
-
const a = this.extractFormData();
|
|
30
|
-
await this.props.onSubmit(a);
|
|
31
|
-
}
|
|
32
|
-
}), n(this, "handleChange", () => {
|
|
33
|
-
if (this.props.validateOnChange) {
|
|
34
|
-
const o = this.validateForm();
|
|
35
|
-
this.setValidationErrors(o);
|
|
36
|
-
}
|
|
37
|
-
}), this.id = `form-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
38
|
-
const [r, i] = m([]), [, s] = m(!0);
|
|
39
|
-
this.validationErrors = r, this.setValidationErrors = i, this.setIsValid = s, p(() => {
|
|
40
|
-
const o = this.validationErrors(), a = o.length === 0;
|
|
41
|
-
this.setIsValid(a), this.props.onValidationChange && this.props.onValidationChange(a, o);
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Extract form data from form elements
|
|
46
|
-
*/
|
|
47
|
-
extractFormData() {
|
|
48
|
-
if (!this.formElement) return {};
|
|
49
|
-
const t = new FormData(this.formElement), r = {};
|
|
50
|
-
for (const [i, s] of t.entries())
|
|
51
|
-
r[i] ? Array.isArray(r[i]) ? r[i].push(s) : r[i] = [r[i], s] : r[i] = s;
|
|
52
|
-
return r;
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Validate all form fields
|
|
56
|
-
*/
|
|
57
|
-
validateForm() {
|
|
58
|
-
if (!this.formElement) return [];
|
|
59
|
-
const t = [];
|
|
60
|
-
return this.formElement.querySelectorAll("input, select, textarea").forEach((i) => {
|
|
61
|
-
const s = i, o = s.name || s.id;
|
|
62
|
-
s.checkValidity() || t.push({
|
|
63
|
-
field: o,
|
|
64
|
-
message: s.validationMessage,
|
|
65
|
-
code: "html5_validation"
|
|
66
|
-
}), s.hasAttribute("required") && !s.value.trim() && t.push({
|
|
67
|
-
field: o,
|
|
68
|
-
message: `${o} is required`,
|
|
69
|
-
code: "required"
|
|
70
|
-
});
|
|
71
|
-
}), t;
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Get form styling based on style prop
|
|
75
|
-
*/
|
|
76
|
-
getFormStyles() {
|
|
77
|
-
const { style: t = "automatic", spacing: r = 16 } = this.props, i = {
|
|
78
|
-
display: "flex",
|
|
79
|
-
flexDirection: "column",
|
|
80
|
-
gap: `${r}px`
|
|
81
|
-
};
|
|
82
|
-
switch (t) {
|
|
83
|
-
case "grouped":
|
|
84
|
-
return {
|
|
85
|
-
...i,
|
|
86
|
-
backgroundColor: "#ffffff",
|
|
87
|
-
border: "1px solid #e0e0e0",
|
|
88
|
-
borderRadius: "12px",
|
|
89
|
-
padding: "20px",
|
|
90
|
-
boxShadow: "0 2px 8px rgba(0,0,0,0.1)"
|
|
91
|
-
};
|
|
92
|
-
case "inset":
|
|
93
|
-
return {
|
|
94
|
-
...i,
|
|
95
|
-
backgroundColor: "#f8f9fa",
|
|
96
|
-
border: "1px solid #e9ecef",
|
|
97
|
-
borderRadius: "8px",
|
|
98
|
-
padding: "16px",
|
|
99
|
-
margin: "0 16px"
|
|
100
|
-
};
|
|
101
|
-
case "plain":
|
|
102
|
-
return i;
|
|
103
|
-
default:
|
|
104
|
-
return {
|
|
105
|
-
...i,
|
|
106
|
-
backgroundColor: "#ffffff",
|
|
107
|
-
borderRadius: "8px",
|
|
108
|
-
padding: "16px"
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Render validation summary
|
|
114
|
-
*/
|
|
115
|
-
renderValidationSummary() {
|
|
116
|
-
const t = this.validationErrors();
|
|
117
|
-
return !this.props.showValidationSummary || t.length === 0 ? null : l(
|
|
118
|
-
"div",
|
|
119
|
-
{
|
|
120
|
-
style: {
|
|
121
|
-
backgroundColor: "#fff5f5",
|
|
122
|
-
border: "1px solid #fed7d7",
|
|
123
|
-
borderRadius: "6px",
|
|
124
|
-
padding: "12px 16px",
|
|
125
|
-
marginBottom: "16px"
|
|
126
|
-
}
|
|
127
|
-
},
|
|
128
|
-
l(
|
|
129
|
-
"div",
|
|
130
|
-
{
|
|
131
|
-
style: {
|
|
132
|
-
fontSize: "14px",
|
|
133
|
-
fontWeight: "600",
|
|
134
|
-
color: "#e53e3e",
|
|
135
|
-
marginBottom: "8px"
|
|
136
|
-
}
|
|
137
|
-
},
|
|
138
|
-
u("Please fix the following errors:")
|
|
139
|
-
),
|
|
140
|
-
l(
|
|
141
|
-
"ul",
|
|
142
|
-
{
|
|
143
|
-
style: {
|
|
144
|
-
margin: "0",
|
|
145
|
-
paddingLeft: "20px",
|
|
146
|
-
fontSize: "14px",
|
|
147
|
-
color: "#c53030"
|
|
148
|
-
}
|
|
149
|
-
},
|
|
150
|
-
...t.map((r) => l("li", { key: r.field }, u(r.message)))
|
|
151
|
-
)
|
|
152
|
-
);
|
|
153
|
-
}
|
|
154
|
-
render() {
|
|
155
|
-
const { children: t = [], accessibilityLabel: r, accessibilityRole: i = "form" } = this.props;
|
|
156
|
-
return [
|
|
157
|
-
l(
|
|
158
|
-
"form",
|
|
159
|
-
{
|
|
160
|
-
ref: (s) => {
|
|
161
|
-
this.formElement = s, s && !this.mounted && (s.addEventListener("submit", this.handleSubmit), s.addEventListener("change", this.handleChange), s.addEventListener("input", this.handleChange), this.cleanup.push(() => {
|
|
162
|
-
s.removeEventListener("submit", this.handleSubmit), s.removeEventListener("change", this.handleChange), s.removeEventListener("input", this.handleChange);
|
|
163
|
-
}), this.mounted = !0);
|
|
164
|
-
},
|
|
165
|
-
style: this.getFormStyles(),
|
|
166
|
-
"aria-label": r,
|
|
167
|
-
role: i,
|
|
168
|
-
noValidate: !0
|
|
169
|
-
// We handle validation manually
|
|
170
|
-
},
|
|
171
|
-
...this.renderValidationSummary() !== null ? [this.renderValidationSummary()] : [],
|
|
172
|
-
...t.flatMap((s) => s.render())
|
|
173
|
-
)
|
|
174
|
-
];
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
function d(e, t = {}) {
|
|
178
|
-
const r = { ...t, children: e }, i = new g(r);
|
|
179
|
-
return h(i);
|
|
180
|
-
}
|
|
181
|
-
const A = {
|
|
182
|
-
/**
|
|
183
|
-
* Automatic form styling (default)
|
|
184
|
-
*/
|
|
185
|
-
Automatic(e, t = {}) {
|
|
186
|
-
return d(e, { ...t, style: "automatic" });
|
|
187
|
-
},
|
|
188
|
-
/**
|
|
189
|
-
* Grouped form with container styling
|
|
190
|
-
*/
|
|
191
|
-
Grouped(e, t = {}) {
|
|
192
|
-
return d(e, { ...t, style: "grouped" });
|
|
193
|
-
},
|
|
194
|
-
/**
|
|
195
|
-
* Inset form styling
|
|
196
|
-
*/
|
|
197
|
-
Inset(e, t = {}) {
|
|
198
|
-
return d(e, { ...t, style: "inset" });
|
|
199
|
-
},
|
|
200
|
-
/**
|
|
201
|
-
* Plain form without styling
|
|
202
|
-
*/
|
|
203
|
-
Plain(e, t = {}) {
|
|
204
|
-
return d(e, { ...t, style: "plain" });
|
|
205
|
-
}
|
|
206
|
-
}, R = {
|
|
207
|
-
/**
|
|
208
|
-
* Common validation rules
|
|
209
|
-
*/
|
|
210
|
-
rules: {
|
|
211
|
-
// biome-ignore lint/suspicious/noExplicitAny: Validation rules accept any input type
|
|
212
|
-
required: (e) => e != null && e !== "",
|
|
213
|
-
email: (e) => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e),
|
|
214
|
-
minLength: (e) => (t) => t.length >= e,
|
|
215
|
-
maxLength: (e) => (t) => t.length <= e,
|
|
216
|
-
pattern: (e) => (t) => e.test(t),
|
|
217
|
-
number: (e) => !Number.isNaN(Number(e)),
|
|
218
|
-
integer: (e) => Number.isInteger(Number(e)),
|
|
219
|
-
min: (e) => (t) => Number(t) >= e,
|
|
220
|
-
max: (e) => (t) => Number(t) <= e
|
|
221
|
-
},
|
|
222
|
-
/**
|
|
223
|
-
* Validate a single field
|
|
224
|
-
*/
|
|
225
|
-
validateField(e, t) {
|
|
226
|
-
for (const r of t) {
|
|
227
|
-
const i = r(e);
|
|
228
|
-
if (i !== !0)
|
|
229
|
-
return {
|
|
230
|
-
field: "field",
|
|
231
|
-
message: typeof i == "string" ? i : "Validation failed",
|
|
232
|
-
code: "custom_validation"
|
|
233
|
-
};
|
|
234
|
-
}
|
|
235
|
-
return null;
|
|
236
|
-
}
|
|
237
|
-
};
|
|
238
|
-
export {
|
|
239
|
-
d as BasicForm,
|
|
240
|
-
g as BasicFormImplementation,
|
|
241
|
-
A as BasicFormStyles,
|
|
242
|
-
R as BasicFormValidation
|
|
243
|
-
};
|
|
244
|
-
//# sourceMappingURL=Form.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Form.js","sources":["../../src/components/Form.ts"],"sourcesContent":["/**\n * BasicForm Component (Phase 6.4.1)\n *\n * Lightweight SwiftUI-inspired Form component for Core-only applications.\n * Provides essential form functionality with automatic styling and basic validation\n * without the complexity of the full Forms plugin. Perfect for simple forms,\n * contact forms, and login pages where minimal bundle size is important.\n *\n * For advanced form features (comprehensive validation, state management,\n * multi-step forms), use the Form component from @tachui/forms.\n */\n\nimport type { ModifiableComponent, ModifierBuilder } from '../modifiers/types'\nimport { createEffect, createSignal } from '../reactive'\n// Signal type import removed - using function signatures instead\nimport { h, text } from '../runtime'\nimport type { ComponentInstance, ComponentProps } from '../runtime/types'\nimport { withModifiers } from './wrapper'\n\n/**\n * BasicForm component properties\n */\nexport interface BasicFormProps extends ComponentProps {\n children?: ComponentInstance[]\n\n // Form behavior\n onSubmit?: (data: FormData) => void | Promise<void>\n onValidationChange?: (isValid: boolean, errors: ValidationError[]) => void\n\n // Validation\n validateOnChange?: boolean\n validateOnSubmit?: boolean\n showValidationSummary?: boolean\n\n // Styling\n style?: 'automatic' | 'grouped' | 'inset' | 'plain'\n spacing?: number\n\n // Accessibility\n accessibilityLabel?: string\n accessibilityRole?: string\n}\n\n/**\n * Validation error structure\n */\nexport interface ValidationError {\n field: string\n message: string\n code?: string\n}\n\n/**\n * Form data structure\n */\nexport interface FormData {\n // biome-ignore lint/suspicious/noExplicitAny: Form data requires flexible value types\n [key: string]: any\n}\n\n/**\n * BasicForm component class\n */\nexport class BasicFormImplementation implements ComponentInstance<BasicFormProps> {\n public readonly type = 'component' as const\n public readonly id: string\n public mounted = false\n public cleanup: (() => void)[] = []\n private formElement: HTMLFormElement | null = null\n private validationErrors: () => ValidationError[]\n private setValidationErrors: (errors: ValidationError[]) => ValidationError[]\n // isValid accessor removed - value tracked internally\n private setIsValid: (valid: boolean) => boolean\n\n constructor(public props: BasicFormProps) {\n this.id = `form-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n\n // Initialize validation signals\n const [errors, setErrors] = createSignal<ValidationError[]>([])\n const [, setValid] = createSignal(true)\n this.validationErrors = errors\n this.setValidationErrors = setErrors\n // this.isValid = valid - removed unused accessor\n this.setIsValid = setValid\n\n // Setup validation change effect\n createEffect(() => {\n const currentErrors = this.validationErrors()\n const currentValid = currentErrors.length === 0\n this.setIsValid(currentValid)\n\n if (this.props.onValidationChange) {\n this.props.onValidationChange(currentValid, currentErrors)\n }\n })\n }\n\n /**\n * Extract form data from form elements\n */\n private extractFormData(): FormData {\n if (!this.formElement) return {}\n\n const formData = new FormData(this.formElement)\n const data: FormData = {}\n\n // Convert FormData to plain object\n for (const [key, value] of formData.entries()) {\n if (data[key]) {\n // Handle multiple values (checkboxes, multi-select)\n if (Array.isArray(data[key])) {\n // biome-ignore lint/suspicious/noExplicitAny: Form data array manipulation requires dynamic typing\n ;(data[key] as any[]).push(value)\n } else {\n data[key] = [data[key], value]\n }\n } else {\n data[key] = value\n }\n }\n\n return data\n }\n\n /**\n * Validate all form fields\n */\n private validateForm(): ValidationError[] {\n if (!this.formElement) return []\n\n const errors: ValidationError[] = []\n const inputs = this.formElement.querySelectorAll('input, select, textarea')\n\n inputs.forEach((input) => {\n const element = input as HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement\n const name = element.name || element.id\n\n // Check HTML5 validation\n if (!element.checkValidity()) {\n errors.push({\n field: name,\n message: element.validationMessage,\n code: 'html5_validation',\n })\n }\n\n // Check required fields\n if (element.hasAttribute('required') && !element.value.trim()) {\n errors.push({\n field: name,\n message: `${name} is required`,\n code: 'required',\n })\n }\n })\n\n return errors\n }\n\n /**\n * Handle form submission\n */\n private handleSubmit = async (event: Event) => {\n event.preventDefault()\n\n if (this.props.validateOnSubmit !== false) {\n const errors = this.validateForm()\n this.setValidationErrors(errors)\n\n if (errors.length > 0) {\n return\n }\n }\n\n if (this.props.onSubmit) {\n const data = this.extractFormData()\n await this.props.onSubmit(data)\n }\n }\n\n /**\n * Handle form input changes\n */\n private handleChange = () => {\n if (this.props.validateOnChange) {\n const errors = this.validateForm()\n this.setValidationErrors(errors)\n }\n }\n\n /**\n * Get form styling based on style prop\n */\n private getFormStyles() {\n const { style = 'automatic', spacing = 16 } = this.props\n\n const baseStyles = {\n display: 'flex',\n flexDirection: 'column' as const,\n gap: `${spacing}px`,\n }\n\n switch (style) {\n case 'grouped':\n return {\n ...baseStyles,\n backgroundColor: '#ffffff',\n border: '1px solid #e0e0e0',\n borderRadius: '12px',\n padding: '20px',\n boxShadow: '0 2px 8px rgba(0,0,0,0.1)',\n }\n\n case 'inset':\n return {\n ...baseStyles,\n backgroundColor: '#f8f9fa',\n border: '1px solid #e9ecef',\n borderRadius: '8px',\n padding: '16px',\n margin: '0 16px',\n }\n\n case 'plain':\n return baseStyles\n default:\n return {\n ...baseStyles,\n backgroundColor: '#ffffff',\n borderRadius: '8px',\n padding: '16px',\n }\n }\n }\n\n /**\n * Render validation summary\n */\n private renderValidationSummary() {\n const errors = this.validationErrors()\n\n if (!this.props.showValidationSummary || errors.length === 0) {\n return null\n }\n\n return h(\n 'div',\n {\n style: {\n backgroundColor: '#fff5f5',\n border: '1px solid #fed7d7',\n borderRadius: '6px',\n padding: '12px 16px',\n marginBottom: '16px',\n },\n },\n h(\n 'div',\n {\n style: {\n fontSize: '14px',\n fontWeight: '600',\n color: '#e53e3e',\n marginBottom: '8px',\n },\n },\n text('Please fix the following errors:')\n ),\n\n h(\n 'ul',\n {\n style: {\n margin: '0',\n paddingLeft: '20px',\n fontSize: '14px',\n color: '#c53030',\n },\n },\n ...errors.map((error) => h('li', { key: error.field }, text(error.message)))\n )\n )\n }\n\n render() {\n const { children = [], accessibilityLabel, accessibilityRole = 'form' } = this.props\n\n return [\n h(\n 'form',\n {\n ref: (el: HTMLFormElement) => {\n this.formElement = el\n\n // Add event listeners when mounted\n if (el && !this.mounted) {\n el.addEventListener('submit', this.handleSubmit)\n el.addEventListener('change', this.handleChange)\n el.addEventListener('input', this.handleChange)\n\n this.cleanup.push(() => {\n el.removeEventListener('submit', this.handleSubmit)\n el.removeEventListener('change', this.handleChange)\n el.removeEventListener('input', this.handleChange)\n })\n\n this.mounted = true\n }\n },\n style: this.getFormStyles(),\n 'aria-label': accessibilityLabel,\n role: accessibilityRole,\n noValidate: true, // We handle validation manually\n },\n // Validation summary\n ...(this.renderValidationSummary() !== null ? [this.renderValidationSummary()!] : []),\n\n // Form content\n ...children.flatMap((child) => child.render())\n ),\n ]\n }\n}\n\n/**\n * BasicForm component function\n */\nexport function BasicForm(\n children: ComponentInstance[],\n props: Omit<BasicFormProps, 'children'> = {}\n): ModifiableComponent<BasicFormProps> & { modifier: ModifierBuilder<ModifiableComponent<BasicFormProps>> } {\n const formProps: BasicFormProps = { ...props, children }\n const component = new BasicFormImplementation(formProps)\n return withModifiers(component)\n}\n\n\n/**\n * BasicForm style variants\n */\nexport const BasicFormStyles = {\n /**\n * Automatic form styling (default)\n */\n Automatic(children: ComponentInstance[], props: Omit<BasicFormProps, 'children' | 'style'> = {}) {\n return BasicForm(children, { ...props, style: 'automatic' })\n },\n\n /**\n * Grouped form with container styling\n */\n Grouped(children: ComponentInstance[], props: Omit<BasicFormProps, 'children' | 'style'> = {}) {\n return BasicForm(children, { ...props, style: 'grouped' })\n },\n\n /**\n * Inset form styling\n */\n Inset(children: ComponentInstance[], props: Omit<BasicFormProps, 'children' | 'style'> = {}) {\n return BasicForm(children, { ...props, style: 'inset' })\n },\n\n /**\n * Plain form without styling\n */\n Plain(children: ComponentInstance[], props: Omit<BasicFormProps, 'children' | 'style'> = {}) {\n return BasicForm(children, { ...props, style: 'plain' })\n },\n}\n\n\n/**\n * BasicForm validation utilities\n */\nexport const BasicFormValidation = {\n /**\n * Common validation rules\n */\n rules: {\n // biome-ignore lint/suspicious/noExplicitAny: Validation rules accept any input type\n required: (value: any) => value != null && value !== '',\n email: (value: string) => /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(value),\n minLength: (min: number) => (value: string) => value.length >= min,\n maxLength: (max: number) => (value: string) => value.length <= max,\n pattern: (regex: RegExp) => (value: string) => regex.test(value),\n number: (value: string) => !Number.isNaN(Number(value)),\n integer: (value: string) => Number.isInteger(Number(value)),\n min: (min: number) => (value: string) => Number(value) >= min,\n max: (max: number) => (value: string) => Number(value) <= max,\n },\n\n /**\n * Validate a single field\n */\n validateField(\n // biome-ignore lint/suspicious/noExplicitAny: Validation accepts any field value\n value: any,\n // biome-ignore lint/suspicious/noExplicitAny: Validation rules accept any input type\n rules: Array<(value: any) => boolean | string>\n ): ValidationError | null {\n for (const rule of rules) {\n const result = rule(value)\n if (result !== true) {\n return {\n field: 'field',\n message: typeof result === 'string' ? result : 'Validation failed',\n code: 'custom_validation',\n }\n }\n }\n return null\n },\n}\n\n"],"names":["BasicFormImplementation","props","__publicField","event","errors","data","setErrors","createSignal","setValid","createEffect","currentErrors","currentValid","formData","key","value","input","element","name","style","spacing","baseStyles","h","text","error","children","accessibilityLabel","accessibilityRole","el","child","BasicForm","formProps","component","withModifiers","BasicFormStyles","BasicFormValidation","min","max","regex","rules","rule","result"],"mappings":"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"}
|
package/dist/components/Grid.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const z=require("./wrapper.cjs"),j=require("../runtime/element-override.cjs");require("../css-classes/css-class-manager.cjs");const O=require("../css-classes/component-base.cjs");require("../reactive/cleanup.cjs");require("../reactive/unified-scheduler.cjs");require("../reactive/signal.cjs");require("../reactive/scheduler.cjs");require("../reactive/theme.cjs");const N=require("../lifecycle/hooks.cjs"),_=require("../runtime/dom-bridge.cjs"),b=require("./GridResponsive.cjs"),F=require("../modifiers/transitions.cjs");var V=Object.defineProperty,B=(f,e,t)=>e in f?V(f,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):f[e]=t,g=(f,e,t)=>B(f,typeof e!="symbol"?e+"":e,t);let T=null;const M=()=>{if(!T)try{T=require("../debug").debugManager}catch{T={isEnabled:()=>!1,logComponent:()=>{}}}return T};class Y{static fixed(e,t){return{type:"fixed",size:e,spacing:t}}static flexible(e=0,t){return{type:"flexible",minimum:e,maximum:t}}static adaptive(e,t){return{type:"adaptive",minimum:e,maximum:t}}static spanning(e){return e}static withSpan(e,t){return{...e,span:t}}}class m{static generateColumns(e){return e.map(t=>{switch(t.type){case"fixed":return`${t.size}px`;case"flexible":const n=t.minimum||0,r=t.maximum?`${t.maximum}px`:"1fr";return n>0?`minmax(${n}px, ${r})`:"1fr";case"adaptive":const a=t.minimum,i=t.maximum?`${t.maximum}px`:"1fr";return`minmax(${a}px, ${i})`;default:return"1fr"}}).join(" ")}static generateRows(e){return this.generateColumns(e)}static generateResponsiveGridCSS(e,t){const n={};return e.base&&(n[t]=t==="grid-template-columns"?this.generateColumns(e.base):this.generateRows(e.base)),Object.entries({sm:"640px",md:"768px",lg:"1024px",xl:"1280px",xxl:"1536px"}).forEach(([a,i])=>{const s=e[a];if(s){const o=`@media (min-width: ${i})`,u=t==="grid-template-columns"?this.generateColumns(s):this.generateRows(s);n[o]||(n[o]={});const d=n[o];n[o]={...d,[t]:u}}}),n}static generateSpacing(e){if(typeof e=="number")return`${e}px`;if(e&&typeof e=="object"){const t=e.horizontal??0;return`${e.vertical??0}px ${t}px`}return"0"}static generateAlignment(e){const t={topLeading:{justifyItems:"start",alignItems:"start"},top:{justifyItems:"center",alignItems:"start"},topTrailing:{justifyItems:"end",alignItems:"start"},leading:{justifyItems:"start",alignItems:"center"},center:{justifyItems:"center",alignItems:"center"},trailing:{justifyItems:"end",alignItems:"center"},bottomLeading:{justifyItems:"start",alignItems:"end"},bottom:{justifyItems:"center",alignItems:"end"},bottomTrailing:{justifyItems:"end",alignItems:"end"}};return t[e]||t.center}static generateSectionHeaderCSS(e,t,n){const r={gridColumn:`1 / span ${n}`,display:"flex",alignItems:"center"};switch(e){case"sticky":r.position="sticky",r.top=t==="header"?"0":"auto",r.bottom=t==="footer"?"0":"auto",r.zIndex="10",r.backgroundColor="var(--background-color, white)";break;case"grouped":r.padding="12px 16px",r.backgroundColor="var(--section-bg, #f8f9fa)",r.borderRadius=t==="header"?"8px 8px 0 0":"0 0 8px 8px";break;case"plain":r.padding="8px 0";break;case"automatic":default:r.padding="12px 0",r.fontWeight="600",r.fontSize="1.1em",t==="footer"&&(r.fontSize="0.9em",r.fontWeight="400",r.color="var(--text-secondary, #6b7280)");break}return r}static generateGridAnimationCSS(e){const t={};if(e.layoutChanges){const n=typeof e.layoutChanges=="boolean"?{}:e.layoutChanges,r=n.duration||300,a=n.easing||"ease-out",i=n.delay||0;t.transition=`grid-template-columns ${r}ms ${a}${i>0?` ${i}ms`:""}, grid-template-rows ${r}ms ${a}${i>0?` ${i}ms`:""}`}if(e.responsive){const n=typeof e.responsive=="boolean"?{}:e.responsive,r=n.duration||250,a=n.easing||"ease-out",i=n.delay||0,s=`grid-template-columns ${r}ms ${a}${i>0?` ${i}ms`:""}, grid-template-rows ${r}ms ${a}${i>0?` ${i}ms`:""}, gap ${r}ms ${a}${i>0?` ${i}ms`:""}`;t.transition?t.transition+=`, ${s}`:t.transition=s}return t}static generateItemAnimationKeyframes(e,t){const n=`grid-item-${e}-${t}`;let r="";switch(t){case"fade":r=e==="enter"?"from { opacity: 0; } to { opacity: 1; }":"from { opacity: 1; } to { opacity: 0; }";break;case"scale":r=e==="enter"?"from { opacity: 0; transform: scale(0.8); } to { opacity: 1; transform: scale(1); }":"from { opacity: 1; transform: scale(1); } to { opacity: 0; transform: scale(0.8); }";break;case"slide-up":r=e==="enter"?"from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); }":"from { opacity: 1; transform: translateY(0); } to { opacity: 0; transform: translateY(-20px); }";break;case"slide-down":r=e==="enter"?"from { opacity: 0; transform: translateY(-20px); } to { opacity: 1; transform: translateY(0); }":"from { opacity: 1; transform: translateY(0); } to { opacity: 0; transform: translateY(20px); }";break;case"slide-left":r=e==="enter"?"from { opacity: 0; transform: translateX(20px); } to { opacity: 1; transform: translateX(0); }":"from { opacity: 1; transform: translateX(0); } to { opacity: 0; transform: translateX(-20px); }";break;case"slide-right":r=e==="enter"?"from { opacity: 0; transform: translateX(-20px); } to { opacity: 1; transform: translateX(0); }":"from { opacity: 1; transform: translateX(0); } to { opacity: 0; transform: translateX(20px); }";break}return{[`@keyframes ${n}`]:`{ ${r} }`,[`--${n}-keyframes`]:n}}static generateAccessibilityAttributes(e,t,n,r){const a={},i=t==="grid"?"grid":"group",s=e.role||i;if(a.role=s,e.label&&(a["aria-label"]=e.label),e.description&&(a["aria-describedby"]=e.description),e.screenReader!==!1){const o=typeof e.screenReader=="boolean"?{}:e.screenReader||{};o.announceStructure!==!1&&n!==void 0&&(a["aria-colcount"]=n),o.announceStructure!==!1&&r!==void 0&&(a["aria-rowcount"]=r)}if(e.keyboardNavigation!==!1){const o=typeof e.keyboardNavigation=="boolean"?{}:e.keyboardNavigation||{};o.enabled!==!1&&(a.tabIndex=0,a["data-keyboard-navigation"]=o.mode||"grid",o.pageNavigation&&(a["data-page-navigation"]=!0),o.homeEndNavigation&&(a["data-home-end-navigation"]=!0))}if(e.focusManagement!==!1){const o=typeof e.focusManagement=="boolean"?{}:e.focusManagement||{};o.trapFocus&&(a["data-focus-trap"]=!0),o.skipLinks&&(a["data-skip-links"]=!0)}if(e.reducedMotion!==!1){const o=typeof e.reducedMotion=="boolean"?{}:e.reducedMotion||{};o.respectPreference!==!1&&(a["data-respect-reduced-motion"]=!0,a["data-reduced-motion-fallback"]=o.fallbackBehavior||"disable")}return a}static generateReducedMotionCSS(e){if(!e?.reducedMotion)return{};const n=(typeof e.reducedMotion=="boolean"?{}:e.reducedMotion).fallbackBehavior||"disable",r={};switch(n){case"disable":r["@media (prefers-reduced-motion: reduce)"]="{ transition: none !important; animation: none !important; }";break;case"reduce":r["@media (prefers-reduced-motion: reduce)"]="{ transition-duration: 0.1s !important; animation-duration: 0.1s !important; }";break;case"instant":r["@media (prefers-reduced-motion: reduce)"]="{ transition-duration: 0s !important; animation-duration: 0s !important; }";break}return r}static generateAdvancedStylingCSS(e){const t={};if(e.templateAreas&&e.templateAreas.length>0){const n=e.templateAreas.map(r=>`"${r}"`).join(" ");t.gridTemplateAreas=n}if(e.advancedGap&&(e.advancedGap.row&&(typeof e.advancedGap.row=="object"?Object.entries(e.advancedGap.row).forEach(([n,r])=>{const a=this.getMediaQueryForBreakpoint(n);a&&(t[a]=t[a]||"{}",t[a]=t[a].replace("}",` row-gap: ${r}px; }`))}):t.rowGap=typeof e.advancedGap.row=="number"?`${e.advancedGap.row}px`:e.advancedGap.row),e.advancedGap.column&&(typeof e.advancedGap.column=="object"?Object.entries(e.advancedGap.column).forEach(([n,r])=>{const a=this.getMediaQueryForBreakpoint(n);a&&(t[a]=t[a]||"{}",t[a]=t[a].replace("}",` column-gap: ${r}px; }`))}):t.columnGap=typeof e.advancedGap.column=="number"?`${e.advancedGap.column}px`:e.advancedGap.column)),e.container){if(e.container.background)if(typeof e.container.background=="string")t.background=e.container.background;else{const n=e.container.background;switch(n.pattern){case"dots":t.background=`radial-gradient(circle, ${n.color||"#e0e0e0"} 1px, transparent 1px)`,t.backgroundSize="20px 20px",n.opacity&&(t.opacity=n.opacity.toString());break;case"lines":t.background=`linear-gradient(90deg, ${n.color||"#e0e0e0"} 1px, transparent 1px), linear-gradient(${n.color||"#e0e0e0"} 1px, transparent 1px)`,t.backgroundSize="20px 20px";break;case"grid":t.background=`linear-gradient(to right, ${n.color||"#e0e0e0"} 1px, transparent 1px), linear-gradient(to bottom, ${n.color||"#e0e0e0"} 1px, transparent 1px)`,t.backgroundSize="20px 20px";break}}if(e.container.border&&(t.border=e.container.border),e.container.borderRadius&&(t.borderRadius=typeof e.container.borderRadius=="number"?`${e.container.borderRadius}px`:e.container.borderRadius),e.container.boxShadow&&(t.boxShadow=e.container.boxShadow),e.container.padding)if(typeof e.container.padding=="object"){const n=e.container.padding;t.padding=`${n.top||0} ${n.right||0} ${n.bottom||0} ${n.left||0}`}else t.padding=typeof e.container.padding=="number"?`${e.container.padding}px`:e.container.padding}if(e.debug&&(e.debug===!0||e.debug.enabled)){const n=typeof e.debug=="boolean"?{}:e.debug,r=n.lineColor||"#ff0000";if(n.showLines!==!1){const a=`linear-gradient(to right, ${r} 1px, transparent 1px), linear-gradient(to bottom, ${r} 1px, transparent 1px)`;t.background&&!t.background.includes("linear-gradient")?t.background=`${a}, ${t.background}`:t.background=a,t.backgroundSize="var(--grid-debug-size, 20px) var(--grid-debug-size, 20px)"}n.showAreas&&(t.position="relative",t["&::after"]=`{ content: ""; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: repeating-linear-gradient(45deg, transparent, transparent 10px, ${r}22 10px, ${r}22 20px); pointer-events: none; }`)}return t}static generateItemStateCSS(e){const t={};if(e.hover&&e.hover.enabled!==!1){const n=e.hover,r=[];switch(n.transform){case"scale":r.push("transform: scale(1.05)");break;case"lift":r.push("transform: translateY(-2px)","box-shadow: 0 4px 8px rgba(0,0,0,0.12)");break;case"glow":r.push("box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.4)");break;case"highlight":r.push("background-color: rgba(59, 130, 246, 0.1)");break}n.transition?r.push(`transition: ${n.transition}`):r.push("transition: all 0.2s ease"),n.customCSS&&Object.entries(n.customCSS).forEach(([a,i])=>{r.push(`${a}: ${i}`)}),t["& > *:hover"]=`{ ${r.join("; ")} }`}if(e.focus&&e.focus.enabled!==!1){const n=e.focus,r=[];switch(n.style){case"ring":r.push(`box-shadow: 0 0 0 2px ${n.color||"#3b82f6"}`);break;case"outline":r.push(`outline: 2px solid ${n.color||"#3b82f6"}`,"outline-offset: 2px");break;case"background":r.push(`background-color: ${n.color||"rgba(59, 130, 246, 0.1)"}`);break;case"border":r.push(`border: 2px solid ${n.color||"#3b82f6"}`);break}n.customCSS&&Object.entries(n.customCSS).forEach(([a,i])=>{r.push(`${a}: ${i}`)}),t["& > *:focus"]=`{ ${r.join("; ")} }`}if(e.active&&e.active.enabled!==!1){const n=e.active,r=[];switch(n.transform){case"scale":r.push("transform: scale(0.95)");break;case"inset":r.push("box-shadow: inset 0 2px 4px rgba(0,0,0,0.1)");break;case"darken":r.push("filter: brightness(0.9)");break}n.customCSS&&Object.entries(n.customCSS).forEach(([a,i])=>{r.push(`${a}: ${i}`)}),t["& > *:active"]=`{ ${r.join("; ")} }`}return t}static getMediaQueryForBreakpoint(e){return{sm:"@media (min-width: 640px)",md:"@media (min-width: 768px)",lg:"@media (min-width: 1024px)",xl:"@media (min-width: 1280px)",xxl:"@media (min-width: 1536px)"}[e]||null}}class R extends O.ComponentWithCSSClasses{constructor(e){super(),this.props=e,g(this,"type","component"),g(this,"id"),g(this,"mounted",!1),g(this,"cleanup",[]),g(this,"effectiveTag"),g(this,"validationResult"),this.id=`grid-section-${e.type}-${Date.now()}-${Math.random().toString(36).substr(2,9)}`;const t=`GridSection${e.type==="header"?"Header":"Footer"}`,n=j.processElementOverride(t,"div",this.props.element);this.effectiveTag=n.tag,this.validationResult=n.validation}render(){const{content:e,sectionId:t,type:n,style:r,debugLabel:a}=this.props,i=M();i.logComponent(`GRID_SECTION_${n.toUpperCase()}`,a);const s=[`tachui-grid-section-${n}`,...i.isEnabled()?["tachui-debug"]:[]],o=this.createClassString(this.props,s),d=m.generateSectionHeaderCSS(r,n,12);let c;if(typeof e=="string")c=[{type:"element",tag:"span",props:{className:`tachui-grid-section-${n}-text`,children:[{type:"text",text:e}]}}];else{const y=e.render();c=Array.isArray(y)?y:[y]}return[{type:"element",tag:this.effectiveTag,props:{className:o,style:d,"data-section-id":t,"data-section-type":n,...i.isEnabled()&&{"data-tachui-component":`GridSection${n==="header"?"Header":"Footer"}`,...a&&{"data-tachui-label":a}}},children:c,componentMetadata:{originalType:`GridSection${n==="header"?"Header":"Footer"}`,overriddenTo:this.effectiveTag!=="div"?this.effectiveTag:void 0,validationResult:this.validationResult}}]}}class I extends O.ComponentWithCSSClasses{constructor(e,t,n=[]){super(),this.props=e,this.gridType=t,this.children=n,g(this,"type","component"),g(this,"id"),g(this,"mounted",!1),g(this,"cleanup",[]),g(this,"effectiveTag"),g(this,"validationResult"),this.id=`${t}-${Date.now()}-${Math.random().toString(36).substr(2,9)}`;const r=t==="grid"?"Grid":t==="lazy-vgrid"?"LazyVGrid":"LazyHGrid",a=j.processElementOverride(r,"div",this.props.element);this.effectiveTag=a.tag,this.validationResult=a.validation,this.setupLifecycleHooks(),_.registerComponentWithLifecycleHooks(this)}generateAnimationStyles(e){return e?m.generateGridAnimationCSS(e):{}}applyItemAnimations(e,t){if(!t?.itemChanges)return e;const n=typeof t.itemChanges=="boolean"?{}:t.itemChanges;if(n.enter){const r=n.enter,a=r.duration||250,i=r.easing||"ease-out",s=r.delay||0;return e.map((o,u)=>{if("modifiers"in o&&Array.isArray(o.modifiers)){const d=s+u*50,c=F.transition("all",a,i,d);o.modifiers.push(c)}return o})}return e}generateAccessibilityAttributes(e,t,n){return e?m.generateAccessibilityAttributes(e,this.gridType,t,n):{}}generateStylingCSS(e){if(!e)return{};const t=m.generateAdvancedStylingCSS(e);if(e.itemStates){const n=m.generateItemStateCSS(e.itemStates);Object.assign(t,n)}return t}setupKeyboardNavigation(e,t){if(!t?.keyboardNavigation)return;const n=typeof t.keyboardNavigation=="boolean"?{}:t.keyboardNavigation;if(n.enabled===!1)return;const r=n.mode||"grid",a=i=>{const s=i.target;if(!e.contains(s))return;let o=!1;switch(i.key){case"ArrowUp":r==="grid"&&(this.navigateGrid(e,"up"),o=!0);break;case"ArrowDown":r==="grid"?(this.navigateGrid(e,"down"),o=!0):r==="list"&&(this.navigateList(e,"next"),o=!0);break;case"ArrowLeft":this.navigateGrid(e,"left"),o=!0;break;case"ArrowRight":this.navigateGrid(e,"right"),o=!0;break;case"Home":n.homeEndNavigation&&(this.navigateToFirst(e),o=!0);break;case"End":n.homeEndNavigation&&(this.navigateToLast(e),o=!0);break;case"PageUp":n.pageNavigation&&(this.navigatePage(e,"up"),o=!0);break;case"PageDown":n.pageNavigation&&(this.navigatePage(e,"down"),o=!0);break}o&&(i.preventDefault(),i.stopPropagation())};e.addEventListener("keydown",a),this.cleanup.push(()=>{e.removeEventListener("keydown",a)})}navigateGrid(e,t){const n=e.querySelectorAll('[tabindex="0"], button, input, select, textarea, [contenteditable]'),r=Array.from(n).indexOf(document.activeElement);if(r===-1)return;const i=getComputedStyle(e).gridTemplateColumns.split(" ").length;let s=r;switch(t){case"up":s=Math.max(0,r-i);break;case"down":s=Math.min(n.length-1,r+i);break;case"left":s=Math.max(0,r-1);break;case"right":s=Math.min(n.length-1,r+1);break}s!==r&&n[s].focus()}navigateList(e,t){const n=e.querySelectorAll('[tabindex="0"], button, input, select, textarea, [contenteditable]'),r=Array.from(n).indexOf(document.activeElement);if(r===-1)return;const a=t==="next"?Math.min(n.length-1,r+1):Math.max(0,r-1);a!==r&&n[a].focus()}navigateToFirst(e){const t=e.querySelectorAll('[tabindex="0"], button, input, select, textarea, [contenteditable]');t.length>0&&t[0].focus()}navigateToLast(e){const t=e.querySelectorAll('[tabindex="0"], button, input, select, textarea, [contenteditable]');t.length>0&&t[t.length-1].focus()}navigatePage(e,t){const n=e.querySelectorAll('[tabindex="0"], button, input, select, textarea, [contenteditable]'),r=Array.from(n).indexOf(document.activeElement);if(r===-1)return;const a=10,i=t==="down"?Math.min(n.length-1,r+a):Math.max(0,r-a);i!==r&&n[i].focus()}setupLifecycleHooks(){N.useLifecycle(this,{onDOMReady:(e,t)=>{this.children.forEach((n,r)=>{const a=n._enhancedLifecycle;if(a&&a.onDOMReady&&!n.domReady)try{if(t){const i=this.findChildDOMElements(n,t,r);if(i.length>0){n.domElements=new Map,i.forEach((o,u)=>{const d=o.id||`element-${u}`;n.domElements.set(d,o),n.primaryElement||(n.primaryElement=o)}),n.domReady=!0;const s=a.onDOMReady(n.domElements,n.primaryElement);if(typeof s=="function"&&(n.cleanup=n.cleanup||[],n.cleanup.push(s)),a.onMount){const o=a.onMount();typeof o=="function"&&(n.cleanup=n.cleanup||[],n.cleanup.push(o))}}}}catch(i){console.error(`Error processing lifecycle hooks for child ${n.id}:`,i)}})}})}findChildDOMElements(e,t,n){if(e.id.startsWith("image-")){const a=t.querySelectorAll("img.tachui-image");return a[n]?[a[n]]:Array.from(a)}if(e.id.startsWith("button-")){const a=t.querySelectorAll("button.tachui-button");return a[n]?[a[n]]:Array.from(a)}if(e.id.startsWith("text-")){const a=t.querySelectorAll("span.tachui-text, .tachui-text");return a[n]?[a[n]]:Array.from(a)}const r=Array.from(t.children);return r[n]?[r[n]]:r}render(){throw new Error("BaseGridComponent.render() must be implemented by subclass")}}class D extends I{constructor(e,t=[]){super(e,"grid",t),this.props=e}render(){const{alignment:e="center",spacing:t,debugLabel:n,animations:r,accessibility:a,styling:i}=this.props,s=M();s.logComponent("GRID",n);const o=["tachui-grid",...s.isEnabled()?["tachui-debug"]:[]],u=this.createClassString(this.props,o),c=this.applyItemAnimations(this.children,r).map(G=>{const w=G.render();return Array.isArray(w)?w:[w]}).flat(),$=m.generateAlignment(e),y=m.generateSpacing(t),v=this.generateAnimationStyles(r),h=this.generateAccessibilityAttributes(a),l=m.generateReducedMotionCSS(a),k=this.generateStylingCSS(i),A={display:"grid",gap:y,...$,...v,...l,...k};return[{type:"element",tag:this.effectiveTag,props:{className:u,style:A,...h,...s.isEnabled()&&{"data-tachui-component":"Grid",...n&&{"data-tachui-label":n}}},children:c,componentMetadata:{originalType:"Grid",overriddenTo:this.effectiveTag!=="div"?this.effectiveTag:void 0,validationResult:this.validationResult}}]}}class H extends O.ComponentWithCSSClasses{constructor(e,t=[]){super(),this.props=e,this.children=t,g(this,"type","component"),g(this,"id"),g(this,"mounted",!1),g(this,"cleanup",[]),g(this,"effectiveTag"),g(this,"validationResult"),this.id=`gridrow-${Date.now()}-${Math.random().toString(36).substr(2,9)}`;const n=j.processElementOverride("GridRow","div",this.props.element);this.effectiveTag=n.tag,this.validationResult=n.validation}render(){const{debugLabel:e}=this.props,t=M();t.logComponent("GRIDROW",e);const n=["tachui-gridrow",...t.isEnabled()?["tachui-debug"]:[]],r=this.createClassString(this.props,n),a=this.children.map(s=>{const o=s.render();return Array.isArray(o)?o:[o]}).flat();return[{type:"element",tag:this.effectiveTag,props:{className:r,style:{display:"contents"},...t.isEnabled()&&{"data-tachui-component":"GridRow",...e&&{"data-tachui-label":e}}},children:a,componentMetadata:{originalType:"GridRow",overriddenTo:this.effectiveTag!=="div"?this.effectiveTag:void 0,validationResult:this.validationResult}}]}}class P extends I{constructor(e,t=[]){super(e,"lazy-vgrid",t),this.props=e}render(){const{columns:e,alignment:t="center",spacing:n,debugLabel:r,responsive:a,sections:i,pinnedViews:s,animations:o,accessibility:u,styling:d}=this.props,c=M();c.logComponent("LAZYVGRID",r);const $=["tachui-lazy-vgrid",...c.isEnabled()?["tachui-debug"]:[]],y=this.createClassString(this.props,$);let v;i&&i.length>0?v=this.renderSections(i,s):v=this.applyItemAnimations(this.children,o).map(x=>{const p=x.render();return Array.isArray(p)?p:[p]}).flat();let h,l={display:"grid"};if(a){const S=b.GridPerformanceMonitor.startMeasurement("responsive-css-generation");try{const p={...b.GridResponsiveUtils.createResponsiveGridConfig({columns:e,spacing:n,alignment:t}),...a};b.GridDebugger.registerGrid(this.id,p,`#${this.id}`),b.GridDebugger.visualizeBreakpoints(p);const C=b.createResponsiveGridModifier(p);p.columns&&typeof p.columns=="object"&&"base"in p.columns&&p.columns.base?h=this.generateColumnsFromConfig(p.columns.base):Array.isArray(e)?h=m.generateColumns(e):h="1fr",l._responsiveModifier=C}finally{S()}}else{const S=m.generateAlignment(t),x=m.generateSpacing(n);if(Array.isArray(e))h=m.generateColumns(e);else{const C=m.generateResponsiveGridCSS(e,"grid-template-columns")["grid-template-columns"];h=typeof C=="string"?C:"1fr"}l={...l,gap:x,...S}}l.gridTemplateColumns=h;const k=this.generateAnimationStyles(o);Object.assign(l,k);const A=this.getColumnCount(),E=this.generateAccessibilityAttributes(u,A),G=m.generateReducedMotionCSS(u);Object.assign(l,G);const w=this.generateStylingCSS(d);Object.assign(l,w);const L={type:"element",tag:this.effectiveTag,props:{className:y,style:l,...E,...c.isEnabled()&&{"data-tachui-component":"LazyVGrid",...r&&{"data-tachui-label":r}}},children:v,componentMetadata:{originalType:"LazyVGrid",overriddenTo:this.effectiveTag!=="div"?this.effectiveTag:void 0,validationResult:this.validationResult,...a&&l._responsiveModifier&&{responsiveModifier:l._responsiveModifier}}};return l._responsiveModifier&&delete l._responsiveModifier,[L]}renderSections(e,t){const n=[],r=this.getColumnCount(),a=t?.includes("sectionHeaders"),i=t?.includes("sectionFooters");return e.forEach(s=>{if(s.header){const o=s.headerStyle||(a?"sticky":"automatic"),d=new R({content:s.header,sectionId:s.id,type:"header",style:o}).render();Array.isArray(d)&&(d.forEach(c=>{c.props&&c.props.style&&(c.props.style.gridColumn=`1 / span ${r}`)}),n.push(...d))}if(s.items.forEach(o=>{const u=o.render(),d=Array.isArray(u)?u:[u];n.push(...d)}),s.footer){const o=s.footerStyle||(i?"sticky":"automatic"),d=new R({content:s.footer,sectionId:s.id,type:"footer",style:o}).render();Array.isArray(d)&&(d.forEach(c=>{c.props&&c.props.style&&(c.props.style.gridColumn=`1 / span ${r}`)}),n.push(...d))}}),n}getColumnCount(){const{columns:e}=this.props;if(Array.isArray(e))return e.length;if(typeof e=="object"&&e!==null){const t=e,n=t.base||t.sm||t.md||t.lg||t.xl||t.xxl;return Array.isArray(n)?n.length:1}return 1}generateColumnsFromConfig(e){return e.map(t=>{switch(t.type){case"fixed":return`${t.size}px`;case"flexible":const n=t.minimum||0,r=t.maximum?`${t.maximum}px`:"1fr";return n>0?`minmax(${n}px, ${r})`:"1fr";case"adaptive":const a=t.minimum,i=t.maximum?`${t.maximum}px`:"1fr";return`minmax(${a}px, ${i})`;default:return"1fr"}}).join(" ")}}class q extends I{constructor(e,t=[]){super(e,"lazy-hgrid",t),this.props=e}render(){const{rows:e,alignment:t="center",spacing:n,debugLabel:r,responsive:a,sections:i,pinnedViews:s,animations:o,accessibility:u,styling:d}=this.props,c=M();c.logComponent("LAZYHGRID",r);const $=["tachui-lazy-hgrid",...c.isEnabled()?["tachui-debug"]:[]],y=this.createClassString(this.props,$);let v;i&&i.length>0?v=this.renderSections(i,s):v=this.applyItemAnimations(this.children,o).map(x=>{const p=x.render();return Array.isArray(p)?p:[p]}).flat();let h,l={display:"grid",gridAutoFlow:"column",overflowX:"auto"};if(a){const S=b.GridPerformanceMonitor.startMeasurement("responsive-css-generation");try{const p={...b.GridResponsiveUtils.createResponsiveGridConfig({rows:e,spacing:n,alignment:t}),...a};b.GridDebugger.registerGrid(this.id,p,`#${this.id}`),b.GridDebugger.visualizeBreakpoints(p);const C=b.createResponsiveGridModifier(p);p.rows&&typeof p.rows=="object"&&"base"in p.rows&&p.rows.base?h=this.generateRowsFromConfig(p.rows.base):Array.isArray(e)?h=m.generateRows(e):h="auto",l._responsiveModifier=C}finally{S()}}else{const S=m.generateAlignment(t),x=m.generateSpacing(n);if(Array.isArray(e))h=m.generateRows(e);else{const C=m.generateResponsiveGridCSS(e,"grid-template-rows")["grid-template-rows"];h=typeof C=="string"?C:"auto"}l={...l,gap:x,...S}}l.gridTemplateRows=h;const k=this.generateAnimationStyles(o);Object.assign(l,k);const A=this.getRowCount(),E=this.generateAccessibilityAttributes(u,void 0,A),G=m.generateReducedMotionCSS(u);Object.assign(l,G);const w=this.generateStylingCSS(d);Object.assign(l,w);const L={type:"element",tag:this.effectiveTag,props:{className:y,style:l,...E,...c.isEnabled()&&{"data-tachui-component":"LazyHGrid",...r&&{"data-tachui-label":r}}},children:v,componentMetadata:{originalType:"LazyHGrid",overriddenTo:this.effectiveTag!=="div"?this.effectiveTag:void 0,validationResult:this.validationResult,...a&&l._responsiveModifier&&{responsiveModifier:l._responsiveModifier}}};return l._responsiveModifier&&delete l._responsiveModifier,[L]}renderSections(e,t){const n=[],r=this.getRowCount(),a=t?.includes("sectionHeaders"),i=t?.includes("sectionFooters");return e.forEach(s=>{if(s.header){const o=s.headerStyle||(a?"sticky":"automatic"),d=new R({content:s.header,sectionId:s.id,type:"header",style:o}).render();Array.isArray(d)&&(d.forEach(c=>{c.props&&c.props.style&&(c.props.style.gridRow=`1 / span ${r}`,c.props.style.gridColumn="auto")}),n.push(...d))}if(s.items.forEach(o=>{const u=o.render(),d=Array.isArray(u)?u:[u];n.push(...d)}),s.footer){const o=s.footerStyle||(i?"sticky":"automatic"),d=new R({content:s.footer,sectionId:s.id,type:"footer",style:o}).render();Array.isArray(d)&&(d.forEach(c=>{c.props&&c.props.style&&(c.props.style.gridRow=`1 / span ${r}`,c.props.style.gridColumn="auto")}),n.push(...d))}}),n}getRowCount(){const{rows:e}=this.props;if(Array.isArray(e))return e.length;if(typeof e=="object"&&e!==null){const t=e,n=t.base||t.sm||t.md||t.lg||t.xl||t.xxl;return Array.isArray(n)?n.length:1}return 1}generateRowsFromConfig(e){return e.map(t=>{switch(t.type){case"fixed":return`${t.size}px`;case"flexible":const n=t.minimum||0,r=t.maximum?`${t.maximum}px`:"1fr";return n>0?`minmax(${n}px, ${r})`:"1fr";case"adaptive":const a=t.minimum,i=t.maximum?`${t.maximum}px`:"1fr";return`minmax(${a}px, ${i})`;default:return"auto"}}).join(" ")}}function W(f={}){const{children:e=[],...t}=f,n=new D(t,e);return z.withModifiers(n)}function X(f=[],e={}){const t={...e,children:f},n=new H(t,f);return z.withModifiers(n)}function Q(f){const{children:e=[],...t}=f,n=new P({...t,children:e},e);return z.withModifiers(n)}function U(f){const{children:e=[],...t}=f,n=new q({...t,children:e},e);return z.withModifiers(n)}exports.GridDebugger=b.GridDebugger;exports.GridPerformanceMonitor=b.GridPerformanceMonitor;exports.BaseGridComponent=I;exports.EnhancedGrid=D;exports.EnhancedGridRow=H;exports.EnhancedLazyHGrid=q;exports.EnhancedLazyVGrid=P;exports.Grid=W;exports.GridCSSGenerator=m;exports.GridItem=Y;exports.GridRow=X;exports.GridSectionHeaderComponent=R;exports.LazyHGrid=U;exports.LazyVGrid=Q;
|
|
2
|
-
//# sourceMappingURL=Grid.cjs.map
|