@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":"component.cjs","sources":["../../src/runtime/component.ts"],"sourcesContent":["/**\n * Component Management System (Phase 3.1.1)\n *\n * Core component lifecycle management including creation, mounting,\n * updating, and cleanup. Integrates with the reactive system to\n * provide efficient component updates.\n */\n\nimport { createEffect, onCleanup } from '../reactive'\nimport { createComponentContext } from './component-context'\nimport { ChildrenManager, PropsManager, propsUtils, RefManager } from './props'\nimport type {\n Component,\n ComponentChildren,\n ComponentContext,\n ComponentInstance,\n ComponentProps,\n DOMNode,\n LifecycleHooks,\n Ref,\n RenderFunction,\n ValidatedProps,\n} from './types'\n\n/**\n * Global component registry and lifecycle management\n */\nexport class ComponentManager {\n private static instance: ComponentManager\n private components = new Map<string, ComponentInstance>()\n private contexts = new Map<string, ComponentContext>()\n private cleanupQueue = new Set<() => void>()\n private updateQueue = new Set<string>()\n private isUpdating = false\n\n static getInstance(): ComponentManager {\n if (!ComponentManager.instance) {\n ComponentManager.instance = new ComponentManager()\n }\n return ComponentManager.instance\n }\n\n /**\n * Register a new component instance\n */\n registerComponent(instance: ComponentInstance): void {\n this.components.set(instance.id, instance)\n\n // Set up cleanup tracking\n if (instance.cleanup) {\n instance.cleanup.forEach((cleanup) => {\n this.cleanupQueue.add(cleanup)\n })\n }\n }\n\n /**\n * Unregister and cleanup a component\n */\n unregisterComponent(id: string): void {\n const instance = this.components.get(id)\n if (instance) {\n // Run cleanup functions\n if (instance.cleanup) {\n instance.cleanup.forEach((cleanup) => {\n try {\n cleanup()\n } catch (error) {\n console.error(`Cleanup error for component ${id}:`, error)\n }\n })\n }\n\n // Remove from registry\n this.components.delete(id)\n\n // Clean up context if exists\n if (instance.context) {\n this.cleanupContext(instance.context.id)\n }\n }\n }\n\n /**\n * Get component instance by ID\n */\n getComponent(id: string): ComponentInstance | undefined {\n return this.components.get(id)\n }\n\n /**\n * Schedule component for update\n */\n scheduleUpdate(id: string): void {\n this.updateQueue.add(id)\n\n if (!this.isUpdating) {\n this.flushUpdates()\n }\n }\n\n /**\n * Process all scheduled updates\n */\n private async flushUpdates(): Promise<void> {\n if (this.isUpdating) return\n\n this.isUpdating = true\n\n // Process updates in next microtask\n await new Promise((resolve) => queueMicrotask(() => resolve(undefined)))\n\n const toUpdate = Array.from(this.updateQueue)\n this.updateQueue.clear()\n\n toUpdate.forEach((id) => {\n const instance = this.components.get(id)\n if (instance) {\n try {\n this.updateComponent(instance)\n } catch (error) {\n console.error(`Update error for component ${id}:`, error)\n }\n }\n })\n\n this.isUpdating = false\n }\n\n /**\n * Update a specific component instance\n */\n private updateComponent(instance: ComponentInstance): void {\n // Store previous props for comparison\n if (instance.props) {\n instance.prevProps = { ...instance.props }\n }\n\n // Re-render the component\n instance.render()\n\n // Mark as mounted after first render\n if (!instance.mounted) {\n instance.mounted = true\n }\n\n // The actual DOM update will be handled by the reactive system\n // This just triggers the re-render process\n }\n\n /**\n * Cleanup context by ID\n */\n private cleanupContext(contextId: string): void {\n const context = this.contexts.get(contextId)\n if (context) {\n // Run all cleanup functions\n context.cleanup.forEach((cleanup) => {\n try {\n cleanup()\n } catch (error) {\n console.error(`Context cleanup error for ${contextId}:`, error)\n }\n })\n\n this.contexts.delete(contextId)\n }\n }\n\n /**\n * Get all registered components (for debugging)\n */\n getAllComponents(): ComponentInstance[] {\n return Array.from(this.components.values())\n }\n\n /**\n * Cleanup all components and resources\n */\n cleanup(): void {\n // Cleanup all components\n Array.from(this.components.keys()).forEach((id) => {\n this.unregisterComponent(id)\n })\n\n // Run remaining cleanup functions\n this.cleanupQueue.forEach((cleanup) => {\n try {\n cleanup()\n } catch (error) {\n console.error('Global cleanup error:', error)\n }\n })\n\n this.cleanupQueue.clear()\n this.updateQueue.clear()\n }\n}\n\n/**\n * Create a new component with enhanced props and children handling\n */\nexport function createComponent<P extends ComponentProps = ComponentProps>(\n render: (props: P, children?: ComponentChildren) => DOMNode | DOMNode[],\n options: {\n displayName?: string\n defaultProps?: Partial<P>\n lifecycle?: LifecycleHooks<P>\n validation?: ValidatedProps<P>\n shouldUpdate?: (prevProps: P, nextProps: P) => boolean\n } = {}\n): Component<P> {\n const component: Component<P> = (props: P) => {\n const componentId = generateComponentId()\n const manager = ComponentManager.getInstance()\n const cleanup: (() => void)[] = []\n\n // Create component context\n const context = createComponentContext(componentId)\n\n // Create props manager with validation\n const propsManager = new PropsManager(props, {\n defaults: options.defaultProps || undefined,\n ...options.validation,\n })\n\n // Create children manager\n const childrenManager = new ChildrenManager(props.children)\n\n // Create ref manager for component references\n const refManager = new RefManager()\n\n // Track previous props for lifecycle hooks\n let previousProps: P | undefined\n let mounted = false\n\n // Create render function with reactive context\n const renderFunction: RenderFunction = () => {\n // Set up lifecycle hooks\n if (options.lifecycle?.onMount && !mounted) {\n const mountCleanup = options.lifecycle.onMount()\n if (typeof mountCleanup === 'function') {\n cleanup.push(mountCleanup)\n }\n mounted = true\n }\n\n // Set up props change tracking\n createEffect(() => {\n const currentProps = propsManager.getProps()\n\n if (previousProps && options.lifecycle?.onPropsChange) {\n const changedKeys = propsUtils.compareProps(previousProps, currentProps)\n if (changedKeys.length > 0) {\n options.lifecycle.onPropsChange(previousProps, currentProps, changedKeys)\n }\n }\n\n if (previousProps && options.lifecycle?.onUpdate) {\n options.lifecycle.onUpdate(previousProps, currentProps)\n }\n\n previousProps = { ...currentProps }\n })\n\n // Set up children change tracking\n createEffect(() => {\n const currentChildren = childrenManager.getChildren()\n if (options.lifecycle?.onChildrenChange && previousProps) {\n options.lifecycle.onChildrenChange(previousProps.children, currentChildren)\n }\n })\n\n // Set up onCleanup for unmount\n onCleanup(() => {\n if (options.lifecycle?.onUnmount) {\n options.lifecycle.onUnmount()\n }\n\n // Run all cleanup functions\n cleanup.forEach((fn) => fn())\n\n // Unregister component\n manager.unregisterComponent(componentId)\n })\n\n // Render the component\n try {\n if (options.lifecycle?.onRender) {\n options.lifecycle.onRender()\n }\n\n const currentProps = propsManager.getProps()\n const currentChildren = childrenManager.getChildren()\n\n // Check shouldUpdate if provided\n if (previousProps && options.shouldUpdate) {\n if (!options.shouldUpdate(previousProps, currentProps)) {\n // Skip render if shouldUpdate returns false\n return []\n }\n }\n\n return render(currentProps, currentChildren)\n } catch (error) {\n if (options.lifecycle?.onError) {\n options.lifecycle.onError(error as Error)\n }\n throw error\n }\n }\n\n // Create component instance\n const instance: ComponentInstance<P> = {\n type: 'component',\n render: renderFunction,\n props: propsManager.getProps(),\n children: childrenManager.getChildren(),\n context,\n cleanup,\n id: componentId,\n ref: props.ref,\n mounted: false,\n }\n\n // Apply ref if provided\n if (props.ref) {\n RefManager.applyRef(props.ref, refManager.getRef())\n }\n\n // Register with manager\n manager.registerComponent(instance)\n\n return instance\n }\n\n // Set component metadata\n if (options.displayName) {\n component.displayName = options.displayName\n }\n\n if (options.defaultProps) {\n component.defaultProps = options.defaultProps\n }\n\n return component\n}\n\n/**\n * Generate unique component ID\n */\nfunction generateComponentId(): string {\n return `component_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`\n}\n\n/**\n * Higher-order component for adding lifecycle hooks\n */\nexport function withLifecycle<P extends ComponentProps>(\n component: Component<P>,\n hooks: LifecycleHooks<P>\n): Component<P> {\n const wrappedComponent: Component<P> = (props: P) => {\n const instance = component(props)\n\n // Merge lifecycle hooks\n const existingCleanup = instance.cleanup || []\n const newCleanup: (() => void)[] = []\n\n if (hooks.onMount) {\n const mountCleanup = hooks.onMount()\n if (typeof mountCleanup === 'function') {\n newCleanup.push(mountCleanup)\n }\n }\n\n if (hooks.onUnmount) {\n newCleanup.push(hooks.onUnmount)\n }\n\n return {\n ...instance,\n cleanup: [...existingCleanup, ...newCleanup],\n }\n }\n\n wrappedComponent.displayName = `withLifecycle(${component.displayName || 'Component'})`\n return wrappedComponent\n}\n\n/**\n * Create a reactive component that updates when props change\n */\nexport function createReactiveComponent<P extends ComponentProps>(\n render: (props: P, children?: ComponentChildren) => DOMNode | DOMNode[]\n): Component<P> {\n return createComponent(render, {\n shouldUpdate: (prevProps, nextProps) => {\n // Always update for reactive components\n return !propsUtils.shallowEqual(prevProps, nextProps)\n },\n })\n}\n\n/**\n * Component error boundary\n */\nexport function createErrorBoundary<P extends ComponentProps>(\n fallback: (error: Error) => DOMNode | DOMNode[]\n): Component<P & { children: ComponentChildren }> {\n return createComponent(\n (props, children) => {\n const childrenManager = new ChildrenManager(children || props.children)\n\n try {\n return childrenManager.renderChildren()\n } catch (error) {\n console.error('Component error caught by boundary:', error)\n return fallback(error as Error)\n }\n },\n {\n displayName: 'ErrorBoundary',\n lifecycle: {\n onError: (error: Error) => {\n console.error('Error boundary caught error:', error)\n },\n },\n }\n )\n}\n\n/**\n * Create a component with advanced props handling\n */\nexport function createAdvancedComponent<P extends ComponentProps>(\n render: (\n props: P,\n children: ComponentChildren,\n helpers: {\n propsManager: PropsManager<P>\n childrenManager: ChildrenManager\n refManager: RefManager\n }\n ) => DOMNode | DOMNode[],\n options: {\n displayName?: string\n defaultProps?: Partial<P>\n validation?: ValidatedProps<P>\n lifecycle?: LifecycleHooks<P>\n shouldUpdate?: (prevProps: P, nextProps: P) => boolean\n } = {}\n): Component<P> {\n return createComponent((props, children) => {\n const propsManager = new PropsManager(props, options.validation)\n const childrenManager = new ChildrenManager(children || props.children)\n const refManager = new RefManager()\n\n return render(props, children || props.children, {\n propsManager,\n childrenManager,\n refManager,\n })\n }, options)\n}\n\n/**\n * Create fragment component for multiple children\n */\nexport function createFragment(children: ComponentChildren[]): ComponentInstance {\n const childrenManager = new ChildrenManager(children)\n\n return {\n type: 'component',\n render: () => childrenManager.renderChildren(),\n props: { children },\n children,\n id: generateComponentId(),\n }\n}\n\n/**\n * Create ref object\n */\nexport function createRef<T = any>(initialValue: T | null = null): { current: T | null } {\n return RefManager.createRef(initialValue)\n}\n\n/**\n * Forward ref to child component\n */\nexport function forwardRef<T, P extends ComponentProps>(\n render: (props: P, ref: Ref<T> | undefined) => DOMNode | DOMNode[]\n): Component<P & { ref?: Ref<T> }> {\n return createComponent<P & { ref?: Ref<T> }>((props) => {\n const { ref, ...restProps } = props\n return render(restProps as P, ref || undefined)\n })\n}\n"],"names":["_ComponentManager","__publicField","instance","cleanup","id","error","resolve","toUpdate","contextId","context","ComponentManager","createComponent","render","options","component","props","componentId","generateComponentId","manager","createComponentContext","propsManager","PropsManager","childrenManager","ChildrenManager","refManager","RefManager","previousProps","mounted","mountCleanup","createEffect","currentProps","changedKeys","propsUtils","currentChildren","onCleanup","fn","withLifecycle","hooks","wrappedComponent","existingCleanup","newCleanup","createReactiveComponent","prevProps","nextProps","createErrorBoundary","fallback","children","createAdvancedComponent","createFragment","createRef","initialValue","forwardRef","ref","restProps"],"mappings":"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"}
|
|
@@ -1,238 +0,0 @@
|
|
|
1
|
-
import { onCleanup as b } from "../reactive/cleanup.js";
|
|
2
|
-
import "../reactive/unified-scheduler.js";
|
|
3
|
-
import { createEffect as M } from "../reactive/effect.js";
|
|
4
|
-
import "../reactive/signal.js";
|
|
5
|
-
import "../reactive/scheduler.js";
|
|
6
|
-
import "../reactive/theme.js";
|
|
7
|
-
import { createComponentContext as Q } from "./component-context.js";
|
|
8
|
-
import { ChildrenManager as h, RefManager as d, PropsManager as P, propsUtils as U } from "./props.js";
|
|
9
|
-
var R = Object.defineProperty, N = (r, e, n) => e in r ? R(r, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : r[e] = n, l = (r, e, n) => N(r, typeof e != "symbol" ? e + "" : e, n);
|
|
10
|
-
const E = class s {
|
|
11
|
-
constructor() {
|
|
12
|
-
l(this, "components", /* @__PURE__ */ new Map()), l(this, "contexts", /* @__PURE__ */ new Map()), l(this, "cleanupQueue", /* @__PURE__ */ new Set()), l(this, "updateQueue", /* @__PURE__ */ new Set()), l(this, "isUpdating", !1);
|
|
13
|
-
}
|
|
14
|
-
static getInstance() {
|
|
15
|
-
return s.instance || (s.instance = new s()), s.instance;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Register a new component instance
|
|
19
|
-
*/
|
|
20
|
-
registerComponent(e) {
|
|
21
|
-
this.components.set(e.id, e), e.cleanup && e.cleanup.forEach((n) => {
|
|
22
|
-
this.cleanupQueue.add(n);
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Unregister and cleanup a component
|
|
27
|
-
*/
|
|
28
|
-
unregisterComponent(e) {
|
|
29
|
-
const n = this.components.get(e);
|
|
30
|
-
n && (n.cleanup && n.cleanup.forEach((t) => {
|
|
31
|
-
try {
|
|
32
|
-
t();
|
|
33
|
-
} catch (o) {
|
|
34
|
-
console.error(`Cleanup error for component ${e}:`, o);
|
|
35
|
-
}
|
|
36
|
-
}), this.components.delete(e), n.context && this.cleanupContext(n.context.id));
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Get component instance by ID
|
|
40
|
-
*/
|
|
41
|
-
getComponent(e) {
|
|
42
|
-
return this.components.get(e);
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Schedule component for update
|
|
46
|
-
*/
|
|
47
|
-
scheduleUpdate(e) {
|
|
48
|
-
this.updateQueue.add(e), this.isUpdating || this.flushUpdates();
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Process all scheduled updates
|
|
52
|
-
*/
|
|
53
|
-
async flushUpdates() {
|
|
54
|
-
if (this.isUpdating) return;
|
|
55
|
-
this.isUpdating = !0, await new Promise((n) => queueMicrotask(() => n(void 0)));
|
|
56
|
-
const e = Array.from(this.updateQueue);
|
|
57
|
-
this.updateQueue.clear(), e.forEach((n) => {
|
|
58
|
-
const t = this.components.get(n);
|
|
59
|
-
if (t)
|
|
60
|
-
try {
|
|
61
|
-
this.updateComponent(t);
|
|
62
|
-
} catch (o) {
|
|
63
|
-
console.error(`Update error for component ${n}:`, o);
|
|
64
|
-
}
|
|
65
|
-
}), this.isUpdating = !1;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Update a specific component instance
|
|
69
|
-
*/
|
|
70
|
-
updateComponent(e) {
|
|
71
|
-
e.props && (e.prevProps = { ...e.props }), e.render(), e.mounted || (e.mounted = !0);
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Cleanup context by ID
|
|
75
|
-
*/
|
|
76
|
-
cleanupContext(e) {
|
|
77
|
-
const n = this.contexts.get(e);
|
|
78
|
-
n && (n.cleanup.forEach((t) => {
|
|
79
|
-
try {
|
|
80
|
-
t();
|
|
81
|
-
} catch (o) {
|
|
82
|
-
console.error(`Context cleanup error for ${e}:`, o);
|
|
83
|
-
}
|
|
84
|
-
}), this.contexts.delete(e));
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Get all registered components (for debugging)
|
|
88
|
-
*/
|
|
89
|
-
getAllComponents() {
|
|
90
|
-
return Array.from(this.components.values());
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Cleanup all components and resources
|
|
94
|
-
*/
|
|
95
|
-
cleanup() {
|
|
96
|
-
Array.from(this.components.keys()).forEach((e) => {
|
|
97
|
-
this.unregisterComponent(e);
|
|
98
|
-
}), this.cleanupQueue.forEach((e) => {
|
|
99
|
-
try {
|
|
100
|
-
e();
|
|
101
|
-
} catch (n) {
|
|
102
|
-
console.error("Global cleanup error:", n);
|
|
103
|
-
}
|
|
104
|
-
}), this.cleanupQueue.clear(), this.updateQueue.clear();
|
|
105
|
-
}
|
|
106
|
-
};
|
|
107
|
-
l(E, "instance");
|
|
108
|
-
let _ = E;
|
|
109
|
-
function m(r, e = {}) {
|
|
110
|
-
const n = (t) => {
|
|
111
|
-
const o = v(), i = _.getInstance(), u = [], p = Q(o), g = new P(t, {
|
|
112
|
-
defaults: e.defaultProps || void 0,
|
|
113
|
-
...e.validation
|
|
114
|
-
}), y = new h(t.children), x = new d();
|
|
115
|
-
let a, C = !1;
|
|
116
|
-
const w = {
|
|
117
|
-
type: "component",
|
|
118
|
-
render: () => {
|
|
119
|
-
if (e.lifecycle?.onMount && !C) {
|
|
120
|
-
const c = e.lifecycle.onMount();
|
|
121
|
-
typeof c == "function" && u.push(c), C = !0;
|
|
122
|
-
}
|
|
123
|
-
M(() => {
|
|
124
|
-
const c = g.getProps();
|
|
125
|
-
if (a && e.lifecycle?.onPropsChange) {
|
|
126
|
-
const f = U.compareProps(a, c);
|
|
127
|
-
f.length > 0 && e.lifecycle.onPropsChange(a, c, f);
|
|
128
|
-
}
|
|
129
|
-
a && e.lifecycle?.onUpdate && e.lifecycle.onUpdate(a, c), a = { ...c };
|
|
130
|
-
}), M(() => {
|
|
131
|
-
const c = y.getChildren();
|
|
132
|
-
e.lifecycle?.onChildrenChange && a && e.lifecycle.onChildrenChange(a.children, c);
|
|
133
|
-
}), b(() => {
|
|
134
|
-
e.lifecycle?.onUnmount && e.lifecycle.onUnmount(), u.forEach((c) => c()), i.unregisterComponent(o);
|
|
135
|
-
});
|
|
136
|
-
try {
|
|
137
|
-
e.lifecycle?.onRender && e.lifecycle.onRender();
|
|
138
|
-
const c = g.getProps(), f = y.getChildren();
|
|
139
|
-
return a && e.shouldUpdate && !e.shouldUpdate(a, c) ? [] : r(c, f);
|
|
140
|
-
} catch (c) {
|
|
141
|
-
throw e.lifecycle?.onError && e.lifecycle.onError(c), c;
|
|
142
|
-
}
|
|
143
|
-
},
|
|
144
|
-
props: g.getProps(),
|
|
145
|
-
children: y.getChildren(),
|
|
146
|
-
context: p,
|
|
147
|
-
cleanup: u,
|
|
148
|
-
id: o,
|
|
149
|
-
ref: t.ref,
|
|
150
|
-
mounted: !1
|
|
151
|
-
};
|
|
152
|
-
return t.ref && d.applyRef(t.ref, x.getRef()), i.registerComponent(w), w;
|
|
153
|
-
};
|
|
154
|
-
return e.displayName && (n.displayName = e.displayName), e.defaultProps && (n.defaultProps = e.defaultProps), n;
|
|
155
|
-
}
|
|
156
|
-
function v() {
|
|
157
|
-
return `component_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
158
|
-
}
|
|
159
|
-
function G(r, e) {
|
|
160
|
-
const n = (t) => {
|
|
161
|
-
const o = r(t), i = o.cleanup || [], u = [];
|
|
162
|
-
if (e.onMount) {
|
|
163
|
-
const p = e.onMount();
|
|
164
|
-
typeof p == "function" && u.push(p);
|
|
165
|
-
}
|
|
166
|
-
return e.onUnmount && u.push(e.onUnmount), {
|
|
167
|
-
...o,
|
|
168
|
-
cleanup: [...i, ...u]
|
|
169
|
-
};
|
|
170
|
-
};
|
|
171
|
-
return n.displayName = `withLifecycle(${r.displayName || "Component"})`, n;
|
|
172
|
-
}
|
|
173
|
-
function K(r) {
|
|
174
|
-
return m(r, {
|
|
175
|
-
shouldUpdate: (e, n) => !U.shallowEqual(e, n)
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
function O(r) {
|
|
179
|
-
return m(
|
|
180
|
-
(e, n) => {
|
|
181
|
-
const t = new h(n || e.children);
|
|
182
|
-
try {
|
|
183
|
-
return t.renderChildren();
|
|
184
|
-
} catch (o) {
|
|
185
|
-
return console.error("Component error caught by boundary:", o), r(o);
|
|
186
|
-
}
|
|
187
|
-
},
|
|
188
|
-
{
|
|
189
|
-
displayName: "ErrorBoundary",
|
|
190
|
-
lifecycle: {
|
|
191
|
-
onError: (e) => {
|
|
192
|
-
console.error("Error boundary caught error:", e);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
);
|
|
197
|
-
}
|
|
198
|
-
function z(r, e = {}) {
|
|
199
|
-
return m((n, t) => {
|
|
200
|
-
const o = new P(n, e.validation), i = new h(t || n.children), u = new d();
|
|
201
|
-
return r(n, t || n.children, {
|
|
202
|
-
propsManager: o,
|
|
203
|
-
childrenManager: i,
|
|
204
|
-
refManager: u
|
|
205
|
-
});
|
|
206
|
-
}, e);
|
|
207
|
-
}
|
|
208
|
-
function H(r) {
|
|
209
|
-
const e = new h(r);
|
|
210
|
-
return {
|
|
211
|
-
type: "component",
|
|
212
|
-
render: () => e.renderChildren(),
|
|
213
|
-
props: { children: r },
|
|
214
|
-
children: r,
|
|
215
|
-
id: v()
|
|
216
|
-
};
|
|
217
|
-
}
|
|
218
|
-
function J(r = null) {
|
|
219
|
-
return d.createRef(r);
|
|
220
|
-
}
|
|
221
|
-
function T(r) {
|
|
222
|
-
return m((e) => {
|
|
223
|
-
const { ref: n, ...t } = e;
|
|
224
|
-
return r(t, n || void 0);
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
|
-
export {
|
|
228
|
-
_ as ComponentManager,
|
|
229
|
-
z as createAdvancedComponent,
|
|
230
|
-
m as createComponent,
|
|
231
|
-
O as createErrorBoundary,
|
|
232
|
-
H as createFragment,
|
|
233
|
-
K as createReactiveComponent,
|
|
234
|
-
J as createRef,
|
|
235
|
-
T as forwardRef,
|
|
236
|
-
G as withLifecycle
|
|
237
|
-
};
|
|
238
|
-
//# sourceMappingURL=component.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sources":["../../src/runtime/component.ts"],"sourcesContent":["/**\n * Component Management System (Phase 3.1.1)\n *\n * Core component lifecycle management including creation, mounting,\n * updating, and cleanup. Integrates with the reactive system to\n * provide efficient component updates.\n */\n\nimport { createEffect, onCleanup } from '../reactive'\nimport { createComponentContext } from './component-context'\nimport { ChildrenManager, PropsManager, propsUtils, RefManager } from './props'\nimport type {\n Component,\n ComponentChildren,\n ComponentContext,\n ComponentInstance,\n ComponentProps,\n DOMNode,\n LifecycleHooks,\n Ref,\n RenderFunction,\n ValidatedProps,\n} from './types'\n\n/**\n * Global component registry and lifecycle management\n */\nexport class ComponentManager {\n private static instance: ComponentManager\n private components = new Map<string, ComponentInstance>()\n private contexts = new Map<string, ComponentContext>()\n private cleanupQueue = new Set<() => void>()\n private updateQueue = new Set<string>()\n private isUpdating = false\n\n static getInstance(): ComponentManager {\n if (!ComponentManager.instance) {\n ComponentManager.instance = new ComponentManager()\n }\n return ComponentManager.instance\n }\n\n /**\n * Register a new component instance\n */\n registerComponent(instance: ComponentInstance): void {\n this.components.set(instance.id, instance)\n\n // Set up cleanup tracking\n if (instance.cleanup) {\n instance.cleanup.forEach((cleanup) => {\n this.cleanupQueue.add(cleanup)\n })\n }\n }\n\n /**\n * Unregister and cleanup a component\n */\n unregisterComponent(id: string): void {\n const instance = this.components.get(id)\n if (instance) {\n // Run cleanup functions\n if (instance.cleanup) {\n instance.cleanup.forEach((cleanup) => {\n try {\n cleanup()\n } catch (error) {\n console.error(`Cleanup error for component ${id}:`, error)\n }\n })\n }\n\n // Remove from registry\n this.components.delete(id)\n\n // Clean up context if exists\n if (instance.context) {\n this.cleanupContext(instance.context.id)\n }\n }\n }\n\n /**\n * Get component instance by ID\n */\n getComponent(id: string): ComponentInstance | undefined {\n return this.components.get(id)\n }\n\n /**\n * Schedule component for update\n */\n scheduleUpdate(id: string): void {\n this.updateQueue.add(id)\n\n if (!this.isUpdating) {\n this.flushUpdates()\n }\n }\n\n /**\n * Process all scheduled updates\n */\n private async flushUpdates(): Promise<void> {\n if (this.isUpdating) return\n\n this.isUpdating = true\n\n // Process updates in next microtask\n await new Promise((resolve) => queueMicrotask(() => resolve(undefined)))\n\n const toUpdate = Array.from(this.updateQueue)\n this.updateQueue.clear()\n\n toUpdate.forEach((id) => {\n const instance = this.components.get(id)\n if (instance) {\n try {\n this.updateComponent(instance)\n } catch (error) {\n console.error(`Update error for component ${id}:`, error)\n }\n }\n })\n\n this.isUpdating = false\n }\n\n /**\n * Update a specific component instance\n */\n private updateComponent(instance: ComponentInstance): void {\n // Store previous props for comparison\n if (instance.props) {\n instance.prevProps = { ...instance.props }\n }\n\n // Re-render the component\n instance.render()\n\n // Mark as mounted after first render\n if (!instance.mounted) {\n instance.mounted = true\n }\n\n // The actual DOM update will be handled by the reactive system\n // This just triggers the re-render process\n }\n\n /**\n * Cleanup context by ID\n */\n private cleanupContext(contextId: string): void {\n const context = this.contexts.get(contextId)\n if (context) {\n // Run all cleanup functions\n context.cleanup.forEach((cleanup) => {\n try {\n cleanup()\n } catch (error) {\n console.error(`Context cleanup error for ${contextId}:`, error)\n }\n })\n\n this.contexts.delete(contextId)\n }\n }\n\n /**\n * Get all registered components (for debugging)\n */\n getAllComponents(): ComponentInstance[] {\n return Array.from(this.components.values())\n }\n\n /**\n * Cleanup all components and resources\n */\n cleanup(): void {\n // Cleanup all components\n Array.from(this.components.keys()).forEach((id) => {\n this.unregisterComponent(id)\n })\n\n // Run remaining cleanup functions\n this.cleanupQueue.forEach((cleanup) => {\n try {\n cleanup()\n } catch (error) {\n console.error('Global cleanup error:', error)\n }\n })\n\n this.cleanupQueue.clear()\n this.updateQueue.clear()\n }\n}\n\n/**\n * Create a new component with enhanced props and children handling\n */\nexport function createComponent<P extends ComponentProps = ComponentProps>(\n render: (props: P, children?: ComponentChildren) => DOMNode | DOMNode[],\n options: {\n displayName?: string\n defaultProps?: Partial<P>\n lifecycle?: LifecycleHooks<P>\n validation?: ValidatedProps<P>\n shouldUpdate?: (prevProps: P, nextProps: P) => boolean\n } = {}\n): Component<P> {\n const component: Component<P> = (props: P) => {\n const componentId = generateComponentId()\n const manager = ComponentManager.getInstance()\n const cleanup: (() => void)[] = []\n\n // Create component context\n const context = createComponentContext(componentId)\n\n // Create props manager with validation\n const propsManager = new PropsManager(props, {\n defaults: options.defaultProps || undefined,\n ...options.validation,\n })\n\n // Create children manager\n const childrenManager = new ChildrenManager(props.children)\n\n // Create ref manager for component references\n const refManager = new RefManager()\n\n // Track previous props for lifecycle hooks\n let previousProps: P | undefined\n let mounted = false\n\n // Create render function with reactive context\n const renderFunction: RenderFunction = () => {\n // Set up lifecycle hooks\n if (options.lifecycle?.onMount && !mounted) {\n const mountCleanup = options.lifecycle.onMount()\n if (typeof mountCleanup === 'function') {\n cleanup.push(mountCleanup)\n }\n mounted = true\n }\n\n // Set up props change tracking\n createEffect(() => {\n const currentProps = propsManager.getProps()\n\n if (previousProps && options.lifecycle?.onPropsChange) {\n const changedKeys = propsUtils.compareProps(previousProps, currentProps)\n if (changedKeys.length > 0) {\n options.lifecycle.onPropsChange(previousProps, currentProps, changedKeys)\n }\n }\n\n if (previousProps && options.lifecycle?.onUpdate) {\n options.lifecycle.onUpdate(previousProps, currentProps)\n }\n\n previousProps = { ...currentProps }\n })\n\n // Set up children change tracking\n createEffect(() => {\n const currentChildren = childrenManager.getChildren()\n if (options.lifecycle?.onChildrenChange && previousProps) {\n options.lifecycle.onChildrenChange(previousProps.children, currentChildren)\n }\n })\n\n // Set up onCleanup for unmount\n onCleanup(() => {\n if (options.lifecycle?.onUnmount) {\n options.lifecycle.onUnmount()\n }\n\n // Run all cleanup functions\n cleanup.forEach((fn) => fn())\n\n // Unregister component\n manager.unregisterComponent(componentId)\n })\n\n // Render the component\n try {\n if (options.lifecycle?.onRender) {\n options.lifecycle.onRender()\n }\n\n const currentProps = propsManager.getProps()\n const currentChildren = childrenManager.getChildren()\n\n // Check shouldUpdate if provided\n if (previousProps && options.shouldUpdate) {\n if (!options.shouldUpdate(previousProps, currentProps)) {\n // Skip render if shouldUpdate returns false\n return []\n }\n }\n\n return render(currentProps, currentChildren)\n } catch (error) {\n if (options.lifecycle?.onError) {\n options.lifecycle.onError(error as Error)\n }\n throw error\n }\n }\n\n // Create component instance\n const instance: ComponentInstance<P> = {\n type: 'component',\n render: renderFunction,\n props: propsManager.getProps(),\n children: childrenManager.getChildren(),\n context,\n cleanup,\n id: componentId,\n ref: props.ref,\n mounted: false,\n }\n\n // Apply ref if provided\n if (props.ref) {\n RefManager.applyRef(props.ref, refManager.getRef())\n }\n\n // Register with manager\n manager.registerComponent(instance)\n\n return instance\n }\n\n // Set component metadata\n if (options.displayName) {\n component.displayName = options.displayName\n }\n\n if (options.defaultProps) {\n component.defaultProps = options.defaultProps\n }\n\n return component\n}\n\n/**\n * Generate unique component ID\n */\nfunction generateComponentId(): string {\n return `component_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`\n}\n\n/**\n * Higher-order component for adding lifecycle hooks\n */\nexport function withLifecycle<P extends ComponentProps>(\n component: Component<P>,\n hooks: LifecycleHooks<P>\n): Component<P> {\n const wrappedComponent: Component<P> = (props: P) => {\n const instance = component(props)\n\n // Merge lifecycle hooks\n const existingCleanup = instance.cleanup || []\n const newCleanup: (() => void)[] = []\n\n if (hooks.onMount) {\n const mountCleanup = hooks.onMount()\n if (typeof mountCleanup === 'function') {\n newCleanup.push(mountCleanup)\n }\n }\n\n if (hooks.onUnmount) {\n newCleanup.push(hooks.onUnmount)\n }\n\n return {\n ...instance,\n cleanup: [...existingCleanup, ...newCleanup],\n }\n }\n\n wrappedComponent.displayName = `withLifecycle(${component.displayName || 'Component'})`\n return wrappedComponent\n}\n\n/**\n * Create a reactive component that updates when props change\n */\nexport function createReactiveComponent<P extends ComponentProps>(\n render: (props: P, children?: ComponentChildren) => DOMNode | DOMNode[]\n): Component<P> {\n return createComponent(render, {\n shouldUpdate: (prevProps, nextProps) => {\n // Always update for reactive components\n return !propsUtils.shallowEqual(prevProps, nextProps)\n },\n })\n}\n\n/**\n * Component error boundary\n */\nexport function createErrorBoundary<P extends ComponentProps>(\n fallback: (error: Error) => DOMNode | DOMNode[]\n): Component<P & { children: ComponentChildren }> {\n return createComponent(\n (props, children) => {\n const childrenManager = new ChildrenManager(children || props.children)\n\n try {\n return childrenManager.renderChildren()\n } catch (error) {\n console.error('Component error caught by boundary:', error)\n return fallback(error as Error)\n }\n },\n {\n displayName: 'ErrorBoundary',\n lifecycle: {\n onError: (error: Error) => {\n console.error('Error boundary caught error:', error)\n },\n },\n }\n )\n}\n\n/**\n * Create a component with advanced props handling\n */\nexport function createAdvancedComponent<P extends ComponentProps>(\n render: (\n props: P,\n children: ComponentChildren,\n helpers: {\n propsManager: PropsManager<P>\n childrenManager: ChildrenManager\n refManager: RefManager\n }\n ) => DOMNode | DOMNode[],\n options: {\n displayName?: string\n defaultProps?: Partial<P>\n validation?: ValidatedProps<P>\n lifecycle?: LifecycleHooks<P>\n shouldUpdate?: (prevProps: P, nextProps: P) => boolean\n } = {}\n): Component<P> {\n return createComponent((props, children) => {\n const propsManager = new PropsManager(props, options.validation)\n const childrenManager = new ChildrenManager(children || props.children)\n const refManager = new RefManager()\n\n return render(props, children || props.children, {\n propsManager,\n childrenManager,\n refManager,\n })\n }, options)\n}\n\n/**\n * Create fragment component for multiple children\n */\nexport function createFragment(children: ComponentChildren[]): ComponentInstance {\n const childrenManager = new ChildrenManager(children)\n\n return {\n type: 'component',\n render: () => childrenManager.renderChildren(),\n props: { children },\n children,\n id: generateComponentId(),\n }\n}\n\n/**\n * Create ref object\n */\nexport function createRef<T = any>(initialValue: T | null = null): { current: T | null } {\n return RefManager.createRef(initialValue)\n}\n\n/**\n * Forward ref to child component\n */\nexport function forwardRef<T, P extends ComponentProps>(\n render: (props: P, ref: Ref<T> | undefined) => DOMNode | DOMNode[]\n): Component<P & { ref?: Ref<T> }> {\n return createComponent<P & { ref?: Ref<T> }>((props) => {\n const { ref, ...restProps } = props\n return render(restProps as P, ref || undefined)\n })\n}\n"],"names":["_ComponentManager","__publicField","instance","cleanup","id","error","resolve","toUpdate","contextId","context","ComponentManager","createComponent","render","options","component","props","componentId","generateComponentId","manager","createComponentContext","propsManager","PropsManager","childrenManager","ChildrenManager","refManager","RefManager","previousProps","mounted","mountCleanup","createEffect","currentProps","changedKeys","propsUtils","currentChildren","onCleanup","fn","withLifecycle","hooks","wrappedComponent","existingCleanup","newCleanup","createReactiveComponent","prevProps","nextProps","createErrorBoundary","fallback","children","createAdvancedComponent","createFragment","createRef","initialValue","forwardRef","ref","restProps"],"mappings":";;;;;;;;;AA2BO,MAAMA,IAAN,MAAMA,EAAiB;AAAA,EAAvB,cAAA;AAEL,IAAAC,EAAA,MAAQ,kCAAiB,IAAA,CAA+B,GACxDA,EAAA,MAAQ,gCAAe,IAAA,CAA8B,GACrDA,EAAA,MAAQ,oCAAmB,IAAA,CAAgB,GAC3CA,EAAA,MAAQ,mCAAkB,IAAA,CAAY,GACtCA,EAAA,MAAQ,cAAa,EAAA;AAAA,EAAA;AAAA,EAErB,OAAO,cAAgC;AACrC,WAAKD,EAAiB,aACpBA,EAAiB,WAAW,IAAIA,EAAA,IAE3BA,EAAiB;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA,EAKA,kBAAkBE,GAAmC;AACnD,SAAK,WAAW,IAAIA,EAAS,IAAIA,CAAQ,GAGrCA,EAAS,WACXA,EAAS,QAAQ,QAAQ,CAACC,MAAY;AACpC,WAAK,aAAa,IAAIA,CAAO;AAAA,IAC/B,CAAC;AAAA,EAEL;AAAA;AAAA;AAAA;AAAA,EAKA,oBAAoBC,GAAkB;AACpC,UAAMF,IAAW,KAAK,WAAW,IAAIE,CAAE;AACvC,IAAIF,MAEEA,EAAS,WACXA,EAAS,QAAQ,QAAQ,CAACC,MAAY;AACpC,UAAI;AACF,QAAAA,EAAA;AAAA,MACF,SAASE,GAAO;AACd,gBAAQ,MAAM,+BAA+BD,CAAE,KAAKC,CAAK;AAAA,MAC3D;AAAA,IACF,CAAC,GAIH,KAAK,WAAW,OAAOD,CAAE,GAGrBF,EAAS,WACX,KAAK,eAAeA,EAAS,QAAQ,EAAE;AAAA,EAG7C;AAAA;AAAA;AAAA;AAAA,EAKA,aAAaE,GAA2C;AACtD,WAAO,KAAK,WAAW,IAAIA,CAAE;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA,EAKA,eAAeA,GAAkB;AAC/B,SAAK,YAAY,IAAIA,CAAE,GAElB,KAAK,cACR,KAAK,aAAA;AAAA,EAET;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,eAA8B;AAC1C,QAAI,KAAK,WAAY;AAErB,SAAK,aAAa,IAGlB,MAAM,IAAI,QAAQ,CAACE,MAAY,eAAe,MAAMA,EAAQ,MAAS,CAAC,CAAC;AAEvE,UAAMC,IAAW,MAAM,KAAK,KAAK,WAAW;AAC5C,SAAK,YAAY,MAAA,GAEjBA,EAAS,QAAQ,CAACH,MAAO;AACvB,YAAMF,IAAW,KAAK,WAAW,IAAIE,CAAE;AACvC,UAAIF;AACF,YAAI;AACF,eAAK,gBAAgBA,CAAQ;AAAA,QAC/B,SAASG,GAAO;AACd,kBAAQ,MAAM,8BAA8BD,CAAE,KAAKC,CAAK;AAAA,QAC1D;AAAA,IAEJ,CAAC,GAED,KAAK,aAAa;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKQ,gBAAgBH,GAAmC;AAEzD,IAAIA,EAAS,UACXA,EAAS,YAAY,EAAE,GAAGA,EAAS,MAAA,IAIrCA,EAAS,OAAA,GAGJA,EAAS,YACZA,EAAS,UAAU;AAAA,EAKvB;AAAA;AAAA;AAAA;AAAA,EAKQ,eAAeM,GAAyB;AAC9C,UAAMC,IAAU,KAAK,SAAS,IAAID,CAAS;AAC3C,IAAIC,MAEFA,EAAQ,QAAQ,QAAQ,CAACN,MAAY;AACnC,UAAI;AACF,QAAAA,EAAA;AAAA,MACF,SAASE,GAAO;AACd,gBAAQ,MAAM,6BAA6BG,CAAS,KAAKH,CAAK;AAAA,MAChE;AAAA,IACF,CAAC,GAED,KAAK,SAAS,OAAOG,CAAS;AAAA,EAElC;AAAA;AAAA;AAAA;AAAA,EAKA,mBAAwC;AACtC,WAAO,MAAM,KAAK,KAAK,WAAW,QAAQ;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA,EAKA,UAAgB;AAEd,UAAM,KAAK,KAAK,WAAW,KAAA,CAAM,EAAE,QAAQ,CAACJ,MAAO;AACjD,WAAK,oBAAoBA,CAAE;AAAA,IAC7B,CAAC,GAGD,KAAK,aAAa,QAAQ,CAACD,MAAY;AACrC,UAAI;AACF,QAAAA,EAAA;AAAA,MACF,SAASE,GAAO;AACd,gBAAQ,MAAM,yBAAyBA,CAAK;AAAA,MAC9C;AAAA,IACF,CAAC,GAED,KAAK,aAAa,MAAA,GAClB,KAAK,YAAY,MAAA;AAAA,EACnB;AACF;AAzKEJ,EADWD,GACI,UAAA;AADV,IAAMU,IAANV;AA+KA,SAASW,EACdC,GACAC,IAMI,IACU;AACd,QAAMC,IAA0B,CAACC,MAAa;AAC5C,UAAMC,IAAcC,EAAA,GACdC,IAAUR,EAAiB,YAAA,GAC3BP,IAA0B,CAAA,GAG1BM,IAAUU,EAAuBH,CAAW,GAG5CI,IAAe,IAAIC,EAAaN,GAAO;AAAA,MAC3C,UAAUF,EAAQ,gBAAgB;AAAA,MAClC,GAAGA,EAAQ;AAAA,IAAA,CACZ,GAGKS,IAAkB,IAAIC,EAAgBR,EAAM,QAAQ,GAGpDS,IAAa,IAAIC,EAAA;AAGvB,QAAIC,GACAC,IAAU;AA+Ed,UAAMzB,IAAiC;AAAA,MACrC,MAAM;AAAA,MACN,QA9EqC,MAAM;AAE3C,YAAIW,EAAQ,WAAW,WAAW,CAACc,GAAS;AAC1C,gBAAMC,IAAef,EAAQ,UAAU,QAAA;AACvC,UAAI,OAAOe,KAAiB,cAC1BzB,EAAQ,KAAKyB,CAAY,GAE3BD,IAAU;AAAA,QACZ;AAGA,QAAAE,EAAa,MAAM;AACjB,gBAAMC,IAAeV,EAAa,SAAA;AAElC,cAAIM,KAAiBb,EAAQ,WAAW,eAAe;AACrD,kBAAMkB,IAAcC,EAAW,aAAaN,GAAeI,CAAY;AACvE,YAAIC,EAAY,SAAS,KACvBlB,EAAQ,UAAU,cAAca,GAAeI,GAAcC,CAAW;AAAA,UAE5E;AAEA,UAAIL,KAAiBb,EAAQ,WAAW,YACtCA,EAAQ,UAAU,SAASa,GAAeI,CAAY,GAGxDJ,IAAgB,EAAE,GAAGI,EAAA;AAAA,QACvB,CAAC,GAGDD,EAAa,MAAM;AACjB,gBAAMI,IAAkBX,EAAgB,YAAA;AACxC,UAAIT,EAAQ,WAAW,oBAAoBa,KACzCb,EAAQ,UAAU,iBAAiBa,EAAc,UAAUO,CAAe;AAAA,QAE9E,CAAC,GAGDC,EAAU,MAAM;AACd,UAAIrB,EAAQ,WAAW,aACrBA,EAAQ,UAAU,UAAA,GAIpBV,EAAQ,QAAQ,CAACgC,MAAOA,EAAA,CAAI,GAG5BjB,EAAQ,oBAAoBF,CAAW;AAAA,QACzC,CAAC;AAGD,YAAI;AACF,UAAIH,EAAQ,WAAW,YACrBA,EAAQ,UAAU,SAAA;AAGpB,gBAAMiB,IAAeV,EAAa,SAAA,GAC5Ba,IAAkBX,EAAgB,YAAA;AAGxC,iBAAII,KAAiBb,EAAQ,gBACvB,CAACA,EAAQ,aAAaa,GAAeI,CAAY,IAE5C,CAAA,IAIJlB,EAAOkB,GAAcG,CAAe;AAAA,QAC7C,SAAS5B,GAAO;AACd,gBAAIQ,EAAQ,WAAW,WACrBA,EAAQ,UAAU,QAAQR,CAAc,GAEpCA;AAAA,QACR;AAAA,MACF;AAAA,MAME,OAAOe,EAAa,SAAA;AAAA,MACpB,UAAUE,EAAgB,YAAA;AAAA,MAC1B,SAAAb;AAAA,MACA,SAAAN;AAAA,MACA,IAAIa;AAAA,MACJ,KAAKD,EAAM;AAAA,MACX,SAAS;AAAA,IAAA;AAIX,WAAIA,EAAM,OACRU,EAAW,SAASV,EAAM,KAAKS,EAAW,QAAQ,GAIpDN,EAAQ,kBAAkBhB,CAAQ,GAE3BA;AAAA,EACT;AAGA,SAAIW,EAAQ,gBACVC,EAAU,cAAcD,EAAQ,cAG9BA,EAAQ,iBACVC,EAAU,eAAeD,EAAQ,eAG5BC;AACT;AAKA,SAASG,IAA8B;AACrC,SAAO,aAAa,KAAK,IAAA,CAAK,IAAI,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,OAAO,GAAG,CAAC,CAAC;AAC3E;AAKO,SAASmB,EACdtB,GACAuB,GACc;AACd,QAAMC,IAAiC,CAACvB,MAAa;AACnD,UAAMb,IAAWY,EAAUC,CAAK,GAG1BwB,IAAkBrC,EAAS,WAAW,CAAA,GACtCsC,IAA6B,CAAA;AAEnC,QAAIH,EAAM,SAAS;AACjB,YAAMT,IAAeS,EAAM,QAAA;AAC3B,MAAI,OAAOT,KAAiB,cAC1BY,EAAW,KAAKZ,CAAY;AAAA,IAEhC;AAEA,WAAIS,EAAM,aACRG,EAAW,KAAKH,EAAM,SAAS,GAG1B;AAAA,MACL,GAAGnC;AAAA,MACH,SAAS,CAAC,GAAGqC,GAAiB,GAAGC,CAAU;AAAA,IAAA;AAAA,EAE/C;AAEA,SAAAF,EAAiB,cAAc,iBAAiBxB,EAAU,eAAe,WAAW,KAC7EwB;AACT;AAKO,SAASG,EACd7B,GACc;AACd,SAAOD,EAAgBC,GAAQ;AAAA,IAC7B,cAAc,CAAC8B,GAAWC,MAEjB,CAACX,EAAW,aAAaU,GAAWC,CAAS;AAAA,EACtD,CACD;AACH;AAKO,SAASC,EACdC,GACgD;AAChD,SAAOlC;AAAA,IACL,CAACI,GAAO+B,MAAa;AACnB,YAAMxB,IAAkB,IAAIC,EAAgBuB,KAAY/B,EAAM,QAAQ;AAEtE,UAAI;AACF,eAAOO,EAAgB,eAAA;AAAA,MACzB,SAASjB,GAAO;AACd,uBAAQ,MAAM,uCAAuCA,CAAK,GACnDwC,EAASxC,CAAc;AAAA,MAChC;AAAA,IACF;AAAA,IACA;AAAA,MACE,aAAa;AAAA,MACb,WAAW;AAAA,QACT,SAAS,CAACA,MAAiB;AACzB,kBAAQ,MAAM,gCAAgCA,CAAK;AAAA,QACrD;AAAA,MAAA;AAAA,IACF;AAAA,EACF;AAEJ;AAKO,SAAS0C,EACdnC,GASAC,IAMI,IACU;AACd,SAAOF,EAAgB,CAACI,GAAO+B,MAAa;AAC1C,UAAM1B,IAAe,IAAIC,EAAaN,GAAOF,EAAQ,UAAU,GACzDS,IAAkB,IAAIC,EAAgBuB,KAAY/B,EAAM,QAAQ,GAChES,IAAa,IAAIC,EAAA;AAEvB,WAAOb,EAAOG,GAAO+B,KAAY/B,EAAM,UAAU;AAAA,MAC/C,cAAAK;AAAA,MACA,iBAAAE;AAAA,MACA,YAAAE;AAAA,IAAA,CACD;AAAA,EACH,GAAGX,CAAO;AACZ;AAKO,SAASmC,EAAeF,GAAkD;AAC/E,QAAMxB,IAAkB,IAAIC,EAAgBuB,CAAQ;AAEpD,SAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ,MAAMxB,EAAgB,eAAA;AAAA,IAC9B,OAAO,EAAE,UAAAwB,EAAA;AAAA,IACT,UAAAA;AAAA,IACA,IAAI7B,EAAA;AAAA,EAAoB;AAE5B;AAKO,SAASgC,EAAmBC,IAAyB,MAA6B;AACvF,SAAOzB,EAAW,UAAUyB,CAAY;AAC1C;AAKO,SAASC,EACdvC,GACiC;AACjC,SAAOD,EAAsC,CAACI,MAAU;AACtD,UAAM,EAAE,KAAAqC,GAAK,GAAGC,EAAA,IAActC;AAC9B,WAAOH,EAAOyC,GAAgBD,KAAO,MAAS;AAAA,EAChD,CAAC;AACH;"}
|
package/dist/runtime/context.cjs
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../reactive/cleanup.cjs");const x=require("../reactive/computed.cjs");require("../reactive/unified-scheduler.cjs");const g=require("../reactive/signal.cjs");require("../reactive/scheduler.cjs");require("../reactive/theme.cjs");const w=require("./component-context.cjs");var b=Object.defineProperty,y=(s,e,t)=>e in s?b(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,a=(s,e,t)=>y(s,typeof e!="symbol"?e+"":e,t);const f=class l{constructor(){a(this,"contexts",new Map),a(this,"providerStack",new Map),a(this,"currentComponent",null)}static getInstance(){return l.instance||(l.instance=new l),l.instance}setCurrentComponent(e){this.currentComponent=e}getCurrentComponent(){return this.currentComponent}registerProvider(e,t,r){this.providerStack.has(e)||this.providerStack.set(e,[]);const n=this.providerStack.get(e),[i,c]=g.createSignal(t),o={value:t,signal:[i,c],subscribers:new Set,providers:new Set([r])};return n.push(o),r.providers.set(e,o),()=>{const h=n.indexOf(o);h!==-1&&n.splice(h,1),r.providers.delete(e),o.subscribers.clear(),o.providers.clear()}}getContextValue(e,t){const r=this.providerStack.get(e),n=r&&r.length>0?r[r.length-1]:null;if(n)return this.currentComponent&&(n.subscribers.add(this.currentComponent.id),this.currentComponent.consumers.add(e)),[n.signal[0],!0];const[i]=g.createSignal(t);return[i,!1]}updateContextValue(e,t){const r=this.providerStack.get(e),n=r&&r.length>0?r[r.length-1]:null;return n?(n.value=t,n.signal[1](t),!0):!1}getAllContexts(){const e=new Map;for(const[t,r]of this.providerStack.entries())r.length>0&&e.set(t,r[r.length-1]);return e}clear(){this.contexts.clear(),this.providerStack.clear(),this.currentComponent=null}};a(f,"instance");let C=f;class u{constructor(){a(this,"registry",C.getInstance())}createProvider(e,t,r){return{type:"component",render:()=>{const n=this.registry.registerProvider(e.symbol,t,w.createComponentContext(`provider_${e.symbol.toString()}`)),i=r.flatMap(c=>{const o=c.render();return Array.isArray(o)?o:[o]});return[{type:"element",tag:"div",props:{"data-context-provider":e.displayName||"provider"},children:i,dispose:n}]},props:{children:r},id:`provider_${Date.now()}`,children:r}}setCurrentComponent(e){this.registry.setCurrentComponent(e)}updateContext(e,t){return this.registry.updateContextValue(e.symbol,t)}getAllContexts(){return this.registry.getAllContexts()}clear(){this.registry.clear()}}function d(s,e={}){return{symbol:Symbol(e.displayName||"TachUIContext"),defaultValue:s,displayName:e.displayName}}function v(s){const e=C.getInstance(),[t,r]=e.getContextValue(s.symbol,s.defaultValue);return r||console.warn(`Context ${s.displayName||"unnamed"} used without a Provider. Using default value.`),t}function I(s,e){return t=>function(n){return new u().createProvider(s,e,[t(n)])}}function P(s,e){return{type:"component",render:()=>{const t=v(s),n=x.createComputed(()=>{const i=t();return e(i)})().render();return Array.isArray(n)?n:[n]},props:{},id:`consumer_${Date.now()}`}}class m{constructor(){a(this,"services",new Map),a(this,"factories",new Map),a(this,"singletons",new Map),a(this,"scoped",new Map),a(this,"dependencies",new Map)}register(e,t,r={}){this.services.set(e,t),r.dependencies&&this.dependencies.set(e,r.dependencies),r.singleton&&this.singletons.set(e,null),r.scoped&&this.scoped.set(e,null)}resolve(e){if(this.singletons.has(e)){let t=this.singletons.get(e);return t===null&&(t=this.createInstance(e),this.singletons.set(e,t)),t}if(this.scoped.has(e)){let t=this.scoped.get(e);return t===null&&(t=this.createInstance(e),this.scoped.set(e,t)),t}return this.createInstance(e)}createInstance(e){const r=(this.dependencies.get(e)||[]).map(c=>this.resolve(c)),n=this.factories.get(e);if(n)return n(...r);const i=this.services.get(e);if(i){if(typeof i=="function")try{return new i(...r)}catch{return i(...r)}return i}throw new Error(`Service ${String(e)} not found in DI container`)}has(e){return this.services.has(e)||this.factories.has(e)}clear(){this.services.clear(),this.factories.clear(),this.singletons.clear(),this.scoped.clear(),this.dependencies.clear()}getRegistered(){return[...this.services.keys(),...this.factories.keys()]}}const p=new m;function M(s){return p.resolve(s)}function S(s){return e=>{const t=s||e.name;return p.register(t,e),e}}const V={createContextGroup(s,e={}){const t={};for(const[r,n]of Object.entries(s))t[r]=d(n,{displayName:e.prefix?`${e.prefix}.${r}`:r});return t},combineProviders(s,e,t){const r=new u;let n=t;for(const[i,c]of Object.entries(s)){const o=e[i];n=[r.createProvider(c,o,n)]}return n[0]},createValidatedContext(s,e,t={}){return{...d(s,t),validate:e}}},D=new u;exports.ContextManager=u;exports.DIContainer=m;exports.Injectable=S;exports.contextUtils=V;exports.createContext=d;exports.createContextConsumer=P;exports.defaultContextManager=D;exports.globalDI=p;exports.inject=M;exports.useContext=v;exports.withProvider=I;
|
|
2
|
-
//# sourceMappingURL=context.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.cjs","sources":["../../src/runtime/context.ts"],"sourcesContent":["/**\n * Context and Dependency Injection System (Phase 3.2.1)\n *\n * Reactive context system for state sharing and dependency injection\n * patterns. Provides Provider/Consumer patterns similar to React Context\n * but with fine-grained reactivity integration.\n */\n\nimport { createComputed, createSignal } from '../reactive'\nimport { createComponentContext } from './component-context'\nimport type { ComponentContext, ComponentInstance, ComponentProps } from './types'\n\n/**\n * Context symbol for type-safe context identification\n */\nexport interface TachUIContext<T> {\n symbol: symbol\n defaultValue: T\n displayName?: string | undefined\n}\n\n/**\n * Context value with reactive capabilities\n */\ninterface ContextValue<T> {\n value: T\n signal: [() => T, (value: T) => void]\n subscribers: Set<symbol>\n providers: Set<ComponentContext>\n}\n\n/**\n * Global context registry\n */\nclass ContextRegistry {\n private static instance: ContextRegistry\n private contexts = new Map<symbol, ContextValue<any>>()\n private providerStack = new Map<symbol, ContextValue<any>[]>()\n private currentComponent: ComponentContext | null = null\n\n static getInstance(): ContextRegistry {\n if (!ContextRegistry.instance) {\n ContextRegistry.instance = new ContextRegistry()\n }\n return ContextRegistry.instance\n }\n\n /**\n * Set the current component context for provider resolution\n */\n setCurrentComponent(component: ComponentContext | null): void {\n this.currentComponent = component\n }\n\n /**\n * Get the current component context\n */\n getCurrentComponent(): ComponentContext | null {\n return this.currentComponent\n }\n\n /**\n * Register a context provider\n */\n registerProvider<T>(contextSymbol: symbol, value: T, component: ComponentContext): () => void {\n // Create or get context stack\n if (!this.providerStack.has(contextSymbol)) {\n this.providerStack.set(contextSymbol, [])\n }\n\n const stack = this.providerStack.get(contextSymbol)!\n\n // Create reactive signal for the context value\n const [getValue, setValue] = createSignal<T>(value)\n\n const contextValue: ContextValue<T> = {\n value,\n signal: [getValue, setValue],\n subscribers: new Set(),\n providers: new Set([component]),\n }\n\n // Push to stack (nested providers)\n stack.push(contextValue)\n\n // Register in component's providers\n component.providers.set(contextSymbol, contextValue)\n\n // Return cleanup function\n return () => {\n // Remove from stack\n const index = stack.indexOf(contextValue)\n if (index !== -1) {\n stack.splice(index, 1)\n }\n\n // Remove from component\n component.providers.delete(contextSymbol)\n\n // Cleanup subscribers\n contextValue.subscribers.clear()\n contextValue.providers.clear()\n }\n }\n\n /**\n * Get context value with reactive subscription\n */\n getContextValue<T>(contextSymbol: symbol, defaultValue: T): [() => T, boolean] {\n // Find the nearest provider in the stack\n const stack = this.providerStack.get(contextSymbol)\n const contextValue = stack && stack.length > 0 ? stack[stack.length - 1] : null\n\n if (contextValue) {\n // Subscribe current component to context changes\n if (this.currentComponent) {\n contextValue.subscribers.add(this.currentComponent.id as any)\n this.currentComponent.consumers.add(contextSymbol)\n }\n\n // Return reactive value\n return [contextValue.signal[0], true]\n }\n\n // Return default value if no provider found\n const [defaultSignal] = createSignal<T>(defaultValue)\n return [defaultSignal, false]\n }\n\n /**\n * Update context value and notify subscribers\n */\n updateContextValue<T>(contextSymbol: symbol, newValue: T): boolean {\n const stack = this.providerStack.get(contextSymbol)\n const contextValue = stack && stack.length > 0 ? stack[stack.length - 1] : null\n\n if (contextValue) {\n contextValue.value = newValue\n contextValue.signal[1](newValue)\n return true\n }\n\n return false\n }\n\n /**\n * Get all registered contexts (for debugging)\n */\n getAllContexts(): Map<symbol, ContextValue<any>> {\n const allContexts = new Map<symbol, ContextValue<any>>()\n\n for (const [symbol, stack] of this.providerStack.entries()) {\n if (stack.length > 0) {\n allContexts.set(symbol, stack[stack.length - 1])\n }\n }\n\n return allContexts\n }\n\n /**\n * Clear all contexts (for testing)\n */\n clear(): void {\n this.contexts.clear()\n this.providerStack.clear()\n this.currentComponent = null\n }\n}\n\n/**\n * Context Manager for high-level context operations\n */\nexport class ContextManager {\n private registry = ContextRegistry.getInstance()\n\n /**\n * Create a context provider component\n */\n createProvider<T>(\n context: TachUIContext<T>,\n value: T,\n children: ComponentInstance[]\n ): ComponentInstance {\n return {\n type: 'component',\n render: () => {\n // Register this provider\n const cleanup = this.registry.registerProvider(\n context.symbol,\n value,\n createComponentContext(`provider_${context.symbol.toString()}`)\n )\n\n // Render children with context available\n const childNodes = children.flatMap((child) => {\n const result = child.render()\n return Array.isArray(result) ? result : [result]\n })\n\n // Setup cleanup\n return [\n {\n type: 'element' as const,\n tag: 'div',\n props: { 'data-context-provider': context.displayName || 'provider' },\n children: childNodes,\n dispose: cleanup,\n },\n ]\n },\n props: { children },\n id: `provider_${Date.now()}`,\n children,\n }\n }\n\n /**\n * Set current component for context resolution\n */\n setCurrentComponent(component: ComponentContext | null): void {\n this.registry.setCurrentComponent(component)\n }\n\n /**\n * Update a context value\n */\n updateContext<T>(context: TachUIContext<T>, newValue: T): boolean {\n return this.registry.updateContextValue(context.symbol, newValue)\n }\n\n /**\n * Get all active contexts (for debugging)\n */\n getAllContexts(): Map<symbol, any> {\n return this.registry.getAllContexts()\n }\n\n /**\n * Clear all contexts\n */\n clear(): void {\n this.registry.clear()\n }\n}\n\n/**\n * Create a new context\n */\nexport function createContext<T>(\n defaultValue: T,\n options: {\n displayName?: string\n } = {}\n): TachUIContext<T> {\n return {\n symbol: Symbol(options.displayName || 'TachUIContext'),\n defaultValue,\n displayName: options.displayName,\n }\n}\n\n/**\n * Use context hook equivalent\n */\nexport function useContext<T>(context: TachUIContext<T>): () => T {\n const registry = ContextRegistry.getInstance()\n const [getValue, hasProvider] = registry.getContextValue(context.symbol, context.defaultValue)\n\n if (!hasProvider) {\n console.warn(\n `Context ${context.displayName || 'unnamed'} used without a Provider. Using default value.`\n )\n }\n\n return getValue\n}\n\n/**\n * Create context provider HOC\n */\nexport function withProvider<T, P extends ComponentProps>(context: TachUIContext<T>, value: T) {\n return (WrappedComponent: (props: P) => ComponentInstance) =>\n function ProviderWrapper(props: P): ComponentInstance {\n const manager = new ContextManager()\n\n return manager.createProvider(context, value, [WrappedComponent(props)])\n }\n}\n\n/**\n * Create reactive context consumer\n */\nexport function createContextConsumer<T>(\n context: TachUIContext<T>,\n render: (value: T) => ComponentInstance\n): ComponentInstance {\n return {\n type: 'component',\n render: () => {\n const getValue = useContext(context)\n\n // Create reactive effect for context changes\n const consumerInstance = createComputed(() => {\n const value = getValue()\n return render(value)\n })\n\n const result = consumerInstance().render()\n return Array.isArray(result) ? result : [result]\n },\n props: {},\n id: `consumer_${Date.now()}`,\n }\n}\n\n/**\n * Dependency injection container\n */\nexport class DIContainer {\n private services = new Map<symbol | string, any>()\n private factories = new Map<symbol | string, () => any>()\n private singletons = new Map<symbol | string, any>()\n private scoped = new Map<symbol | string, any>()\n private dependencies = new Map<symbol | string, (symbol | string)[]>()\n\n /**\n * Register a service with the container\n */\n register<T>(\n key: symbol | string,\n implementation: T | (() => T),\n options: {\n singleton?: boolean\n scoped?: boolean\n dependencies?: (symbol | string)[]\n } = {}\n ): void {\n // Always register as service - we'll handle function vs class in createInstance\n this.services.set(key, implementation)\n\n if (options.dependencies) {\n this.dependencies.set(key, options.dependencies)\n }\n\n if (options.singleton) {\n this.singletons.set(key, null) // Will be created on first access\n }\n\n if (options.scoped) {\n this.scoped.set(key, null) // Will be created per scope\n }\n }\n\n /**\n * Resolve a service from the container\n */\n resolve<T>(key: symbol | string): T {\n // Check for singleton\n if (this.singletons.has(key)) {\n let instance = this.singletons.get(key)\n if (instance === null) {\n instance = this.createInstance<T>(key)\n this.singletons.set(key, instance)\n }\n return instance\n }\n\n // Check for scoped (simplified - would need scope management in real implementation)\n if (this.scoped.has(key)) {\n let instance = this.scoped.get(key)\n if (instance === null) {\n instance = this.createInstance<T>(key)\n this.scoped.set(key, instance)\n }\n return instance\n }\n\n // Create new instance\n return this.createInstance<T>(key)\n }\n\n /**\n * Create instance with dependency injection\n */\n private createInstance<T>(key: symbol | string): T {\n // Get dependencies\n const deps = this.dependencies.get(key) || []\n const resolvedDeps = deps.map((dep) => this.resolve(dep))\n\n // Check for factory\n const factory = this.factories.get(key)\n if (factory) {\n return (factory as any)(...resolvedDeps)\n }\n\n // Get service\n const service = this.services.get(key)\n if (service) {\n if (typeof service === 'function') {\n // Check if it's a class constructor or regular function\n try {\n return new (service as any)(...resolvedDeps)\n } catch (_error) {\n // If 'new' fails, try calling as function\n return (service as any)(...resolvedDeps)\n }\n }\n return service\n }\n\n throw new Error(`Service ${String(key)} not found in DI container`)\n }\n\n /**\n * Check if service is registered\n */\n has(key: symbol | string): boolean {\n return this.services.has(key) || this.factories.has(key)\n }\n\n /**\n * Clear the container\n */\n clear(): void {\n this.services.clear()\n this.factories.clear()\n this.singletons.clear()\n this.scoped.clear()\n this.dependencies.clear()\n }\n\n /**\n * Get all registered services (for debugging)\n */\n getRegistered(): (symbol | string)[] {\n return [...this.services.keys(), ...this.factories.keys()]\n }\n}\n\n/**\n * Global DI container instance\n */\nexport const globalDI = new DIContainer()\n\n/**\n * Inject dependencies into a component\n */\nexport function inject<T>(key: symbol | string): T {\n return globalDI.resolve<T>(key)\n}\n\n/**\n * Create service registration decorator (for future use)\n */\nexport function Injectable(key?: symbol | string) {\n return <T extends new (...args: any[]) => any>(constructor: T) => {\n const serviceKey = key || constructor.name\n globalDI.register(serviceKey, constructor)\n return constructor\n }\n}\n\n/**\n * Context utilities\n */\nexport const contextUtils = {\n /**\n * Create multiple contexts at once\n */\n createContextGroup<T extends Record<string, any>>(\n defaults: T,\n options: { prefix?: string } = {}\n ): { [K in keyof T]: TachUIContext<T[K]> } {\n const contexts = {} as { [K in keyof T]: TachUIContext<T[K]> }\n\n for (const [key, value] of Object.entries(defaults)) {\n contexts[key as keyof T] = createContext(value, {\n displayName: options.prefix ? `${options.prefix}.${key}` : key,\n })\n }\n\n return contexts\n },\n\n /**\n * Combine multiple context providers\n */\n combineProviders<T extends Record<string, any>>(\n contexts: { [K in keyof T]: TachUIContext<T[K]> },\n values: T,\n children: ComponentInstance[]\n ): ComponentInstance {\n const manager = new ContextManager()\n\n // Nest providers\n let currentChildren = children\n\n for (const [key, context] of Object.entries(contexts)) {\n const value = values[key as keyof T]\n currentChildren = [manager.createProvider(context, value, currentChildren)]\n }\n\n return currentChildren[0]\n },\n\n /**\n * Create context with validation\n */\n createValidatedContext<T>(\n defaultValue: T,\n validator: (value: T) => boolean | string,\n options: { displayName?: string } = {}\n ): TachUIContext<T> & { validate: (value: T) => boolean | string } {\n const context = createContext(defaultValue, options)\n\n return {\n ...context,\n validate: validator,\n }\n },\n}\n\n/**\n * Default context manager instance\n */\nexport const defaultContextManager = new ContextManager()\n"],"names":["_ContextRegistry","__publicField","component","contextSymbol","value","stack","getValue","setValue","createSignal","contextValue","index","defaultValue","defaultSignal","newValue","allContexts","symbol","ContextRegistry","ContextManager","context","children","cleanup","createComponentContext","childNodes","child","result","createContext","options","useContext","registry","hasProvider","withProvider","WrappedComponent","props","createContextConsumer","render","createComputed","DIContainer","key","implementation","instance","resolvedDeps","dep","factory","service","globalDI","inject","Injectable","constructor","serviceKey","contextUtils","defaults","contexts","values","manager","currentChildren","validator","defaultContextManager"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sources":["../../src/runtime/context.ts"],"sourcesContent":["/**\n * Context and Dependency Injection System (Phase 3.2.1)\n *\n * Reactive context system for state sharing and dependency injection\n * patterns. Provides Provider/Consumer patterns similar to React Context\n * but with fine-grained reactivity integration.\n */\n\nimport { createComputed, createSignal } from '../reactive'\nimport { createComponentContext } from './component-context'\nimport type { ComponentContext, ComponentInstance, ComponentProps } from './types'\n\n/**\n * Context symbol for type-safe context identification\n */\nexport interface TachUIContext<T> {\n symbol: symbol\n defaultValue: T\n displayName?: string | undefined\n}\n\n/**\n * Context value with reactive capabilities\n */\ninterface ContextValue<T> {\n value: T\n signal: [() => T, (value: T) => void]\n subscribers: Set<symbol>\n providers: Set<ComponentContext>\n}\n\n/**\n * Global context registry\n */\nclass ContextRegistry {\n private static instance: ContextRegistry\n private contexts = new Map<symbol, ContextValue<any>>()\n private providerStack = new Map<symbol, ContextValue<any>[]>()\n private currentComponent: ComponentContext | null = null\n\n static getInstance(): ContextRegistry {\n if (!ContextRegistry.instance) {\n ContextRegistry.instance = new ContextRegistry()\n }\n return ContextRegistry.instance\n }\n\n /**\n * Set the current component context for provider resolution\n */\n setCurrentComponent(component: ComponentContext | null): void {\n this.currentComponent = component\n }\n\n /**\n * Get the current component context\n */\n getCurrentComponent(): ComponentContext | null {\n return this.currentComponent\n }\n\n /**\n * Register a context provider\n */\n registerProvider<T>(contextSymbol: symbol, value: T, component: ComponentContext): () => void {\n // Create or get context stack\n if (!this.providerStack.has(contextSymbol)) {\n this.providerStack.set(contextSymbol, [])\n }\n\n const stack = this.providerStack.get(contextSymbol)!\n\n // Create reactive signal for the context value\n const [getValue, setValue] = createSignal<T>(value)\n\n const contextValue: ContextValue<T> = {\n value,\n signal: [getValue, setValue],\n subscribers: new Set(),\n providers: new Set([component]),\n }\n\n // Push to stack (nested providers)\n stack.push(contextValue)\n\n // Register in component's providers\n component.providers.set(contextSymbol, contextValue)\n\n // Return cleanup function\n return () => {\n // Remove from stack\n const index = stack.indexOf(contextValue)\n if (index !== -1) {\n stack.splice(index, 1)\n }\n\n // Remove from component\n component.providers.delete(contextSymbol)\n\n // Cleanup subscribers\n contextValue.subscribers.clear()\n contextValue.providers.clear()\n }\n }\n\n /**\n * Get context value with reactive subscription\n */\n getContextValue<T>(contextSymbol: symbol, defaultValue: T): [() => T, boolean] {\n // Find the nearest provider in the stack\n const stack = this.providerStack.get(contextSymbol)\n const contextValue = stack && stack.length > 0 ? stack[stack.length - 1] : null\n\n if (contextValue) {\n // Subscribe current component to context changes\n if (this.currentComponent) {\n contextValue.subscribers.add(this.currentComponent.id as any)\n this.currentComponent.consumers.add(contextSymbol)\n }\n\n // Return reactive value\n return [contextValue.signal[0], true]\n }\n\n // Return default value if no provider found\n const [defaultSignal] = createSignal<T>(defaultValue)\n return [defaultSignal, false]\n }\n\n /**\n * Update context value and notify subscribers\n */\n updateContextValue<T>(contextSymbol: symbol, newValue: T): boolean {\n const stack = this.providerStack.get(contextSymbol)\n const contextValue = stack && stack.length > 0 ? stack[stack.length - 1] : null\n\n if (contextValue) {\n contextValue.value = newValue\n contextValue.signal[1](newValue)\n return true\n }\n\n return false\n }\n\n /**\n * Get all registered contexts (for debugging)\n */\n getAllContexts(): Map<symbol, ContextValue<any>> {\n const allContexts = new Map<symbol, ContextValue<any>>()\n\n for (const [symbol, stack] of this.providerStack.entries()) {\n if (stack.length > 0) {\n allContexts.set(symbol, stack[stack.length - 1])\n }\n }\n\n return allContexts\n }\n\n /**\n * Clear all contexts (for testing)\n */\n clear(): void {\n this.contexts.clear()\n this.providerStack.clear()\n this.currentComponent = null\n }\n}\n\n/**\n * Context Manager for high-level context operations\n */\nexport class ContextManager {\n private registry = ContextRegistry.getInstance()\n\n /**\n * Create a context provider component\n */\n createProvider<T>(\n context: TachUIContext<T>,\n value: T,\n children: ComponentInstance[]\n ): ComponentInstance {\n return {\n type: 'component',\n render: () => {\n // Register this provider\n const cleanup = this.registry.registerProvider(\n context.symbol,\n value,\n createComponentContext(`provider_${context.symbol.toString()}`)\n )\n\n // Render children with context available\n const childNodes = children.flatMap((child) => {\n const result = child.render()\n return Array.isArray(result) ? result : [result]\n })\n\n // Setup cleanup\n return [\n {\n type: 'element' as const,\n tag: 'div',\n props: { 'data-context-provider': context.displayName || 'provider' },\n children: childNodes,\n dispose: cleanup,\n },\n ]\n },\n props: { children },\n id: `provider_${Date.now()}`,\n children,\n }\n }\n\n /**\n * Set current component for context resolution\n */\n setCurrentComponent(component: ComponentContext | null): void {\n this.registry.setCurrentComponent(component)\n }\n\n /**\n * Update a context value\n */\n updateContext<T>(context: TachUIContext<T>, newValue: T): boolean {\n return this.registry.updateContextValue(context.symbol, newValue)\n }\n\n /**\n * Get all active contexts (for debugging)\n */\n getAllContexts(): Map<symbol, any> {\n return this.registry.getAllContexts()\n }\n\n /**\n * Clear all contexts\n */\n clear(): void {\n this.registry.clear()\n }\n}\n\n/**\n * Create a new context\n */\nexport function createContext<T>(\n defaultValue: T,\n options: {\n displayName?: string\n } = {}\n): TachUIContext<T> {\n return {\n symbol: Symbol(options.displayName || 'TachUIContext'),\n defaultValue,\n displayName: options.displayName,\n }\n}\n\n/**\n * Use context hook equivalent\n */\nexport function useContext<T>(context: TachUIContext<T>): () => T {\n const registry = ContextRegistry.getInstance()\n const [getValue, hasProvider] = registry.getContextValue(context.symbol, context.defaultValue)\n\n if (!hasProvider) {\n console.warn(\n `Context ${context.displayName || 'unnamed'} used without a Provider. Using default value.`\n )\n }\n\n return getValue\n}\n\n/**\n * Create context provider HOC\n */\nexport function withProvider<T, P extends ComponentProps>(context: TachUIContext<T>, value: T) {\n return (WrappedComponent: (props: P) => ComponentInstance) =>\n function ProviderWrapper(props: P): ComponentInstance {\n const manager = new ContextManager()\n\n return manager.createProvider(context, value, [WrappedComponent(props)])\n }\n}\n\n/**\n * Create reactive context consumer\n */\nexport function createContextConsumer<T>(\n context: TachUIContext<T>,\n render: (value: T) => ComponentInstance\n): ComponentInstance {\n return {\n type: 'component',\n render: () => {\n const getValue = useContext(context)\n\n // Create reactive effect for context changes\n const consumerInstance = createComputed(() => {\n const value = getValue()\n return render(value)\n })\n\n const result = consumerInstance().render()\n return Array.isArray(result) ? result : [result]\n },\n props: {},\n id: `consumer_${Date.now()}`,\n }\n}\n\n/**\n * Dependency injection container\n */\nexport class DIContainer {\n private services = new Map<symbol | string, any>()\n private factories = new Map<symbol | string, () => any>()\n private singletons = new Map<symbol | string, any>()\n private scoped = new Map<symbol | string, any>()\n private dependencies = new Map<symbol | string, (symbol | string)[]>()\n\n /**\n * Register a service with the container\n */\n register<T>(\n key: symbol | string,\n implementation: T | (() => T),\n options: {\n singleton?: boolean\n scoped?: boolean\n dependencies?: (symbol | string)[]\n } = {}\n ): void {\n // Always register as service - we'll handle function vs class in createInstance\n this.services.set(key, implementation)\n\n if (options.dependencies) {\n this.dependencies.set(key, options.dependencies)\n }\n\n if (options.singleton) {\n this.singletons.set(key, null) // Will be created on first access\n }\n\n if (options.scoped) {\n this.scoped.set(key, null) // Will be created per scope\n }\n }\n\n /**\n * Resolve a service from the container\n */\n resolve<T>(key: symbol | string): T {\n // Check for singleton\n if (this.singletons.has(key)) {\n let instance = this.singletons.get(key)\n if (instance === null) {\n instance = this.createInstance<T>(key)\n this.singletons.set(key, instance)\n }\n return instance\n }\n\n // Check for scoped (simplified - would need scope management in real implementation)\n if (this.scoped.has(key)) {\n let instance = this.scoped.get(key)\n if (instance === null) {\n instance = this.createInstance<T>(key)\n this.scoped.set(key, instance)\n }\n return instance\n }\n\n // Create new instance\n return this.createInstance<T>(key)\n }\n\n /**\n * Create instance with dependency injection\n */\n private createInstance<T>(key: symbol | string): T {\n // Get dependencies\n const deps = this.dependencies.get(key) || []\n const resolvedDeps = deps.map((dep) => this.resolve(dep))\n\n // Check for factory\n const factory = this.factories.get(key)\n if (factory) {\n return (factory as any)(...resolvedDeps)\n }\n\n // Get service\n const service = this.services.get(key)\n if (service) {\n if (typeof service === 'function') {\n // Check if it's a class constructor or regular function\n try {\n return new (service as any)(...resolvedDeps)\n } catch (_error) {\n // If 'new' fails, try calling as function\n return (service as any)(...resolvedDeps)\n }\n }\n return service\n }\n\n throw new Error(`Service ${String(key)} not found in DI container`)\n }\n\n /**\n * Check if service is registered\n */\n has(key: symbol | string): boolean {\n return this.services.has(key) || this.factories.has(key)\n }\n\n /**\n * Clear the container\n */\n clear(): void {\n this.services.clear()\n this.factories.clear()\n this.singletons.clear()\n this.scoped.clear()\n this.dependencies.clear()\n }\n\n /**\n * Get all registered services (for debugging)\n */\n getRegistered(): (symbol | string)[] {\n return [...this.services.keys(), ...this.factories.keys()]\n }\n}\n\n/**\n * Global DI container instance\n */\nexport const globalDI = new DIContainer()\n\n/**\n * Inject dependencies into a component\n */\nexport function inject<T>(key: symbol | string): T {\n return globalDI.resolve<T>(key)\n}\n\n/**\n * Create service registration decorator (for future use)\n */\nexport function Injectable(key?: symbol | string) {\n return <T extends new (...args: any[]) => any>(constructor: T) => {\n const serviceKey = key || constructor.name\n globalDI.register(serviceKey, constructor)\n return constructor\n }\n}\n\n/**\n * Context utilities\n */\nexport const contextUtils = {\n /**\n * Create multiple contexts at once\n */\n createContextGroup<T extends Record<string, any>>(\n defaults: T,\n options: { prefix?: string } = {}\n ): { [K in keyof T]: TachUIContext<T[K]> } {\n const contexts = {} as { [K in keyof T]: TachUIContext<T[K]> }\n\n for (const [key, value] of Object.entries(defaults)) {\n contexts[key as keyof T] = createContext(value, {\n displayName: options.prefix ? `${options.prefix}.${key}` : key,\n })\n }\n\n return contexts\n },\n\n /**\n * Combine multiple context providers\n */\n combineProviders<T extends Record<string, any>>(\n contexts: { [K in keyof T]: TachUIContext<T[K]> },\n values: T,\n children: ComponentInstance[]\n ): ComponentInstance {\n const manager = new ContextManager()\n\n // Nest providers\n let currentChildren = children\n\n for (const [key, context] of Object.entries(contexts)) {\n const value = values[key as keyof T]\n currentChildren = [manager.createProvider(context, value, currentChildren)]\n }\n\n return currentChildren[0]\n },\n\n /**\n * Create context with validation\n */\n createValidatedContext<T>(\n defaultValue: T,\n validator: (value: T) => boolean | string,\n options: { displayName?: string } = {}\n ): TachUIContext<T> & { validate: (value: T) => boolean | string } {\n const context = createContext(defaultValue, options)\n\n return {\n ...context,\n validate: validator,\n }\n },\n}\n\n/**\n * Default context manager instance\n */\nexport const defaultContextManager = new ContextManager()\n"],"names":["_ContextRegistry","__publicField","component","contextSymbol","value","stack","getValue","setValue","createSignal","contextValue","index","defaultValue","defaultSignal","newValue","allContexts","symbol","ContextRegistry","ContextManager","context","children","cleanup","createComponentContext","childNodes","child","result","createContext","options","useContext","registry","hasProvider","withProvider","WrappedComponent","props","createContextConsumer","render","createComputed","DIContainer","key","implementation","instance","resolvedDeps","dep","factory","service","globalDI","inject","Injectable","constructor","serviceKey","contextUtils","defaults","contexts","values","manager","currentChildren","validator","defaultContextManager"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../reactive/cleanup.cjs");require("../reactive/unified-scheduler.cjs");const d=require("../reactive/signal.cjs");require("../reactive/scheduler.cjs");require("../reactive/theme.cjs");const g=require("./performance.cjs");var T=Object.defineProperty,v=(r,e,t)=>e in r?T(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,i=(r,e,t)=>v(r,typeof e!="symbol"?e+"":e,t);const h=class u{constructor(){i(this,"config",{autoEnable:!1,trackAllComponents:!0,trackMemoryUsage:!0,enableWarnings:!0,enableErrors:!0,maxTreeDepth:50,updateInterval:100}),i(this,"state",{enabled:!1,performanceTracking:!1,componentInspection:!1,reactiveDebugging:!1,memoryTracking:!1,warningsEnabled:!0,logLevel:"warn"}),i(this,"componentTree",new Map),i(this,"componentRegistry",new Map),i(this,"debugEvents",[]),i(this,"activeComponents",new Set),i(this,"treeSignal"),i(this,"setTree"),i(this,"eventsSignal"),i(this,"setEvents"),i(this,"stateSignal"),i(this,"setState"),i(this,"updateTimer",null);const[e,t]=d.createSignal(new Map),[n,o]=d.createSignal([]),[a,c]=d.createSignal({...this.state});this.treeSignal=e,this.setTree=t,this.eventsSignal=n,this.setEvents=o,this.stateSignal=a,this.setState=c}static getInstance(){return u.instance||(u.instance=new u),u.instance}configure(e){this.config={...this.config,...e},e.autoEnable&&this.enable()}enable(){this.state.enabled=!0,this.state.performanceTracking=!0,this.state.componentInspection=!0,this.state.reactiveDebugging=!0,this.state.memoryTracking=this.config.trackMemoryUsage,this.setState({...this.state}),g.globalPerformanceMonitor.enable(),g.globalPerformanceMonitor.configure({trackComponents:!0,trackReactive:!0,trackMemory:this.config.trackMemoryUsage,trackRender:!0}),this.startUpdateTimer(),this.addDebugEvent({type:"component_mount",timestamp:performance.now(),data:{message:"DevTools enabled"}}),console.log("🛠️ TachUI DevTools enabled")}disable(){this.state.enabled=!1,this.setState({...this.state}),g.globalPerformanceMonitor.disable(),this.stopUpdateTimer(),console.log("🛠️ TachUI DevTools disabled")}isEnabled(){return this.state.enabled}registerComponent(e,t,n){if(!this.state.enabled||!this.state.componentInspection)return;this.componentRegistry.set(e,t),this.activeComponents.add(e);const o=g.globalPerformanceMonitor.getComponentMetrics().get(e),a=n&&this.componentTree.get(n)||null,c=a?a.depth+1:0,p={id:e,name:this.getComponentName(t),type:t.type||"component",props:t.props||{},children:[],parent:a,depth:c,metrics:o,reactiveSubscriptions:this.getReactiveSubscriptions(e),contextProviders:this.getContextProviders(e),contextConsumers:this.getContextConsumers(e),renderCount:o?.updateCount||0,lastRenderTime:o?.lastRenderDuration||0,memoryUsage:o?.memoryUsage||0,warnings:[],errors:[]};a&&a.children.push(p),this.componentTree.set(e,p),this.setTree(new Map(this.componentTree)),this.addDebugEvent({type:"component_mount",timestamp:performance.now(),componentId:e,componentName:p.name,data:{props:t.props,parentId:n,depth:c}})}unregisterComponent(e){if(!this.state.enabled)return;const t=this.componentTree.get(e);if(t){if(t.parent){const n=t.parent.children.indexOf(t);n!==-1&&t.parent.children.splice(n,1)}this.removeNodeAndDescendants(t),this.addDebugEvent({type:"component_unmount",timestamp:performance.now(),componentId:e,componentName:t.name,data:{lifetime:performance.now()-(t.metrics?.mountTime||0)}})}this.componentRegistry.delete(e),this.componentTree.delete(e),this.activeComponents.delete(e),this.setTree(new Map(this.componentTree))}updateComponent(e,t){if(!this.state.enabled)return;const n=this.componentTree.get(e);n&&(Object.assign(n,t),this.setTree(new Map(this.componentTree)),this.addDebugEvent({type:"component_update",timestamp:performance.now(),componentId:e,componentName:n.name,data:t}))}trackReactiveOperation(e,t,n){!this.state.enabled||!this.state.reactiveDebugging||this.addDebugEvent({type:"reactive_update",timestamp:performance.now(),componentId:n,data:{type:e,operation:t}})}trackContextChange(e,t,n){this.state.enabled&&this.addDebugEvent({type:"context_change",timestamp:performance.now(),componentId:n,data:{contextName:e,newValue:t}})}addWarning(e,t){if(!this.state.enabled||!this.state.warningsEnabled)return;const n=this.componentTree.get(e);n&&(n.warnings.push(t),this.setTree(new Map(this.componentTree)),this.addDebugEvent({type:"performance_warning",timestamp:performance.now(),componentId:e,componentName:n.name,data:{message:t}}),(this.state.logLevel==="warn"||this.state.logLevel==="debug")&&console.warn(`⚠️ [${n.name}] ${t}`))}addError(e,t){if(!this.state.enabled)return;const n=t instanceof Error?t.message:t,o=t instanceof Error?t.stack:void 0,a=this.componentTree.get(e);a&&(a.errors.push(n),this.setTree(new Map(this.componentTree)),this.addDebugEvent({type:"error",timestamp:performance.now(),componentId:e,componentName:a.name,data:{message:n,error:t instanceof Error?t:void 0},stack:o}),console.error(`❌ [${a.name}] ${n}`,t))}getComponentTree(){return new Map(this.componentTree)}getComponentTreeSignal(){return this.treeSignal}getRootComponents(){return Array.from(this.componentTree.values()).filter(e=>e.parent===null)}getComponent(e){return this.componentTree.get(e)}findComponentsByName(e){return Array.from(this.componentTree.values()).filter(t=>t.name.toLowerCase().includes(e.toLowerCase()))}getDebugEvents(){return[...this.debugEvents]}getDebugEventsSignal(){return this.eventsSignal}getDevState(){return{...this.state}}getDevStateSignal(){return this.stateSignal}getPerformanceSummary(){const e=Array.from(this.componentTree.values()),t=e.reduce((s,m)=>s+m.lastRenderTime,0),n=e.length>0?t/e.length:0,o=e.reduce((s,m)=>s+m.memoryUsage,0),a=e.reduce((s,m)=>s+m.warnings.length,0),c=e.reduce((s,m)=>s+m.errors.length,0),p=e.filter(s=>s.lastRenderTime>5).map(s=>({id:s.id,name:s.name,renderTime:s.lastRenderTime})).sort((s,m)=>m.renderTime-s.renderTime).slice(0,10);return{componentCount:e.length,averageRenderTime:n,memoryUsage:o,warningCount:a,errorCount:c,slowComponents:p}}exportDebugData(){return JSON.stringify({componentTree:Array.from(this.componentTree.entries()),debugEvents:this.debugEvents,performanceMetrics:g.globalPerformanceMonitor.exportMetrics(),timestamp:Date.now()},null,2)}clear(){this.componentTree.clear(),this.componentRegistry.clear(),this.debugEvents.length=0,this.activeComponents.clear(),this.setTree(new Map),this.setEvents([]),g.globalPerformanceMonitor.clear()}getComponentName(e){return"displayName"in e&&typeof e.displayName=="string"?e.displayName:e.tag?e.tag||"Element":e.text?"Text":e.fragment?"Fragment":e.id||"Component"}getReactiveSubscriptions(e){return[]}getContextProviders(e){return[]}getContextConsumers(e){return[]}removeNodeAndDescendants(e){for(const t of e.children)this.removeNodeAndDescendants(t),this.componentTree.delete(t.id),this.componentRegistry.delete(t.id),this.activeComponents.delete(t.id)}addDebugEvent(e){this.debugEvents.push(e),this.debugEvents.length>1e3&&this.debugEvents.shift(),this.setEvents([...this.debugEvents])}startUpdateTimer(){this.updateTimer||(this.updateTimer=window.setInterval(()=>{this.updateComponentMetrics()},this.config.updateInterval))}stopUpdateTimer(){this.updateTimer&&(clearInterval(this.updateTimer),this.updateTimer=null)}updateComponentMetrics(){if(!this.state.enabled)return;const e=g.globalPerformanceMonitor.getComponentMetrics();for(const[t,n]of this.componentTree){const o=e.get(t);o&&(n.metrics=o,n.renderCount=o.updateCount,n.lastRenderTime=o.lastRenderDuration,n.memoryUsage=o.memoryUsage,o.lastRenderDuration>16&&this.addWarning(t,`Slow render: ${o.lastRenderDuration.toFixed(2)}ms`),o.memoryUsage>1024*1024&&this.addWarning(t,`High memory usage: ${(o.memoryUsage/(1024*1024)).toFixed(2)}MB`))}this.setTree(new Map(this.componentTree))}};i(h,"instance");let f=h;const l=f.getInstance();function b(){l.enable(),g.globalPerformanceMonitor.enable()}function C(){return l.getComponentTree()}function y(r){l.configure({autoEnable:!0,trackAllComponents:!0,trackMemoryUsage:!0,enableWarnings:!0,enableErrors:!0,...r}),console.log("🚀 TachUI Development Mode enabled")}function w(){return l}const E={logComponentTree(){const r=l.getRootComponents();function e(t,n=0){const o=" ".repeat(n),a=t.warnings.length>0?` ⚠️(${t.warnings.length})`:"",c=t.errors.length>0?` ❌(${t.errors.length})`:"",p=t.lastRenderTime>0?` ${t.lastRenderTime.toFixed(2)}ms`:"";console.log(`${o}${t.name}#${t.id}${p}${a}${c}`);for(const s of t.children)e(s,n+1)}console.group("🌳 Component Tree");for(const t of r)e(t);console.groupEnd()},logPerformanceSummary(){const r=l.getPerformanceSummary();if(console.group("📊 Performance Summary"),console.log(`Components: ${r.componentCount}`),console.log(`Average Render Time: ${r.averageRenderTime.toFixed(2)}ms`),console.log(`Memory Usage: ${(r.memoryUsage/(1024*1024)).toFixed(2)}MB`),console.log(`Warnings: ${r.warningCount}`),console.log(`Errors: ${r.errorCount}`),r.slowComponents.length>0){console.group("🐌 Slow Components");for(const e of r.slowComponents)console.log(`${e.name}: ${e.renderTime.toFixed(2)}ms`);console.groupEnd()}console.groupEnd()},findComponent(r){return l.findComponentsByName(r)},inspectComponent(r){const e=l.getComponent(r);return e&&(console.group(`🔍 Component: ${e.name}`),console.log("Props:",e.props),console.log("Metrics:",e.metrics),console.log("Children:",e.children.length),console.log("Warnings:",e.warnings),console.log("Errors:",e.errors),console.groupEnd()),e}};exports.DevTools=f;exports.devUtils=E;exports.enableDevelopmentMode=y;exports.enablePerformanceTracking=b;exports.getComponentTree=C;exports.getDevTools=w;exports.globalDevTools=l;
|
|
2
|
-
//# sourceMappingURL=dev-tools.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dev-tools.cjs","sources":["../../src/runtime/dev-tools.ts"],"sourcesContent":["/**\n * Development Tools System (Phase 3.2.2)\n *\n * Comprehensive debugging and development tools for TachUI.\n * Provides component tree inspection, performance analysis,\n * and runtime debugging capabilities.\n */\n\nimport { createSignal } from '../reactive'\nimport { type ComponentMetrics, globalPerformanceMonitor } from './performance'\nimport type { ComponentInstance } from './types'\n\n/**\n * Component tree node for debugging\n */\nexport interface ComponentTreeNode {\n id: string\n name: string\n type: 'component' | 'element' | 'text' | 'fragment'\n props: Record<string, any>\n children: ComponentTreeNode[]\n parent: ComponentTreeNode | null\n depth: number\n metrics?: ComponentMetrics\n reactiveSubscriptions?: string[]\n contextProviders?: string[]\n contextConsumers?: string[]\n renderCount: number\n lastRenderTime: number\n memoryUsage: number\n warnings: string[]\n errors: string[]\n}\n\n/**\n * Development environment state\n */\nexport interface DevState {\n enabled: boolean\n performanceTracking: boolean\n componentInspection: boolean\n reactiveDebugging: boolean\n memoryTracking: boolean\n warningsEnabled: boolean\n logLevel: 'error' | 'warn' | 'info' | 'debug'\n}\n\n/**\n * Development tools configuration\n */\nexport interface DevToolsConfig {\n autoEnable: boolean\n trackAllComponents: boolean\n trackMemoryUsage: boolean\n enableWarnings: boolean\n enableErrors: boolean\n maxTreeDepth: number\n updateInterval: number\n}\n\n/**\n * Runtime debugging event\n */\nexport interface DebugEvent {\n type:\n | 'component_mount'\n | 'component_unmount'\n | 'component_update'\n | 'reactive_create'\n | 'reactive_update'\n | 'context_change'\n | 'performance_warning'\n | 'error'\n timestamp: number\n componentId?: string\n componentName?: string\n data: any\n stack?: string\n}\n\n/**\n * Development tools manager\n */\nexport class DevTools {\n private static instance: DevTools\n\n private config: DevToolsConfig = {\n autoEnable: false,\n trackAllComponents: true,\n trackMemoryUsage: true,\n enableWarnings: true,\n enableErrors: true,\n maxTreeDepth: 50,\n updateInterval: 100,\n }\n\n private state: DevState = {\n enabled: false,\n performanceTracking: false,\n componentInspection: false,\n reactiveDebugging: false,\n memoryTracking: false,\n warningsEnabled: true,\n logLevel: 'warn',\n }\n\n private componentTree = new Map<string, ComponentTreeNode>()\n private componentRegistry = new Map<string, ComponentInstance>()\n private debugEvents: DebugEvent[] = []\n private activeComponents = new Set<string>()\n\n // Reactive signals for real-time updates\n private treeSignal: () => Map<string, ComponentTreeNode>\n private setTree: (value: Map<string, ComponentTreeNode>) => void\n private eventsSignal: () => DebugEvent[]\n private setEvents: (value: DebugEvent[]) => void\n private stateSignal: () => DevState\n private setState: (value: DevState) => void\n\n // Update timer\n private updateTimer: number | null = null\n\n constructor() {\n // Initialize reactive signals\n const [treeSignal, setTree] = createSignal<Map<string, ComponentTreeNode>>(new Map())\n const [eventsSignal, setEvents] = createSignal<DebugEvent[]>([])\n const [stateSignal, setState] = createSignal<DevState>({ ...this.state })\n\n this.treeSignal = treeSignal\n this.setTree = setTree\n this.eventsSignal = eventsSignal\n this.setEvents = setEvents\n this.stateSignal = stateSignal\n this.setState = setState\n }\n\n static getInstance(): DevTools {\n if (!DevTools.instance) {\n DevTools.instance = new DevTools()\n }\n return DevTools.instance\n }\n\n /**\n * Configure development tools\n */\n configure(config: Partial<DevToolsConfig>): void {\n this.config = { ...this.config, ...config }\n\n if (config.autoEnable) {\n this.enable()\n }\n }\n\n /**\n * Enable development tools\n */\n enable(): void {\n this.state.enabled = true\n this.state.performanceTracking = true\n this.state.componentInspection = true\n this.state.reactiveDebugging = true\n this.state.memoryTracking = this.config.trackMemoryUsage\n this.setState({ ...this.state })\n\n // Enable performance monitoring\n globalPerformanceMonitor.enable()\n globalPerformanceMonitor.configure({\n trackComponents: true,\n trackReactive: true,\n trackMemory: this.config.trackMemoryUsage,\n trackRender: true,\n })\n\n // Start update timer\n this.startUpdateTimer()\n\n this.addDebugEvent({\n type: 'component_mount',\n timestamp: performance.now(),\n data: { message: 'DevTools enabled' },\n })\n\n console.log('🛠️ TachUI DevTools enabled')\n }\n\n /**\n * Disable development tools\n */\n disable(): void {\n this.state.enabled = false\n this.setState({ ...this.state })\n\n globalPerformanceMonitor.disable()\n this.stopUpdateTimer()\n\n console.log('🛠️ TachUI DevTools disabled')\n }\n\n /**\n * Check if dev tools are enabled\n */\n isEnabled(): boolean {\n return this.state.enabled\n }\n\n /**\n * Register a component instance\n */\n registerComponent(componentId: string, instance: ComponentInstance, parentId?: string): void {\n if (!this.state.enabled || !this.state.componentInspection) return\n\n this.componentRegistry.set(componentId, instance)\n this.activeComponents.add(componentId)\n\n // Get metrics from performance monitor\n const metrics = globalPerformanceMonitor.getComponentMetrics().get(componentId)\n\n // Find parent node\n const parent = parentId ? this.componentTree.get(parentId) || null : null\n const depth = parent ? parent.depth + 1 : 0\n\n // Create tree node\n const treeNode: ComponentTreeNode = {\n id: componentId,\n name: this.getComponentName(instance),\n type: instance.type || 'component',\n props: instance.props || {},\n children: [],\n parent,\n depth,\n metrics,\n reactiveSubscriptions: this.getReactiveSubscriptions(componentId),\n contextProviders: this.getContextProviders(componentId),\n contextConsumers: this.getContextConsumers(componentId),\n renderCount: metrics?.updateCount || 0,\n lastRenderTime: metrics?.lastRenderDuration || 0,\n memoryUsage: metrics?.memoryUsage || 0,\n warnings: [],\n errors: [],\n }\n\n // Add to parent's children\n if (parent) {\n parent.children.push(treeNode)\n }\n\n this.componentTree.set(componentId, treeNode)\n this.setTree(new Map(this.componentTree))\n\n this.addDebugEvent({\n type: 'component_mount',\n timestamp: performance.now(),\n componentId,\n componentName: treeNode.name,\n data: { props: instance.props, parentId, depth },\n })\n }\n\n /**\n * Unregister a component instance\n */\n unregisterComponent(componentId: string): void {\n if (!this.state.enabled) return\n\n const treeNode = this.componentTree.get(componentId)\n if (treeNode) {\n // Remove from parent's children\n if (treeNode.parent) {\n const childIndex = treeNode.parent.children.indexOf(treeNode)\n if (childIndex !== -1) {\n treeNode.parent.children.splice(childIndex, 1)\n }\n }\n\n // Remove all descendants\n this.removeNodeAndDescendants(treeNode)\n\n this.addDebugEvent({\n type: 'component_unmount',\n timestamp: performance.now(),\n componentId,\n componentName: treeNode.name,\n data: { lifetime: performance.now() - (treeNode.metrics?.mountTime || 0) },\n })\n }\n\n this.componentRegistry.delete(componentId)\n this.componentTree.delete(componentId)\n this.activeComponents.delete(componentId)\n this.setTree(new Map(this.componentTree))\n }\n\n /**\n * Update component data\n */\n updateComponent(componentId: string, updates: Partial<ComponentTreeNode>): void {\n if (!this.state.enabled) return\n\n const treeNode = this.componentTree.get(componentId)\n if (treeNode) {\n Object.assign(treeNode, updates)\n this.setTree(new Map(this.componentTree))\n\n this.addDebugEvent({\n type: 'component_update',\n timestamp: performance.now(),\n componentId,\n componentName: treeNode.name,\n data: updates,\n })\n }\n }\n\n /**\n * Track reactive operation\n */\n trackReactiveOperation(type: string, operation: string, componentId?: string): void {\n if (!this.state.enabled || !this.state.reactiveDebugging) return\n\n this.addDebugEvent({\n type: 'reactive_update',\n timestamp: performance.now(),\n componentId,\n data: { type, operation },\n })\n }\n\n /**\n * Track context changes\n */\n trackContextChange(contextName: string, newValue: any, componentId?: string): void {\n if (!this.state.enabled) return\n\n this.addDebugEvent({\n type: 'context_change',\n timestamp: performance.now(),\n componentId,\n data: { contextName, newValue },\n })\n }\n\n /**\n * Add warning to component\n */\n addWarning(componentId: string, message: string): void {\n if (!this.state.enabled || !this.state.warningsEnabled) return\n\n const treeNode = this.componentTree.get(componentId)\n if (treeNode) {\n treeNode.warnings.push(message)\n this.setTree(new Map(this.componentTree))\n\n this.addDebugEvent({\n type: 'performance_warning',\n timestamp: performance.now(),\n componentId,\n componentName: treeNode.name,\n data: { message },\n })\n\n if (this.state.logLevel === 'warn' || this.state.logLevel === 'debug') {\n console.warn(`⚠️ [${treeNode.name}] ${message}`)\n }\n }\n }\n\n /**\n * Add error to component\n */\n addError(componentId: string, error: Error | string): void {\n if (!this.state.enabled) return\n\n const message = error instanceof Error ? error.message : error\n const stack = error instanceof Error ? error.stack : undefined\n\n const treeNode = this.componentTree.get(componentId)\n if (treeNode) {\n treeNode.errors.push(message)\n this.setTree(new Map(this.componentTree))\n\n this.addDebugEvent({\n type: 'error',\n timestamp: performance.now(),\n componentId,\n componentName: treeNode.name,\n data: { message, error: error instanceof Error ? error : undefined },\n stack,\n })\n\n console.error(`❌ [${treeNode.name}] ${message}`, error)\n }\n }\n\n /**\n * Get component tree\n */\n getComponentTree(): Map<string, ComponentTreeNode> {\n return new Map(this.componentTree)\n }\n\n /**\n * Get component tree signal\n */\n getComponentTreeSignal(): () => Map<string, ComponentTreeNode> {\n return this.treeSignal\n }\n\n /**\n * Get root components\n */\n getRootComponents(): ComponentTreeNode[] {\n return Array.from(this.componentTree.values()).filter((node) => node.parent === null)\n }\n\n /**\n * Get component by ID\n */\n getComponent(componentId: string): ComponentTreeNode | undefined {\n return this.componentTree.get(componentId)\n }\n\n /**\n * Find components by name\n */\n findComponentsByName(name: string): ComponentTreeNode[] {\n return Array.from(this.componentTree.values()).filter((node) =>\n node.name.toLowerCase().includes(name.toLowerCase())\n )\n }\n\n /**\n * Get debug events\n */\n getDebugEvents(): DebugEvent[] {\n return [...this.debugEvents]\n }\n\n /**\n * Get debug events signal\n */\n getDebugEventsSignal(): () => DebugEvent[] {\n return this.eventsSignal\n }\n\n /**\n * Get development state\n */\n getDevState(): DevState {\n return { ...this.state }\n }\n\n /**\n * Get development state signal\n */\n getDevStateSignal(): () => DevState {\n return this.stateSignal\n }\n\n /**\n * Get performance summary\n */\n getPerformanceSummary(): {\n componentCount: number\n averageRenderTime: number\n memoryUsage: number\n warningCount: number\n errorCount: number\n slowComponents: { id: string; name: string; renderTime: number }[]\n } {\n const components = Array.from(this.componentTree.values())\n const totalRenderTime = components.reduce((sum, c) => sum + c.lastRenderTime, 0)\n const averageRenderTime = components.length > 0 ? totalRenderTime / components.length : 0\n const totalMemory = components.reduce((sum, c) => sum + c.memoryUsage, 0)\n const warningCount = components.reduce((sum, c) => sum + c.warnings.length, 0)\n const errorCount = components.reduce((sum, c) => sum + c.errors.length, 0)\n\n // Find slow components (>5ms render time)\n const slowComponents = components\n .filter((c) => c.lastRenderTime > 5)\n .map((c) => ({ id: c.id, name: c.name, renderTime: c.lastRenderTime }))\n .sort((a, b) => b.renderTime - a.renderTime)\n .slice(0, 10)\n\n return {\n componentCount: components.length,\n averageRenderTime,\n memoryUsage: totalMemory,\n warningCount,\n errorCount,\n slowComponents,\n }\n }\n\n /**\n * Export debug data\n */\n exportDebugData(): string {\n return JSON.stringify(\n {\n componentTree: Array.from(this.componentTree.entries()),\n debugEvents: this.debugEvents,\n performanceMetrics: globalPerformanceMonitor.exportMetrics(),\n timestamp: Date.now(),\n },\n null,\n 2\n )\n }\n\n /**\n * Clear debug data\n */\n clear(): void {\n this.componentTree.clear()\n this.componentRegistry.clear()\n this.debugEvents.length = 0\n this.activeComponents.clear()\n\n this.setTree(new Map())\n this.setEvents([])\n\n globalPerformanceMonitor.clear()\n }\n\n // Private helper methods\n\n private getComponentName(instance: ComponentInstance): string {\n // Check for displayName first\n if ('displayName' in instance && typeof instance.displayName === 'string') {\n return instance.displayName\n }\n\n // Check component type\n if ((instance as any).tag) {\n return (instance as any).tag || 'Element'\n }\n if ((instance as any).text) {\n return 'Text'\n }\n if ((instance as any).fragment) {\n return 'Fragment'\n }\n\n // Fallback to id or generic name\n return instance.id || 'Component'\n }\n\n private getReactiveSubscriptions(_componentId: string): string[] {\n // This would need to be implemented with reactive system integration\n return []\n }\n\n private getContextProviders(_componentId: string): string[] {\n // This would need to be implemented with context system integration\n return []\n }\n\n private getContextConsumers(_componentId: string): string[] {\n // This would need to be implemented with context system integration\n return []\n }\n\n private removeNodeAndDescendants(node: ComponentTreeNode): void {\n // Remove all children recursively\n for (const child of node.children) {\n this.removeNodeAndDescendants(child)\n this.componentTree.delete(child.id)\n this.componentRegistry.delete(child.id)\n this.activeComponents.delete(child.id)\n }\n }\n\n private addDebugEvent(event: DebugEvent): void {\n this.debugEvents.push(event)\n\n // Limit events array size\n if (this.debugEvents.length > 1000) {\n this.debugEvents.shift()\n }\n\n this.setEvents([...this.debugEvents])\n }\n\n private startUpdateTimer(): void {\n if (this.updateTimer) return\n\n this.updateTimer = window.setInterval(() => {\n this.updateComponentMetrics()\n }, this.config.updateInterval)\n }\n\n private stopUpdateTimer(): void {\n if (this.updateTimer) {\n clearInterval(this.updateTimer)\n this.updateTimer = null\n }\n }\n\n private updateComponentMetrics(): void {\n if (!this.state.enabled) return\n\n const performanceMetrics = globalPerformanceMonitor.getComponentMetrics()\n\n for (const [componentId, treeNode] of this.componentTree) {\n const metrics = performanceMetrics.get(componentId)\n if (metrics) {\n treeNode.metrics = metrics\n treeNode.renderCount = metrics.updateCount\n treeNode.lastRenderTime = metrics.lastRenderDuration\n treeNode.memoryUsage = metrics.memoryUsage\n\n // Check for performance warnings\n if (metrics.lastRenderDuration > 16) {\n this.addWarning(componentId, `Slow render: ${metrics.lastRenderDuration.toFixed(2)}ms`)\n }\n\n if (metrics.memoryUsage > 1024 * 1024) {\n // 1MB\n this.addWarning(\n componentId,\n `High memory usage: ${(metrics.memoryUsage / (1024 * 1024)).toFixed(2)}MB`\n )\n }\n }\n }\n\n this.setTree(new Map(this.componentTree))\n }\n}\n\n/**\n * Global dev tools instance\n */\nexport const globalDevTools = DevTools.getInstance()\n\n/**\n * Enable performance tracking\n */\nexport function enablePerformanceTracking(): void {\n globalDevTools.enable()\n globalPerformanceMonitor.enable()\n}\n\n/**\n * Get component tree\n */\nexport function getComponentTree(): Map<string, ComponentTreeNode> {\n return globalDevTools.getComponentTree()\n}\n\n/**\n * Enable development mode with full debugging\n */\nexport function enableDevelopmentMode(config?: Partial<DevToolsConfig>): void {\n globalDevTools.configure({\n autoEnable: true,\n trackAllComponents: true,\n trackMemoryUsage: true,\n enableWarnings: true,\n enableErrors: true,\n ...config,\n })\n\n console.log('🚀 TachUI Development Mode enabled')\n}\n\n/**\n * Get development tools instance\n */\nexport function getDevTools(): DevTools {\n return globalDevTools\n}\n\n/**\n * Development utilities\n */\nexport const devUtils = {\n /**\n * Log component tree to console\n */\n logComponentTree(): void {\n const roots = globalDevTools.getRootComponents()\n\n function logNode(node: ComponentTreeNode, indent = 0): void {\n const prefix = ' '.repeat(indent)\n const warnings = node.warnings.length > 0 ? ` ⚠️(${node.warnings.length})` : ''\n const errors = node.errors.length > 0 ? ` ❌(${node.errors.length})` : ''\n const renderTime = node.lastRenderTime > 0 ? ` ${node.lastRenderTime.toFixed(2)}ms` : ''\n\n console.log(`${prefix}${node.name}#${node.id}${renderTime}${warnings}${errors}`)\n\n for (const child of node.children) {\n logNode(child, indent + 1)\n }\n }\n\n console.group('🌳 Component Tree')\n for (const root of roots) {\n logNode(root)\n }\n console.groupEnd()\n },\n\n /**\n * Log performance summary\n */\n logPerformanceSummary(): void {\n const summary = globalDevTools.getPerformanceSummary()\n\n console.group('📊 Performance Summary')\n console.log(`Components: ${summary.componentCount}`)\n console.log(`Average Render Time: ${summary.averageRenderTime.toFixed(2)}ms`)\n console.log(`Memory Usage: ${(summary.memoryUsage / (1024 * 1024)).toFixed(2)}MB`)\n console.log(`Warnings: ${summary.warningCount}`)\n console.log(`Errors: ${summary.errorCount}`)\n\n if (summary.slowComponents.length > 0) {\n console.group('🐌 Slow Components')\n for (const comp of summary.slowComponents) {\n console.log(`${comp.name}: ${comp.renderTime.toFixed(2)}ms`)\n }\n console.groupEnd()\n }\n\n console.groupEnd()\n },\n\n /**\n * Find component by name\n */\n findComponent(name: string): ComponentTreeNode[] {\n return globalDevTools.findComponentsByName(name)\n },\n\n /**\n * Inspect component\n */\n inspectComponent(componentId: string): ComponentTreeNode | undefined {\n const component = globalDevTools.getComponent(componentId)\n if (component) {\n console.group(`🔍 Component: ${component.name}`)\n console.log('Props:', component.props)\n console.log('Metrics:', component.metrics)\n console.log('Children:', component.children.length)\n console.log('Warnings:', component.warnings)\n console.log('Errors:', component.errors)\n console.groupEnd()\n }\n return component\n },\n}\n"],"names":["_DevTools","__publicField","treeSignal","setTree","createSignal","eventsSignal","setEvents","stateSignal","setState","config","globalPerformanceMonitor","componentId","instance","parentId","metrics","parent","depth","treeNode","childIndex","updates","type","operation","contextName","newValue","message","error","stack","node","name","components","totalRenderTime","sum","c","averageRenderTime","totalMemory","warningCount","errorCount","slowComponents","a","b","_componentId","child","event","performanceMetrics","DevTools","globalDevTools","enablePerformanceTracking","getComponentTree","enableDevelopmentMode","getDevTools","devUtils","roots","logNode","indent","prefix","warnings","errors","renderTime","root","summary","comp","component"],"mappings":"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"}
|