elementdrawing 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/dist/elementdrawing.min.js +3 -0
- package/dist/elementdrawing.min.js.LICENSE.txt +8 -0
- package/dist/elementdrawing.min.js.map +1 -0
- package/dist/index.html +1 -0
- package/package.json +127 -0
- package/src/core/bridge.h +855 -0
- package/src/core/diff.c +900 -0
- package/src/core/element.c +1078 -0
- package/src/core/event.c +813 -0
- package/src/core/fiber.c +1027 -0
- package/src/core/hooks.c +919 -0
- package/src/core/renderer.c +963 -0
- package/src/core/scheduler.c +702 -0
- package/src/core/state.c +803 -0
- package/src/css/animations.css +779 -0
- package/src/css/base.css +615 -0
- package/src/css/components.css +1311 -0
- package/src/css/tailwind.css +370 -0
- package/src/css/themes.css +517 -0
- package/src/css/utilities.css +475 -0
- package/src/index.js +746 -0
- package/src/js/animation.js +655 -0
- package/src/js/dom.js +665 -0
- package/src/js/events.js +585 -0
- package/src/js/http.js +446 -0
- package/src/js/index.js +26 -0
- package/src/js/router.js +483 -0
- package/src/js/store.js +539 -0
- package/src/js/utils.js +593 -0
- package/src/js/validator.js +529 -0
- package/src/jsx/components/Accordion.jsx +210 -0
- package/src/jsx/components/Alert.jsx +169 -0
- package/src/jsx/components/Avatar.jsx +214 -0
- package/src/jsx/components/Badge.jsx +136 -0
- package/src/jsx/components/Breadcrumb.jsx +200 -0
- package/src/jsx/components/Button.jsx +188 -0
- package/src/jsx/components/Card.jsx +192 -0
- package/src/jsx/components/Carousel.jsx +278 -0
- package/src/jsx/components/Checkbox.jsx +215 -0
- package/src/jsx/components/Dialog.jsx +242 -0
- package/src/jsx/components/Drawer.jsx +190 -0
- package/src/jsx/components/Dropdown.jsx +268 -0
- package/src/jsx/components/Form.jsx +274 -0
- package/src/jsx/components/Input.jsx +285 -0
- package/src/jsx/components/Menu.jsx +276 -0
- package/src/jsx/components/Modal.jsx +274 -0
- package/src/jsx/components/Navbar.jsx +292 -0
- package/src/jsx/components/Pagination.jsx +268 -0
- package/src/jsx/components/Progress.jsx +252 -0
- package/src/jsx/components/Radio.jsx +208 -0
- package/src/jsx/components/Select.jsx +397 -0
- package/src/jsx/components/Sidebar.jsx +250 -0
- package/src/jsx/components/Slider.jsx +310 -0
- package/src/jsx/components/Spinner.jsx +198 -0
- package/src/jsx/components/Switch.jsx +201 -0
- package/src/jsx/components/Table.jsx +332 -0
- package/src/jsx/components/Tabs.jsx +227 -0
- package/src/jsx/components/Textarea.jsx +212 -0
- package/src/jsx/components/Toast.jsx +270 -0
- package/src/jsx/components/Tooltip.jsx +178 -0
- package/src/jsx/components/Typography.jsx +299 -0
- package/src/jsx/components/index.jsx +70 -0
- package/src/jsx/core/element.js +3 -0
- package/src/jsx/hooks/index.js +356 -0
- package/src/jsx/hooks/useCallback.js +472 -0
- package/src/jsx/hooks/useContext.js +586 -0
- package/src/jsx/hooks/useEffect.js +704 -0
- package/src/jsx/hooks/useLayoutEffect.js +508 -0
- package/src/jsx/hooks/useMemo.js +689 -0
- package/src/jsx/hooks/useReducer.js +729 -0
- package/src/jsx/hooks/useRef.js +542 -0
- package/src/jsx/hooks/useState.js +854 -0
- package/src/jsx/runtime/commit.js +903 -0
- package/src/jsx/runtime/createElement.js +860 -0
- package/src/jsx/runtime/index.js +356 -0
- package/src/jsx/runtime/reconcile.js +687 -0
- package/src/jsx/runtime/render.js +914 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"elementdrawing.min.js","mappings":"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","sources":["webpack://ElementDrawing/webpack/universalModuleDefinition","webpack://ElementDrawing/./src/index.js","webpack://ElementDrawing/./src/js/animation.js","webpack://ElementDrawing/./src/js/dom.js","webpack://ElementDrawing/./src/js/events.js","webpack://ElementDrawing/./src/js/http.js","webpack://ElementDrawing/./src/js/router.js","webpack://ElementDrawing/./src/js/store.js","webpack://ElementDrawing/./src/js/utils.js","webpack://ElementDrawing/./src/js/validator.js","webpack://ElementDrawing/./src/jsx/components/Accordion.jsx","webpack://ElementDrawing/./src/jsx/components/Alert.jsx","webpack://ElementDrawing/./src/jsx/components/Avatar.jsx","webpack://ElementDrawing/./src/jsx/components/Badge.jsx","webpack://ElementDrawing/./src/jsx/components/Breadcrumb.jsx","webpack://ElementDrawing/./src/jsx/components/Button.jsx","webpack://ElementDrawing/./src/jsx/components/Card.jsx","webpack://ElementDrawing/./src/jsx/components/Carousel.jsx","webpack://ElementDrawing/./src/jsx/components/Checkbox.jsx","webpack://ElementDrawing/./src/jsx/components/Dialog.jsx","webpack://ElementDrawing/./src/jsx/components/Drawer.jsx","webpack://ElementDrawing/./src/jsx/components/Dropdown.jsx","webpack://ElementDrawing/./src/jsx/components/Form.jsx","webpack://ElementDrawing/./src/jsx/components/Input.jsx","webpack://ElementDrawing/./src/jsx/components/Menu.jsx","webpack://ElementDrawing/./src/jsx/components/Modal.jsx","webpack://ElementDrawing/./src/jsx/components/Navbar.jsx","webpack://ElementDrawing/./src/jsx/components/Pagination.jsx","webpack://ElementDrawing/./src/jsx/components/Progress.jsx","webpack://ElementDrawing/./src/jsx/components/Radio.jsx","webpack://ElementDrawing/./src/jsx/components/Select.jsx","webpack://ElementDrawing/./src/jsx/components/Sidebar.jsx","webpack://ElementDrawing/./src/jsx/components/Slider.jsx","webpack://ElementDrawing/./src/jsx/components/Spinner.jsx","webpack://ElementDrawing/./src/jsx/components/Switch.jsx","webpack://ElementDrawing/./src/jsx/components/Table.jsx","webpack://ElementDrawing/./src/jsx/components/Tabs.jsx","webpack://ElementDrawing/./src/jsx/components/Textarea.jsx","webpack://ElementDrawing/./src/jsx/components/Toast.jsx","webpack://ElementDrawing/./src/jsx/components/Tooltip.jsx","webpack://ElementDrawing/./src/jsx/components/Typography.jsx","webpack://ElementDrawing/./src/jsx/components/index.jsx","webpack://ElementDrawing/./src/jsx/hooks/index.js","webpack://ElementDrawing/./src/jsx/hooks/useCallback.js","webpack://ElementDrawing/./src/jsx/hooks/useContext.js","webpack://ElementDrawing/./src/jsx/hooks/useEffect.js","webpack://ElementDrawing/./src/jsx/hooks/useLayoutEffect.js","webpack://ElementDrawing/./src/jsx/hooks/useMemo.js","webpack://ElementDrawing/./src/jsx/hooks/useReducer.js","webpack://ElementDrawing/./src/jsx/hooks/useRef.js","webpack://ElementDrawing/./src/jsx/hooks/useState.js","webpack://ElementDrawing/./src/jsx/runtime/commit.js","webpack://ElementDrawing/./src/jsx/runtime/createElement.js","webpack://ElementDrawing/./src/jsx/runtime/index.js","webpack://ElementDrawing/./src/jsx/runtime/reconcile.js","webpack://ElementDrawing/./src/jsx/runtime/render.js","webpack://ElementDrawing/./node_modules/@babel/runtime-corejs3/core-js-stable/instance/includes.js","webpack://ElementDrawing/./node_modules/core-js-pure/actual/object/define-property.js","webpack://ElementDrawing/./node_modules/core-js-pure/actual/symbol/index.js","webpack://ElementDrawing/./node_modules/core-js-pure/actual/symbol/iterator.js","webpack://ElementDrawing/./node_modules/core-js-pure/actual/symbol/to-primitive.js","webpack://ElementDrawing/./node_modules/core-js-pure/es/array/virtual/includes.js","webpack://ElementDrawing/./node_modules/core-js-pure/es/instance/includes.js","webpack://ElementDrawing/./node_modules/core-js-pure/es/object/define-property.js","webpack://ElementDrawing/./node_modules/core-js-pure/es/string/virtual/includes.js","webpack://ElementDrawing/./node_modules/core-js-pure/es/symbol/index.js","webpack://ElementDrawing/./node_modules/core-js-pure/es/symbol/iterator.js","webpack://ElementDrawing/./node_modules/core-js-pure/es/symbol/to-primitive.js","webpack://ElementDrawing/./node_modules/core-js-pure/full/object/define-property.js","webpack://ElementDrawing/./node_modules/core-js-pure/full/symbol/index.js","webpack://ElementDrawing/./node_modules/core-js-pure/full/symbol/iterator.js","webpack://ElementDrawing/./node_modules/core-js-pure/full/symbol/to-primitive.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/a-callable.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/a-possible-prototype.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/add-to-unscopables.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/an-object.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/array-includes.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/array-iteration.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/array-method-has-species-support.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/array-set-length.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/array-slice.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/array-species-constructor.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/array-species-create.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/classof-raw.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/classof.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/correct-is-regexp-logic.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/correct-prototype-getter.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/create-iter-result-object.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/create-non-enumerable-property.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/create-property-descriptor.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/create-property.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/define-built-in-accessor.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/define-built-in.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/define-global-property.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/descriptors.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/document-create-element.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/does-not-exceed-safe-integer.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/dom-iterables.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/enum-bug-keys.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/environment-user-agent.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/environment-v8-version.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/export.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/fails.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/function-apply.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/function-bind-context.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/function-bind-native.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/function-call.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/function-name.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/function-uncurry-this-accessor.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/function-uncurry-this-clause.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/function-uncurry-this.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/get-built-in-prototype-method.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/get-built-in.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/get-method.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/global-this.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/has-own-property.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/hidden-keys.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/html.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/ie8-dom-define.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/indexed-object.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/inspect-source.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/internal-state.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/is-array.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/is-callable.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/is-constructor.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/is-forced.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/is-null-or-undefined.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/is-object.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/is-possible-prototype.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/is-pure.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/is-raw-json.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/is-regexp.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/is-symbol.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/iterator-create-constructor.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/iterator-define.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/iterators-core.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/iterators.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/length-of-array-like.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/math-trunc.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/native-raw-json.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/not-a-regexp.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/object-create.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/object-define-properties.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/object-define-property.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/object-get-own-property-names-external.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/object-get-own-property-names.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/object-get-own-property-symbols.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/object-get-prototype-of.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/object-is-prototype-of.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/object-keys-internal.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/object-keys.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/object-property-is-enumerable.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/object-set-prototype-of.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/object-to-string.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/ordinary-to-primitive.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/parse-json-string.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/path.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/require-object-coercible.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/set-to-string-tag.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/shared-key.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/shared-store.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/shared.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/string-multibyte.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/symbol-constructor-detection.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/symbol-define-to-primitive.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/symbol-is-registered.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/symbol-is-well-known.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/symbol-registry-detection.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/to-absolute-index.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/to-indexed-object.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/to-integer-or-infinity.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/to-length.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/to-object.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/to-primitive.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/to-property-key.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/to-string-tag-support.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/to-string.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/try-to-string.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/uid.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/use-symbol-as-uid.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/v8-prototype-define-bug.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/weak-map-basic-detection.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/well-known-symbol-define.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/well-known-symbol-wrapped.js","webpack://ElementDrawing/./node_modules/core-js-pure/internals/well-known-symbol.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.array.concat.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.array.includes.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.array.iterator.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.json.stringify.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.json.to-string-tag.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.object.define-property.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.object.get-own-property-symbols.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.string.includes.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.string.iterator.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.symbol.async-dispose.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.symbol.async-iterator.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.symbol.constructor.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.symbol.dispose.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.symbol.for.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.symbol.has-instance.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.symbol.is-concat-spreadable.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.symbol.iterator.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.symbol.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.symbol.key-for.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.symbol.match-all.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.symbol.match.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.symbol.replace.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.symbol.search.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.symbol.species.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.symbol.split.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.symbol.to-primitive.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.symbol.to-string-tag.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/es.symbol.unscopables.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/esnext.function.metadata.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/esnext.symbol.async-dispose.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/esnext.symbol.custom-matcher.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/esnext.symbol.dispose.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/esnext.symbol.is-registered-symbol.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/esnext.symbol.is-registered.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/esnext.symbol.is-well-known-symbol.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/esnext.symbol.is-well-known.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/esnext.symbol.matcher.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/esnext.symbol.metadata-key.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/esnext.symbol.metadata.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/esnext.symbol.observable.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/esnext.symbol.pattern-match.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/esnext.symbol.replace-all.js","webpack://ElementDrawing/./node_modules/core-js-pure/modules/web.dom-collections.iterator.js","webpack://ElementDrawing/./node_modules/core-js-pure/stable/instance/includes.js","webpack://ElementDrawing/./node_modules/core-js-pure/stable/object/define-property.js","webpack://ElementDrawing/./node_modules/core-js-pure/stable/symbol/index.js","webpack://ElementDrawing/./node_modules/core-js-pure/stable/symbol/iterator.js","webpack://ElementDrawing/./node_modules/core-js-pure/stable/symbol/to-primitive.js","webpack://ElementDrawing/./node_modules/core-js/internals/a-callable.js","webpack://ElementDrawing/./node_modules/core-js/internals/an-object.js","webpack://ElementDrawing/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://ElementDrawing/./node_modules/core-js/internals/create-property-descriptor.js","webpack://ElementDrawing/./node_modules/core-js/internals/define-built-in-accessor.js","webpack://ElementDrawing/./node_modules/core-js/internals/define-global-property.js","webpack://ElementDrawing/./node_modules/core-js/internals/descriptors.js","webpack://ElementDrawing/./node_modules/core-js/internals/document-create-element.js","webpack://ElementDrawing/./node_modules/core-js/internals/environment-user-agent.js","webpack://ElementDrawing/./node_modules/core-js/internals/environment-v8-version.js","webpack://ElementDrawing/./node_modules/core-js/internals/fails.js","webpack://ElementDrawing/./node_modules/core-js/internals/function-bind-native.js","webpack://ElementDrawing/./node_modules/core-js/internals/function-call.js","webpack://ElementDrawing/./node_modules/core-js/internals/function-name.js","webpack://ElementDrawing/./node_modules/core-js/internals/function-uncurry-this.js","webpack://ElementDrawing/./node_modules/core-js/internals/get-built-in.js","webpack://ElementDrawing/./node_modules/core-js/internals/get-method.js","webpack://ElementDrawing/./node_modules/core-js/internals/global-this.js","webpack://ElementDrawing/./node_modules/core-js/internals/has-own-property.js","webpack://ElementDrawing/./node_modules/core-js/internals/hidden-keys.js","webpack://ElementDrawing/./node_modules/core-js/internals/ie8-dom-define.js","webpack://ElementDrawing/./node_modules/core-js/internals/inspect-source.js","webpack://ElementDrawing/./node_modules/core-js/internals/internal-state.js","webpack://ElementDrawing/./node_modules/core-js/internals/is-callable.js","webpack://ElementDrawing/./node_modules/core-js/internals/is-null-or-undefined.js","webpack://ElementDrawing/./node_modules/core-js/internals/is-object.js","webpack://ElementDrawing/./node_modules/core-js/internals/is-pure.js","webpack://ElementDrawing/./node_modules/core-js/internals/is-symbol.js","webpack://ElementDrawing/./node_modules/core-js/internals/make-built-in.js","webpack://ElementDrawing/./node_modules/core-js/internals/object-define-property.js","webpack://ElementDrawing/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://ElementDrawing/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://ElementDrawing/./node_modules/core-js/internals/regexp-flags-detection.js","webpack://ElementDrawing/./node_modules/core-js/internals/regexp-flags.js","webpack://ElementDrawing/./node_modules/core-js/internals/require-object-coercible.js","webpack://ElementDrawing/./node_modules/core-js/internals/shared-key.js","webpack://ElementDrawing/./node_modules/core-js/internals/shared-store.js","webpack://ElementDrawing/./node_modules/core-js/internals/shared.js","webpack://ElementDrawing/./node_modules/core-js/internals/symbol-constructor-detection.js","webpack://ElementDrawing/./node_modules/core-js/internals/to-object.js","webpack://ElementDrawing/./node_modules/core-js/internals/to-primitive.js","webpack://ElementDrawing/./node_modules/core-js/internals/to-property-key.js","webpack://ElementDrawing/./node_modules/core-js/internals/try-to-string.js","webpack://ElementDrawing/./node_modules/core-js/internals/uid.js","webpack://ElementDrawing/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://ElementDrawing/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://ElementDrawing/./node_modules/core-js/internals/weak-map-basic-detection.js","webpack://ElementDrawing/./node_modules/core-js/internals/well-known-symbol.js","webpack://ElementDrawing/./node_modules/core-js/modules/es.regexp.flags.js","webpack://ElementDrawing/./node_modules/@babel/runtime-corejs3/helpers/esm/typeof.js","webpack://ElementDrawing/./node_modules/@babel/runtime-corejs3/helpers/esm/defineProperty.js","webpack://ElementDrawing/./node_modules/@babel/runtime-corejs3/helpers/esm/toPropertyKey.js","webpack://ElementDrawing/./node_modules/@babel/runtime-corejs3/helpers/esm/toPrimitive.js","webpack://ElementDrawing/webpack/bootstrap","webpack://ElementDrawing/webpack/runtime/compat get default export","webpack://ElementDrawing/webpack/runtime/define property getters","webpack://ElementDrawing/webpack/runtime/global","webpack://ElementDrawing/webpack/runtime/harmony module decorator","webpack://ElementDrawing/webpack/runtime/hasOwnProperty shorthand","webpack://ElementDrawing/webpack/runtime/make namespace object","webpack://ElementDrawing/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ElementDrawing\"] = factory();\n\telse\n\t\troot[\"ElementDrawing\"] = factory();\n})(this, function() {\nreturn ","/**\n * ElementDrawing Framework - Main Entry Point\n * Export everything from the framework, including runtime, hooks,\n * components, utilities, and framework configuration.\n *\n * @version 1.0.0\n * @license MIT\n */\n\n'use strict';\n\n// ─── Runtime ──────────────────────────────────────────────────────────────────\n\nconst runtime = require('./jsx/runtime');\n\n// Core createElement and render\nconst createElement = runtime.createElement;\nconst render = runtime.render;\nconst Fragment = runtime.Fragment;\nconst cloneElement = runtime.cloneElement;\nconst createPortal = runtime.createPortal;\nconst createSuspense = runtime.createSuspense;\nconst createStrictMode = runtime.createStrictMode;\nconst createErrorBoundary = runtime.createErrorBoundary;\nconst Suspense = runtime.Suspense;\nconst StrictMode = runtime.StrictMode;\nconst ErrorBoundary = runtime.ErrorBoundary;\nconst lazy = runtime.lazy;\nconst isValidElement = runtime.isValidElement;\nconst isValidElementType = runtime.isValidElementType;\nconst isFunctionComponent = runtime.isFunctionComponent;\nconst isClassComponent = runtime.isClassComponent;\nconst countChildren = runtime.countChildren;\nconst mapChildren = runtime.mapChildren;\nconst forEachChild = runtime.forEachChild;\nconst onlyChild = runtime.onlyChild;\nconst mergeProps = runtime.mergeProps;\n\n// Render pipeline\nconst hydrate = runtime.hydrate;\nconst unmountContainer = runtime.unmountContainer;\nconst renderApp = runtime.renderApp;\nconst unmountApp = runtime.unmountApp;\n\n// Runtime management\nconst initRuntime = runtime.initRuntime;\nconst onRuntimeInit = runtime.onRuntimeInit;\nconst isRuntimeInitialized = runtime.isRuntimeInitialized;\nconst configureRuntime = runtime.configureRuntime;\nconst getRuntimeConfig = runtime.getRuntimeConfig;\nconst getRuntimeStats = runtime.getRuntimeStats;\nconst registerDevToolsHandler = runtime.registerDevToolsHandler;\nconst sendDevToolsMessage = runtime.sendDevToolsMessage;\n\n// Internal types\nconst REACT_ELEMENT_TYPE = runtime.REACT_ELEMENT_TYPE;\nconst REACT_FRAGMENT_TYPE = runtime.REACT_FRAGMENT_TYPE;\nconst REACT_PORTAL_TYPE = runtime.REACT_PORTAL_TYPE;\nconst REACT_SUSPENSE_TYPE = runtime.REACT_SUSPENSE_TYPE;\nconst REACT_LAZY_TYPE = runtime.REACT_LAZY_TYPE;\nconst REACT_STRICT_MODE_TYPE = runtime.REACT_STRICT_MODE_TYPE;\nconst REACT_ERROR_BOUNDARY_TYPE = runtime.REACT_ERROR_BOUNDARY_TYPE;\n\n// ─── Hooks ────────────────────────────────────────────────────────────────────\n\nconst hooks = require('./jsx/hooks');\n\n// Core hooks\nconst useState = hooks.useState;\nconst useEffect = hooks.useEffect;\nconst useContext = hooks.useContext;\nconst useReducer = hooks.useReducer;\nconst useCallback = hooks.useCallback;\nconst useMemo = hooks.useMemo;\nconst useRef = hooks.useRef;\nconst useLayoutEffect = hooks.useLayoutEffect;\n\n// Extended hooks\nconst useInsertionEffect = hooks.useInsertionEffect;\nconst useIsomorphicLayoutEffect = hooks.useIsomorphicLayoutEffect;\nconst useTransition = hooks.useTransition;\nconst useDeferredValue = hooks.useDeferredValue;\nconst useDebouncedCallback = hooks.useDebouncedCallback;\nconst useThrottledCallback = hooks.useThrottledCallback;\nconst useOnceCallback = hooks.useOnceCallback;\nconst useDeepCompareCallback = hooks.useDeepCompareCallback;\nconst useDeepCompareMemo = hooks.useDeepCompareMemo;\nconst useDeepCompareEffect = hooks.useDeepCompareEffect;\nconst useMemoWith = hooks.useMemoWith;\nconst useMemoTTL = hooks.useMemoTTL;\nconst useEffectOnce = hooks.useEffectOnce;\nconst useUpdateEffect = hooks.useUpdateEffect;\nconst usePrevious = hooks.usePrevious;\nconst usePreviousWithInit = hooks.usePreviousWithInit;\nconst useMutationObserver = hooks.useMutationObserver;\nconst useResizeObserver = hooks.useResizeObserver;\nconst useAutoFocus = hooks.useAutoFocus;\nconst useContextSelector = hooks.useContextSelector;\nconst useContextObserver = hooks.useContextObserver;\n\n// Context API\nconst createContext = hooks.createContext;\nconst useMergedContext = hooks.useMergedContext;\nconst composeContexts = hooks.composeContexts;\n\n// Ref utilities\nconst createRef = hooks.createRef;\nconst useCallbackRef = hooks.useCallbackRef;\nconst forwardRef = hooks.forwardRef;\nconst isForwardRef = hooks.isForwardRef;\nconst useMergedRefs = hooks.useMergedRefs;\nconst useMeasureRef = hooks.useMeasureRef;\nconst useInViewRef = hooks.useInViewRef;\nconst useFocusRef = hooks.useFocusRef;\nconst useScrollRef = hooks.useScrollRef;\n\n// Batching\nconst batchedUpdates = hooks.batchedUpdates;\nconst batchDispatches = hooks.batchDispatches;\nconst runWithPriority = hooks.runWithPriority;\nconst startTransition = hooks.startTransition;\n\n// State comparison\nconst deepEqual = hooks.deepEqual;\nconst shallowEqual = hooks.shallowEqual;\nconst areDepsEqual = hooks.areDepsEqual;\nconst areDepsDeepEqual = hooks.areDepsDeepEqual;\n\n// Framework integration\nconst setCurrentComponent = hooks.setCurrentComponent;\nconst resetHookIndex = hooks.resetHookIndex;\nconst cleanupComponent = hooks.cleanupComponent;\nconst flushAllEffects = hooks.flushAllEffects;\nconst postRenderProcess = hooks.postRenderProcess;\n\n// Development tools\nconst registerDevTools = hooks.registerDevTools;\nconst setHookValidation = hooks.setHookValidation;\nconst validateHookOrder = hooks.validateHookOrder;\nconst setProfiling = hooks.setProfiling;\nconst getComponentProfile = hooks.getComponentProfile;\nconst setStrictMode = hooks.setStrictMode;\nconst isInStrictMode = hooks.isInStrictMode;\nconst cancelEffect = hooks.cancelEffect;\nconst getContextVersion = hooks.getContextVersion;\nconst getPendingEffectCounts = hooks.getPendingEffectCounts;\n\n// Constants\nconst PRIORITY = hooks.PRIORITY;\nconst LAYOUT_PRIORITY = hooks.LAYOUT_PRIORITY;\n\n// Persistence\nconst configurePersistence = hooks.configurePersistence;\n\n// Middleware\nconst createLoggerMiddleware = hooks.createLoggerMiddleware;\nconst createValidationMiddleware = hooks.createValidationMiddleware;\nconst createTransformMiddleware = hooks.createTransformMiddleware;\nconst createThrottleMiddleware = hooks.createThrottleMiddleware;\nconst createActionCreators = hooks.createActionCreators;\nconst createAction = hooks.createAction;\n\n// Memo invalidation\nconst invalidateMemo = hooks.invalidateMemo;\nconst invalidateAllMemos = hooks.invalidateAllMemos;\n\n// ─── Components ───────────────────────────────────────────────────────────────\n\nconst components = require('./jsx/components');\n\nconst Button = components.Button;\nconst Card = components.Card;\nconst Modal = components.Modal;\nconst Input = components.Input;\nconst Table = components.Table;\nconst Navbar = components.Navbar;\nconst Sidebar = components.Sidebar;\nconst Form = components.Form;\nconst Tabs = components.Tabs;\nconst Accordion = components.Accordion;\nconst Alert = components.Alert;\nconst Avatar = components.Avatar;\nconst Badge = components.Badge;\nconst Breadcrumb = components.Breadcrumb;\nconst Carousel = components.Carousel;\nconst Checkbox = components.Checkbox;\nconst Dialog = components.Dialog;\nconst Drawer = components.Drawer;\nconst Dropdown = components.Dropdown;\nconst Menu = components.Menu;\nconst Pagination = components.Pagination;\nconst Progress = components.Progress;\nconst Radio = components.Radio;\nconst Select = components.Select;\nconst Slider = components.Slider;\nconst Spinner = components.Spinner;\nconst Switch = components.Switch;\nconst Textarea = components.Textarea;\nconst Toast = components.Toast;\nconst Tooltip = components.Tooltip;\nconst Typography = components.Typography;\n\n// ─── DOM Utilities ────────────────────────────────────────────────────────────\n\nconst dom = require('./js/dom');\n\n// ─── Event Utilities ──────────────────────────────────────────────────────────\n\nconst events = require('./js/events');\n\n// ─── General Utilities ────────────────────────────────────────────────────────\n\nconst utils = require('./js/utils');\n\n// ─── Animation Utilities ──────────────────────────────────────────────────────\n\nconst animation = require('./js/animation');\n\n// ─── HTTP Client ──────────────────────────────────────────────────────────────\n\nconst http = require('./js/http');\n\n// ─── Router ───────────────────────────────────────────────────────────────────\n\nconst router = require('./js/router');\n\n// ─── Store ────────────────────────────────────────────────────────────────────\n\nconst store = require('./js/store');\n\n// ─── Validator ────────────────────────────────────────────────────────────────\n\nconst validator = require('./js/validator');\n\n// ─── Version ──────────────────────────────────────────────────────────────────\n\nconst VERSION = '1.0.0';\n\n// ─── Framework Configuration ─────────────────────────────────────────────────\n\n/**\n * Default framework configuration.\n * @type {Object}\n */\nconst defaultConfig = {\n version: VERSION,\n strictMode: false,\n profiling: false,\n concurrentMode: false,\n eventDelegation: true,\n hydration: false,\n devTools: false,\n errorBoundaries: true,\n suspense: true,\n theme: 'light',\n locale: 'en-US',\n debug: false,\n};\n\n/**\n * Current framework configuration.\n * @type {Object}\n */\nlet frameworkConfig = Object.assign({}, defaultConfig);\n\n/**\n * Configure the ElementDrawing framework.\n * @param {Object} config - Configuration options\n * @returns {Object} The updated configuration\n */\nfunction configure(config) {\n frameworkConfig = Object.assign({}, frameworkConfig, config);\n\n // Apply configuration to runtime\n if (config.strictMode !== undefined || config.profiling !== undefined ||\n config.concurrentMode !== undefined || config.devTools !== undefined) {\n configureRuntime({\n strictMode: config.strictMode,\n profiling: config.profiling,\n concurrentMode: config.concurrentMode,\n devTools: config.devTools,\n });\n }\n\n // Apply hook strict mode\n if (config.strictMode !== undefined) {\n setStrictMode(config.strictMode);\n }\n\n return Object.assign({}, frameworkConfig);\n}\n\n/**\n * Get the current framework configuration.\n * @returns {Object} A copy of the current configuration\n */\nfunction getConfig() {\n return Object.assign({}, frameworkConfig);\n}\n\n/**\n * Reset framework configuration to defaults.\n * @returns {Object} The default configuration\n */\nfunction resetConfig() {\n frameworkConfig = Object.assign({}, defaultConfig);\n return Object.assign({}, frameworkConfig);\n}\n\n// ─── Component Registration ──────────────────────────────────────────────────\n\n/**\n * Registry of custom components that can be registered at runtime.\n * @type {Map<string, Function>}\n */\nconst componentRegistry = new Map();\n\n/**\n * Register a custom component with the framework.\n * @param {string} name - Component name\n * @param {Function} component - Component function/class\n * @returns {boolean} True if registration was successful\n */\nfunction registerComponent(name, component) {\n if (typeof name !== 'string' || name.trim() === '') {\n console.error('[ElementDrawing] Component name must be a non-empty string');\n return false;\n }\n if (typeof component !== 'function') {\n console.error('[ElementDrawing] Component must be a function or class');\n return false;\n }\n componentRegistry.set(name, component);\n return true;\n}\n\n/**\n * Unregister a previously registered custom component.\n * @param {string} name - Component name to unregister\n * @returns {boolean} True if the component was found and removed\n */\nfunction unregisterComponent(name) {\n return componentRegistry.delete(name);\n}\n\n/**\n * Get a registered custom component by name.\n * @param {string} name - Component name\n * @returns {Function|undefined}\n */\nfunction getRegisteredComponent(name) {\n return componentRegistry.get(name);\n}\n\n/**\n * Get all registered custom component names.\n * @returns {string[]}\n */\nfunction getRegisteredComponents() {\n return Array.from(componentRegistry.keys());\n}\n\n// ─── Plugin System ────────────────────────────────────────────────────────────\n\n/**\n * Registry of installed plugins.\n * @type {Map<string, Object>}\n */\nconst pluginRegistry = new Map();\n\n/**\n * Install a plugin into the framework.\n * A plugin is an object with an `install` method that receives the framework.\n * @param {Object} plugin - Plugin object with install method\n * @param {Object} [options] - Plugin options\n * @returns {boolean} True if installation was successful\n */\nfunction usePlugin(plugin, options) {\n if (!plugin || typeof plugin.install !== 'function') {\n console.error('[ElementDrawing] Plugin must have an install method');\n return false;\n }\n\n const name = plugin.name || 'anonymous';\n\n if (pluginRegistry.has(name)) {\n console.warn('[ElementDrawing] Plugin \"' + name + '\" is already installed');\n return false;\n }\n\n try {\n const api = {\n createElement,\n render,\n Fragment,\n useState,\n useEffect,\n useContext,\n useReducer,\n useCallback,\n useMemo,\n useRef,\n useLayoutEffect,\n createContext,\n registerComponent,\n configure,\n VERSION,\n };\n\n plugin.install(api, options);\n pluginRegistry.set(name, { plugin, options });\n return true;\n } catch (error) {\n console.error('[ElementDrawing] Plugin \"' + name + '\" installation failed:', error);\n return false;\n }\n}\n\n/**\n * Uninstall a previously installed plugin.\n * @param {string} name - Plugin name\n * @returns {boolean} True if the plugin was found and removed\n */\nfunction uninstallPlugin(name) {\n const entry = pluginRegistry.get(name);\n if (!entry) return false;\n\n if (typeof entry.plugin.uninstall === 'function') {\n try {\n entry.plugin.uninstall();\n } catch (error) {\n console.error('[ElementDrawing] Plugin \"' + name + '\" uninstall failed:', error);\n }\n }\n\n return pluginRegistry.delete(name);\n}\n\n/**\n * Check if a plugin is installed.\n * @param {string} name - Plugin name\n * @returns {boolean}\n */\nfunction isPluginInstalled(name) {\n return pluginRegistry.has(name);\n}\n\n// ─── Global Error Handler ────────────────────────────────────────────────────\n\n/**\n * Global error handler for the framework.\n * @type {Function|null}\n */\nlet globalErrorHandler = null;\n\n/**\n * Set a global error handler for uncaught framework errors.\n * @param {Function} handler - Error handler function (error) => void\n */\nfunction setErrorHandler(handler) {\n if (typeof handler === 'function') {\n globalErrorHandler = handler;\n }\n}\n\n/**\n * Handle a framework error.\n * @param {Error} error - The error to handle\n * @param {string} [source] - Error source context\n */\nfunction handleError(error, source) {\n if (globalErrorHandler) {\n try {\n globalErrorHandler(error, source);\n } catch (handlerError) {\n console.error('[ElementDrawing] Error handler failed:', handlerError);\n console.error('[ElementDrawing] Original error:', error);\n }\n } else {\n console.error('[ElementDrawing]' + (source ? ' (' + source + ')' : '') + ':', error);\n }\n}\n\n// ─── Debug Mode ───────────────────────────────────────────────────────────────\n\n/**\n * Enable or disable debug mode.\n * @param {boolean} enabled\n */\nfunction setDebugMode(enabled) {\n frameworkConfig.debug = !!enabled;\n if (enabled) {\n console.log('[ElementDrawing] Debug mode enabled (v' + VERSION + ')');\n }\n}\n\n/**\n * Check if debug mode is enabled.\n * @returns {boolean}\n */\nfunction isDebugMode() {\n return !!frameworkConfig.debug;\n}\n\n// ─── Framework Info ───────────────────────────────────────────────────────────\n\n/**\n * Get comprehensive framework information.\n * @returns {Object}\n */\nfunction getFrameworkInfo() {\n return {\n name: 'ElementDrawing',\n version: VERSION,\n config: Object.assign({}, frameworkConfig),\n runtime: getRuntimeStats(),\n registeredComponents: getRegisteredComponents(),\n installedPlugins: Array.from(pluginRegistry.keys()),\n initialized: isRuntimeInitialized(),\n };\n}\n\n// ─── Exports ──────────────────────────────────────────────────────────────────\n\nmodule.exports = {\n // ── Version ──\n VERSION,\n\n // ── Runtime: createElement & render ──\n createElement,\n render,\n Fragment,\n cloneElement,\n createPortal,\n createSuspense,\n createStrictMode,\n createErrorBoundary,\n Suspense,\n StrictMode,\n ErrorBoundary,\n lazy,\n isValidElement,\n isValidElementType,\n isFunctionComponent,\n isClassComponent,\n countChildren,\n mapChildren,\n forEachChild,\n onlyChild,\n mergeProps,\n\n // ── Runtime: render pipeline ──\n hydrate,\n unmountContainer,\n renderApp,\n unmountApp,\n\n // ── Runtime: management ──\n initRuntime,\n onRuntimeInit,\n isRuntimeInitialized,\n configureRuntime,\n getRuntimeConfig,\n getRuntimeStats,\n registerDevToolsHandler,\n sendDevToolsMessage,\n\n // ── Runtime: internal types ──\n REACT_ELEMENT_TYPE,\n REACT_FRAGMENT_TYPE,\n REACT_PORTAL_TYPE,\n REACT_SUSPENSE_TYPE,\n REACT_LAZY_TYPE,\n REACT_STRICT_MODE_TYPE,\n REACT_ERROR_BOUNDARY_TYPE,\n\n // ── Hooks: core ──\n useState,\n useEffect,\n useContext,\n useReducer,\n useCallback,\n useMemo,\n useRef,\n useLayoutEffect,\n\n // ── Hooks: extended ──\n useInsertionEffect,\n useIsomorphicLayoutEffect,\n useTransition,\n useDeferredValue,\n useDebouncedCallback,\n useThrottledCallback,\n useOnceCallback,\n useDeepCompareCallback,\n useDeepCompareMemo,\n useDeepCompareEffect,\n useMemoWith,\n useMemoTTL,\n useEffectOnce,\n useUpdateEffect,\n usePrevious,\n usePreviousWithInit,\n useMutationObserver,\n useResizeObserver,\n useAutoFocus,\n useContextSelector,\n useContextObserver,\n\n // ── Hooks: context API ──\n createContext,\n useMergedContext,\n composeContexts,\n\n // ── Hooks: ref utilities ──\n createRef,\n useCallbackRef,\n forwardRef,\n isForwardRef,\n useMergedRefs,\n useMeasureRef,\n useInViewRef,\n useFocusRef,\n useScrollRef,\n\n // ── Hooks: batching ──\n batchedUpdates,\n batchDispatches,\n runWithPriority,\n startTransition,\n\n // ── Hooks: state comparison ──\n deepEqual,\n shallowEqual,\n areDepsEqual,\n areDepsDeepEqual,\n\n // ── Hooks: framework integration ──\n setCurrentComponent,\n resetHookIndex,\n cleanupComponent,\n flushAllEffects,\n postRenderProcess,\n\n // ── Hooks: development tools ──\n registerDevTools,\n setHookValidation,\n validateHookOrder,\n setProfiling,\n getComponentProfile,\n setStrictMode,\n isInStrictMode,\n cancelEffect,\n getContextVersion,\n getPendingEffectCounts,\n\n // ── Hooks: constants ──\n PRIORITY,\n LAYOUT_PRIORITY,\n\n // ── Hooks: persistence ──\n configurePersistence,\n\n // ── Hooks: middleware ──\n createLoggerMiddleware,\n createValidationMiddleware,\n createTransformMiddleware,\n createThrottleMiddleware,\n createActionCreators,\n createAction,\n\n // ── Hooks: memo invalidation ──\n invalidateMemo,\n invalidateAllMemos,\n\n // ── Components ──\n Button,\n Card,\n Modal,\n Input,\n Table,\n Navbar,\n Sidebar,\n Form,\n Tabs,\n Accordion,\n Alert,\n Avatar,\n Badge,\n Breadcrumb,\n Carousel,\n Checkbox,\n Dialog,\n Drawer,\n Dropdown,\n Menu,\n Pagination,\n Progress,\n Radio,\n Select,\n Slider,\n Spinner,\n Switch,\n Textarea,\n Toast,\n Tooltip,\n Typography,\n\n // ── Utility Modules ──\n dom,\n events,\n utils,\n animation,\n http,\n router,\n store,\n validator,\n\n // ── Framework Configuration ──\n configure,\n getConfig,\n resetConfig,\n defaultConfig,\n\n // ── Component Registration ──\n registerComponent,\n unregisterComponent,\n getRegisteredComponent,\n getRegisteredComponents,\n\n // ── Plugin System ──\n usePlugin,\n uninstallPlugin,\n isPluginInstalled,\n\n // ── Error Handling ──\n setErrorHandler,\n handleError,\n\n // ── Debug Mode ──\n setDebugMode,\n isDebugMode,\n\n // ── Framework Info ──\n getFrameworkInfo,\n};\n","/**\n * Animation Utilities\n * ElementDrawing Framework - requestAnimationFrame wrapper, easing functions,\n * tween engine, spring physics, keyframes, scroll/intersection animation,\n * sequencing, and CSS animation helpers.\n */\n\n'use strict';\n\n// ─── requestAnimationFrame Wrapper ────────────────────────────────────────────\n\nlet rafId = 0;\nconst rafCallbacks = new Map();\n\n/**\n * Request an animation frame with a cancel function.\n * @param {Function} callback\n * @returns {number} RAF ID\n */\nfunction requestFrame(callback) {\n const id = ++rafId;\n const wrapped = (time) => {\n rafCallbacks.delete(id);\n callback(time);\n };\n rafCallbacks.set(id, wrapped);\n return window.requestAnimationFrame(wrapped);\n}\n\n/**\n * Cancel a requested animation frame.\n * @param {number} id\n */\nfunction cancelFrame(id) {\n window.cancelAnimationFrame(id);\n rafCallbacks.delete(id);\n}\n\n/**\n * Cancel all pending animation frames.\n */\nfunction cancelAllFrames() {\n rafCallbacks.forEach((cb, id) => window.cancelAnimationFrame(id));\n rafCallbacks.clear();\n}\n\n// ─── Easing Functions ─────────────────────────────────────────────────────────\n\nconst easing = {\n linear: (t) => t,\n\n easeIn: (t) => t * t * t,\n easeOut: (t) => 1 - Math.pow(1 - t, 3),\n easeInOut: (t) => t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2,\n\n easeInQuad: (t) => t * t,\n easeOutQuad: (t) => 1 - (1 - t) * (1 - t),\n easeInOutQuad: (t) => t < 0.5 ? 2 * t * t : 1 - Math.pow(-2 * t + 2, 2) / 2,\n\n easeInCubic: (t) => t * t * t,\n easeOutCubic: (t) => 1 - Math.pow(1 - t, 3),\n easeInOutCubic: (t) => t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2,\n\n easeInQuart: (t) => t * t * t * t,\n easeOutQuart: (t) => 1 - Math.pow(1 - t, 4),\n easeInOutQuart: (t) => t < 0.5 ? 8 * t * t * t * t : 1 - Math.pow(-2 * t + 2, 4) / 2,\n\n bounce: (t) => {\n const n1 = 7.5625, d1 = 2.75;\n if (t < 1 / d1) return n1 * t * t;\n if (t < 2 / d1) return n1 * (t -= 1.5 / d1) * t + 0.75;\n if (t < 2.5 / d1) return n1 * (t -= 2.25 / d1) * t + 0.9375;\n return n1 * (t -= 2.625 / d1) * t + 0.984375;\n },\n\n elastic: (t) => {\n if (t === 0 || t === 1) return t;\n return -Math.pow(2, 10 * t - 10) * Math.sin((t * 10 - 10.75) * ((2 * Math.PI) / 3));\n },\n\n back: (t) => {\n const c1 = 1.70158, c3 = c1 + 1;\n return c3 * t * t * t - c1 * t * t;\n },\n\n expo: (t) => t === 0 ? 0 : Math.pow(2, 10 * t - 10),\n circ: (t) => 1 - Math.sqrt(1 - t * t),\n\n spring: (t, stiffness, damping) => {\n stiffness = stiffness || 100;\n damping = damping || 10;\n const omega = Math.sqrt(stiffness);\n const zeta = damping / (2 * omega);\n if (zeta < 1) {\n const omegaD = omega * Math.sqrt(1 - zeta * zeta);\n return 1 - Math.exp(-zeta * omega * t) * (Math.cos(omegaD * t) + (zeta * omega / omegaD) * Math.sin(omegaD * t));\n }\n return 1 - (1 + omega * t) * Math.exp(-omega * t);\n },\n};\n\n// ─── Animation Timeline ───────────────────────────────────────────────────────\n\n/**\n * Create an animation timeline for sequencing animations.\n * @returns {Object} Timeline controller\n */\nfunction createTimeline() {\n const animations = [];\n let startTime = null;\n let isPlaying = false;\n let rafId = null;\n\n return {\n /**\n * Add an animation to the timeline.\n * @param {Object} anim\n * @param {number} anim.delay - Start delay in ms\n * @param {number} anim.duration - Duration in ms\n * @param {Function} anim.onUpdate - Called with (progress) each frame\n * @param {Function} [anim.onComplete] - Called when animation completes\n * @param {string} [anim.easing='linear'] - Easing function name\n */\n add: function (anim) {\n animations.push(Object.assign({ delay: 0, duration: 1000, easing: 'linear' }, anim));\n return this;\n },\n\n /**\n * Start playing the timeline.\n */\n play: function () {\n if (isPlaying) return;\n isPlaying = true;\n startTime = performance.now();\n\n function tick(now) {\n if (!isPlaying) return;\n const elapsed = now - startTime;\n\n let allComplete = true;\n animations.forEach((anim) => {\n const localTime = elapsed - anim.delay;\n if (localTime < 0) { allComplete = false; return; }\n\n const rawProgress = Math.min(localTime / anim.duration, 1);\n if (rawProgress < 1) allComplete = false;\n\n const easeFn = easing[anim.easing] || easing.linear;\n const progress = easeFn(rawProgress);\n anim.onUpdate(progress, rawProgress);\n\n if (rawProgress >= 1 && anim.onComplete) {\n anim.onComplete();\n anim.onComplete = null;\n }\n });\n\n if (!allComplete) {\n rafId = requestFrame(tick);\n } else {\n isPlaying = false;\n }\n }\n\n rafId = requestFrame(tick);\n return this;\n },\n\n /**\n * Pause the timeline.\n */\n pause: function () {\n isPlaying = false;\n if (rafId) cancelFrame(rafId);\n return this;\n },\n\n /**\n * Reset the timeline.\n */\n reset: function () {\n this.pause();\n startTime = null;\n return this;\n },\n };\n}\n\n// ─── Tween Engine ─────────────────────────────────────────────────────────────\n\n/**\n * Create a tween animation from a start value to an end value.\n * @param {Object} options\n * @param {*} options.from - Starting value\n * @param {*} options.to - Ending value\n * @param {number} options.duration - Duration in ms\n * @param {string} [options.easing='easeInOut'] - Easing function\n * @param {Function} options.onUpdate - Called with (currentValue) each frame\n * @param {Function} [options.onComplete] - Called when complete\n * @returns {Object} Tween controller with play, pause, reset\n */\nfunction tween(options) {\n const from = options.from;\n const to = options.to;\n const duration = options.duration || 1000;\n const easeFn = easing[options.easing || 'easeInOut'] || easing.easeInOut;\n const onUpdate = options.onUpdate;\n const onComplete = options.onComplete;\n\n let startTime = null;\n let isPlaying = false;\n let rafId = null;\n let currentValue = from;\n\n function tick(now) {\n if (!isPlaying) return;\n if (!startTime) startTime = now;\n\n const elapsed = now - startTime;\n const rawProgress = Math.min(elapsed / duration, 1);\n const progress = easeFn(rawProgress);\n\n currentValue = from + (to - from) * progress;\n onUpdate(currentValue, progress, rawProgress);\n\n if (rawProgress < 1) {\n rafId = requestFrame(tick);\n } else {\n isPlaying = false;\n if (onComplete) onComplete(currentValue);\n }\n }\n\n return {\n play: function () {\n if (isPlaying) return this;\n isPlaying = true;\n startTime = null;\n rafId = requestFrame(tick);\n return this;\n },\n pause: function () {\n isPlaying = false;\n if (rafId) cancelFrame(rafId);\n return this;\n },\n reset: function () {\n this.pause();\n startTime = null;\n currentValue = from;\n onUpdate(from, 0, 0);\n return this;\n },\n getCurrentValue: function () { return currentValue; },\n isPlaying: function () { return isPlaying; },\n };\n}\n\n/**\n * Create a tween from a starting value.\n * @param {*} from\n * @param {*} to\n * @param {number} duration\n * @returns {Object} Tween builder\n */\nfunction fromTo(from, to, duration) {\n return tween({ from, to, duration });\n}\n\n/**\n * Create a tween from current value to a target.\n * @param {*} from\n * @param {*} to\n * @param {number} duration\n * @returns {Object} Tween builder\n */\nfunction to(from, to, duration) {\n return tween({ from, to, duration });\n}\n\n/**\n * Create staggered tweens for multiple targets.\n * @param {Array} targets\n * @param {Object} options\n * @param {number} options.stagger - Delay between each target in ms\n * @param {*} options.from\n * @param {*} options.to\n * @param {number} options.duration\n * @param {Function} options.onUpdate\n * @returns {Array} Array of tween controllers\n */\nfunction stagger(targets, options) {\n const staggerDelay = options.stagger || 50;\n return targets.map((target, i) => {\n return tween({\n from: options.from,\n to: options.to,\n duration: options.duration || 1000,\n easing: options.easing || 'easeInOut',\n onUpdate: function (value) {\n if (options.onUpdate) options.onUpdate(value, target, i);\n },\n onComplete: options.onComplete ? () => options.onComplete(target, i) : undefined,\n });\n });\n}\n\n// ─── Spring Physics ───────────────────────────────────────────────────────────\n\n/**\n * Create a spring-based animation.\n * @param {Object} options\n * @param {number} [options.stiffness=100]\n * @param {number} [options.damping=10]\n * @param {number} [options.mass=1]\n * @param {number} [options.initialVelocity=0]\n * @param {number} options.from\n * @param {number} options.to\n * @param {Function} options.onUpdate\n * @param {Function} [options.onComplete]\n * @returns {Object} Spring controller\n */\nfunction spring(options) {\n const stiffness = options.stiffness || 100;\n const damping = options.damping || 10;\n const mass = options.mass || 1;\n let velocity = options.initialVelocity || 0;\n const from = options.from;\n const to = options.to;\n const onUpdate = options.onUpdate;\n const onComplete = options.onComplete;\n\n let currentValue = from;\n let isPlaying = false;\n let rafId = null;\n let lastTime = null;\n const precision = 0.01;\n\n function step(now) {\n if (!isPlaying) return;\n if (!lastTime) lastTime = now;\n const dt = Math.min((now - lastTime) / 1000, 0.064);\n lastTime = now;\n\n const displacement = currentValue - to;\n const springForce = -stiffness * displacement;\n const dampingForce = -damping * velocity;\n const acceleration = (springForce + dampingForce) / mass;\n\n velocity += acceleration * dt;\n currentValue += velocity * dt;\n\n onUpdate(currentValue);\n\n // Check if settled\n if (Math.abs(velocity) < precision && Math.abs(displacement) < precision) {\n currentValue = to;\n onUpdate(to);\n isPlaying = false;\n if (onComplete) onComplete(to);\n return;\n }\n\n rafId = requestFrame(step);\n }\n\n return {\n play: function () {\n if (isPlaying) return this;\n isPlaying = true;\n lastTime = null;\n rafId = requestFrame(step);\n return this;\n },\n pause: function () {\n isPlaying = false;\n if (rafId) cancelFrame(rafId);\n return this;\n },\n reset: function () {\n this.pause();\n currentValue = from;\n velocity = options.initialVelocity || 0;\n lastTime = null;\n onUpdate(from);\n return this;\n },\n setVelocity: function (v) { velocity = v; return this; },\n getCurrentValue: function () { return currentValue; },\n isPlaying: function () { return isPlaying; },\n };\n}\n\n// ─── Keyframe Animation ───────────────────────────────────────────────────────\n\n/**\n * Create a keyframe animation with multiple steps.\n * @param {Object} options\n * @param {Array<{offset: number, value: *}>} options.keyframes\n * @param {number} options.duration\n * @param {string} [options.easing]\n * @param {Function} options.onUpdate\n * @param {Function} [options.onComplete]\n * @returns {Object} Keyframe controller\n */\nfunction keyframe(options) {\n const frames = options.keyframes.sort((a, b) => a.offset - b.offset);\n const duration = options.duration || 1000;\n const easeFn = easing[options.easing || 'linear'] || easing.linear;\n const onUpdate = options.onUpdate;\n const onComplete = options.onComplete;\n\n let startTime = null;\n let isPlaying = false;\n let rafId = null;\n\n function interpolate(progress) {\n if (frames.length === 0) return 0;\n if (frames.length === 1) return frames[0].value;\n\n // Find surrounding keyframes\n let lower = frames[0], upper = frames[frames.length - 1];\n for (let i = 0; i < frames.length - 1; i++) {\n if (progress >= frames[i].offset && progress <= frames[i + 1].offset) {\n lower = frames[i];\n upper = frames[i + 1];\n break;\n }\n }\n\n const range = upper.offset - lower.offset;\n const localProgress = range === 0 ? 1 : (progress - lower.offset) / range;\n return lower.value + (upper.value - lower.value) * localProgress;\n }\n\n function tick(now) {\n if (!isPlaying) return;\n if (!startTime) startTime = now;\n\n const elapsed = now - startTime;\n const rawProgress = Math.min(elapsed / duration, 1);\n const easedProgress = easeFn(rawProgress);\n const value = interpolate(easedProgress);\n\n onUpdate(value, easedProgress, rawProgress);\n\n if (rawProgress < 1) {\n rafId = requestFrame(tick);\n } else {\n isPlaying = false;\n if (onComplete) onComplete(value);\n }\n }\n\n return {\n play: function () { isPlaying = true; startTime = null; rafId = requestFrame(tick); return this; },\n pause: function () { isPlaying = false; if (rafId) cancelFrame(rafId); return this; },\n reset: function () { this.pause(); startTime = null; onUpdate(interpolate(0), 0, 0); return this; },\n };\n}\n\n// ─── Scroll Animation ─────────────────────────────────────────────────────────\n\n/**\n * Animate elements based on scroll position.\n * @param {HTMLElement} el - Element to observe\n * @param {Object} options\n * @param {Function} options.onProgress - Called with (progress: 0-1) on scroll\n * @param {number} [options.start=0] - Start offset in viewport (0=top, 1=bottom)\n * @param {number} [options.end=1] - End offset\n * @returns {Function} Cleanup function\n */\nfunction scrollAnimate(el, options) {\n const onProgress = options.onProgress;\n const start = options.start || 0;\n const end = options.end || 1;\n\n function update() {\n const rect = el.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const elementProgress = (viewportHeight - rect.top) / (viewportHeight + rect.height);\n const progress = Math.max(0, Math.min(1, (elementProgress - start) / (end - start)));\n onProgress(progress);\n }\n\n window.addEventListener('scroll', update, { passive: true });\n update();\n\n return function cleanup() {\n window.removeEventListener('scroll', update);\n };\n}\n\n// ─── Intersection Observer Animation ──────────────────────────────────────────\n\n/**\n * Trigger animation when element enters viewport.\n * @param {HTMLElement} el\n * @param {Object} options\n * @param {Function} options.onEnter - Called when element enters viewport\n * @param {Function} [options.onExit] - Called when element exits viewport\n * @param {number} [options.threshold=0.1]\n * @returns {Function} Cleanup function\n */\nfunction intersectionAnimate(el, options) {\n if (typeof IntersectionObserver === 'undefined') {\n options.onEnter(el);\n return function () {};\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n options.onEnter(el, entry);\n } else if (options.onExit) {\n options.onExit(el, entry);\n }\n });\n },\n { threshold: options.threshold || 0.1 }\n );\n\n observer.observe(el);\n return function cleanup() { observer.disconnect(); };\n}\n\n// ─── Animation Queue & Sequencing ─────────────────────────────────────────────\n\n/**\n * Create an animation queue that runs animations sequentially.\n * @returns {Object} Queue controller\n */\nfunction createQueue() {\n const queue = [];\n let isRunning = false;\n\n function runNext() {\n if (queue.length === 0) { isRunning = false; return; }\n isRunning = true;\n const anim = queue.shift();\n anim(function onComplete() {\n runNext();\n });\n }\n\n return {\n add: function (animFn) { queue.push(animFn); if (!isRunning) runNext(); return this; },\n clear: function () { queue.length = 0; isRunning = false; return this; },\n isRunning: function () { return isRunning; },\n length: function () { return queue.length; },\n };\n}\n\n/**\n * Run animations in sequence.\n * @param {...Object} anims - Tween/keyframe controllers\n * @returns {Promise} Resolves when all animations complete\n */\nfunction sequence(anims) {\n return anims.reduce((promise, anim) => {\n return promise.then(() => new Promise((resolve) => {\n anim.play();\n const originalComplete = anim.onComplete;\n anim.onComplete = function () {\n if (originalComplete) originalComplete();\n resolve();\n };\n }));\n }, Promise.resolve());\n}\n\n/**\n * Run animations in parallel.\n * @param {Array} anims\n * @returns {Promise} Resolves when all animations complete\n */\nfunction parallel(anims) {\n return Promise.all(anims.map((anim) => new Promise((resolve) => {\n anim.play();\n const originalComplete = anim.onComplete;\n anim.onComplete = function () {\n if (originalComplete) originalComplete();\n resolve();\n };\n })));\n}\n\n// ─── CSS Animation Helpers ────────────────────────────────────────────────────\n\n/**\n * Apply a CSS transition to an element.\n * @param {HTMLElement} el\n * @param {string} property\n * @param {number} [duration=300]\n * @param {string} [easing='ease']\n * @param {number} [delay=0]\n */\nfunction cssTransition(el, property, duration, easingName, delay) {\n duration = duration || 300;\n easingName = easingName || 'ease';\n delay = delay || 0;\n el.style.transition = property + ' ' + duration + 'ms ' + easingName + ' ' + delay + 'ms';\n}\n\n/**\n * Apply a CSS keyframe animation.\n * @param {HTMLElement} el\n * @param {string} name - Animation name\n * @param {number} [duration=300]\n * @param {string} [easing='ease']\n * @param {string} [fill='forwards']\n * @returns {Promise}\n */\nfunction cssAnimate(el, name, duration, easingName, fill) {\n duration = duration || 300;\n easingName = easingName || 'ease';\n fill = fill || 'forwards';\n\n el.style.animation = name + ' ' + duration + 'ms ' + easingName + ' ' + fill;\n\n return new Promise((resolve) => {\n function handler(e) {\n if (e.animationName === name) {\n el.removeEventListener('animationend', handler);\n resolve(el);\n }\n }\n el.addEventListener('animationend', handler);\n });\n}\n\n/**\n * Remove CSS animation from element.\n * @param {HTMLElement} el\n */\nfunction cssAnimateStop(el) {\n el.style.animation = '';\n}\n\n// ─── Exports ──────────────────────────────────────────────────────────────────\n\nmodule.exports = {\n requestFrame, cancelFrame, cancelAllFrames,\n easing,\n createTimeline,\n tween, fromTo, to, stagger,\n spring,\n keyframe,\n scrollAnimate,\n intersectionAnimate,\n createQueue, sequence, parallel,\n cssTransition, cssAnimate, cssAnimateStop,\n};\n","/**\n * DOM Manipulation Utilities\n * ElementDrawing Framework - Comprehensive DOM querying, creation,\n * manipulation, CSS, attributes, dimensions, visibility, and animation helpers.\n */\n\n'use strict';\n\n// ─── Query Selectors ──────────────────────────────────────────────────────────\n\n/**\n * Select a single element by ID.\n * @param {string} id\n * @param {Document|HTMLElement} [context=document]\n * @returns {HTMLElement|null}\n */\nfunction byId(id, context) {\n return (context || document).getElementById(id);\n}\n\n/**\n * Select elements by class name.\n * @param {string} className\n * @param {Document|HTMLElement} [context=document]\n * @returns {HTMLCollection}\n */\nfunction byClass(className, context) {\n return (context || document).getElementsByClassName(className);\n}\n\n/**\n * Select elements by tag name.\n * @param {string} tagName\n * @param {Document|HTMLElement} [context=document]\n * @returns {HTMLCollection}\n */\nfunction byTag(tagName, context) {\n return (context || document).getElementsByTagName(tagName);\n}\n\n/**\n * Select the first element matching a CSS selector.\n * @param {string} selector\n * @param {Document|HTMLElement} [context=document]\n * @returns {HTMLElement|null}\n */\nfunction query(selector, context) {\n return (context || document).querySelector(selector);\n}\n\n/**\n * Select all elements matching a CSS selector.\n * @param {string} selector\n * @param {Document|HTMLElement} [context=document]\n * @returns {NodeList}\n */\nfunction queryAll(selector, context) {\n return (context || document).querySelectorAll(selector);\n}\n\n// ─── DOM Creation ─────────────────────────────────────────────────────────────\n\n/**\n * Create an HTML element with optional attributes and children.\n * @param {string} tagName\n * @param {Object} [attrs]\n * @param {...(string|HTMLElement)} children\n * @returns {HTMLElement}\n */\nfunction createElement(tagName, attrs) {\n const el = document.createElement(tagName);\n\n if (attrs) {\n Object.keys(attrs).forEach((key) => {\n const value = attrs[key];\n if (key === 'className' || key === 'class') {\n el.className = value;\n } else if (key === 'style' && typeof value === 'object') {\n Object.assign(el.style, value);\n } else if (key === 'style' && typeof value === 'string') {\n el.style.cssText = value;\n } else if (key.startsWith('data-')) {\n el.setAttribute(key, value);\n } else if (key.startsWith('on') && typeof value === 'function') {\n const eventType = key.slice(2).toLowerCase();\n el.addEventListener(eventType, value);\n } else if (typeof value === 'boolean') {\n if (value) el.setAttribute(key, '');\n else el.removeAttribute(key);\n } else {\n el.setAttribute(key, value);\n }\n });\n }\n\n const childArgs = Array.prototype.slice.call(arguments, 2);\n childArgs.forEach((child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n el.appendChild(document.createTextNode(String(child)));\n } else if (child instanceof HTMLElement || child instanceof DocumentFragment) {\n el.appendChild(child);\n }\n });\n\n return el;\n}\n\n/**\n * Create a document fragment.\n * @returns {DocumentFragment}\n */\nfunction createFragment() {\n return document.createDocumentFragment();\n}\n\n/**\n * Create a text node.\n * @param {string} text\n * @returns {Text}\n */\nfunction createTextNode(text) {\n return document.createTextNode(text);\n}\n\n// ─── DOM Manipulation ─────────────────────────────────────────────────────────\n\n/**\n * Append a child to a parent element.\n * @param {HTMLElement} parent\n * @param {HTMLElement|DocumentFragment|string} child\n * @returns {HTMLElement}\n */\nfunction append(parent, child) {\n if (typeof child === 'string') {\n parent.insertAdjacentHTML('beforeend', child);\n } else {\n parent.appendChild(child);\n }\n return parent;\n}\n\n/**\n * Prepend a child to a parent element.\n * @param {HTMLElement} parent\n * @param {HTMLElement|DocumentFragment|string} child\n * @returns {HTMLElement}\n */\nfunction prepend(parent, child) {\n if (typeof child === 'string') {\n parent.insertAdjacentHTML('afterbegin', child);\n } else {\n parent.insertBefore(child, parent.firstChild);\n }\n return parent;\n}\n\n/**\n * Insert a node before a reference node.\n * @param {HTMLElement} newNode\n * @param {HTMLElement} referenceNode\n * @returns {HTMLElement}\n */\nfunction insertBefore(newNode, referenceNode) {\n if (referenceNode.parentNode) {\n referenceNode.parentNode.insertBefore(newNode, referenceNode);\n }\n return newNode;\n}\n\n/**\n * Remove an element from the DOM.\n * @param {HTMLElement} el\n * @returns {HTMLElement}\n */\nfunction remove(el) {\n if (el && el.parentNode) {\n el.parentNode.removeChild(el);\n }\n return el;\n}\n\n/**\n * Replace an old element with a new one.\n * @param {HTMLElement} oldEl\n * @param {HTMLElement} newEl\n * @returns {HTMLElement}\n */\nfunction replace(oldEl, newEl) {\n if (oldEl.parentNode) {\n oldEl.parentNode.replaceChild(newEl, oldEl);\n }\n return newEl;\n}\n\n/**\n * Clone an element.\n * @param {HTMLElement} el\n * @param {boolean} [deep=true]\n * @returns {HTMLElement}\n */\nfunction clone(el, deep) {\n return el.cloneNode(deep !== false);\n}\n\n/**\n * Remove all children from an element.\n * @param {HTMLElement} el\n * @returns {HTMLElement}\n */\nfunction empty(el) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n return el;\n}\n\n/**\n * Wrap an element with a wrapper element.\n * @param {HTMLElement} el\n * @param {HTMLElement} wrapper\n * @returns {HTMLElement}\n */\nfunction wrap(el, wrapper) {\n if (el.parentNode) {\n el.parentNode.insertBefore(wrapper, el);\n }\n wrapper.appendChild(el);\n return wrapper;\n}\n\n/**\n * Unwrap an element (remove its parent, keeping the element).\n * @param {HTMLElement} el\n * @returns {HTMLElement}\n */\nfunction unwrap(el) {\n const parent = el.parentNode;\n if (!parent) return el;\n\n while (el.firstChild) {\n parent.insertBefore(el.firstChild, el);\n }\n parent.removeChild(el);\n return parent;\n}\n\n// ─── CSS Manipulation ─────────────────────────────────────────────────────────\n\n/**\n * Add one or more CSS classes to an element.\n * @param {HTMLElement} el\n * @param {...string} classes\n * @returns {HTMLElement}\n */\nfunction addClass(el) {\n const classes = Array.prototype.slice.call(arguments, 1);\n el.classList.add.apply(el.classList, classes);\n return el;\n}\n\n/**\n * Remove one or more CSS classes from an element.\n * @param {HTMLElement} el\n * @param {...string} classes\n * @returns {HTMLElement}\n */\nfunction removeClass(el) {\n const classes = Array.prototype.slice.call(arguments, 1);\n el.classList.remove.apply(el.classList, classes);\n return el;\n}\n\n/**\n * Toggle a CSS class on an element.\n * @param {HTMLElement} el\n * @param {string} className\n * @param {boolean} [force]\n * @returns {HTMLElement}\n */\nfunction toggleClass(el, className, force) {\n el.classList.toggle(className, force);\n return el;\n}\n\n/**\n * Check if an element has a CSS class.\n * @param {HTMLElement} el\n * @param {string} className\n * @returns {boolean}\n */\nfunction hasClass(el, className) {\n return el.classList.contains(className);\n}\n\n/**\n * Set an inline style property on an element.\n * @param {HTMLElement} el\n * @param {string|Object} prop - CSS property name or style object\n * @param {string} [value] - CSS value (if prop is a string)\n * @returns {HTMLElement}\n */\nfunction setStyle(el, prop, value) {\n if (typeof prop === 'object') {\n Object.keys(prop).forEach((key) => {\n el.style[key] = prop[key];\n });\n } else {\n el.style[prop] = value;\n }\n return el;\n}\n\n/**\n * Get a computed style value for an element.\n * @param {HTMLElement} el\n * @param {string} prop\n * @returns {string}\n */\nfunction getStyle(el, prop) {\n return window.getComputedStyle(el).getPropertyValue(prop);\n}\n\n/**\n * Get all computed styles for an element.\n * @param {HTMLElement} el\n * @returns {CSSStyleDeclaration}\n */\nfunction getComputedStyle(el) {\n return window.getComputedStyle(el);\n}\n\n// ─── Attribute Manipulation ───────────────────────────────────────────────────\n\n/**\n * Set an attribute on an element.\n * @param {HTMLElement} el\n * @param {string} name\n * @param {string} value\n * @returns {HTMLElement}\n */\nfunction setAttribute(el, name, value) {\n el.setAttribute(name, value);\n return el;\n}\n\n/**\n * Get an attribute value from an element.\n * @param {HTMLElement} el\n * @param {string} name\n * @returns {string|null}\n */\nfunction getAttribute(el, name) {\n return el.getAttribute(name);\n}\n\n/**\n * Remove an attribute from an element.\n * @param {HTMLElement} el\n * @param {string} name\n * @returns {HTMLElement}\n */\nfunction removeAttribute(el, name) {\n el.removeAttribute(name);\n return el;\n}\n\n/**\n * Set a data attribute on an element.\n * @param {HTMLElement} el\n * @param {string} key\n * @param {*} value\n * @returns {HTMLElement}\n */\nfunction setData(el, key, value) {\n el.dataset[key] = value;\n return el;\n}\n\n/**\n * Get a data attribute from an element.\n * @param {HTMLElement} el\n * @param {string} key\n * @returns {string|undefined}\n */\nfunction getData(el, key) {\n return el.dataset[key];\n}\n\n// ─── Dimension Utilities ──────────────────────────────────────────────────────\n\n/**\n * Get the width of an element (content + padding + border).\n * @param {HTMLElement} el\n * @returns {number}\n */\nfunction getWidth(el) {\n return el.offsetWidth;\n}\n\n/**\n * Get the height of an element (content + padding + border).\n * @param {HTMLElement} el\n * @returns {number}\n */\nfunction getHeight(el) {\n return el.offsetHeight;\n}\n\n/**\n * Get the offset position of an element relative to the document.\n * @param {HTMLElement} el\n * @returns {{ top: number, left: number }}\n */\nfunction getOffset(el) {\n const rect = el.getBoundingClientRect();\n return {\n top: rect.top + window.pageYOffset,\n left: rect.left + window.pageXOffset,\n };\n}\n\n/**\n * Get the position of an element relative to its offset parent.\n * @param {HTMLElement} el\n * @returns {{ top: number, left: number }}\n */\nfunction getPosition(el) {\n return {\n top: el.offsetTop,\n left: el.offsetLeft,\n };\n}\n\n/**\n * Get scroll information for an element.\n * @param {HTMLElement} [el=window]\n * @returns {{ top: number, left: number, width: number, height: number }}\n */\nfunction getScroll(el) {\n if (!el || el === window) {\n return {\n top: window.pageYOffset || document.documentElement.scrollTop,\n left: window.pageXOffset || document.documentElement.scrollLeft,\n width: document.documentElement.scrollWidth,\n height: document.documentElement.scrollHeight,\n };\n }\n return {\n top: el.scrollTop,\n left: el.scrollLeft,\n width: el.scrollWidth,\n height: el.scrollHeight,\n };\n}\n\n/**\n * Get viewport dimensions.\n * @returns {{ width: number, height: number }}\n */\nfunction getViewport() {\n return {\n width: window.innerWidth || document.documentElement.clientWidth,\n height: window.innerHeight || document.documentElement.clientHeight,\n };\n}\n\n/**\n * Get the bounding client rect of an element.\n * @param {HTMLElement} el\n * @returns {DOMRect}\n */\nfunction getRect(el) {\n return el.getBoundingClientRect();\n}\n\n// ─── Visibility ───────────────────────────────────────────────────────────────\n\n/**\n * Show a hidden element.\n * @param {HTMLElement} el\n * @param {string} [display='']\n * @returns {HTMLElement}\n */\nfunction show(el, display) {\n el.style.display = display || '';\n return el;\n}\n\n/**\n * Hide an element.\n * @param {HTMLElement} el\n * @returns {HTMLElement}\n */\nfunction hide(el) {\n el.style.display = 'none';\n return el;\n}\n\n/**\n * Toggle element visibility.\n * @param {HTMLElement} el\n * @returns {HTMLElement}\n */\nfunction toggle(el) {\n if (el.style.display === 'none') {\n show(el);\n } else {\n hide(el);\n }\n return el;\n}\n\n/**\n * Check if an element is visible (not display:none or visibility:hidden).\n * @param {HTMLElement} el\n * @returns {boolean}\n */\nfunction isVisible(el) {\n if (el.offsetWidth === 0 && el.offsetHeight === 0) return false;\n const style = window.getComputedStyle(el);\n return style.display !== 'none' && style.visibility !== 'hidden' && style.opacity !== '0';\n}\n\n/**\n * Check if an element is within the viewport.\n * @param {HTMLElement} el\n * @param {number} [threshold=0]\n * @returns {boolean}\n */\nfunction isInViewport(el, threshold) {\n threshold = threshold || 0;\n const rect = el.getBoundingClientRect();\n const vp = getViewport();\n\n return (\n rect.top >= -threshold &&\n rect.left >= -threshold &&\n rect.bottom <= vp.height + threshold &&\n rect.right <= vp.width + threshold\n );\n}\n\n// ─── Animation Helpers ────────────────────────────────────────────────────────\n\n/**\n * Animate an element using the Web Animations API or CSS transitions.\n * @param {HTMLElement} el\n * @param {Object} keyframes\n * @param {Object} [options]\n * @returns {Promise}\n */\nfunction animate(el, keyframes, options) {\n if (el.animate && typeof el.animate === 'function') {\n return el.animate(keyframes, options).finished;\n }\n\n // Fallback: apply final state immediately\n return new Promise((resolve) => {\n Object.keys(keyframes).forEach((prop) => {\n const value = Array.isArray(keyframes[prop])\n ? keyframes[prop][keyframes[prop].length - 1]\n : keyframes[prop];\n el.style[prop] = value;\n });\n requestAnimationFrame(() => resolve(el));\n });\n}\n\n/**\n * Fade in an element.\n * @param {HTMLElement} el\n * @param {number} [duration=300]\n * @returns {Promise}\n */\nfunction fadeIn(el, duration) {\n duration = duration || 300;\n el.style.opacity = '0';\n el.style.display = '';\n return animate(el, { opacity: [0, 1] }, { duration, fill: 'forwards' });\n}\n\n/**\n * Fade out an element.\n * @param {HTMLElement} el\n * @param {number} [duration=300]\n * @returns {Promise}\n */\nfunction fadeOut(el, duration) {\n duration = duration || 300;\n return animate(el, { opacity: [1, 0] }, { duration, fill: 'forwards' }).then(() => {\n el.style.display = 'none';\n return el;\n });\n}\n\n/**\n * Slide up (collapse) an element.\n * @param {HTMLElement} el\n * @param {number} [duration=300]\n * @returns {Promise}\n */\nfunction slideUp(el, duration) {\n duration = duration || 300;\n const height = el.offsetHeight;\n return animate(el, {\n height: [height + 'px', '0px'],\n overflow: ['hidden', 'hidden'],\n }, { duration, fill: 'forwards' }).then(() => {\n el.style.display = 'none';\n return el;\n });\n}\n\n/**\n * Slide down (expand) an element.\n * @param {HTMLElement} el\n * @param {number} [duration=300]\n * @returns {Promise}\n */\nfunction slideDown(el, duration) {\n duration = duration || 300;\n el.style.display = '';\n el.style.overflow = 'hidden';\n const height = el.scrollHeight;\n el.style.height = '0px';\n return animate(el, { height: ['0px', height + 'px'] }, { duration, fill: 'forwards' }).then(() => {\n el.style.height = '';\n el.style.overflow = '';\n return el;\n });\n}\n\n/**\n * Toggle slide up/down.\n * @param {HTMLElement} el\n * @param {number} [duration=300]\n * @returns {Promise}\n */\nfunction slideToggle(el, duration) {\n if (el.style.display === 'none' || el.offsetHeight === 0) {\n return slideDown(el, duration);\n }\n return slideUp(el, duration);\n}\n\n// ─── Exports ──────────────────────────────────────────────────────────────────\n\nmodule.exports = {\n // Query selectors\n byId, byClass, byTag, query, queryAll,\n // DOM creation\n createElement, createFragment, createTextNode,\n // DOM manipulation\n append, prepend, insertBefore, remove, replace, clone, empty, wrap, unwrap,\n // CSS manipulation\n addClass, removeClass, toggleClass, hasClass, setStyle, getStyle, getComputedStyle,\n // Attribute manipulation\n setAttribute, getAttribute, removeAttribute, setData, getData,\n // Dimension utilities\n getWidth, getHeight, getOffset, getPosition, getScroll, getViewport, getRect,\n // Visibility\n show, hide, toggle, isVisible, isInViewport,\n // Animation helpers\n animate, fadeIn, fadeOut, slideUp, slideDown, slideToggle,\n};\n","/**\n * Event System Utilities\n * ElementDrawing Framework - Event binding, creation, normalization,\n * keyboard/mouse/touch/scroll/resize handling, and custom event emitter.\n */\n\n'use strict';\n\n// ─── Event Binding ────────────────────────────────────────────────────────────\n\n/**\n * Bind an event handler to an element.\n * @param {HTMLElement|Window|Document} el\n * @param {string} event - Event type\n * @param {Function} handler\n * @param {Object|boolean} [options=false]\n * @returns {Function} Unbind function\n */\nfunction on(el, event, handler, options) {\n el.addEventListener(event, handler, options || false);\n return function unbind() {\n el.removeEventListener(event, handler, options || false);\n };\n}\n\n/**\n * Remove an event handler from an element.\n * @param {HTMLElement|Window|Document} el\n * @param {string} event\n * @param {Function} handler\n * @param {Object|boolean} [options=false]\n */\nfunction off(el, event, handler, options) {\n el.removeEventListener(event, handler, options || false);\n}\n\n/**\n * Bind an event handler that fires only once.\n * @param {HTMLElement|Window|Document} el\n * @param {string} event\n * @param {Function} handler\n * @param {Object|boolean} [options=false]\n * @returns {Function} Unbind function\n */\nfunction once(el, event, handler, options) {\n function onceHandler() {\n off(el, event, onceHandler, options);\n return handler.apply(this, arguments);\n }\n on(el, event, onceHandler, options);\n return function unbind() {\n off(el, event, onceHandler, options);\n };\n}\n\n/**\n * Delegate an event to matching child elements.\n * @param {HTMLElement} parent - Parent element to listen on\n * @param {string} event - Event type\n * @param {string} selector - CSS selector for child elements\n * @param {Function} handler - Event handler\n * @returns {Function} Unbind function\n */\nfunction delegate(parent, event, selector, handler) {\n function delegateHandler(e) {\n const target = e.target.closest(selector);\n if (target && parent.contains(target)) {\n handler.call(target, e, target);\n }\n }\n on(parent, event, delegateHandler);\n return function unbind() {\n off(parent, event, delegateHandler);\n };\n}\n\n// ─── Event Creation ───────────────────────────────────────────────────────────\n\n/**\n * Create a custom event.\n * @param {string} type - Event type\n * @param {Object} [detail] - Custom data\n * @param {Object} [options] - Event options\n * @returns {CustomEvent}\n */\nfunction createEvent(type, detail, options) {\n options = options || {};\n return new CustomEvent(type, {\n bubbles: options.bubbles !== undefined ? options.bubbles : true,\n cancelable: options.cancelable !== undefined ? options.cancelable : true,\n detail: detail,\n });\n}\n\n/**\n * Dispatch an event on an element.\n * @param {HTMLElement} el\n * @param {Event|string} event\n * @param {Object} [detail]\n * @returns {boolean} False if preventDefault was called\n */\nfunction dispatchEvent(el, event, detail) {\n if (typeof event === 'string') {\n event = createEvent(event, detail);\n }\n return el.dispatchEvent(event);\n}\n\n/**\n * Fire a native-like event on an element.\n * @param {HTMLElement} el\n * @param {string} type - e.g. 'click', 'focus', 'blur'\n * @param {Object} [options]\n * @returns {boolean}\n */\nfunction fireEvent(el, type, options) {\n const event = new Event(type, {\n bubbles: (options && options.bubbles) !== undefined ? options.bubbles : true,\n cancelable: (options && options.cancelable) !== undefined ? options.cancelable : true,\n });\n Object.assign(event, options || {});\n return el.dispatchEvent(event);\n}\n\n// ─── Event Normalization ──────────────────────────────────────────────────────\n\n/**\n * Get the event target.\n * @param {Event} e\n * @returns {HTMLElement}\n */\nfunction getTarget(e) {\n return e.target || e.srcElement;\n}\n\n/**\n * Get the related target (for mouseenter/mouseleave, focus/blur).\n * @param {Event} e\n * @returns {HTMLElement|null}\n */\nfunction getRelatedTarget(e) {\n return e.relatedTarget || null;\n}\n\n/**\n * Get the offset coordinates of a mouse event relative to the target.\n * @param {MouseEvent} e\n * @returns {{ offsetX: number, offsetY: number }}\n */\nfunction getOffset(e) {\n return { offsetX: e.offsetX, offsetY: e.offsetY };\n}\n\n/**\n * Prevent default behavior.\n * @param {Event} e\n */\nfunction preventDefault(e) {\n if (e.preventDefault) e.preventDefault();\n e.returnValue = false;\n}\n\n/**\n * Stop event propagation.\n * @param {Event} e\n */\nfunction stopPropagation(e) {\n if (e.stopPropagation) e.stopPropagation();\n e.cancelBubble = true;\n}\n\n/**\n * Stop immediate propagation.\n * @param {Event} e\n */\nfunction stopImmediatePropagation(e) {\n if (e.stopImmediatePropagation) e.stopImmediatePropagation();\n}\n\n// ─── Keyboard Events ──────────────────────────────────────────────────────────\n\n/**\n * Check if the key is Enter.\n * @param {KeyboardEvent} e\n * @returns {boolean}\n */\nfunction isEnter(e) {\n return e.key === 'Enter' || e.keyCode === 13;\n}\n\n/**\n * Check if the key is Escape.\n * @param {KeyboardEvent} e\n * @returns {boolean}\n */\nfunction isEscape(e) {\n return e.key === 'Escape' || e.keyCode === 27;\n}\n\n/**\n * Check if the key is Tab.\n * @param {KeyboardEvent} e\n * @returns {boolean}\n */\nfunction isTab(e) {\n return e.key === 'Tab' || e.keyCode === 9;\n}\n\n/**\n * Check if the key is an arrow key.\n * @param {KeyboardEvent} e\n * @returns {boolean}\n */\nfunction isArrow(e) {\n return e.key.startsWith('Arrow') || (e.keyCode >= 37 && e.keyCode <= 40);\n}\n\n/**\n * Get the key code from a keyboard event.\n * @param {KeyboardEvent} e\n * @returns {number}\n */\nfunction getKeyCode(e) {\n return e.keyCode || e.which || 0;\n}\n\n/**\n * Check if a modifier key is pressed.\n * @param {KeyboardEvent} e\n * @param {string} modifier - 'ctrl' | 'shift' | 'alt' | 'meta'\n * @returns {boolean}\n */\nfunction isModifier(e, modifier) {\n switch (modifier) {\n case 'ctrl': return e.ctrlKey;\n case 'shift': return e.shiftKey;\n case 'alt': return e.altKey;\n case 'meta': return e.metaKey;\n default: return false;\n }\n}\n\n// ─── Mouse Events ─────────────────────────────────────────────────────────────\n\n/**\n * Check if the mouse button is a left click.\n * @param {MouseEvent} e\n * @returns {boolean}\n */\nfunction isLeftClick(e) {\n return e.button === 0;\n}\n\n/**\n * Check if the mouse button is a right click.\n * @param {MouseEvent} e\n * @returns {boolean}\n */\nfunction isRightClick(e) {\n return e.button === 2;\n}\n\n/**\n * Get the mouse button number.\n * @param {MouseEvent} e\n * @returns {number}\n */\nfunction getButton(e) {\n return e.button;\n}\n\n/**\n * Get the mouse coordinates (page and client).\n * @param {MouseEvent} e\n * @returns {{ pageX: number, pageY: number, clientX: number, clientY: number }}\n */\nfunction getCoordinates(e) {\n return {\n pageX: e.pageX,\n pageY: e.pageY,\n clientX: e.clientX,\n clientY: e.clientY,\n };\n}\n\n// ─── Touch Events ─────────────────────────────────────────────────────────────\n\n/**\n * Get a specific touch from a touch event.\n * @param {TouchEvent} e\n * @param {number} [index=0]\n * @returns {Touch|null}\n */\nfunction getTouch(e, index) {\n index = index || 0;\n return e.touches && e.touches[index] ? e.touches[index] : null;\n}\n\n/**\n * Get the distance between two touch points.\n * @param {TouchEvent} e\n * @returns {number}\n */\nfunction getTouchDistance(e) {\n if (!e.touches || e.touches.length < 2) return 0;\n const dx = e.touches[0].clientX - e.touches[1].clientX;\n const dy = e.touches[0].clientY - e.touches[1].clientY;\n return Math.sqrt(dx * dx + dy * dy);\n}\n\n/**\n * Check if a touch event is a pinch gesture.\n * @param {TouchEvent} e\n * @returns {boolean}\n */\nfunction isPinch(e) {\n return e.touches && e.touches.length >= 2;\n}\n\n/**\n * Check if a touch event is a swipe.\n * @param {Object} startTouch - Starting touch coordinates\n * @param {Object} endTouch - Ending touch coordinates\n * @param {number} [threshold=50] - Minimum distance for a swipe\n * @returns {{ isSwipe: boolean, direction: string, distance: number }}\n */\nfunction isSwipe(startTouch, endTouch, threshold) {\n threshold = threshold || 50;\n const dx = endTouch.clientX - startTouch.clientX;\n const dy = endTouch.clientY - startTouch.clientY;\n const absDx = Math.abs(dx);\n const absDy = Math.abs(dy);\n const distance = Math.sqrt(dx * dx + dy * dy);\n\n if (distance < threshold) {\n return { isSwipe: false, direction: '', distance };\n }\n\n let direction;\n if (absDx > absDy) {\n direction = dx > 0 ? 'right' : 'left';\n } else {\n direction = dy > 0 ? 'down' : 'up';\n }\n\n return { isSwipe: true, direction, distance };\n}\n\n// ─── Scroll Events ────────────────────────────────────────────────────────────\n\n/**\n * Bind a scroll handler with optional throttling.\n * @param {HTMLElement|Window} el\n * @param {Function} handler\n * @param {number} [throttleMs=100]\n * @returns {Function} Unbind function\n */\nfunction onScroll(el, handler, throttleMs) {\n throttleMs = throttleMs || 100;\n let lastCall = 0;\n let ticking = false;\n\n function scrollHandler(e) {\n const now = Date.now();\n if (now - lastCall < throttleMs) {\n if (!ticking) {\n ticking = true;\n requestAnimationFrame(() => {\n handler(e);\n ticking = false;\n });\n }\n return;\n }\n lastCall = now;\n handler(e);\n }\n\n return on(el, 'scroll', scrollHandler, { passive: true });\n}\n\n/**\n * Bind a handler that fires when scrolling ends.\n * @param {HTMLElement|Window} el\n * @param {Function} handler\n * @param {number} [delay=150]\n * @returns {Function} Unbind function\n */\nfunction onScrollEnd(el, handler, delay) {\n delay = delay || 150;\n let timeoutId;\n\n function scrollHandler() {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => handler(), delay);\n }\n\n const unbind = on(el, 'scroll', scrollHandler, { passive: true });\n return function unbindScrollEnd() {\n clearTimeout(timeoutId);\n unbind();\n };\n}\n\n/**\n * Get scroll direction from previous and current scroll positions.\n * @param {number} prevScrollTop\n * @param {number} currentScrollTop\n * @returns {'up'|'down'|'none'}\n */\nfunction getScrollDirection(prevScrollTop, currentScrollTop) {\n const diff = currentScrollTop - prevScrollTop;\n if (diff > 0) return 'down';\n if (diff < 0) return 'up';\n return 'none';\n}\n\n// ─── Resize Events ────────────────────────────────────────────────────────────\n\n/**\n * Bind a resize handler with debouncing.\n * @param {Function} handler\n * @param {number} [debounceMs=150]\n * @returns {Function} Unbind function\n */\nfunction onResize(handler, debounceMs) {\n debounceMs = debounceMs || 150;\n let timeoutId;\n\n function resizeHandler() {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n handler({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n }, debounceMs);\n }\n\n return on(window, 'resize', resizeHandler);\n}\n\n/**\n * Create a debounced resize observer for a specific element.\n * @param {HTMLElement} el\n * @param {Function} handler\n * @returns {{ disconnect: Function }} Observer handle\n */\nfunction debounceResize(el, handler) {\n if (typeof ResizeObserver === 'undefined') {\n return { disconnect: function () {} };\n }\n\n let timeoutId;\n const observer = new ResizeObserver((entries) => {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => handler(entries), 100);\n });\n\n observer.observe(el);\n return {\n disconnect: function () {\n clearTimeout(timeoutId);\n observer.disconnect();\n },\n };\n}\n\n// ─── Custom Event Emitter ─────────────────────────────────────────────────────\n\n/**\n * Create a custom event emitter.\n * @returns {Object} Emitter with on, off, emit, once methods\n */\nfunction emitter() {\n const listeners = {};\n\n return {\n /**\n * Subscribe to an event.\n * @param {string} event\n * @param {Function} handler\n * @returns {Function} Unsubscribe function\n */\n on: function (event, handler) {\n if (!listeners[event]) listeners[event] = [];\n listeners[event].push(handler);\n return function () {\n const idx = listeners[event].indexOf(handler);\n if (idx !== -1) listeners[event].splice(idx, 1);\n };\n },\n\n /**\n * Unsubscribe from an event.\n * @param {string} event\n * @param {Function} [handler] - If omitted, removes all handlers for the event\n */\n off: function (event, handler) {\n if (!listeners[event]) return;\n if (!handler) {\n delete listeners[event];\n return;\n }\n const idx = listeners[event].indexOf(handler);\n if (idx !== -1) listeners[event].splice(idx, 1);\n },\n\n /**\n * Emit an event.\n * @param {string} event\n * @param {...*} args\n * @returns {boolean} True if any handler was called\n */\n emit: function (event) {\n const args = Array.prototype.slice.call(arguments, 1);\n if (!listeners[event]) return false;\n\n listeners[event].slice().forEach((handler) => {\n try {\n handler.apply(null, args);\n } catch (error) {\n console.error('[emitter] Handler error for \"' + event + '\":', error);\n }\n });\n return true;\n },\n\n /**\n * Subscribe to an event once.\n * @param {string} event\n * @param {Function} handler\n * @returns {Function} Unsubscribe function\n */\n once: function (event, handler) {\n function onceHandler() {\n emitter.off(event, onceHandler);\n return handler.apply(null, arguments);\n }\n return emitter.on(event, onceHandler);\n },\n\n /**\n * Get all listener counts.\n * @returns {Object}\n */\n listenerCounts: function () {\n const counts = {};\n Object.keys(listeners).forEach((event) => {\n counts[event] = listeners[event].length;\n });\n return counts;\n },\n\n /**\n * Remove all listeners.\n */\n removeAllListeners: function () {\n Object.keys(listeners).forEach((key) => delete listeners[key]);\n },\n };\n}\n\n// ─── Exports ──────────────────────────────────────────────────────────────────\n\nmodule.exports = {\n // Event binding\n on, off, once, delegate,\n // Event creation\n createEvent, dispatchEvent, fireEvent,\n // Event normalization\n getTarget, getRelatedTarget, getOffset, preventDefault, stopPropagation, stopImmediatePropagation,\n // Keyboard events\n isEnter, isEscape, isTab, isArrow, getKeyCode, isModifier,\n // Mouse events\n isLeftClick, isRightClick, getButton, getCoordinates,\n // Touch events\n getTouch, getTouchDistance, isPinch, isSwipe,\n // Scroll events\n onScroll, onScrollEnd, getScrollDirection,\n // Resize events\n onResize, debounceResize,\n // Custom events\n emitter,\n};\n","/**\n * HTTP Client\n * ElementDrawing Framework - Full-featured HTTP client with methods,\n * interceptors, cancellation, retry, timeout, progress, and caching.\n */\n\n'use strict';\n\n// ─── Configuration ────────────────────────────────────────────────────────────\n\nconst defaultConfig = {\n baseURL: '',\n timeout: 30000,\n headers: {\n 'Content-Type': 'application/json',\n 'Accept': 'application/json',\n },\n withCredentials: false,\n responseType: 'json',\n maxRetries: 0,\n retryDelay: 1000,\n retryBackoff: 2,\n cache: false,\n deduplicate: true,\n};\n\n// ─── Interceptor System ───────────────────────────────────────────────────────\n\nfunction createInterceptorManager() {\n const requestInterceptors = [];\n const responseInterceptors = [];\n\n return {\n useRequest: function (fulfilled, rejected) {\n requestInterceptors.push({ fulfilled, rejected });\n return requestInterceptors.length - 1;\n },\n useResponse: function (fulfilled, rejected) {\n responseInterceptors.push({ fulfilled, rejected });\n return responseInterceptors.length - 1;\n },\n ejectRequest: function (id) { requestInterceptors[id] = null; },\n ejectResponse: function (id) { responseInterceptors[id] = null; },\n requestInterceptors,\n responseInterceptors,\n };\n}\n\nasync function applyRequestInterceptors(config, interceptors) {\n let result = config;\n for (const interceptor of interceptors.requestInterceptors) {\n if (!interceptor) continue;\n try {\n result = interceptor.fulfilled ? await interceptor.fulfilled(result) : result;\n } catch (error) {\n if (interceptor.rejected) { interceptor.rejected(error); }\n throw error;\n }\n }\n return result;\n}\n\nasync function applyResponseInterceptors(response, interceptors) {\n let result = response;\n for (const interceptor of interceptors.responseInterceptors) {\n if (!interceptor) continue;\n try {\n result = interceptor.fulfilled ? await interceptor.fulfilled(result) : result;\n } catch (error) {\n if (interceptor.rejected) { result = interceptor.rejected(error); }\n }\n }\n return result;\n}\n\n// ─── Request Deduplication ────────────────────────────────────────────────────\n\nconst pendingRequests = new Map();\n\nfunction generateRequestKey(config) {\n return (config.method || 'GET') + ':' + config.url + ':' + JSON.stringify(config.params || {});\n}\n\nfunction deduplicateRequest(key, requestFn) {\n if (pendingRequests.has(key)) return pendingRequests.get(key);\n const promise = requestFn().finally(() => pendingRequests.delete(key));\n pendingRequests.set(key, promise);\n return promise;\n}\n\n// ─── HTTP Client Class ────────────────────────────────────────────────────────\n\nfunction HttpClient(config) {\n this.config = Object.assign({}, defaultConfig, config);\n this.interceptors = createInterceptorManager();\n this._authToken = null;\n this._authHeader = 'Authorization';\n this._authPrefix = 'Bearer';\n}\n\n/**\n * Set authentication token.\n * @param {string} token\n * @param {string} [header='Authorization']\n * @param {string} [prefix='Bearer']\n */\nHttpClient.prototype.setAuthToken = function (token, header, prefix) {\n this._authToken = token;\n this._authHeader = header || 'Authorization';\n this._authPrefix = prefix || 'Bearer';\n};\n\n/**\n * Remove authentication token.\n */\nHttpClient.prototype.clearAuthToken = function () {\n this._authToken = null;\n};\n\n/**\n * Build full URL from base URL, path, and params.\n */\nHttpClient.prototype._buildURL = function (url, params) {\n let fullURL = this.config.baseURL + url;\n\n if (params) {\n const searchParams = new URLSearchParams();\n Object.keys(params).forEach((key) => {\n if (params[key] !== null && params[key] !== undefined) {\n searchParams.append(key, params[key]);\n }\n });\n const qs = searchParams.toString();\n if (qs) fullURL += (fullURL.includes('?') ? '&' : '?') + qs;\n }\n\n return fullURL;\n};\n\n/**\n * Build request headers.\n */\nHttpClient.prototype._buildHeaders = function (headers) {\n const result = Object.assign({}, this.config.headers, headers);\n\n if (this._authToken) {\n result[this._authHeader] = this._authPrefix + ' ' + this._authToken;\n }\n\n return result;\n};\n\n/**\n * Execute a request with retry logic.\n */\nHttpClient.prototype._request = function (config) {\n const self = this;\n const maxRetries = config.maxRetries !== undefined ? config.maxRetries : this.config.maxRetries;\n const retryDelay = config.retryDelay !== undefined ? config.retryDelay : this.config.retryDelay;\n const retryBackoff = config.retryBackoff !== undefined ? config.retryBackoff : this.config.retryBackoff;\n let attempt = 0;\n\n async function execute() {\n attempt++;\n const controller = new AbortController();\n const timeoutId = config.timeout ? setTimeout(() => controller.abort(), config.timeout) : null;\n\n if (config.signal) {\n config.signal.addEventListener('abort', () => controller.abort());\n }\n\n const fetchConfig = {\n method: config.method || 'GET',\n headers: config.headers,\n signal: controller.signal,\n credentials: config.withCredentials ? 'include' : 'same-origin',\n };\n\n if (config.body !== undefined && config.body !== null) {\n if (config.body instanceof FormData) {\n fetchConfig.body = config.body;\n delete fetchConfig.headers['Content-Type'];\n } else if (typeof config.body === 'object') {\n fetchConfig.body = JSON.stringify(config.body);\n } else {\n fetchConfig.body = config.body;\n }\n }\n\n try {\n const response = await fetch(config.url, fetchConfig);\n if (timeoutId) clearTimeout(timeoutId);\n\n if (!response.ok) {\n const error = new Error('HTTP Error ' + response.status);\n error.status = response.status;\n error.statusText = response.statusText;\n error.response = response;\n\n // Retry on server errors\n if (response.status >= 500 && attempt <= maxRetries) {\n return retry();\n }\n\n throw error;\n }\n\n return await self._parseResponse(response, config.responseType);\n } catch (error) {\n if (timeoutId) clearTimeout(timeoutId);\n\n if (error.name === 'AbortError') {\n throw new Error('Request aborted' + (attempt <= maxRetries ? ' - will retry' : ''));\n }\n\n // Retry on network errors\n if (attempt <= maxRetries) {\n return retry();\n }\n\n throw error;\n }\n }\n\n function retry() {\n const delay = retryDelay * Math.pow(retryBackoff, attempt - 1);\n return new Promise((resolve) => setTimeout(resolve, delay)).then(execute);\n }\n\n return execute();\n};\n\n/**\n * Parse response based on response type.\n */\nHttpClient.prototype._parseResponse = async function (response, responseType) {\n responseType = responseType || this.config.responseType;\n\n switch (responseType) {\n case 'json':\n try { return await response.json(); }\n catch (e) { return null; }\n case 'text': return await response.text();\n case 'blob': return await response.blob();\n case 'arrayBuffer': return await response.arrayBuffer();\n case 'formData': return await response.formData();\n default: return await response.json();\n }\n};\n\n/**\n * Send an HTTP request.\n * @param {Object} config\n * @returns {Promise}\n */\nHttpClient.prototype.request = async function (config) {\n config = Object.assign({}, this.config, config);\n config.url = this._buildURL(config.url || '', config.params);\n config.headers = this._buildHeaders(config.headers);\n\n // Apply request interceptors\n config = await applyRequestInterceptors(config, this.interceptors);\n\n // Deduplicate GET requests\n if (config.deduplicate !== false && this.config.deduplicate && (config.method || 'GET') === 'GET') {\n const key = generateRequestKey(config);\n const response = await deduplicateRequest(key, () => this._request(config));\n return applyResponseInterceptors(response, this.interceptors);\n }\n\n const response = await this._request(config);\n return applyResponseInterceptors(response, this.interceptors);\n};\n\n// ─── HTTP Methods ─────────────────────────────────────────────────────────────\n\n/**\n * GET request.\n * @param {string} url\n * @param {Object} [params]\n * @param {Object} [config]\n * @returns {Promise}\n */\nHttpClient.prototype.get = function (url, params, config) {\n return this.request(Object.assign({ method: 'GET', url, params }, config));\n};\n\n/**\n * POST request.\n * @param {string} url\n * @param {*} [data]\n * @param {Object} [config]\n * @returns {Promise}\n */\nHttpClient.prototype.post = function (url, data, config) {\n return this.request(Object.assign({ method: 'POST', url, body: data }, config));\n};\n\n/**\n * PUT request.\n * @param {string} url\n * @param {*} [data]\n * @param {Object} [config]\n * @returns {Promise}\n */\nHttpClient.prototype.put = function (url, data, config) {\n return this.request(Object.assign({ method: 'PUT', url, body: data }, config));\n};\n\n/**\n * PATCH request.\n * @param {string} url\n * @param {*} [data]\n * @param {Object} [config]\n * @returns {Promise}\n */\nHttpClient.prototype.patch = function (url, data, config) {\n return this.request(Object.assign({ method: 'PATCH', url, body: data }, config));\n};\n\n/**\n * DELETE request.\n * @param {string} url\n * @param {Object} [config]\n * @returns {Promise}\n */\nHttpClient.prototype.delete = function (url, config) {\n return this.request(Object.assign({ method: 'DELETE', url }, config));\n};\n\n/**\n * HEAD request.\n * @param {string} url\n * @param {Object} [config]\n * @returns {Promise}\n */\nHttpClient.prototype.head = function (url, config) {\n return this.request(Object.assign({ method: 'HEAD', url }, config));\n};\n\n/**\n * OPTIONS request.\n * @param {string} url\n * @param {Object} [config]\n * @returns {Promise}\n */\nHttpClient.prototype.options = function (url, config) {\n return this.request(Object.assign({ method: 'OPTIONS', url }, config));\n};\n\n/**\n * Upload a file with progress tracking.\n * @param {string} url\n * @param {FormData} formData\n * @param {Function} [onProgress]\n * @param {Object} [config]\n * @returns {Promise}\n */\nHttpClient.prototype.upload = function (url, formData, onProgress, config) {\n return new Promise((resolve, reject) => {\n const xhr = new XMLHttpRequest();\n xhr.open('POST', this.config.baseURL + url);\n\n const headers = this._buildHeaders(config && config.headers);\n Object.keys(headers).forEach((key) => {\n if (key !== 'Content-Type') xhr.setRequestHeader(key, headers[key]);\n });\n\n if (this._authToken) {\n xhr.setRequestHeader(this._authHeader, this._authPrefix + ' ' + this._authToken);\n }\n\n if (onProgress) {\n xhr.upload.onprogress = function (e) {\n if (e.lengthComputable) {\n onProgress({ loaded: e.loaded, total: e.total, progress: e.loaded / e.total });\n }\n };\n }\n\n xhr.onload = function () {\n if (xhr.status >= 200 && xhr.status < 300) {\n try { resolve(JSON.parse(xhr.responseText)); }\n catch (e) { resolve(xhr.responseText); }\n } else {\n const error = new Error('Upload failed: ' + xhr.status);\n error.status = xhr.status;\n reject(error);\n }\n };\n\n xhr.onerror = function () { reject(new Error('Upload network error')); };\n xhr.ontimeout = function () { reject(new Error('Upload timeout')); };\n\n if (config && config.signal) {\n config.signal.addEventListener('abort', () => xhr.abort());\n }\n\n xhr.send(formData);\n });\n};\n\n/**\n * Download a file.\n * @param {string} url\n * @param {Object} [config]\n * @returns {Promise<Blob>}\n */\nHttpClient.prototype.download = function (url, config) {\n return this.request(Object.assign({ url, method: 'GET', responseType: 'blob' }, config));\n};\n\n// ─── Factory Function ─────────────────────────────────────────────────────────\n\n/**\n * Create a new HTTP client instance.\n * @param {Object} [config]\n * @returns {HttpClient}\n */\nfunction createHttpClient(config) {\n return new HttpClient(config);\n}\n\n// Default instance\nconst http = new HttpClient();\n\n// ─── Exports ──────────────────────────────────────────────────────────────────\n\nmodule.exports = {\n HttpClient,\n createHttpClient,\n http,\n // Quick access methods on default instance\n get: (url, params, config) => http.get(url, params, config),\n post: (url, data, config) => http.post(url, data, config),\n put: (url, data, config) => http.put(url, data, config),\n patch: (url, data, config) => http.patch(url, data, config),\n delete: (url, config) => http.delete(url, config),\n head: (url, config) => http.head(url, config),\n options: (url, config) => http.options(url, config),\n upload: (url, formData, onProgress, config) => http.upload(url, formData, onProgress, config),\n download: (url, config) => http.download(url, config),\n setAuthToken: (token, header, prefix) => http.setAuthToken(token, header, prefix),\n clearAuthToken: () => http.clearAuthToken(),\n interceptors: http.interceptors,\n};\n","/**\n * Client-Side Router\n * ElementDrawing Framework - Route definition, matching, navigation,\n * History API, hash fallback, guards, lazy loading, nested routes,\n * named routes, transitions, and query string parsing.\n */\n\n'use strict';\n\n// ─── Route Definition ─────────────────────────────────────────────────────────\n\n/**\n * Create a route configuration.\n * @param {Object} config\n * @param {string} config.path - URL path pattern\n * @param {Function|string} config.component - Component to render\n * @param {string} [config.name] - Named route\n * @param {Object} [config.meta] - Route metadata\n * @param {Function} [config.redirect] - Redirect function or path\n * @param {Function} [config.beforeEnter] - Navigation guard\n * @param {Array} [config.children] - Child routes\n * @param {Object} [config.props] - Props to pass to component\n * @returns {Object} Route configuration\n */\nfunction createRoute(config) {\n return {\n path: config.path,\n component: config.component,\n name: config.name || null,\n meta: config.meta || {},\n redirect: config.redirect || null,\n beforeEnter: config.beforeEnter || null,\n children: (config.children || []).map((child) => {\n // Inherit parent path prefix\n if (config.path && config.path !== '/' && child.path && !child.path.startsWith('/')) {\n child.path = config.path.replace(/\\/$/, '') + '/' + child.path;\n }\n return createRoute(child);\n }),\n props: config.props || {},\n _regex: null,\n _paramNames: [],\n };\n}\n\n// ─── Path Matching ────────────────────────────────────────────────────────────\n\n/**\n * Compile a path pattern into a regex.\n * Supports :param, :param?, *wildcard\n * @param {string} path\n * @returns {{ regex: RegExp, paramNames: string[] }}\n */\nfunction compilePath(path) {\n const paramNames = [];\n let regexStr = '^' + path\n .replace(/\\//g, '\\\\/')\n .replace(/:([^/]+)/g, (_, paramName) => {\n if (paramName.endsWith('?')) {\n paramNames.push(paramName.slice(0, -1));\n return '(?:([^/]+))?';\n }\n paramNames.push(paramName);\n return '([^/]+)';\n })\n .replace(/\\*([^/]*)/, '(?:.*)') +\n '(?:\\\\?.*)?$';\n\n return { regex: new RegExp(regexStr), paramNames };\n}\n\n/**\n * Match a path against a route pattern.\n * @param {string} pattern - Route pattern (e.g., '/users/:id')\n * @param {string} path - Actual path to match\n * @param {boolean} [exact=true] - Require exact match\n * @returns {Object|null} Match result with params, or null\n */\nfunction matchPath(pattern, path, exact) {\n exact = exact !== false;\n const { regex, paramNames } = compilePath(pattern);\n const match = path.match(regex);\n\n if (!match) return null;\n\n const params = {};\n paramNames.forEach((name, i) => {\n params[name] = match[i + 1] !== undefined ? decodeURIComponent(match[i + 1]) : undefined;\n });\n\n // Check if remaining path exists for non-exact match\n const matchedLength = match[0].length;\n if (exact && matchedLength < path.length) {\n // Check for query string\n if (path[matchedLength] !== '?') return null;\n }\n\n return {\n path: match[0].replace(/\\?.*$/, ''),\n params,\n isExact: matchedLength === path.length || path[matchedLength] === '?',\n };\n}\n\n/**\n * Match a path against all registered routes.\n * @param {string} path\n * @param {Array} routes\n * @returns {Object|null} Matched route with params\n */\nfunction matchRoute(path, routes) {\n for (let i = 0; i < routes.length; i++) {\n const route = routes[i];\n const match = matchPath(route.path, path, !route.children || route.children.length === 0);\n\n if (match) {\n const result = { route, match };\n\n // Check children for nested matching\n if (route.children && route.children.length > 0) {\n const remainingPath = path.slice(match.path.length) || '/';\n const childMatch = matchRoute(remainingPath, route.children);\n if (childMatch) {\n result.child = childMatch;\n Object.assign(result.match.params, childMatch.match.params);\n }\n }\n\n return result;\n }\n }\n return null;\n}\n\n// ─── Query String Parsing ─────────────────────────────────────────────────────\n\n/**\n * Parse a query string into an object.\n * @param {string} qs\n * @returns {Object}\n */\nfunction parseQuery(qs) {\n if (!qs) return {};\n qs = qs.replace(/^\\?/, '');\n const params = {};\n qs.split('&').forEach((pair) => {\n const [key, val] = pair.split('=');\n if (!key) return;\n const decoded = decodeURIComponent(val || '');\n if (params[decodeURIComponent(key)]) {\n if (!Array.isArray(params[decodeURIComponent(key)])) {\n params[decodeURIComponent(key)] = [params[decodeURIComponent(key)]];\n }\n params[decodeURIComponent(key)].push(decoded);\n } else {\n params[decodeURIComponent(key)] = decoded;\n }\n });\n return params;\n}\n\n/**\n * Stringify an object into a query string.\n * @param {Object} params\n * @returns {string}\n */\nfunction stringifyQuery(params) {\n if (!params) return '';\n return Object.keys(params)\n .filter((k) => params[k] !== undefined && params[k] !== null)\n .map((k) => encodeURIComponent(k) + '=' + encodeURIComponent(params[k]))\n .join('&');\n}\n\n// ─── Router Class ─────────────────────────────────────────────────────────────\n\nfunction Router(options) {\n options = options || {};\n this.routes = [];\n this.currentRoute = null;\n this.currentParams = {};\n this.currentQuery = {};\n this.beforeEachGuards = [];\n this.afterEachGuards = [];\n this._listeners = [];\n this._mode = options.mode || 'history'; // 'history' | 'hash'\n this._base = options.base || '';\n this._transition = options.transition || null;\n this._namedRoutes = {};\n\n // Register routes\n if (options.routes) {\n options.routes.forEach((r) => this.addRoute(r));\n }\n\n // Bind popstate\n this._onPopState = this._onPopState.bind(this);\n}\n\n/**\n * Add a route to the router.\n * @param {Object} routeConfig\n */\nRouter.prototype.addRoute = function (routeConfig) {\n const route = createRoute(routeConfig);\n this.routes.push(route);\n if (route.name) {\n this._namedRoutes[route.name] = route;\n }\n return this;\n};\n\n/**\n * Remove a route by path.\n * @param {string} path\n */\nRouter.prototype.removeRoute = function (path) {\n const idx = this.routes.findIndex((r) => r.path === path);\n if (idx !== -1) this.routes.splice(idx, 1);\n return this;\n};\n\n// ─── Navigation ───────────────────────────────────────────────────────────────\n\n/**\n * Navigate to a path.\n * @param {string} path\n * @param {Object} [query]\n * @returns {Promise<boolean>}\n */\nRouter.prototype.push = function (path, query) {\n return this._navigate(path, query, 'push');\n};\n\n/**\n * Replace current history entry.\n * @param {string} path\n * @param {Object} [query]\n * @returns {Promise<boolean>}\n */\nRouter.prototype.replace = function (path, query) {\n return this._navigate(path, query, 'replace');\n};\n\n/**\n * Navigate by history offset.\n * @param {number} offset\n */\nRouter.prototype.go = function (offset) {\n window.history.go(offset);\n};\n\n/**\n * Go back one entry.\n */\nRouter.prototype.back = function () { this.go(-1); };\n\n/**\n * Go forward one entry.\n */\nRouter.prototype.forward = function () { this.go(1); };\n\n/**\n * Navigate to a named route.\n * @param {string} name\n * @param {Object} [params]\n * @param {Object} [query]\n * @returns {Promise<boolean>}\n */\nRouter.prototype.pushByName = function (name, params, query) {\n const route = this._namedRoutes[name];\n if (!route) return Promise.reject(new Error('Route not found: ' + name));\n const path = buildPath(route.path, params);\n return this.push(path, query);\n};\n\n// ─── Internal Navigation ──────────────────────────────────────────────────────\n\nRouter.prototype._navigate = async function (path, query, action) {\n const fullPath = this._base + path + (query ? '?' + stringifyQuery(query) : '');\n\n // Run beforeEach guards\n const toRoute = matchRoute(path, this.routes);\n const fromRoute = this.currentRoute;\n\n for (const guard of this.beforeEachGuards) {\n const result = await guard(toRoute, fromRoute);\n if (result === false) return false;\n if (typeof result === 'string') {\n return this.push(result);\n }\n if (typeof result === 'object' && result.path) {\n return this.push(result.path, result.query);\n }\n }\n\n // Run route-level beforeEnter guard\n if (toRoute && toRoute.route && toRoute.route.beforeEnter) {\n const result = await toRoute.route.beforeEnter(toRoute, fromRoute);\n if (result === false) return false;\n if (typeof result === 'string') return this.push(result);\n }\n\n // Update history\n if (this._mode === 'history') {\n if (action === 'push') {\n window.history.pushState({ path: fullPath }, '', fullPath);\n } else {\n window.history.replaceState({ path: fullPath }, '', fullPath);\n }\n } else {\n window.location.hash = path;\n }\n\n // Update current state\n const parsedPath = this._parseFullPath(fullPath);\n this.currentRoute = toRoute;\n this.currentParams = toRoute ? toRoute.match.params : {};\n this.currentQuery = parsedPath.query;\n\n // Run afterEach guards\n for (const guard of this.afterEachGuards) {\n guard(toRoute, fromRoute);\n }\n\n // Notify listeners\n this._notifyListeners(toRoute, fromRoute);\n\n return true;\n};\n\nRouter.prototype._parseFullPath = function (fullPath) {\n const [path, qs] = fullPath.split('?');\n return { path, query: parseQuery(qs) };\n};\n\nRouter.prototype._onPopState = function () {\n const path = this._mode === 'history'\n ? window.location.pathname.slice(this._base.length) || '/'\n : window.location.hash.slice(1) || '/';\n this.replace(path);\n};\n\n// ─── Route Guards ─────────────────────────────────────────────────────────────\n\n/**\n * Register a beforeEach guard.\n * @param {Function} guard - (to, from) => boolean | string | { path, query }\n * @returns {Function} Remove guard function\n */\nRouter.prototype.beforeEach = function (guard) {\n this.beforeEachGuards.push(guard);\n return () => {\n const idx = this.beforeEachGuards.indexOf(guard);\n if (idx !== -1) this.beforeEachGuards.splice(idx, 1);\n };\n};\n\n/**\n * Register an afterEach guard.\n * @param {Function} guard - (to, from) => void\n * @returns {Function} Remove guard function\n */\nRouter.prototype.afterEach = function (guard) {\n this.afterEachGuards.push(guard);\n return () => {\n const idx = this.afterEachGuards.indexOf(guard);\n if (idx !== -1) this.afterEachGuards.splice(idx, 1);\n };\n};\n\n// ─── Lazy Loading ─────────────────────────────────────────────────────────────\n\n/**\n * Create a lazy-loaded route component.\n * @param {Function} loader - () => Promise<Component>\n * @returns {Function} Lazy component\n */\nRouter.prototype.lazy = function (loader) {\n let cachedComponent = null;\n return function LazyComponent(props) {\n if (cachedComponent) return cachedComponent(props);\n return loader().then((module) => {\n cachedComponent = module.default || module;\n return cachedComponent(props);\n });\n };\n};\n\n// ─── Active Route Detection ───────────────────────────────────────────────────\n\n/**\n * Check if a path is currently active.\n * @param {string} path\n * @param {boolean} [exact=false]\n * @returns {boolean}\n */\nRouter.prototype.isActive = function (path, exact) {\n if (!this.currentRoute) return false;\n const currentPath = this.currentRoute.match ? this.currentRoute.match.path : '';\n if (exact) return currentPath === path;\n return currentPath.startsWith(path);\n};\n\n// ─── Listener Management ──────────────────────────────────────────────────────\n\nRouter.prototype.onRouteChange = function (callback) {\n this._listeners.push(callback);\n return () => {\n const idx = this._listeners.indexOf(callback);\n if (idx !== -1) this._listeners.splice(idx, 1);\n };\n};\n\nRouter.prototype._notifyListeners = function (to, from) {\n this._listeners.forEach((cb) => {\n try { cb(to, from); } catch (e) { console.error('[Router] Listener error:', e); }\n });\n};\n\n// ─── Start/Stop ───────────────────────────────────────────────────────────────\n\n/**\n * Start listening for navigation events.\n */\nRouter.prototype.start = function () {\n if (this._mode === 'history') {\n window.addEventListener('popstate', this._onPopState);\n // Navigate to current URL\n const path = window.location.pathname.slice(this._base.length) || '/';\n this.replace(path);\n } else {\n window.addEventListener('hashchange', this._onPopState);\n const hash = window.location.hash.slice(1) || '/';\n this.replace(hash);\n }\n};\n\n/**\n * Stop the router.\n */\nRouter.prototype.stop = function () {\n if (this._mode === 'history') {\n window.removeEventListener('popstate', this._onPopState);\n } else {\n window.removeEventListener('hashchange', this._onPopState);\n }\n};\n\n// ─── Helper: Build path from pattern and params ──────────────────────────────\n\nfunction buildPath(pattern, params) {\n params = params || {};\n return pattern.replace(/:([^/?]+)/g, (_, name) => {\n if (name.endsWith('?')) name = name.slice(0, -1);\n return params[name] !== undefined ? encodeURIComponent(params[name]) : '';\n }).replace(/\\/+/g, '/').replace(/\\/$/, '') || '/';\n}\n\n// ─── Factory ──────────────────────────────────────────────────────────────────\n\n/**\n * Create a new router instance.\n * @param {Object} [options]\n * @returns {Router}\n */\nfunction createRouter(options) {\n return new Router(options);\n}\n\n// ─── Exports ──────────────────────────────────────────────────────────────────\n\nmodule.exports = {\n Router,\n createRouter,\n createRoute,\n matchPath,\n matchRoute,\n compilePath,\n parseQuery,\n stringifyQuery,\n buildPath,\n};\n","/**\n * State Management Store\n * ElementDrawing Framework - Store with state, getters, mutations, actions,\n * subscriptions, middleware, persistence, snapshots, modules, and undo/redo.\n */\n\n'use strict';\n\n// ─── Store Class ──────────────────────────────────────────────────────────────\n\nfunction Store(options) {\n options = options || {};\n\n // ─── Core State ────────────────────────────────────────────────────────\n this._state = options.state ? deepClone(options.state) : {};\n this._getters = {};\n this._mutations = {};\n this._actions = {};\n this._modules = {};\n this._subscribers = [];\n this._middleware = [];\n this._watchers = {};\n this._strict = options.strict || false;\n this._history = [];\n this._historyIndex = -1;\n this._maxHistory = options.maxHistory || 50;\n this._isCommitting = false;\n\n // ─── Persistence Config ────────────────────────────────────────────────\n this._persistence = options.persistence || null;\n\n // ─── Register Getters ──────────────────────────────────────────────────\n if (options.getters) {\n Object.keys(options.getters).forEach((key) => {\n this._getters[key] = options.getters[key];\n });\n }\n\n // ─── Register Mutations ────────────────────────────────────────────────\n if (options.mutations) {\n Object.keys(options.mutations).forEach((key) => {\n this._mutations[key] = options.mutations[key];\n });\n }\n\n // ─── Register Actions ──────────────────────────────────────────────────\n if (options.actions) {\n Object.keys(options.actions).forEach((key) => {\n this._actions[key] = options.actions[key];\n });\n }\n\n // ─── Register Modules ──────────────────────────────────────────────────\n if (options.modules) {\n Object.keys(options.modules).forEach((key) => {\n this.registerModule(key, options.modules[key]);\n });\n }\n\n // ─── Register Middleware ───────────────────────────────────────────────\n if (options.middleware) {\n options.middleware.forEach((m) => this.use(m));\n }\n\n // ─── Load Persisted State ──────────────────────────────────────────────\n if (this._persistence) {\n this._loadPersistedState();\n }\n\n // ─── Save Initial Snapshot ─────────────────────────────────────────────\n this._saveSnapshot();\n}\n\n// ─── State Access ─────────────────────────────────────────────────────────────\n\n/**\n * Get the current state (read-only in strict mode).\n * @returns {Object}\n */\nStore.prototype.getState = function () {\n return this._state;\n};\n\n/**\n * Get a nested state value by path.\n * @param {string} path - Dot-notation path (e.g., 'user.profile.name')\n * @returns {*}\n */\nStore.prototype.get = function (path) {\n return path.split('.').reduce((obj, key) => obj && obj[key], this._state);\n};\n\n// ─── Getters ──────────────────────────────────────────────────────────────────\n\n/**\n * Get a computed value from a getter.\n * @param {string} name\n * @returns {*}\n */\nStore.prototype.getGetter = function (name) {\n const getter = this._getters[name];\n if (!getter) {\n console.warn('[Store] Getter not found: ' + name);\n return undefined;\n }\n return getter(this._state, this._getters);\n};\n\n/**\n * Register a getter.\n * @param {string} name\n * @param {Function} getter - (state, getters) => value\n */\nStore.prototype.registerGetter = function (name, getter) {\n this._getters[name] = getter;\n};\n\n// ─── Mutations ────────────────────────────────────────────────────────────────\n\n/**\n * Commit a mutation to synchronously change state.\n * @param {string} type - Mutation type\n * @param {*} [payload] - Mutation payload\n */\nStore.prototype.commit = function (type, payload) {\n if (this._strict && !this._isCommitting) {\n console.warn('[Store] Mutations must be committed inside commit() in strict mode');\n }\n\n const mutation = this._mutations[type];\n if (!mutation) {\n console.warn('[Store] Unknown mutation type: ' + type);\n return;\n }\n\n // Apply middleware\n for (const mw of this._middleware) {\n if (mw.beforeMutation) {\n const result = mw.beforeMutation(type, payload, this._state);\n if (result === false) return; // Middleware cancelled the mutation\n }\n }\n\n // Execute mutation\n this._isCommitting = true;\n const prevState = deepClone(this._state);\n try {\n mutation(this._state, payload);\n } catch (error) {\n console.error('[Store] Mutation error (' + type + '):', error);\n this._state = prevState;\n this._isCommitting = false;\n return;\n }\n this._isCommitting = false;\n\n // Notify subscribers\n this._subscribers.forEach((sub) => {\n try { sub({ type, payload }, this._state, prevState); }\n catch (e) { console.error('[Store] Subscriber error:', e); }\n });\n\n // Apply middleware after\n for (const mw of this._middleware) {\n if (mw.afterMutation) mw.afterMutation(type, payload, this._state, prevState);\n }\n\n // Save snapshot for undo/redo\n this._saveSnapshot();\n\n // Persist state\n if (this._persistence) this._persistState();\n\n // Notify watchers\n this._notifyWatchers(prevState, this._state);\n};\n\n/**\n * Register a mutation.\n * @param {string} type\n * @param {Function} mutation - (state, payload) => void\n */\nStore.prototype.registerMutation = function (type, mutation) {\n this._mutations[type] = mutation;\n};\n\n// ─── Actions ──────────────────────────────────────────────────────────────────\n\n/**\n * Dispatch an action (can be asynchronous).\n * @param {string} type - Action type\n * @param {*} [payload] - Action payload\n * @returns {Promise}\n */\nStore.prototype.dispatch = function (type, payload) {\n const action = this._actions[type];\n if (!action) {\n console.warn('[Store] Unknown action type: ' + type);\n return Promise.reject(new Error('Unknown action: ' + type));\n }\n\n const context = {\n state: this._state,\n getters: this._getters,\n commit: this.commit.bind(this),\n dispatch: this.dispatch.bind(this),\n get: this.get.bind(this),\n getGetter: this.getGetter.bind(this),\n };\n\n // Apply middleware\n for (const mw of this._middleware) {\n if (mw.beforeAction) {\n const result = mw.beforeAction(type, payload, this._state);\n if (result === false) return Promise.resolve(false);\n }\n }\n\n try {\n const result = action(context, payload);\n\n if (result && typeof result.then === 'function') {\n return result.then((res) => {\n for (const mw of this._middleware) {\n if (mw.afterAction) mw.afterAction(type, payload, this._state);\n }\n return res;\n }).catch((error) => {\n for (const mw of this._middleware) {\n if (mw.actionError) mw.actionError(error, type, payload);\n }\n throw error;\n });\n }\n\n for (const mw of this._middleware) {\n if (mw.afterAction) mw.afterAction(type, payload, this._state);\n }\n return Promise.resolve(result);\n } catch (error) {\n for (const mw of this._middleware) {\n if (mw.actionError) mw.actionError(error, type, payload);\n }\n return Promise.reject(error);\n }\n};\n\n/**\n * Register an action.\n * @param {string} type\n * @param {Function} action - (context, payload) => result | Promise\n */\nStore.prototype.registerAction = function (type, action) {\n this._actions[type] = action;\n};\n\n// ─── Subscriptions ────────────────────────────────────────────────────────────\n\n/**\n * Subscribe to state changes.\n * @param {Function} subscriber - (mutation, state, prevState) => void\n * @returns {Function} Unsubscribe function\n */\nStore.prototype.subscribe = function (subscriber) {\n this._subscribers.push(subscriber);\n return () => {\n const idx = this._subscribers.indexOf(subscriber);\n if (idx !== -1) this._subscribers.splice(idx, 1);\n };\n};\n\n/**\n * Watch a specific state path for changes.\n * @param {string} path - Dot-notation path\n * @param {Function} callback - (newValue, oldValue) => void\n * @returns {Function} Unwatch function\n */\nStore.prototype.watch = function (path, callback) {\n if (!this._watchers[path]) this._watchers[path] = [];\n this._watchers[path].push(callback);\n return () => {\n const watchers = this._watchers[path];\n if (watchers) {\n const idx = watchers.indexOf(callback);\n if (idx !== -1) watchers.splice(idx, 1);\n }\n };\n};\n\nStore.prototype._notifyWatchers = function (prevState, newState) {\n Object.keys(this._watchers).forEach((path) => {\n const oldVal = path.split('.').reduce((obj, key) => obj && obj[key], prevState);\n const newVal = path.split('.').reduce((obj, key) => obj && obj[key], newState);\n if (!Object.is(oldVal, newVal)) {\n this._watchers[path].forEach((cb) => {\n try { cb(newVal, oldVal); } catch (e) { console.error('[Store] Watcher error:', e); }\n });\n }\n });\n};\n\n// ─── Middleware ────────────────────────────────────────────────────────────────\n\n/**\n * Add middleware to the store.\n * @param {Object} middleware\n * @param {Function} [middleware.beforeMutation]\n * @param {Function} [middleware.afterMutation]\n * @param {Function} [middleware.beforeAction]\n * @param {Function} [middleware.afterAction]\n * @param {Function} [middleware.actionError]\n * @returns {Function} Remove middleware function\n */\nStore.prototype.use = function (middleware) {\n this._middleware.push(middleware);\n return () => {\n const idx = this._middleware.indexOf(middleware);\n if (idx !== -1) this._middleware.splice(idx, 1);\n };\n};\n\n// ─── State Persistence ────────────────────────────────────────────────────────\n\nStore.prototype._persistState = function () {\n if (!this._persistence) return;\n try {\n const storage = window[this._persistence.storage || 'localStorage'];\n const key = this._persistence.key || 'ed_store';\n const serialized = (this._persistence.serialize || JSON.stringify)(this._state);\n storage.setItem(key, serialized);\n } catch (error) {\n console.error('[Store] Persistence error:', error);\n }\n};\n\nStore.prototype._loadPersistedState = function () {\n if (!this._persistence) return;\n try {\n const storage = window[this._persistence.storage || 'localStorage'];\n const key = this._persistence.key || 'ed_store';\n const serialized = storage.getItem(key);\n if (serialized !== null) {\n const saved = (this._persistence.deserialize || JSON.parse)(serialized);\n Object.assign(this._state, saved);\n }\n } catch (error) {\n console.error('[Store] Load persistence error:', error);\n }\n};\n\n// ─── State Snapshot / Restore ─────────────────────────────────────────────────\n\nStore.prototype._saveSnapshot = function () {\n // Truncate future history if we're not at the end\n if (this._historyIndex < this._history.length - 1) {\n this._history = this._history.slice(0, this._historyIndex + 1);\n }\n\n this._history.push(deepClone(this._state));\n\n // Limit history size\n if (this._history.length > this._maxHistory) {\n this._history.shift();\n }\n\n this._historyIndex = this._history.length - 1;\n};\n\n/**\n * Create a snapshot of the current state.\n * @returns {Object} Snapshot object\n */\nStore.prototype.snapshot = function () {\n return {\n state: deepClone(this._state),\n timestamp: Date.now(),\n };\n};\n\n/**\n * Restore state from a snapshot.\n * @param {Object} snapshot\n */\nStore.prototype.restore = function (snapshot) {\n if (!snapshot || !snapshot.state) {\n console.warn('[Store] Invalid snapshot');\n return;\n }\n this._state = deepClone(snapshot.state);\n if (this._persistence) this._persistState();\n this._notifyWatchers({}, this._state);\n};\n\n// ─── Undo/Redo ────────────────────────────────────────────────────────────────\n\n/**\n * Undo the last state change.\n * @returns {boolean} True if undo was possible\n */\nStore.prototype.undo = function () {\n if (this._historyIndex <= 0) return false;\n this._historyIndex--;\n this._state = deepClone(this._history[this._historyIndex]);\n this._notifyWatchers({}, this._state);\n if (this._persistence) this._persistState();\n return true;\n};\n\n/**\n * Redo the last undone state change.\n * @returns {boolean} True if redo was possible\n */\nStore.prototype.redo = function () {\n if (this._historyIndex >= this._history.length - 1) return false;\n this._historyIndex++;\n this._state = deepClone(this._history[this._historyIndex]);\n this._notifyWatchers({}, this._state);\n if (this._persistence) this._persistState();\n return true;\n};\n\n/**\n * Check if undo is available.\n * @returns {boolean}\n */\nStore.prototype.canUndo = function () { return this._historyIndex > 0; };\n\n/**\n * Check if redo is available.\n * @returns {boolean}\n */\nStore.prototype.canRedo = function () { return this._historyIndex < this._history.length - 1; };\n\n// ─── Module System ────────────────────────────────────────────────────────────\n\n/**\n * Register a namespaced module.\n * @param {string} name - Module namespace\n * @param {Object} module - Module with state, getters, mutations, actions\n */\nStore.prototype.registerModule = function (name, module) {\n const namespacedState = module.state ? deepClone(module.state) : {};\n this._state[name] = namespacedState;\n this._modules[name] = module;\n\n // Register namespaced getters\n if (module.getters) {\n Object.keys(module.getters).forEach((key) => {\n this._getters[name + '/' + key] = module.getters[key];\n });\n }\n\n // Register namespaced mutations\n if (module.mutations) {\n Object.keys(module.mutations).forEach((key) => {\n this._mutations[name + '/' + key] = (state, payload) => {\n module.mutations[key](state[name], payload);\n };\n });\n }\n\n // Register namespaced actions\n if (module.actions) {\n Object.keys(module.actions).forEach((key) => {\n this._actions[name + '/' + key] = (context, payload) => {\n const moduleContext = Object.assign({}, context, {\n state: context.state[name],\n commit: (type, p) => context.commit(name + '/' + type, p),\n dispatch: (type, p) => context.dispatch(name + '/' + type, p),\n });\n return module.actions[key](moduleContext, payload);\n };\n });\n }\n};\n\n/**\n * Unregister a namespaced module.\n * @param {string} name\n */\nStore.prototype.unregisterModule = function (name) {\n delete this._state[name];\n delete this._modules[name];\n\n // Clean up namespaced getters, mutations, actions\n const prefix = name + '/';\n Object.keys(this._getters).forEach((k) => { if (k.startsWith(prefix)) delete this._getters[k]; });\n Object.keys(this._mutations).forEach((k) => { if (k.startsWith(prefix)) delete this._mutations[k]; });\n Object.keys(this._actions).forEach((k) => { if (k.startsWith(prefix)) delete this._actions[k]; });\n};\n\n// ─── DevTools Integration ─────────────────────────────────────────────────────\n\n/**\n * Get store information for DevTools.\n * @returns {Object}\n */\nStore.prototype.getDevToolsInfo = function () {\n return {\n state: deepClone(this._state),\n getters: Object.keys(this._getters),\n mutations: Object.keys(this._mutations),\n actions: Object.keys(this._actions),\n modules: Object.keys(this._modules),\n history: { index: this._historyIndex, length: this._history.length },\n };\n};\n\n// ─── Utility ──────────────────────────────────────────────────────────────────\n\nfunction deepClone(obj, cache) {\n if (obj === null || typeof obj !== 'object') return obj;\n if (obj instanceof Date) return new Date(obj.getTime());\n if (obj instanceof RegExp) return new RegExp(obj.source, obj.flags);\n cache = cache || new WeakMap();\n if (cache.has(obj)) return cache.get(obj);\n const clone = Array.isArray(obj) ? [] : {};\n cache.set(obj, clone);\n Object.keys(obj).forEach((k) => { clone[k] = deepClone(obj[k], cache); });\n return clone;\n}\n\n// ─── Factory ──────────────────────────────────────────────────────────────────\n\n/**\n * Create a new store instance.\n * @param {Object} [options]\n * @returns {Store}\n */\nfunction createStore(options) {\n return new Store(options);\n}\n\n// ─── Exports ──────────────────────────────────────────────────────────────────\n\nmodule.exports = {\n Store,\n createStore,\n};\n","/**\n * General Utility Functions\n * ElementDrawing Framework - Type checking, object/array/string/number/function/\n * date/color/URL utilities for comprehensive data manipulation.\n */\n\n'use strict';\n\n// ─── Type Checking ────────────────────────────────────────────────────────────\n\nconst isString = (v) => typeof v === 'string';\nconst isNumber = (v) => typeof v === 'number' && !isNaN(v);\nconst isBoolean = (v) => typeof v === 'boolean';\nconst isFunction = (v) => typeof v === 'function';\nconst isObject = (v) => v !== null && typeof v === 'object' && !Array.isArray(v);\nconst isArray = Array.isArray;\nconst isNull = (v) => v === null;\nconst isUndefined = (v) => v === undefined;\nconst isDate = (v) => v instanceof Date && !isNaN(v.getTime());\nconst isRegExp = (v) => v instanceof RegExp;\nconst isPromise = (v) => v && typeof v.then === 'function';\nconst isElement = (v) => v instanceof HTMLElement || v instanceof SVGElement;\nconst isPlainObject = (v) => Object.prototype.toString.call(v) === '[object Object]';\nconst isNil = (v) => v === null || v === undefined;\nconst isFiniteNum = (v) => Number.isFinite(v);\nconst isInteger = Number.isInteger;\n\n// ─── Object Utilities ─────────────────────────────────────────────────────────\n\nfunction deepClone(obj, cache) {\n if (obj === null || typeof obj !== 'object') return obj;\n if (isDate(obj)) return new Date(obj.getTime());\n if (isRegExp(obj)) return new RegExp(obj.source, obj.flags);\n if (isElement(obj)) return obj;\n\n cache = cache || new WeakMap();\n if (cache.has(obj)) return cache.get(obj);\n\n const clone = Array.isArray(obj) ? [] : {};\n cache.set(obj, clone);\n\n Object.keys(obj).forEach((key) => {\n clone[key] = deepClone(obj[key], cache);\n });\n return clone;\n}\n\nfunction deepMerge(target) {\n const sources = Array.prototype.slice.call(arguments, 1);\n sources.forEach((source) => {\n if (!isObject(source)) return;\n Object.keys(source).forEach((key) => {\n if (isObject(source[key]) && isObject(target[key])) {\n target[key] = deepMerge({}, target[key], source[key]);\n } else {\n target[key] = source[key];\n }\n });\n });\n return target;\n}\n\nfunction shallowMerge(target) {\n const sources = Array.prototype.slice.call(arguments, 1);\n sources.forEach((source) => {\n if (!source) return;\n Object.keys(source).forEach((key) => { target[key] = source[key]; });\n });\n return target;\n}\n\nfunction pick(obj, keys) {\n const result = {};\n keys.forEach((key) => {\n if (obj && Object.prototype.hasOwnProperty.call(obj, key)) {\n result[key] = obj[key];\n }\n });\n return result;\n}\n\nfunction omit(obj, keys) {\n const keySet = new Set(keys);\n const result = {};\n Object.keys(obj).forEach((key) => {\n if (!keySet.has(key)) result[key] = obj[key];\n });\n return result;\n}\n\nfunction get(obj, path, defaultValue) {\n const keys = path.replace(/\\[(\\d+)\\]/g, '.$1').split('.');\n let result = obj;\n for (let i = 0; i < keys.length; i++) {\n if (result == null) return defaultValue;\n result = result[keys[i]];\n }\n return result === undefined ? defaultValue : result;\n}\n\nfunction set(obj, path, value) {\n const keys = path.replace(/\\[(\\d+)\\]/g, '.$1').split('.');\n let current = obj;\n for (let i = 0; i < keys.length - 1; i++) {\n if (!current[keys[i]]) current[keys[i]] = {};\n current = current[keys[i]];\n }\n current[keys[keys.length - 1]] = value;\n return obj;\n}\n\nfunction has(obj, path) {\n const keys = path.replace(/\\[(\\d+)\\]/g, '.$1').split('.');\n let current = obj;\n for (let i = 0; i < keys.length; i++) {\n if (current == null || !Object.prototype.hasOwnProperty.call(current, keys[i])) return false;\n current = current[keys[i]];\n }\n return true;\n}\n\nconst keys = Object.keys;\nconst values = Object.values;\nconst entries = Object.entries;\nconst fromEntries = Object.fromEntries;\n\nfunction isEmpty(obj) {\n if (obj == null) return true;\n if (isArray(obj) || isString(obj)) return obj.length === 0;\n if (isObject(obj)) return Object.keys(obj).length === 0;\n return false;\n}\n\nfunction isEqual(a, b) {\n if (Object.is(a, b)) return true;\n if (a == null || b == null) return false;\n if (typeof a !== typeof b) return false;\n if (isDate(a) && isDate(b)) return a.getTime() === b.getTime();\n if (isRegExp(a) && isRegExp(b)) return a.source === b.source && a.flags === b.flags;\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) return false;\n return a.every((v, i) => isEqual(v, b[i]));\n }\n if (isObject(a) && isObject(b)) {\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) return false;\n return aKeys.every((key) => isEqual(a[key], b[key]));\n }\n return false;\n}\n\nfunction flattenObject(obj, prefix) {\n prefix = prefix || '';\n const result = {};\n Object.keys(obj).forEach((key) => {\n const path = prefix ? prefix + '.' + key : key;\n if (isObject(obj[key]) && !isDate(obj[key]) && !isRegExp(obj[key])) {\n Object.assign(result, flattenObject(obj[key], path));\n } else {\n result[path] = obj[key];\n }\n });\n return result;\n}\n\n// ─── Array Utilities ──────────────────────────────────────────────────────────\n\nfunction unique(arr) { return Array.from(new Set(arr)); }\nfunction flatten(arr, depth) { return arr.flat(depth !== undefined ? depth : Infinity); }\n\nfunction chunk(arr, size) {\n const result = [];\n for (let i = 0; i < arr.length; i += size) {\n result.push(arr.slice(i, i + size));\n }\n return result;\n}\n\nfunction groupBy(arr, key) {\n return arr.reduce((groups, item) => {\n const val = typeof key === 'function' ? key(item) : item[key];\n (groups[val] = groups[val] || []).push(item);\n return groups;\n }, {});\n}\n\nfunction sortBy(arr, key, order) {\n return arr.slice().sort((a, b) => {\n const aVal = typeof key === 'function' ? key(a) : a[key];\n const bVal = typeof key === 'function' ? key(b) : b[key];\n const cmp = aVal < bVal ? -1 : aVal > bVal ? 1 : 0;\n return order === 'desc' ? -cmp : cmp;\n });\n}\n\nfunction filterBy(arr, key, value) {\n if (typeof key === 'function') return arr.filter(key);\n return arr.filter((item) => item[key] === value);\n}\n\nfunction findBy(arr, key, value) {\n if (typeof key === 'function') return arr.find(key);\n return arr.find((item) => item[key] === value);\n}\n\nfunction countBy(arr, key) {\n return arr.reduce((counts, item) => {\n const val = typeof key === 'function' ? key(item) : item[key];\n counts[val] = (counts[val] || 0) + 1;\n return counts;\n }, {});\n}\n\nfunction partition(arr, predicate) {\n const pass = [], fail = [];\n arr.forEach((item) => (predicate(item) ? pass : fail).push(item));\n return [pass, fail];\n}\n\nfunction zip() {\n const arrays = Array.prototype.slice.call(arguments);\n const len = Math.min.apply(null, arrays.map((a) => a.length));\n const result = [];\n for (let i = 0; i < len; i++) {\n result.push(arrays.map((a) => a[i]));\n }\n return result;\n}\n\nfunction unzip(arr) {\n const len = Math.max.apply(null, arr.map((a) => a.length));\n const result = [];\n for (let i = 0; i < len; i++) {\n result.push(arr.map((a) => a[i]));\n }\n return result;\n}\n\nfunction difference(a, b) { return a.filter((x) => !b.includes(x)); }\nfunction intersection(a, b) { return a.filter((x) => b.includes(x)); }\nfunction union(a, b) { return unique(a.concat(b)); }\n\nfunction shuffle(arr) {\n const result = arr.slice();\n for (let i = result.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n const tmp = result[i]; result[i] = result[j]; result[j] = tmp;\n }\n return result;\n}\n\nfunction sample(arr, n) {\n if (n === undefined) return arr[Math.floor(Math.random() * arr.length)];\n return shuffle(arr).slice(0, n);\n}\n\nfunction range(start, end, step) {\n if (end === undefined) { end = start; start = 0; }\n step = step || 1;\n const result = [];\n for (let i = start; step > 0 ? i < end : i > end; i += step) {\n result.push(i);\n }\n return result;\n}\n\n// ─── String Utilities ─────────────────────────────────────────────────────────\n\nfunction capitalize(str) {\n return str ? str.charAt(0).toUpperCase() + str.slice(1) : '';\n}\n\nfunction camelCase(str) {\n return str.replace(/[-_\\s]+(.)?/g, (_, c) => c ? c.toUpperCase() : '');\n}\n\nfunction kebabCase(str) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').replace(/[\\s_]+/g, '-').toLowerCase();\n}\n\nfunction snakeCase(str) {\n return str.replace(/([a-z])([A-Z])/g, '$1_$2').replace(/[\\s-]+/g, '_').toLowerCase();\n}\n\nfunction pascalCase(str) {\n return camelCase(str).replace(/^(.)/, (_, c) => c.toUpperCase());\n}\n\nfunction truncate(str, len, suffix) {\n suffix = suffix || '...';\n return str.length <= len ? str : str.slice(0, len - suffix.length) + suffix;\n}\n\nfunction padStart(str, len, fill) { return String(str).padStart(len, fill || ' '); }\nfunction padEnd(str, len, fill) { return String(str).padEnd(len, fill || ' '); }\nfunction trim(str, chars) {\n if (!chars) return String(str).trim();\n const re = new RegExp('^[' + chars + ']+|[' + chars + ']+$', 'g');\n return String(str).replace(re, '');\n}\nfunction repeat(str, n) { return String(str).repeat(n); }\n\nfunction template(str, data) {\n return str.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key) => data[key] !== undefined ? data[key] : '');\n}\n\nfunction escapeHtml(str) {\n const map = { '&': '&', '<': '<', '>': '>', '\"': '"', \"'\": ''' };\n return String(str).replace(/[&<>\"']/g, (c) => map[c]);\n}\n\nfunction unescapeHtml(str) {\n const map = { '&': '&', '<': '<', '>': '>', '"': '\"', ''': \"'\" };\n return String(str).replace(/&(?:amp|lt|gt|quot|#39);/g, (c) => map[c]);\n}\n\nfunction formatNumber(num, decimals, sep) {\n decimals = decimals !== undefined ? decimals : 2;\n sep = sep || ',';\n const parts = Number(num).toFixed(decimals).split('.');\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, sep);\n return parts.join('.');\n}\n\nfunction formatCurrency(num, symbol, decimals) {\n symbol = symbol || '$';\n return symbol + formatNumber(num, decimals || 2);\n}\n\n// ─── Number Utilities ─────────────────────────────────────────────────────────\n\nfunction clamp(num, min, max) { return Math.min(Math.max(num, min), max); }\nfunction random(min, max) { return Math.random() * (max - min) + min; }\nfunction randomInt(min, max) { return Math.floor(random(min, max + 1)); }\nfunction round(num, decimals) { const f = Math.pow(10, decimals || 0); return Math.round(num * f) / f; }\nfunction ceil(num, decimals) { const f = Math.pow(10, decimals || 0); return Math.ceil(num * f) / f; }\nfunction floor(num, decimals) { const f = Math.pow(10, decimals || 0); return Math.floor(num * f) / f; }\nfunction sum(arr) { return arr.reduce((a, b) => a + b, 0); }\nfunction avg(arr) { return arr.length ? sum(arr) / arr.length : 0; }\nfunction min(arr) { return Math.min.apply(null, arr); }\nfunction max(arr) { return Math.max.apply(null, arr); }\nfunction percent(value, total) { return total === 0 ? 0 : (value / total) * 100; }\nfunction isBetween(num, lo, hi) { return num >= lo && num <= hi; }\nfunction lerp(a, b, t) { return a + (b - a) * t; }\nfunction toFixed(num, d) { return Number(Number(num).toFixed(d || 0)); }\n\n// ─── Function Utilities ───────────────────────────────────────────────────────\n\nfunction debounce(fn, delay) {\n let timer;\n const debounced = function () {\n const args = arguments, ctx = this;\n clearTimeout(timer);\n timer = setTimeout(() => fn.apply(ctx, args), delay);\n };\n debounced.cancel = () => clearTimeout(timer);\n debounced.flush = function () { clearTimeout(timer); fn.apply(this, arguments); };\n return debounced;\n}\n\nfunction throttle(fn, limit) {\n let lastTime = 0, timer;\n return function () {\n const now = Date.now(), args = arguments, ctx = this;\n if (now - lastTime >= limit) {\n clearTimeout(timer);\n lastTime = now;\n fn.apply(ctx, args);\n } else if (!timer) {\n timer = setTimeout(() => { lastTime = now; timer = null; fn.apply(ctx, args); }, limit - (now - lastTime));\n }\n };\n}\n\nfunction memoize(fn, resolver) {\n const cache = new Map();\n const memoized = function () {\n const key = resolver ? resolver.apply(null, arguments) : JSON.stringify(arguments);\n if (cache.has(key)) return cache.get(key);\n const result = fn.apply(this, arguments);\n cache.set(key, result);\n return result;\n };\n memoized.cache = cache;\n memoized.clear = () => cache.clear();\n return memoized;\n}\n\nfunction once(fn) {\n let called = false, result;\n return function () {\n if (called) return result;\n called = true;\n result = fn.apply(this, arguments);\n return result;\n };\n}\n\nfunction curry(fn) {\n const arity = fn.length;\n return function curried() {\n const args = Array.prototype.slice.call(arguments);\n if (args.length >= arity) return fn.apply(this, args);\n return function () { return curried.apply(this, args.concat(Array.prototype.slice.call(arguments))); };\n };\n}\n\nfunction compose() {\n const fns = Array.prototype.slice.call(arguments);\n return function (x) { return fns.reduceRight((v, f) => f(v), x); };\n}\n\nfunction pipe() {\n const fns = Array.prototype.slice.call(arguments);\n return function (x) { return fns.reduce((v, f) => f(v), x); };\n}\n\nfunction partial(fn) {\n const preset = Array.prototype.slice.call(arguments, 1);\n return function () { return fn.apply(this, preset.concat(Array.prototype.slice.call(arguments))); };\n}\n\nfunction noop() {}\nfunction identity(v) { return v; }\n\n// ─── Date Utilities ───────────────────────────────────────────────────────────\n\nfunction formatDate(date, format) {\n date = isDate(date) ? date : new Date(date);\n if (isNaN(date.getTime())) return '';\n format = format || 'YYYY-MM-DD';\n const pad = (n) => String(n).padStart(2, '0');\n const tokens = {\n 'YYYY': date.getFullYear(), 'MM': pad(date.getMonth() + 1), 'DD': pad(date.getDate()),\n 'HH': pad(date.getHours()), 'mm': pad(date.getMinutes()), 'ss': pad(date.getSeconds()),\n };\n let result = format;\n Object.keys(tokens).forEach((key) => { result = result.replace(key, tokens[key]); });\n return result;\n}\n\nfunction parseDate(str, format) {\n if (!format) return new Date(str);\n const map = {};\n format.replace(/(YYYY|MM|DD|HH|mm|ss)/g, (m, p, o) => { map[p] = o; return m; });\n const y = str.substr(map.YYYY, 4), mo = str.substr(map.MM, 2), d = str.substr(map.DD, 2);\n return new Date(y, mo - 1, d);\n}\n\nfunction addDays(date, days) { const d = new Date(date); d.setDate(d.getDate() + days); return d; }\nfunction diffDays(a, b) { return Math.round((new Date(a) - new Date(b)) / 86400000); }\nfunction isToday(date) { const d = new Date(date), t = new Date(); return d.toDateString() === t.toDateString(); }\nfunction isWeekend(date) { const day = new Date(date).getDay(); return day === 0 || day === 6; }\nfunction getWeek(date) { const d = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())); d.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay() || 7)); return Math.ceil(((d - new Date(Date.UTC(d.getUTCFullYear(), 0, 1))) / 86400000 + 1) / 7); }\nfunction getQuarter(date) { return Math.ceil((new Date(date).getMonth() + 1) / 3); }\n\n// ─── Color Utilities ──────────────────────────────────────────────────────────\n\nfunction hexToRgb(hex) {\n hex = hex.replace('#', '');\n if (hex.length === 3) hex = hex.split('').map((c) => c + c).join('');\n const n = parseInt(hex, 16);\n return { r: (n >> 16) & 255, g: (n >> 8) & 255, b: n & 255 };\n}\n\nfunction rgbToHex(r, g, b) {\n return '#' + [r, g, b].map((c) => Math.max(0, Math.min(255, Math.round(c))).toString(16).padStart(2, '0')).join('');\n}\n\nfunction hexToHsl(hex) {\n const { r, g, b } = hexToRgb(hex);\n const rn = r / 255, gn = g / 255, bn = b / 255;\n const max = Math.max(rn, gn, bn), min = Math.min(rn, gn, bn);\n let h, s, l = (max + min) / 2;\n if (max === min) { h = s = 0; } else {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case rn: h = ((gn - bn) / d + (gn < bn ? 6 : 0)) / 6; break;\n case gn: h = ((bn - rn) / d + 2) / 6; break;\n case bn: h = ((rn - gn) / d + 4) / 6; break;\n }\n }\n return { h: Math.round(h * 360), s: Math.round(s * 100), l: Math.round(l * 100) };\n}\n\nfunction hslToHex(h, s, l) {\n s /= 100; l /= 100;\n const a = s * Math.min(l, 1 - l);\n const f = (n) => {\n const k = (n + h / 30) % 12;\n const color = l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return Math.round(255 * color).toString(16).padStart(2, '0');\n };\n return '#' + f(0) + f(8) + f(4);\n}\n\nfunction lighten(hex, amount) {\n const { r, g, b } = hexToRgb(hex);\n return rgbToHex(r + (255 - r) * amount / 100, g + (255 - g) * amount / 100, b + (255 - b) * amount / 100);\n}\n\nfunction darken(hex, amount) {\n const { r, g, b } = hexToRgb(hex);\n return rgbToHex(r * (1 - amount / 100), g * (1 - amount / 100), b * (1 - amount / 100));\n}\n\nfunction alpha(hex, a) {\n const { r, g, b } = hexToRgb(hex);\n return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n}\n\nfunction isValidColor(str) {\n if (!str) return false;\n if (/^#([0-9A-Fa-f]{3}){1,2}$/.test(str)) return true;\n if (/^rgb\\(\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*\\d+\\s*\\)$/.test(str)) return true;\n if (/^rgba\\(\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*\\d+\\s*,\\s*[\\d.]+\\s*\\)$/.test(str)) return true;\n if (/^hsl\\(\\s*\\d+\\s*,\\s*\\d+%\\s*,\\s*\\d+%\\s*\\)$/.test(str)) return true;\n const opt = new Option();\n opt.style.color = str;\n return opt.style.color !== '';\n}\n\n// ─── URL Utilities ────────────────────────────────────────────────────────────\n\nfunction parseUrl(url) {\n try { return new URL(url); } catch (e) { return null; }\n}\n\nfunction buildUrl(base, path, params) {\n let url = base;\n if (path) url = url.replace(/\\/$/, '') + '/' + path.replace(/^\\//, '');\n if (params) {\n const qs = Object.keys(params).map((k) => encodeURIComponent(k) + '=' + encodeURIComponent(params[k])).join('&');\n if (qs) url += (url.includes('?') ? '&' : '?') + qs;\n }\n return url;\n}\n\nfunction getQueryParam(name, url) {\n url = url || window.location.href;\n const u = new URL(url);\n return u.searchParams.get(name);\n}\n\nfunction setQueryParam(name, value, url) {\n url = url || window.location.href;\n const u = new URL(url);\n u.searchParams.set(name, value);\n return u.toString();\n}\n\nfunction getHash(url) {\n url = url || window.location.href;\n const idx = url.indexOf('#');\n return idx !== -1 ? url.slice(idx + 1) : '';\n}\n\nfunction setHash(hash, url) {\n url = url || window.location.href;\n const idx = url.indexOf('#');\n const base = idx !== -1 ? url.slice(0, idx) : url;\n return base + '#' + hash;\n}\n\n// ─── Exports ──────────────────────────────────────────────────────────────────\n\nmodule.exports = {\n // Type checking\n isString, isNumber, isBoolean, isFunction, isObject, isArray, isNull, isUndefined,\n isDate, isRegExp, isPromise, isElement, isPlainObject, isNil, isFiniteNum, isInteger,\n // Object utilities\n deepClone, deepMerge, shallowMerge, pick, omit, get, set, has, keys, values,\n entries, fromEntries, isEmpty, isEqual, flattenObject,\n // Array utilities\n unique, flatten, chunk, groupBy, sortBy, filterBy, findBy, countBy, partition,\n zip, unzip, difference, intersection, union, shuffle, sample, range,\n // String utilities\n capitalize, camelCase, kebabCase, snakeCase, pascalCase, truncate, padStart,\n padEnd, trim, repeat, template, escapeHtml, unescapeHtml, formatNumber, formatCurrency,\n // Number utilities\n clamp, random, randomInt, round, ceil, floor, sum, avg, min, max, percent,\n isBetween, lerp, toFixed,\n // Function utilities\n debounce, throttle, memoize, once, curry, compose, pipe, partial, noop, identity,\n // Date utilities\n formatDate, parseDate, addDays, diffDays, isToday, isWeekend, getWeek, getQuarter,\n // Color utilities\n hexToRgb, rgbToHex, hexToHsl, hslToHex, lighten, darken, alpha, isValidColor,\n // URL utilities\n parseUrl, buildUrl, getQueryParam, setQueryParam, getHash, setHash,\n};\n","/**\n * Form/Data Validation\n * ElementDrawing Framework - Validation rules, composition, async validation,\n * form/field validation, error messages, sanitization, schemas, type coercion,\n * conditional and cross-field validation.\n */\n\n'use strict';\n\n// ─── Validation Rules ─────────────────────────────────────────────────────────\n\nconst rules = {\n required: function (value) {\n if (value === null || value === undefined) return false;\n if (typeof value === 'string' && value.trim() === '') return false;\n if (Array.isArray(value) && value.length === 0) return false;\n return true;\n },\n\n minLength: function (value, min) {\n if (value === null || value === undefined) return false;\n return String(value).length >= min;\n },\n\n maxLength: function (value, max) {\n if (value === null || value === undefined) return true;\n return String(value).length <= max;\n },\n\n min: function (value, minVal) {\n return Number(value) >= minVal;\n },\n\n max: function (value, maxVal) {\n return Number(value) <= maxVal;\n },\n\n email: function (value) {\n if (!value) return true;\n return /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(value);\n },\n\n url: function (value) {\n if (!value) return true;\n try { new URL(value); return true; } catch (e) { return false; }\n },\n\n pattern: function (value, regex) {\n if (!value) return true;\n return regex.test(String(value));\n },\n\n numeric: function (value) {\n if (!value && value !== 0) return true;\n return !isNaN(Number(value));\n },\n\n integer: function (value) {\n if (!value && value !== 0) return true;\n return Number.isInteger(Number(value));\n },\n\n alpha: function (value) {\n if (!value) return true;\n return /^[a-zA-Z]+$/.test(value);\n },\n\n alphaNumeric: function (value) {\n if (!value) return true;\n return /^[a-zA-Z0-9]+$/.test(value);\n },\n\n date: function (value) {\n if (!value) return true;\n const d = new Date(value);\n return !isNaN(d.getTime());\n },\n\n phone: function (value) {\n if (!value) return true;\n return /^[+]?[\\d\\s()-]{7,20}$/.test(value);\n },\n\n creditCard: function (value) {\n if (!value) return true;\n const cleaned = String(value).replace(/\\D/g, '');\n if (cleaned.length < 13 || cleaned.length > 19) return false;\n // Luhn algorithm\n let sum = 0, alternate = false;\n for (let i = cleaned.length - 1; i >= 0; i--) {\n let n = parseInt(cleaned[i], 10);\n if (alternate) { n *= 2; if (n > 9) n -= 9; }\n sum += n;\n alternate = !alternate;\n }\n return sum % 10 === 0;\n },\n\n custom: function (value, validatorFn) {\n if (typeof validatorFn !== 'function') return true;\n return validatorFn(value);\n },\n};\n\n// ─── Default Error Messages ───────────────────────────────────────────────────\n\nconst defaultMessages = {\n required: 'This field is required',\n minLength: 'Must be at least {min} characters',\n maxLength: 'Must be no more than {max} characters',\n min: 'Must be at least {min}',\n max: 'Must be no more than {max}',\n email: 'Must be a valid email address',\n url: 'Must be a valid URL',\n pattern: 'Invalid format',\n numeric: 'Must be a number',\n integer: 'Must be an integer',\n alpha: 'Must contain only letters',\n alphaNumeric: 'Must contain only letters and numbers',\n date: 'Must be a valid date',\n phone: 'Must be a valid phone number',\n creditCard: 'Must be a valid credit card number',\n custom: 'Validation failed',\n};\n\n/**\n * Get an error message for a rule, with parameter interpolation.\n * @param {string} ruleName\n * @param {Object} params\n * @param {Object} [customMessages]\n * @returns {string}\n */\nfunction getMessage(ruleName, params, customMessages) {\n const template = (customMessages && customMessages[ruleName]) || defaultMessages[ruleName] || 'Validation failed';\n return template.replace(/\\{(\\w+)\\}/g, (_, key) => params[key] !== undefined ? params[key] : '');\n}\n\n// ─── Validator Composition ────────────────────────────────────────────────────\n\n/**\n * Create a validator that requires all rules to pass (AND).\n * @param {...Function} validators\n * @returns {Function}\n */\nfunction and() {\n const validators = Array.prototype.slice.call(arguments);\n return function (value) {\n for (const validator of validators) {\n const result = validator(value);\n if (result !== true) return result;\n }\n return true;\n };\n}\n\n/**\n * Create a validator that requires at least one rule to pass (OR).\n * @param {...Function} validators\n * @returns {Function}\n */\nfunction or() {\n const validators = Array.prototype.slice.call(arguments);\n return function (value) {\n const errors = [];\n for (const validator of validators) {\n const result = validator(value);\n if (result === true) return true;\n errors.push(result);\n }\n return errors[0]; // Return first error\n };\n}\n\n/**\n * Create a validator that negates another validator.\n * @param {Function} validator\n * @returns {Function}\n */\nfunction not(validator) {\n return function (value) {\n const result = validator(value);\n return result === true ? 'Value should not match this rule' : true;\n };\n}\n\n/**\n * Create a conditional validator that only applies when a condition is met.\n * @param {Function} condition - (value, allValues) => boolean\n * @param {Function} validator\n * @returns {Function}\n */\nfunction when(condition, validator) {\n return function (value, allValues) {\n if (condition(value, allValues)) {\n return validator(value, allValues);\n }\n return true;\n };\n}\n\n// ─── Field Validation ─────────────────────────────────────────────────────────\n\n/**\n * Create a field validator from a rule configuration.\n * @param {Object} config\n * @param {Array} config.rules - Array of { rule, params, message }\n * @param {Function} [config.transform] - Transform value before validation\n * @returns {Function} Validator function\n */\nfunction createFieldValidator(config) {\n const fieldRules = config.rules || [];\n const transform = config.transform;\n\n return function validateField(value, allValues) {\n const val = transform ? transform(value) : value;\n const errors = [];\n\n for (const ruleConfig of fieldRules) {\n const ruleName = ruleConfig.rule;\n const ruleParams = ruleConfig.params || {};\n const customMessage = ruleConfig.message;\n\n const ruleFn = typeof ruleName === 'function' ? ruleName : rules[ruleName];\n if (!ruleFn) continue;\n\n const args = ruleName === 'custom' ? [val, ruleParams.validator] : [val];\n\n // Add params as additional arguments for rules that need them\n if (ruleName === 'minLength' && ruleParams.min !== undefined) args.push(ruleParams.min);\n if (ruleName === 'maxLength' && ruleParams.max !== undefined) args.push(ruleParams.max);\n if (ruleName === 'min' && ruleParams.min !== undefined) args.push(ruleParams.min);\n if (ruleName === 'max' && ruleParams.max !== undefined) args.push(ruleParams.max);\n if (ruleName === 'pattern' && ruleParams.regex) args.push(ruleParams.regex);\n\n const result = ruleFn.apply(null, args);\n\n if (result !== true) {\n const message = customMessage || getMessage(ruleName, ruleParams);\n errors.push(message);\n }\n }\n\n return errors.length === 0 ? true : errors;\n };\n}\n\n// ─── Async Validation ─────────────────────────────────────────────────────────\n\n/**\n * Create an async validator.\n * @param {Function} asyncFn - (value, allValues) => Promise<boolean|string>\n * @returns {Function} Async validator function\n */\nfunction asyncValidator(asyncFn) {\n return function (value, allValues) {\n return Promise.resolve(asyncFn(value, allValues)).then((result) => {\n if (result === true) return true;\n if (typeof result === 'string') return [result];\n return ['Async validation failed'];\n }).catch((error) => {\n return [error.message || 'Async validation error'];\n });\n };\n}\n\n// ─── Form Validation ──────────────────────────────────────────────────────────\n\n/**\n * Create a form validator from a schema.\n * @param {Object} schema - Field name to validator mapping\n * @returns {Object} Form validator with validate method\n */\nfunction createFormValidator(schema) {\n const fieldValidators = {};\n const crossFieldValidators = [];\n\n Object.keys(schema).forEach((fieldName) => {\n const fieldConfig = schema[fieldName];\n if (typeof fieldConfig === 'function') {\n fieldValidators[fieldName] = fieldConfig;\n } else if (fieldConfig.rules) {\n fieldValidators[fieldName] = createFieldValidator(fieldConfig);\n } else if (fieldConfig.crossField) {\n crossFieldValidators.push({\n fields: fieldConfig.fields,\n validator: fieldConfig.validator,\n message: fieldConfig.message,\n });\n } else {\n fieldValidators[fieldName] = createFieldValidator({ rules: Array.isArray(fieldConfig) ? fieldConfig : [fieldConfig] });\n }\n });\n\n return {\n /**\n * Validate a single field.\n * @param {string} fieldName\n * @param {*} value\n * @param {Object} [allValues]\n * @returns {true|Array<string>}\n */\n validateField: function (fieldName, value, allValues) {\n const validator = fieldValidators[fieldName];\n if (!validator) return true;\n return validator(value, allValues || {});\n },\n\n /**\n * Validate all fields in the form.\n * @param {Object} values - Field name to value mapping\n * @returns {Object} { valid: boolean, errors: { [fieldName]: string[] } }\n */\n validate: function (values) {\n const errors = {};\n let valid = true;\n\n // Validate each field\n Object.keys(fieldValidators).forEach((fieldName) => {\n const result = fieldValidators[fieldName](values[fieldName], values);\n if (result !== true) {\n errors[fieldName] = Array.isArray(result) ? result : [result];\n valid = false;\n }\n });\n\n // Run cross-field validators\n crossFieldValidators.forEach((crossVal) => {\n const result = crossVal.validator(values);\n if (result !== true) {\n const message = crossVal.message || result;\n crossVal.fields.forEach((f) => {\n if (!errors[f]) errors[f] = [];\n errors[f].push(typeof message === 'string' ? message : 'Cross-field validation failed');\n });\n valid = false;\n }\n });\n\n return { valid, errors };\n },\n\n /**\n * Async validation for all fields.\n * @param {Object} values\n * @returns {Promise<Object>}\n */\n validateAsync: async function (values) {\n const errors = {};\n let valid = true;\n\n const promises = Object.keys(fieldValidators).map(async (fieldName) => {\n const result = await Promise.resolve(fieldValidators[fieldName](values[fieldName], values));\n if (result !== true) {\n errors[fieldName] = Array.isArray(result) ? result : [result];\n valid = false;\n }\n });\n\n await Promise.all(promises);\n return { valid, errors };\n },\n\n /**\n * Validate and return only the first error for each field.\n * @param {Object} values\n * @returns {Object} { valid, errors: { [fieldName]: string } }\n */\n validateFirst: function (values) {\n const result = this.validate(values);\n const firstErrors = {};\n Object.keys(result.errors).forEach((k) => {\n firstErrors[k] = result.errors[k][0];\n });\n return { valid: result.valid, errors: firstErrors };\n },\n };\n}\n\n// ─── Schema Definition ────────────────────────────────────────────────────────\n\n/**\n * Define a validation schema fluently.\n * @returns {Object} Schema builder\n */\nfunction schema() {\n const fields = {};\n\n return {\n field: function (name) {\n const fieldRules = [];\n const builder = {\n required: function (msg) { fieldRules.push({ rule: 'required', message: msg }); return builder; },\n minLength: function (min, msg) { fieldRules.push({ rule: 'minLength', params: { min }, message: msg }); return builder; },\n maxLength: function (max, msg) { fieldRules.push({ rule: 'maxLength', params: { max }, message: msg }); return builder; },\n min: function (minVal, msg) { fieldRules.push({ rule: 'min', params: { min: minVal }, message: msg }); return builder; },\n max: function (maxVal, msg) { fieldRules.push({ rule: 'max', params: { max: maxVal }, message: msg }); return builder; },\n email: function (msg) { fieldRules.push({ rule: 'email', message: msg }); return builder; },\n url: function (msg) { fieldRules.push({ rule: 'url', message: msg }); return builder; },\n pattern: function (regex, msg) { fieldRules.push({ rule: 'pattern', params: { regex }, message: msg }); return builder; },\n numeric: function (msg) { fieldRules.push({ rule: 'numeric', message: msg }); return builder; },\n integer: function (msg) { fieldRules.push({ rule: 'integer', message: msg }); return builder; },\n custom: function (fn, msg) { fieldRules.push({ rule: 'custom', params: { validator: fn }, message: msg }); return builder; },\n end: function () { return schema(); },\n };\n\n fields[name] = fieldRules;\n return builder;\n },\n\n build: function () {\n const formSchema = {};\n Object.keys(fields).forEach((name) => {\n formSchema[name] = { rules: fields[name] };\n });\n return createFormValidator(formSchema);\n },\n };\n}\n\n// ─── Sanitization ─────────────────────────────────────────────────────────────\n\nconst sanitizers = {\n trim: function (value) { return typeof value === 'string' ? value.trim() : value; },\n escape: function (value) {\n if (typeof value !== 'string') return value;\n const map = { '&': '&', '<': '<', '>': '>', '\"': '"', \"'\": ''' };\n return value.replace(/[&<>\"']/g, (c) => map[c]);\n },\n normalize: function (value) { return typeof value === 'string' ? value.normalize() : value; },\n stripHtml: function (value) { return typeof value === 'string' ? value.replace(/<[^>]*>/g, '') : value; },\n toNumber: function (value) { const n = Number(value); return isNaN(n) ? value : n; },\n toDate: function (value) { const d = new Date(value); return isNaN(d.getTime()) ? value : d; },\n toLowerCase: function (value) { return typeof value === 'string' ? value.toLowerCase() : value; },\n toUpperCase: function (value) { return typeof value === 'string' ? value.toUpperCase() : value; },\n toBoolean: function (value) {\n if (typeof value === 'string') {\n if (value.toLowerCase() === 'true' || value === '1') return true;\n if (value.toLowerCase() === 'false' || value === '0') return false;\n }\n return Boolean(value);\n },\n truncate: function (value, maxLen) {\n if (typeof value !== 'string') return value;\n return value.length > maxLen ? value.slice(0, maxLen) : value;\n },\n};\n\n// ─── Type Coercion ────────────────────────────────────────────────────────────\n\n/**\n * Coerce a value to a specific type.\n * @param {*} value\n * @param {string} type - 'string' | 'number' | 'boolean' | 'array' | 'object' | 'date'\n * @returns {*}\n */\nfunction coerce(value, type) {\n switch (type) {\n case 'string': return String(value);\n case 'number': { const n = Number(value); return isNaN(n) ? value : n; }\n case 'boolean': return sanitizers.toBoolean(value);\n case 'array': return Array.isArray(value) ? value : [value];\n case 'object': return typeof value === 'object' && value !== null ? value : { value };\n case 'date': { const d = new Date(value); return isNaN(d.getTime()) ? value : d; }\n default: return value;\n }\n}\n\n// ─── Cross-Field Validation ───────────────────────────────────────────────────\n\n/**\n * Create a cross-field validator.\n * @param {string[]} fields - Field names involved\n * @param {Function} validator - (values) => boolean | string\n * @param {string} [message]\n * @returns {Object}\n */\nfunction crossField(fields, validator, message) {\n return { fields, validator, message, crossField: true };\n}\n\n/**\n * Pre-built cross-field validators.\n */\nconst crossFieldRules = {\n match: function (field1, field2, message) {\n return crossField([field1, field2], (values) => {\n return values[field1] === values[field2];\n }, message || field1 + ' and ' + field2 + ' must match');\n },\n\n different: function (field1, field2, message) {\n return crossField([field1, field2], (values) => {\n return values[field1] !== values[field2];\n }, message || field1 + ' and ' + field2 + ' must be different');\n },\n\n requiredIf: function (field, conditionField, message) {\n return crossField([field, conditionField], (values) => {\n if (values[conditionField]) return rules.required(values[field]);\n return true;\n }, message || field + ' is required when ' + conditionField + ' is set');\n },\n\n greaterThan: function (field1, field2, message) {\n return crossField([field1, field2], (values) => {\n return Number(values[field1]) > Number(values[field2]);\n }, message || field1 + ' must be greater than ' + field2);\n },\n};\n\n// ─── Exports ──────────────────────────────────────────────────────────────────\n\nmodule.exports = {\n rules,\n defaultMessages,\n getMessage,\n and,\n or,\n not,\n when,\n createFieldValidator,\n asyncValidator,\n createFormValidator,\n schema,\n sanitizers,\n coerce,\n crossField,\n crossFieldRules,\n};\n","/**\n * Accordion Component for ElementDrawing Framework\n * Supports single/multiple expand, icons, animations, nested, disabled items, custom header\n */\nconst ED = require('../core/element');\n\nfunction AccordionItem(props) {\n const {\n children,\n title,\n header,\n icon,\n expandIcon,\n disabled = false,\n expanded = false,\n onToggle,\n className = '',\n style = {},\n key: itemKey,\n extra,\n showArrow = true,\n destroyInactive = false,\n forceRender = false,\n animated = true,\n } = props;\n\n const headerClasses = [\n 'ed-flex ed-items-center ed-w-full ed-px-4 ed-py-3 ed-text-left ed-transition-colors ed-duration-200',\n 'hover:ed-bg-gray-50 focus:ed-outline-none focus:ed-ring-2 focus:ed-ring-inset focus:ed-ring-blue-500',\n disabled ? 'ed-opacity-50 ed-cursor-not-allowed' : 'ed-cursor-pointer',\n expanded ? 'ed-bg-gray-50' : '',\n 'ed-border-b ed-border-gray-100',\n className,\n ].filter(Boolean).join(' ');\n\n const contentClasses = [\n 'ed-overflow-hidden ed-transition-all ed-duration-300',\n animated ? 'ed-transition-[max-height] ed-ease-in-out' : '',\n expanded ? 'ed-max-h-[2000px] ed-opacity-100' : 'ed-max-h-0 ed-opacity-0',\n ].filter(Boolean).join(' ');\n\n const defaultExpandIcon = ED.createElement('svg', {\n className: `ed-w-5 ed-h-5 ed-transition-transform ed-duration-300 ed-text-gray-400 ${expanded ? 'ed-rotate-180' : ''}`,\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M19 9l-7 7-7-7' }),\n });\n\n const headerContent = header || ED.createElement(ED.Fragment, null,\n icon\n ? ED.createElement('span', { className: 'ed-mr-3 ed-flex ed-items-center ed-justify-center ed-w-5 ed-h-5 ed-text-gray-500' },\n typeof icon === 'string' ? ED.createElement('i', { className: icon }) : icon\n )\n : null,\n ED.createElement('span', { className: 'ed-flex-1 ed-font-medium ed-text-gray-900' }, title),\n extra\n ? ED.createElement('span', { className: 'ed-mr-2 ed-text-sm ed-text-gray-500', onClick: (e) => e.stopPropagation() }, extra)\n : null,\n showArrow\n ? ED.createElement('span', { className: 'ed-ml-auto ed-flex ed-items-center' },\n expandIcon || defaultExpandIcon\n )\n : null\n );\n\n const handleToggle = () => {\n if (!disabled) onToggle?.();\n };\n\n const handleKeyDown = (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleToggle();\n }\n };\n\n return ED.createElement('div', {\n className: 'ed-border ed-border-gray-200 ed-rounded-lg ed-overflow-hidden ed-mb-2',\n style,\n children: [\n ED.createElement('button', {\n key: 'header',\n className: headerClasses,\n onClick: handleToggle,\n onKeyDown: handleKeyDown,\n 'aria-expanded': expanded,\n 'aria-disabled': disabled,\n role: 'button',\n tabIndex: disabled ? -1 : 0,\n children: headerContent,\n }),\n ED.createElement('div', {\n key: 'content',\n className: contentClasses,\n role: 'region',\n children: (expanded || forceRender)\n ? ED.createElement('div', { className: 'ed-px-4 ed-py-3 ed-text-gray-700 ed-border-t ed-border-gray-100' }, children)\n : null,\n }),\n ],\n });\n}\n\nAccordionItem.displayName = 'AccordionItem';\n\nfunction Accordion(props) {\n const {\n children,\n items = [],\n multiple = false,\n defaultActiveKey,\n activeKey,\n onChange,\n className = '',\n style = {},\n icon,\n expandIcon,\n animated = true,\n destroyInactive = false,\n bordered = true,\n ghost = false,\n accordion = !multiple,\n size = 'md',\n } = props;\n\n const internalActiveKeys = activeKey !== undefined\n ? (Array.isArray(activeKey) ? activeKey : [activeKey])\n : defaultActiveKey !== undefined\n ? (Array.isArray(defaultActiveKey) ? defaultActiveKey : [defaultActiveKey])\n : [];\n\n const handleToggle = (key) => {\n const isOpen = internalActiveKeys.includes(key);\n let newKeys;\n if (accordion || !multiple) {\n newKeys = isOpen ? [] : [key];\n } else {\n newKeys = isOpen ? internalActiveKeys.filter(k => k !== key) : [...internalActiveKeys, key];\n }\n onChange?.(multiple ? newKeys : newKeys[0] || null);\n };\n\n const sizeClasses = {\n sm: 'ed-text-sm',\n md: 'ed-text-base',\n lg: 'ed-text-lg',\n };\n\n const accordionClasses = [\n sizeClasses[size] || sizeClasses.md,\n ghost ? '' : bordered ? 'ed-divide-y ed-divide-gray-200' : '',\n 'ed-accordion',\n className,\n ].filter(Boolean).join(' ');\n\n const renderItems = () => {\n if (items.length > 0) {\n return items.map((item, idx) =>\n ED.createElement(AccordionItem, {\n key: item.key || idx,\n title: item.title,\n icon: item.icon || icon,\n expandIcon: item.expandIcon || expandIcon,\n disabled: item.disabled,\n expanded: internalActiveKeys.includes(item.key || String(idx)),\n onToggle: () => handleToggle(item.key || String(idx)),\n extra: item.extra,\n showArrow: item.showArrow !== undefined ? item.showArrow : true,\n animated,\n destroyInactive,\n forceRender: item.forceRender,\n children: item.children || item.content,\n })\n );\n }\n\n const childArray = Array.isArray(children) ? children : [children];\n return childArray.map((child, idx) => {\n if (!child || !child.props) return child;\n const childKey = child.props.key || String(idx);\n return ED.cloneElement\n ? ED.cloneElement(child, {\n key: childKey,\n expanded: internalActiveKeys.includes(childKey),\n onToggle: () => handleToggle(childKey),\n icon: child.props.icon || icon,\n expandIcon: child.props.expandIcon || expandIcon,\n animated,\n })\n : child;\n });\n };\n\n const wrapperClasses = ghost\n ? [\n 'ed-border-0 ed-bg-transparent',\n className,\n ].filter(Boolean).join(' ')\n : accordionClasses;\n\n return ED.createElement('div', {\n className: wrapperClasses,\n style,\n children: renderItems(),\n });\n}\n\nAccordion.displayName = 'Accordion';\nAccordion.Item = AccordionItem;\n\nmodule.exports = Accordion;\n","/**\n * Alert Component for ElementDrawing Framework\n * Supports variants, closable, icon, title + description, banner mode, auto-dismiss\n */\nconst ED = require('../core/element');\n\nconst ALERT_VARIANTS = {\n info: {\n container: 'ed-bg-blue-50 ed-border-blue-200 ed-text-blue-800',\n icon: 'ed-text-blue-500',\n close: 'ed-text-blue-500 hover:ed-bg-blue-100',\n },\n success: {\n container: 'ed-bg-green-50 ed-border-green-200 ed-text-green-800',\n icon: 'ed-text-green-500',\n close: 'ed-text-green-500 hover:ed-bg-green-100',\n },\n warning: {\n container: 'ed-bg-yellow-50 ed-border-yellow-200 ed-text-yellow-800',\n icon: 'ed-text-yellow-500',\n close: 'ed-text-yellow-500 hover:ed-bg-yellow-100',\n },\n danger: {\n container: 'ed-bg-red-50 ed-border-red-200 ed-text-red-800',\n icon: 'ed-text-red-500',\n close: 'ed-text-red-500 hover:ed-bg-red-100',\n },\n error: {\n container: 'ed-bg-red-50 ed-border-red-200 ed-text-red-800',\n icon: 'ed-text-red-500',\n close: 'ed-text-red-500 hover:ed-bg-red-100',\n },\n};\n\nconst ALERT_ICONS = {\n info: ED.createElement('svg', {\n className: 'ed-w-5 ed-h-5',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z' }),\n }),\n success: ED.createElement('svg', {\n className: 'ed-w-5 ed-h-5',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M5 13l4 4L19 7' }),\n }),\n warning: ED.createElement('svg', {\n className: 'ed-w-5 ed-h-5',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M12 9v2m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z' }),\n }),\n danger: ED.createElement('svg', {\n className: 'ed-w-5 ed-h-5',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z' }),\n }),\n error: ED.createElement('svg', {\n className: 'ed-w-5 ed-h-5',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z' }),\n }),\n};\n\nfunction Alert(props) {\n const {\n children,\n variant = 'info',\n type = variant,\n closable = false,\n onClose,\n showIcon = true,\n icon,\n title,\n description,\n banner = false,\n autoDismiss,\n onDismiss,\n className = '',\n style = {},\n action,\n rounded = true,\n bordered = true,\n outlined = false,\n size = 'md',\n } = props;\n\n const currentType = type || variant;\n const variantStyle = ALERT_VARIANTS[currentType] || ALERT_VARIANTS.info;\n\n const sizeClasses = {\n sm: 'ed-text-xs ed-py-2 ed-px-3',\n md: 'ed-text-sm ed-py-3 ed-px-4',\n lg: 'ed-text-base ed-py-4 ed-px-5',\n };\n\n const containerClasses = [\n 'ed-flex ed-items-start ed-gap-3',\n variantStyle.container,\n banner ? 'ed-rounded-none ed-border-x-0 ed-border-t-0' : rounded ? 'ed-rounded-lg' : '',\n bordered ? 'ed-border' : '',\n outlined ? 'ed-bg-transparent' : '',\n sizeClasses[size] || sizeClasses.md,\n 'ed-transition-all ed-duration-300',\n className,\n ].filter(Boolean).join(' ');\n\n const iconElement = showIcon\n ? ED.createElement('span', {\n className: `ed-flex-shrink-0 ed-mt-0.5 ${variantStyle.icon}`,\n children: icon || ALERT_ICONS[currentType] || ALERT_ICONS.info,\n })\n : null;\n\n const contentElement = ED.createElement('div', { className: 'ed-flex-1 ed-min-w-0' },\n title\n ? ED.createElement('div', { className: 'ed-font-semibold ed-mb-0.5' }, title)\n : null,\n description\n ? ED.createElement('div', { className: 'ed-text-sm ed-opacity-80' }, description)\n : null,\n children\n ? ED.createElement('div', { className: title || description ? 'ed-mt-1 ed-text-sm ed-opacity-90' : '' }, children)\n : null\n );\n\n const actionElement = action\n ? ED.createElement('div', { className: 'ed-flex-shrink-0 ed-ml-2' }, action)\n : null;\n\n const closeElement = closable\n ? ED.createElement('button', {\n className: `ed-flex-shrink-0 ed-p-1 ed-rounded ed-transition-colors ${variantStyle.close}`,\n onClick: onClose,\n 'aria-label': 'Close alert',\n type: 'button',\n children: ED.createElement('svg', {\n className: 'ed-w-4 ed-h-4',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M6 18L18 6M6 6l12 12' }),\n }),\n })\n : null;\n\n const progressBar = autoDismiss\n ? ED.createElement('div', { className: 'ed-absolute ed-bottom-0 ed-left-0 ed-right-0 ed-h-1 ed-rounded-b-lg ed-overflow-hidden' },\n ED.createElement('div', {\n className: `ed-h-full ed-bg-current ed-opacity-30`,\n style: { animation: `ed-shrink ${autoDismiss}ms linear forwards` },\n })\n )\n : null;\n\n return ED.createElement('div', {\n className: containerClasses,\n style: { position: 'relative', ...style },\n role: currentType === 'danger' || currentType === 'error' ? 'alert' : 'status',\n children: [\n iconElement,\n contentElement,\n actionElement,\n closeElement,\n progressBar,\n ].filter(Boolean),\n });\n}\n\nAlert.displayName = 'Alert';\nAlert.VARIANTS = ALERT_VARIANTS;\n\nmodule.exports = Alert;\n","/**\n * Avatar Component for ElementDrawing Framework\n * Supports sizes, shapes, image/initials/icon, status indicator, avatar group, overlap\n */\nconst ED = require('../core/element');\n\nconst AVATAR_SIZES = {\n xs: { container: 'ed-w-6 ed-h-6 ed-text-xs', icon: 'ed-w-3 ed-h-3', indicator: 'ed-w-1.5 ed-h-1.5' },\n sm: { container: 'ed-w-8 ed-h-8 ed-text-sm', icon: 'ed-w-4 ed-h-4', indicator: 'ed-w-2 ed-h-2' },\n md: { container: 'ed-w-10 ed-h-10 ed-text-base', icon: 'ed-w-5 ed-h-5', indicator: 'ed-w-2.5 ed-h-2.5' },\n lg: { container: 'ed-w-12 ed-h-12 ed-text-lg', icon: 'ed-w-6 ed-h-6', indicator: 'ed-w-3 ed-h-3' },\n xl: { container: 'ed-w-14 ed-h-14 ed-text-xl', icon: 'ed-w-7 ed-h-7', indicator: 'ed-w-3.5 ed-h-3.5' },\n '2xl': { container: 'ed-w-16 ed-h-16 ed-text-2xl', icon: 'ed-w-8 ed-h-8', indicator: 'ed-w-4 ed-h-4' },\n};\n\nconst SHAPE_CLASSES = {\n circle: 'ed-rounded-full',\n square: 'ed-rounded-none',\n rounded: 'ed-rounded-lg',\n};\n\nconst STATUS_COLORS = {\n online: 'ed-bg-green-500',\n offline: 'ed-bg-gray-400',\n away: 'ed-bg-yellow-500',\n busy: 'ed-bg-red-500',\n doNotDisturb: 'ed-bg-red-600',\n};\n\nconst BG_COLORS = [\n 'ed-bg-blue-500',\n 'ed-bg-green-500',\n 'ed-bg-yellow-500',\n 'ed-bg-red-500',\n 'ed-bg-purple-500',\n 'ed-bg-pink-500',\n 'ed-bg-indigo-500',\n 'ed-bg-teal-500',\n];\n\nfunction getColorFromName(name) {\n if (!name) return BG_COLORS[0];\n let hash = 0;\n for (let i = 0; i < name.length; i++) {\n hash = name.charCodeAt(i) + ((hash << 5) - hash);\n }\n return BG_COLORS[Math.abs(hash) % BG_COLORS.length];\n}\n\nfunction getInitials(name) {\n if (!name) return '';\n const parts = name.trim().split(/\\s+/);\n if (parts.length >= 2) return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase();\n return name.slice(0, 2).toUpperCase();\n}\n\nfunction Avatar(props) {\n const {\n src,\n alt = '',\n icon,\n name,\n size = 'md',\n shape = 'circle',\n status,\n statusColor,\n className = '',\n style = {},\n onClick,\n onError,\n bgColor,\n textColor = 'ed-text-white',\n bordered = false,\n borderColor = 'ed-border-white',\n boxShadow,\n draggable = false,\n loading = false,\n fit = 'cover',\n } = props;\n\n const sizeConfig = AVATAR_SIZES[size] || AVATAR_SIZES.md;\n const shapeClass = SHAPE_CLASSES[shape] || SHAPE_CLASSES.circle;\n\n const containerClasses = [\n 'ed-inline-flex ed-items-center ed-justify-center ed-relative ed-flex-shrink-0 ed-overflow-hidden',\n sizeConfig.container,\n shapeClass,\n bgColor || (!src ? getColorFromName(name) : ''),\n textColor,\n bordered ? `ed-border-2 ${borderColor}` : '',\n onClick ? 'ed-cursor-pointer hover:ed-opacity-80 ed-transition-opacity' : '',\n loading ? 'ed-animate-pulse ed-bg-gray-300' : '',\n 'ed-font-medium ed-select-none',\n className,\n ].filter(Boolean).join(' ');\n\n const statusIndicator = status\n ? ED.createElement('span', {\n className: [\n 'ed-absolute ed-bottom-0 ed-right-0 ed-border-2 ed-border-white ed-rounded-full',\n STATUS_COLORS[status] || statusColor || 'ed-bg-green-500',\n sizeConfig.indicator,\n ].join(' '),\n })\n : null;\n\n let contentElement;\n if (loading) {\n contentElement = null;\n } else if (src) {\n contentElement = ED.createElement('img', {\n src,\n alt: alt || name || 'Avatar',\n className: `ed-w-full ed-h-full ed-object-${fit}`,\n onError,\n draggable,\n });\n } else if (icon) {\n contentElement = ED.createElement('span', {\n className: sizeConfig.icon,\n children: typeof icon === 'string' ? ED.createElement('i', { className: icon }) : icon,\n });\n } else if (name) {\n contentElement = ED.createElement('span', null, getInitials(name));\n } else {\n contentElement = ED.createElement('svg', {\n className: sizeConfig.icon,\n fill: 'currentColor', viewBox: '0 0 24 24',\n children: ED.createElement('path', { d: 'M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z' }),\n });\n }\n\n return ED.createElement('span', {\n className: containerClasses,\n style: {\n ...(boxShadow ? { boxShadow } : {}),\n ...style,\n },\n onClick,\n role: onClick ? 'button' : undefined,\n tabIndex: onClick ? 0 : undefined,\n children: [contentElement, statusIndicator],\n });\n}\n\nAvatar.displayName = 'Avatar';\n\nfunction AvatarGroup(props) {\n const {\n children,\n maxCount,\n size = 'md',\n shape = 'circle',\n overlap = true,\n className = '',\n style = {},\n direction = 'horizontal',\n maxStyle,\n onMaxClick,\n } = props;\n\n const childArray = Array.isArray(children) ? children : [children];\n const displayChildren = maxCount ? childArray.slice(0, maxCount) : childArray;\n const remaining = maxCount ? childArray.length - maxCount : 0;\n\n const groupClasses = [\n 'ed-flex ed-items-center',\n direction === 'horizontal' ? 'ed-flex-row' : 'ed-flex-col',\n overlap ? (direction === 'horizontal' ? 'ed--space-x-2' : 'ed--space-y-2') : 'ed-gap-1',\n className,\n ].filter(Boolean).join(' ');\n\n const overflowAvatar = remaining > 0\n ? ED.createElement(Avatar, {\n size,\n shape,\n bgColor: 'ed-bg-gray-200',\n textColor: 'ed-text-gray-600',\n className: 'ed-ring-2 ed-ring-white',\n style: maxStyle,\n onClick: onMaxClick,\n name: `+${remaining}`,\n })\n : null;\n\n const styledChildren = displayChildren.map((child, idx) => {\n if (!child || !child.props) return child;\n const overlapStyle = overlap\n ? { zIndex: displayChildren.length - idx, position: 'relative' }\n : {};\n return ED.cloneElement\n ? ED.cloneElement(child, {\n key: idx,\n size: child.props.size || size,\n shape: child.props.shape || shape,\n style: { ...overlapStyle, ...child.props.style },\n bordered: child.props.bordered !== undefined ? child.props.bordered : true,\n })\n : child;\n });\n\n return ED.createElement('div', {\n className: groupClasses,\n style,\n children: [...styledChildren, overflowAvatar].filter(Boolean),\n });\n}\n\nAvatarGroup.displayName = 'AvatarGroup';\nAvatar.Group = AvatarGroup;\nAvatar.SIZES = AVATAR_SIZES;\nAvatar.SHAPES = SHAPE_CLASSES;\n\nmodule.exports = Avatar;\n","/**\n * Badge Component for ElementDrawing Framework\n * Supports variants, sizes, dot, count, overflow, standalone, positioned on parent\n */\nconst ED = require('../core/element');\n\nconst BADGE_VARIANTS = {\n default: 'ed-bg-gray-500 ed-text-white',\n primary: 'ed-bg-blue-500 ed-text-white',\n success: 'ed-bg-green-500 ed-text-white',\n warning: 'ed-bg-yellow-500 ed-text-white',\n danger: 'ed-bg-red-500 ed-text-white',\n info: 'ed-bg-cyan-500 ed-text-white',\n secondary: 'ed-bg-gray-200 ed-text-gray-800',\n outline: 'ed-bg-transparent ed-border-2 ed-border-current ed-text-gray-600',\n};\n\nconst BADGE_SIZES = {\n xs: 'ed-text-[10px] ed-min-w-[14px] ed-h-[14px] ed-px-1',\n sm: 'ed-text-xs ed-min-w-[18px] ed-h-[18px] ed-px-1.5',\n md: 'ed-text-xs ed-min-w-[20px] ed-h-[20px] ed-px-2',\n lg: 'ed-text-sm ed-min-w-[24px] ed-h-[24px] ed-px-2.5',\n xl: 'ed-text-base ed-min-w-[28px] ed-h-[28px] ed-px-3',\n};\n\nconst DOT_SIZES = {\n xs: 'ed-w-1.5 ed-h-1.5',\n sm: 'ed-w-2 ed-h-2',\n md: 'ed-w-2.5 ed-h-2.5',\n lg: 'ed-w-3 ed-h-3',\n xl: 'ed-w-3.5 ed-h-3.5',\n};\n\nconst POSITION_CLASSES = {\n 'top-right': 'ed-top-0 ed-right-0 ed--translate-y-1/2 ed-translate-x-1/2',\n 'top-left': 'ed-top-0 ed-left-0 ed--translate-y-1/2 ed--translate-x-1/2',\n 'bottom-right': 'ed-bottom-0 ed-right-0 ed-translate-y-1/2 ed-translate-x-1/2',\n 'bottom-left': 'ed-bottom-0 ed-left-0 ed-translate-y-1/2 ed--translate-x-1/2',\n};\n\nfunction Badge(props) {\n const {\n children,\n count,\n overflowCount = 99,\n dot = false,\n variant = 'danger',\n color,\n size = 'md',\n position = 'top-right',\n offset,\n className = '',\n style = {},\n showZero = false,\n hidden = false,\n standalone = false,\n maxNumber,\n processing = false,\n title,\n onClick,\n } = props;\n\n if (hidden) return children || null;\n\n const overflow = maxNumber || overflowCount;\n const displayCount = typeof count === 'number' && count > overflow ? `${overflow}+` : count;\n const shouldShow = dot || count > 0 || (count === 0 && showZero) || count === undefined;\n\n if (!shouldShow && !standalone) return children || null;\n\n const variantClass = color\n ? ''\n : BADGE_VARIANTS[variant] || BADGE_VARIANTS.danger;\n\n const sizeClass = dot\n ? DOT_SIZES[size] || DOT_SIZES.md\n : BADGE_SIZES[size] || BADGE_SIZES.md;\n\n const positionClass = children\n ? POSITION_CLASSES[position] || POSITION_CLASSES['top-right']\n : '';\n\n const badgeClasses = [\n 'ed-inline-flex ed-items-center ed-justify-center ed-rounded-full ed-font-medium ed-whitespace-nowrap',\n dot ? '' : 'ed-leading-none',\n variantClass,\n sizeClass,\n children ? 'ed-absolute' : '',\n positionClass,\n processing ? 'ed-animate-pulse' : '',\n onClick ? 'ed-cursor-pointer' : '',\n 'ed-badge',\n className,\n ].filter(Boolean).join(' ');\n\n const badgeStyle = {\n ...(color ? { backgroundColor: color, color: '#fff' } : {}),\n ...(offset ? { marginTop: offset[1], marginRight: offset[0] } : {}),\n ...style,\n };\n\n const badgeContent = dot\n ? null\n : displayCount !== undefined\n ? String(displayCount)\n : null;\n\n const badgeElement = shouldShow\n ? ED.createElement('span', {\n className: badgeClasses,\n style: badgeStyle,\n title: title || (typeof count === 'number' ? String(count) : undefined),\n onClick,\n children: badgeContent,\n })\n : null;\n\n if (standalone) {\n return badgeElement;\n }\n\n if (!children) {\n return badgeElement;\n }\n\n return ED.createElement('span', {\n className: 'ed-relative ed-inline-flex ed-align-top',\n children: [children, badgeElement],\n });\n}\n\nBadge.displayName = 'Badge';\nBadge.VARIANTS = BADGE_VARIANTS;\nBadge.SIZES = BADGE_SIZES;\n\nmodule.exports = Badge;\n","/**\n * Breadcrumb Component for ElementDrawing Framework\n * Supports separator customization, max items, dropdown overflow, icon items, active state\n */\nconst ED = require('../core/element');\n\nfunction BreadcrumbItem(props) {\n const {\n children,\n href,\n onClick,\n icon,\n active = false,\n className = '',\n style = {},\n separator,\n dropdownItems = [],\n onDropdownClick,\n } = props;\n\n const itemClasses = [\n 'ed-inline-flex ed-items-center ed-text-sm',\n active\n ? 'ed-text-gray-500 ed-font-medium ed-cursor-default'\n : 'ed-text-gray-700 hover:ed-text-blue-600 ed-cursor-pointer',\n 'ed-transition-colors ed-duration-200',\n className,\n ].filter(Boolean).join(' ');\n\n const iconElement = icon\n ? ED.createElement('span', {\n className: 'ed-mr-1.5 ed-flex ed-items-center ed-justify-center ed-w-4 ed-h-4',\n children: typeof icon === 'string' ? ED.createElement('i', { className: icon }) : icon,\n })\n : null;\n\n const dropdownElement = dropdownItems.length > 0\n ? ED.createElement('div', { className: 'ed-relative ed-group ed-inline-flex' }, [\n ED.createElement('span', { className: 'ed-flex ed-items-center ed-gap-1', key: 'trigger' }, [\n iconElement,\n ED.createElement('span', null, children),\n ED.createElement('svg', {\n key: 'arrow',\n className: 'ed-w-3 ed-h-3 ed-text-gray-400',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M19 9l-7 7-7-7' }),\n }),\n ]),\n ED.createElement('div', {\n key: 'dropdown',\n className: 'ed-absolute ed-left-0 ed-top-full ed-mt-1 ed-w-40 ed-bg-white ed-rounded-md ed-shadow-lg ed-border ed-border-gray-200 ed-opacity-0 ed-invisible group-hover:ed-opacity-100 group-hover:ed-visible ed-transition-all ed-duration-200 ed-z-50',\n children: dropdownItems.map((item, idx) =>\n ED.createElement('a', {\n key: idx,\n href: item.href || '#',\n className: 'ed-block ed-px-3 ed-py-2 ed-text-sm ed-text-gray-700 hover:ed-bg-gray-50 ed-transition-colors',\n onClick: (e) => { e.preventDefault(); onDropdownClick?.(item); },\n children: [\n item.icon ? ED.createElement('i', { className: `ed-mr-2 ${item.icon}`, key: 'icon' }) : null,\n item.label || item.title,\n ].filter(Boolean),\n })\n ),\n }),\n ])\n : null;\n\n if (active) {\n return ED.createElement('span', {\n className: itemClasses,\n style,\n 'aria-current': 'page',\n children: [iconElement, ED.createElement('span', null, children)],\n });\n }\n\n if (dropdownElement) {\n return ED.createElement('span', { className: itemClasses, style, children: dropdownElement });\n }\n\n if (href) {\n return ED.createElement('a', {\n href,\n className: itemClasses,\n style,\n onClick,\n children: [iconElement, ED.createElement('span', null, children)],\n });\n }\n\n return ED.createElement('span', {\n className: itemClasses,\n style,\n onClick,\n children: [iconElement, ED.createElement('span', null, children)],\n });\n}\n\nBreadcrumbItem.displayName = 'BreadcrumbItem';\n\nfunction Breadcrumb(props) {\n const {\n children,\n items = [],\n separator = '/',\n separatorIcon,\n maxItems,\n className = '',\n style = {},\n renderItem,\n } = props;\n\n const separatorElement = separatorIcon\n ? ED.createElement('span', {\n className: 'ed-mx-2 ed-text-gray-400 ed-flex ed-items-center',\n children: typeof separatorIcon === 'string'\n ? ED.createElement('i', { className: separatorIcon })\n : separatorIcon,\n })\n : ED.createElement('span', {\n className: 'ed-mx-2 ed-text-gray-400 ed-select-none',\n }, separator);\n\n const breadcrumbItems = items.length > 0\n ? items.map((item, idx) => {\n const isLast = idx === items.length - 1;\n return {\n ...item,\n active: isLast,\n key: item.key || idx,\n };\n })\n : (Array.isArray(children) ? children : [children]).map((child, idx) => child);\n\n const allItems = breadcrumbItems;\n\n let displayItems = allItems;\n let overflowItems = [];\n\n if (maxItems && allItems.length > maxItems) {\n const start = allItems.slice(0, 1);\n const end = allItems.slice(-(maxItems - 1));\n overflowItems = allItems.slice(1, -(maxItems - 1));\n displayItems = [\n start[0],\n { key: 'overflow', label: '...', dropdownItems: overflowItems, isOverflow: true },\n ...end,\n ];\n }\n\n const renderBreadcrumbItem = (item, idx) => {\n if (item && item.isOverflow) {\n return ED.createElement(BreadcrumbItem, {\n key: 'overflow',\n dropdownItems: overflowItems,\n children: '...',\n });\n }\n\n if (items.length > 0) {\n const renderedItem = renderItem\n ? renderItem(item, idx)\n : ED.createElement(BreadcrumbItem, {\n key: item.key || idx,\n href: item.href,\n onClick: item.onClick,\n icon: item.icon,\n active: item.active,\n children: item.label || item.title,\n });\n return renderedItem;\n }\n\n return item;\n };\n\n const breadcrumbElements = displayItems.map((item, idx) => {\n const rendered = renderBreadcrumbItem(item, idx);\n const isLast = idx === displayItems.length - 1;\n return ED.createElement(ED.Fragment, { key: idx },\n rendered,\n !isLast ? separatorElement : null,\n );\n });\n\n return ED.createElement('nav', {\n 'aria-label': 'Breadcrumb',\n className: `ed-flex ed-items-center ed-flex-wrap ed-py-2 ${className}`,\n style,\n children: ED.createElement('ol', {\n className: 'ed-flex ed-items-center ed-gap-0 ed-list-none ed-m-0 ed-p-0',\n children: breadcrumbElements,\n }),\n });\n}\n\nBreadcrumb.displayName = 'Breadcrumb';\nBreadcrumb.Item = BreadcrumbItem;\n\nmodule.exports = Breadcrumb;\n","/**\n * Button Component for ElementDrawing Framework\n * Supports variants, sizes, loading, icons, disabled, ripple, full-width\n */\nconst ED = require('../core/element');\n\nconst BUTTON_VARIANTS = {\n primary: 'ed-bg-blue-600 ed-text-white hover:ed-bg-blue-700 focus:ed-ring-blue-500 active:ed-bg-blue-800',\n secondary: 'ed-bg-gray-200 ed-text-gray-800 hover:ed-bg-gray-300 focus:ed-ring-gray-400 active:ed-bg-gray-400',\n success: 'ed-bg-green-600 ed-text-white hover:ed-bg-green-700 focus:ed-ring-green-500 active:ed-bg-green-800',\n warning: 'ed-bg-yellow-500 ed-text-white hover:ed-bg-yellow-600 focus:ed-ring-yellow-400 active:ed-bg-yellow-700',\n danger: 'ed-bg-red-600 ed-text-white hover:ed-bg-red-700 focus:ed-ring-red-500 active:ed-bg-red-800',\n ghost: 'ed-bg-transparent ed-text-gray-700 hover:ed-bg-gray-100 focus:ed-ring-gray-300 active:ed-bg-gray-200',\n link: 'ed-bg-transparent ed-text-blue-600 hover:ed-text-blue-800 hover:ed-underline focus:ed-ring-blue-300 ed-p-0 ed-shadow-none',\n};\n\nconst BUTTON_SIZES = {\n xs: 'ed-text-xs ed-px-2 ed-py-1 ed-rounded',\n sm: 'ed-text-sm ed-px-3 ed-py-1.5 ed-rounded-md',\n md: 'ed-text-sm ed-px-4 ed-py-2 ed-rounded-md',\n lg: 'ed-text-base ed-px-5 ed-py-2.5 ed-rounded-lg',\n xl: 'ed-text-lg ed-px-6 ed-py-3 ed-rounded-lg',\n};\n\nconst ICON_SIZES = {\n xs: 'ed-w-3 ed-h-3',\n sm: 'ed-w-4 ed-h-4',\n md: 'ed-w-4 ed-h-4',\n lg: 'ed-w-5 ed-h-5',\n xl: 'ed-w-6 ed-h-6',\n};\n\nfunction Button(props) {\n const {\n children,\n variant = 'primary',\n size = 'md',\n loading = false,\n loadingText = '',\n icon,\n iconRight,\n disabled = false,\n ripple = true,\n fullWidth = false,\n type = 'button',\n htmlType = 'button',\n className = '',\n style = {},\n onClick,\n onMouseEnter,\n onMouseLeave,\n onFocus,\n onBlur,\n id,\n name,\n value,\n autoFocus = false,\n tabIndex,\n ariaLabel,\n ariaDisabled,\n role,\n round = false,\n block = false,\n danger: isDanger = false,\n href,\n target,\n shape,\n } = props;\n\n const isDisabled = disabled || loading;\n const variantClass = BUTTON_VARIANTS[variant] || BUTTON_VARIANTS.primary;\n const sizeClass = BUTTON_SIZES[size] || BUTTON_SIZES.md;\n const iconSizeClass = ICON_SIZES[size] || ICON_SIZES.md;\n\n const baseClasses = [\n 'ed-inline-flex ed-items-center ed-justify-center ed-font-medium',\n 'ed-transition-all ed-duration-200 ed-ease-in-out',\n 'ed-select-none ed-whitespace-nowrap ed-relative ed-overflow-hidden',\n 'focus:ed-outline-none focus:ed-ring-2 focus:ed-ring-offset-2',\n variantClass,\n sizeClass,\n round ? 'ed-rounded-full' : '',\n fullWidth || block ? 'ed-w-full' : '',\n isDisabled ? 'ed-opacity-60 ed-cursor-not-allowed ed-pointer-events-none' : 'ed-cursor-pointer',\n isDanger && variant === 'primary' ? 'ed-bg-red-600 hover:ed-bg-red-700 focus:ed-ring-red-500' : '',\n className,\n ].filter(Boolean).join(' ');\n\n const spinnerElement = loading\n ? ED.createElement('svg', {\n className: `ed-animate-spin ${iconSizeClass} ${children || loadingText ? 'ed--ml-1 ed-mr-2' : ''}`,\n xmlns: 'http://www.w3.org/2000/svg',\n fill: 'none',\n viewBox: '0 0 24 24',\n children: [\n ED.createElement('circle', {\n key: 'spin-bg',\n className: 'ed-opacity-25',\n cx: '12', cy: '12', r: '10',\n stroke: 'currentColor', strokeWidth: '4',\n }),\n ED.createElement('path', {\n key: 'spin-fg',\n className: 'ed-opacity-75',\n fill: 'currentColor',\n d: 'M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z',\n }),\n ],\n })\n : null;\n\n const iconElement = icon && !loading\n ? ED.createElement('span', {\n className: `ed-inline-flex ed-items-center ${iconSizeClass} ${children ? 'ed-mr-2' : ''}`,\n children: typeof icon === 'string'\n ? ED.createElement('i', { className: icon })\n : icon,\n })\n : null;\n\n const iconRightElement = iconRight && !loading\n ? ED.createElement('span', {\n className: `ed-inline-flex ed-items-center ${iconSizeClass} ${children ? 'ed-ml-2' : ''}`,\n children: typeof iconRight === 'string'\n ? ED.createElement('i', { className: iconRight })\n : iconRight,\n })\n : null;\n\n const rippleContainer = ripple && !isDisabled\n ? ED.createElement('span', {\n className: 'ed-absolute ed-inset-0 ed-overflow-hidden ed-rounded-inherit ed-pointer-events-none',\n 'data-ripple': 'true',\n })\n : null;\n\n const contentElement = loading && loadingText\n ? ED.createElement('span', { className: 'ed-truncate' }, loadingText)\n : children\n ? ED.createElement('span', { className: 'ed-truncate' }, children)\n : null;\n\n const buttonChildren = [\n spinnerElement,\n iconElement,\n contentElement,\n iconRightElement,\n rippleContainer,\n ].filter(Boolean);\n\n const buttonProps = {\n id,\n name,\n value,\n type: htmlType || type,\n className: baseClasses,\n style,\n disabled: isDisabled,\n autoFocus,\n tabIndex: tabIndex ?? (isDisabled ? -1 : undefined),\n 'aria-label': ariaLabel,\n 'aria-disabled': ariaDisabled ?? isDisabled,\n role: role || 'button',\n onClick: isDisabled ? undefined : onClick,\n onMouseEnter,\n onMouseLeave,\n onFocus,\n onBlur,\n };\n\n if (href && !isDisabled) {\n return ED.createElement('a', {\n ...buttonProps,\n href,\n target,\n rel: target === '_blank' ? 'noopener noreferrer' : undefined,\n children: buttonChildren,\n });\n }\n\n return ED.createElement('button', { ...buttonProps, children: buttonChildren });\n}\n\nButton.displayName = 'Button';\nButton.VARIANTS = BUTTON_VARIANTS;\nButton.SIZES = BUTTON_SIZES;\n\nmodule.exports = Button;\n","/**\n * Card Component for ElementDrawing Framework\n * Supports header, body, footer, shadows, hoverable, clickable, bordered, image, horizontal\n */\nconst ED = require('../core/element');\n\nconst CARD_SHADOWS = {\n none: '',\n sm: 'ed-shadow-sm',\n md: 'ed-shadow-md',\n lg: 'ed-shadow-lg',\n xl: 'ed-shadow-xl',\n};\n\nfunction CardHeader(props) {\n const {\n children,\n className = '',\n title,\n subtitle,\n extra,\n bordered = true,\n style = {},\n } = props;\n\n return ED.createElement('div', {\n className: [\n 'ed-px-6 ed-py-4',\n bordered ? 'ed-border-b ed-border-gray-200' : '',\n 'ed-card-header',\n className,\n ].filter(Boolean).join(' '),\n style,\n children: [\n title\n ? ED.createElement('div', { className: 'ed-flex ed-items-center ed-justify-between', key: 'header-content' },\n ED.createElement('div', { className: 'ed-flex ed-flex-col' },\n ED.createElement('h3', { className: 'ed-text-lg ed-font-semibold ed-text-gray-900' }, title),\n subtitle\n ? ED.createElement('p', { className: 'ed-text-sm ed-text-gray-500 ed-mt-1' }, subtitle)\n : null\n ),\n extra\n ? ED.createElement('div', { className: 'ed-ml-4 ed-flex ed-items-center' }, extra)\n : null\n )\n : children,\n ].filter(Boolean),\n });\n}\n\nCardHeader.displayName = 'CardHeader';\n\nfunction CardBody(props) {\n const { children, className = '', style = {}, padding = true } = props;\n\n return ED.createElement('div', {\n className: [\n padding ? 'ed-px-6 ed-py-4' : '',\n 'ed-flex-1 ed-card-body',\n className,\n ].filter(Boolean).join(' '),\n style,\n children,\n });\n}\n\nCardBody.displayName = 'CardBody';\n\nfunction CardFooter(props) {\n const {\n children,\n className = '',\n bordered = true,\n style = {},\n align = 'right',\n } = props;\n\n const alignClass = {\n left: 'ed-justify-start',\n center: 'ed-justify-center',\n right: 'ed-justify-end',\n between: 'ed-justify-between',\n }[align] || 'ed-justify-end';\n\n return ED.createElement('div', {\n className: [\n 'ed-px-6 ed-py-3 ed-flex ed-items-center',\n bordered ? 'ed-border-t ed-border-gray-200' : '',\n alignClass,\n 'ed-card-footer',\n className,\n ].filter(Boolean).join(' '),\n style,\n children,\n });\n}\n\nCardFooter.displayName = 'CardFooter';\n\nfunction Card(props) {\n const {\n children,\n className = '',\n style = {},\n shadow = 'sm',\n hoverable = false,\n clickable = false,\n bordered = true,\n cover,\n horizontal = false,\n loading = false,\n size = 'default',\n onClick,\n onMouseEnter,\n onMouseLeave,\n id,\n role,\n tabIndex,\n } = props;\n\n const sizeClasses = {\n small: 'ed-text-sm',\n default: '',\n large: 'ed-text-base',\n };\n\n const shadowClass = CARD_SHADOWS[shadow] || CARD_SHADOWS.sm;\n\n const baseClasses = [\n 'ed-bg-white ed-rounded-lg ed-overflow-hidden ed-transition-all ed-duration-200',\n shadowClass,\n bordered ? 'ed-border ed-border-gray-200' : '',\n hoverable ? 'hover:ed-shadow-lg hover:ed--translate-y-0.5 ed-cursor-default' : '',\n clickable ? 'ed-cursor-pointer hover:ed-shadow-md hover:ed-border-blue-300 active:ed-scale-[0.99]' : '',\n horizontal ? 'ed-flex ed-flex-row' : 'ed-flex ed-flex-col',\n sizeClasses[size] || '',\n 'ed-card',\n className,\n ].filter(Boolean).join(' ');\n\n const coverElement = cover\n ? ED.createElement('div', {\n className: [\n 'ed-overflow-hidden',\n horizontal ? 'ed-w-48 ed-flex-shrink-0' : 'ed-w-full',\n 'ed-card-cover',\n ].join(' '),\n children: typeof cover === 'string'\n ? ED.createElement('img', {\n src: cover,\n className: 'ed-w-full ed-h-full ed-object-cover',\n alt: 'card cover',\n })\n : cover,\n })\n : null;\n\n const loadingOverlay = loading\n ? ED.createElement('div', {\n className: 'ed-absolute ed-inset-0 ed-bg-white ed-bg-opacity-70 ed-flex ed-items-center ed-justify-center ed-z-10',\n children: ED.createElement('div', {\n className: 'ed-w-8 ed-h-8 ed-border-4 ed-border-blue-500 ed-border-t-transparent ed-rounded-full ed-animate-spin',\n }),\n })\n : null;\n\n const cardProps = {\n id,\n className: baseClasses,\n style: { position: 'relative', ...style },\n role: clickable ? 'button' : (role || 'region'),\n tabIndex: clickable ? (tabIndex ?? 0) : tabIndex,\n onClick: clickable ? onClick : undefined,\n onMouseEnter,\n onMouseLeave,\n onKeyDown: clickable\n ? (e) => { if (e.key === 'Enter' || e.key === ' ') onClick?.(e); }\n : undefined,\n children: [coverElement, loadingOverlay, children].filter(Boolean),\n };\n\n return ED.createElement('div', cardProps);\n}\n\nCard.displayName = 'Card';\nCard.Header = CardHeader;\nCard.Body = CardBody;\nCard.Footer = CardFooter;\nCard.SHADOWS = CARD_SHADOWS;\n\nmodule.exports = Card;\n","/**\n * Carousel Component for ElementDrawing Framework\n * Supports autoplay, dots, arrows, lazy loading, fade/slide transition, thumbnails, keyboard\n */\nconst ED = require('../core/element');\n\nfunction CarouselSlide(props) {\n const {\n children,\n src,\n alt = '',\n title,\n description,\n className = '',\n style = {},\n active = false,\n } = props;\n\n return ED.createElement('div', {\n className: [\n 'ed-absolute ed-inset-0 ed-w-full ed-h-full ed-flex ed-items-center ed-justify-center',\n 'ed-transition-opacity ed-duration-500',\n active ? 'ed-opacity-100 ed-z-10' : 'ed-opacity-0 ed-z-0',\n className,\n ].filter(Boolean).join(' '),\n style,\n role: 'group',\n 'aria-roledescription': 'slide',\n children: src\n ? ED.createElement('div', { className: 'ed-relative ed-w-full ed-h-full' }, [\n ED.createElement('img', {\n key: 'img',\n src,\n alt: alt || title || 'Carousel slide',\n className: 'ed-w-full ed-h-full ed-object-cover',\n loading: 'lazy',\n }),\n title || description\n ? ED.createElement('div', {\n key: 'caption',\n className: 'ed-absolute ed-bottom-0 ed-left-0 ed-right-0 ed-bg-gradient-to-t ed-from-black/60 ed-to-transparent ed-p-6',\n }, [\n title\n ? ED.createElement('h3', {\n key: 'title',\n className: 'ed-text-xl ed-font-bold ed-text-white ed-mb-1',\n }, title)\n : null,\n description\n ? ED.createElement('p', {\n key: 'desc',\n className: 'ed-text-sm ed-text-gray-200',\n }, description)\n : null,\n ].filter(Boolean))\n : null,\n ])\n : children,\n });\n}\n\nCarouselSlide.displayName = 'CarouselSlide';\n\nfunction Carousel(props) {\n const {\n children,\n items = [],\n autoplay = false,\n autoplayInterval = 3000,\n dots = true,\n arrows = true,\n lazyLoad = false,\n effect = 'slide',\n thumbnails = false,\n keyboard = true,\n loop = true,\n currentIndex = 0,\n onChange,\n className = '',\n style = {},\n height = 400,\n width,\n pauseOnHover = true,\n showIndicator = true,\n indicatorPosition = 'bottom',\n prevIcon,\n nextIcon,\n dotIcon,\n onSlideClick,\n draggable = false,\n fade = false,\n speed = 500,\n } = props;\n\n const currentEffect = fade ? 'fade' : effect;\n\n const slides = items.length > 0\n ? items.map((item, idx) => ({\n key: item.key || idx,\n src: item.src,\n alt: item.alt,\n title: item.title,\n description: item.description,\n content: item.children || item.content,\n thumbnail: item.thumbnail || item.src,\n }))\n : (Array.isArray(children) ? children : [children]).map((child, idx) => ({\n key: idx,\n content: child,\n }));\n\n const handlePrev = () => {\n const newIndex = currentIndex > 0 ? currentIndex - 1 : (loop ? slides.length - 1 : 0);\n onChange?.(newIndex);\n };\n\n const handleNext = () => {\n const newIndex = currentIndex < slides.length - 1 ? currentIndex + 1 : (loop ? 0 : slides.length - 1);\n onChange?.(newIndex);\n };\n\n const handleKeyDown = (e) => {\n if (!keyboard) return;\n if (e.key === 'ArrowLeft') handlePrev();\n if (e.key === 'ArrowRight') handleNext();\n };\n\n const defaultPrevIcon = ED.createElement('svg', {\n className: 'ed-w-6 ed-h-6',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M15 19l-7-7 7-7' }),\n });\n\n const defaultNextIcon = ED.createElement('svg', {\n className: 'ed-w-6 ed-h-6',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M9 5l7 7-7 7' }),\n });\n\n const arrowPrev = arrows\n ? ED.createElement('button', {\n key: 'prev',\n className: [\n 'ed-absolute ed-left-3 ed-top-1/2 ed--translate-y-1/2 ed-z-20',\n 'ed-w-10 ed-h-10 ed-rounded-full ed-bg-white/80 ed-shadow-md',\n 'ed-flex ed-items-center ed-justify-center',\n 'ed-text-gray-700 hover:ed-bg-white hover:ed-text-gray-900',\n 'ed-transition-all ed-duration-200',\n 'focus:ed-outline-none focus:ed-ring-2 focus:ed-ring-blue-500',\n currentIndex === 0 && !loop ? 'ed-opacity-50 ed-cursor-not-allowed' : '',\n ].filter(Boolean).join(' '),\n onClick: handlePrev,\n 'aria-label': 'Previous slide',\n children: prevIcon || defaultPrevIcon,\n })\n : null;\n\n const arrowNext = arrows\n ? ED.createElement('button', {\n key: 'next',\n className: [\n 'ed-absolute ed-right-3 ed-top-1/2 ed--translate-y-1/2 ed-z-20',\n 'ed-w-10 ed-h-10 ed-rounded-full ed-bg-white/80 ed-shadow-md',\n 'ed-flex ed-items-center ed-justify-center',\n 'ed-text-gray-700 hover:ed-bg-white hover:ed-text-gray-900',\n 'ed-transition-all ed-duration-200',\n 'focus:ed-outline-none focus:ed-ring-2 focus:ed-ring-blue-500',\n currentIndex === slides.length - 1 && !loop ? 'ed-opacity-50 ed-cursor-not-allowed' : '',\n ].filter(Boolean).join(' '),\n onClick: handleNext,\n 'aria-label': 'Next slide',\n children: nextIcon || defaultNextIcon,\n })\n : null;\n\n const dotsElement = dots || showIndicator\n ? ED.createElement('div', {\n key: 'dots',\n className: [\n 'ed-absolute ed-left-1/2 ed--translate-x-1/2 ed-z-20 ed-flex ed-gap-2',\n indicatorPosition === 'top' ? 'ed-top-3' : 'ed-bottom-3',\n ].join(' '),\n children: slides.map((_, idx) =>\n ED.createElement('button', {\n key: idx,\n className: [\n 'ed-w-2.5 ed-h-2.5 ed-rounded-full ed-transition-all ed-duration-300',\n idx === currentIndex\n ? 'ed-bg-white ed-w-6 ed-shadow-md'\n : 'ed-bg-white/50 hover:ed-bg-white/70',\n ].join(' '),\n onClick: () => onChange?.(idx),\n 'aria-label': `Go to slide ${idx + 1}`,\n 'aria-current': idx === currentIndex,\n })\n ),\n })\n : null;\n\n const thumbnailElement = thumbnails\n ? ED.createElement('div', {\n key: 'thumbnails',\n className: 'ed-flex ed-gap-2 ed-mt-3 ed-overflow-x-auto ed-pb-2',\n children: slides.map((slide, idx) =>\n ED.createElement('button', {\n key: idx,\n className: [\n 'ed-flex-shrink-0 ed-w-16 ed-h-12 ed-rounded-md ed-overflow-hidden ed-border-2 ed-transition-all',\n idx === currentIndex\n ? 'ed-border-blue-500 ed-ring-2 ed-ring-blue-200'\n : 'ed-border-transparent ed-opacity-60 hover:ed-opacity-100',\n ].join(' '),\n onClick: () => onChange?.(idx),\n 'aria-label': `Go to slide ${idx + 1}`,\n children: slide.thumbnail\n ? ED.createElement('img', {\n src: slide.thumbnail,\n className: 'ed-w-full ed-h-full ed-object-cover',\n alt: `Thumbnail ${idx + 1}`,\n })\n : ED.createElement('div', {\n className: 'ed-w-full ed-h-full ed-bg-gray-200 ed-flex ed-items-center ed-justify-center ed-text-xs ed-text-gray-500',\n }, idx + 1),\n })\n ),\n })\n : null;\n\n const slidesContainer = ED.createElement('div', {\n className: 'ed-relative ed-w-full ed-overflow-hidden ed-rounded-lg',\n style: { height, width },\n onKeyDown: handleKeyDown,\n tabIndex: keyboard ? 0 : undefined,\n role: 'region',\n 'aria-roledescription': 'carousel',\n children: [\n ED.createElement('div', {\n key: 'track',\n className: 'ed-relative ed-w-full ed-h-full',\n style: currentEffect === 'slide'\n ? { transform: `translateX(-${currentIndex * 100}%)`, transition: `transform ${speed}ms ease` }\n : {},\n children: slides.map((slide, idx) =>\n ED.createElement(CarouselSlide, {\n key: slide.key,\n src: slide.src,\n alt: slide.alt,\n title: slide.title,\n description: slide.description,\n active: idx === currentIndex,\n className: currentEffect === 'slide' ? 'ed-relative' : '',\n children: slide.content,\n })\n ),\n }),\n arrowPrev,\n arrowNext,\n dotsElement,\n autoplay && pauseOnHover\n ? ED.createElement('div', {\n key: 'pause-zone',\n className: 'ed-absolute ed-inset-0 ed-z-10',\n })\n : null,\n ],\n });\n\n return ED.createElement('div', {\n className: `ed-carousel ${className}`,\n style,\n children: [slidesContainer, thumbnailElement].filter(Boolean),\n });\n}\n\nCarousel.displayName = 'Carousel';\nCarousel.Slide = CarouselSlide;\n\nmodule.exports = Carousel;\n","/**\n * Checkbox Component for ElementDrawing Framework\n * Supports sizes, indeterminate, disabled, group, label, custom icon, color variants\n */\nconst ED = require('../core/element');\n\nconst CHECKBOX_SIZES = {\n xs: { box: 'ed-w-3.5 ed-h-3.5', label: 'ed-text-xs', icon: 'ed-w-2.5 ed-h-2.5' },\n sm: { box: 'ed-w-4 ed-h-4', label: 'ed-text-sm', icon: 'ed-w-3 ed-h-3' },\n md: { box: 'ed-w-4.5 ed-h-4.5', label: 'ed-text-sm', icon: 'ed-w-3 ed-h-3' },\n lg: { box: 'ed-w-5 ed-h-5', label: 'ed-text-base', icon: 'ed-w-3.5 ed-h-3.5' },\n xl: { box: 'ed-w-6 ed-h-6', label: 'ed-text-lg', icon: 'ed-w-4 ed-h-4' },\n};\n\nconst CHECKBOX_COLORS = {\n blue: {\n checked: 'ed-bg-blue-600 ed-border-blue-600 focus:ed-ring-blue-500',\n hover: 'hover:ed-border-blue-400',\n },\n green: {\n checked: 'ed-bg-green-600 ed-border-green-600 focus:ed-ring-green-500',\n hover: 'hover:ed-border-green-400',\n },\n red: {\n checked: 'ed-bg-red-600 ed-border-red-600 focus:ed-ring-red-500',\n hover: 'hover:ed-border-red-400',\n },\n yellow: {\n checked: 'ed-bg-yellow-500 ed-border-yellow-500 focus:ed-ring-yellow-400',\n hover: 'hover:ed-border-yellow-400',\n },\n purple: {\n checked: 'ed-bg-purple-600 ed-border-purple-600 focus:ed-ring-purple-500',\n hover: 'hover:ed-border-purple-400',\n },\n gray: {\n checked: 'ed-bg-gray-600 ed-border-gray-600 focus:ed-ring-gray-500',\n hover: 'hover:ed-border-gray-400',\n },\n};\n\nfunction Checkbox(props) {\n const {\n checked,\n defaultChecked = false,\n onChange,\n disabled = false,\n indeterminate = false,\n label,\n children,\n size = 'md',\n color = 'blue',\n className = '',\n style = {},\n id,\n name,\n value,\n icon,\n classNameLabel = '',\n onFocus,\n onBlur,\n autoFocus = false,\n tabIndex,\n required = false,\n error = false,\n wrapperClassName = '',\n } = props;\n\n const sizeConfig = CHECKBOX_SIZES[size] || CHECKBOX_SIZES.md;\n const colorConfig = CHECKBOX_COLORS[color] || CHECKBOX_COLORS.blue;\n\n const isChecked = checked !== undefined ? checked : defaultChecked;\n\n const boxClasses = [\n 'ed-relative ed-inline-flex ed-items-center ed-justify-center ed-border-2 ed-rounded ed-transition-all ed-duration-200',\n sizeConfig.box,\n isChecked || indeterminate ? colorConfig.checked : `ed-border-gray-300 ed-bg-white ${colorConfig.hover}`,\n disabled ? 'ed-opacity-50 ed-cursor-not-allowed' : 'ed-cursor-pointer',\n error && !isChecked ? 'ed-border-red-500' : '',\n 'focus:ed-ring-2 focus:ed-ring-offset-1',\n ].filter(Boolean).join(' ');\n\n const checkIcon = indeterminate\n ? ED.createElement('svg', {\n className: `${sizeConfig.icon} ed-text-white`,\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 3, d: 'M5 12h14' }),\n })\n : isChecked\n ? icon\n ? (typeof icon === 'string' ? ED.createElement('i', { className: `${sizeConfig.icon} ed-text-white` }) : icon)\n : ED.createElement('svg', {\n className: `${sizeConfig.icon} ed-text-white`,\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 3, d: 'M5 13l4 4L19 7' }),\n })\n : null;\n\n const labelContent = label || children;\n\n const labelClasses = [\n sizeConfig.label,\n disabled ? 'ed-text-gray-400 ed-cursor-not-allowed' : 'ed-text-gray-700 ed-cursor-pointer',\n 'ed-select-none ed-transition-colors',\n classNameLabel,\n ].filter(Boolean).join(' ');\n\n return ED.createElement('label', {\n className: [\n 'ed-inline-flex ed-items-center ed-gap-2',\n disabled ? 'ed-cursor-not-allowed' : 'ed-cursor-pointer',\n wrapperClassName,\n ].filter(Boolean).join(' '),\n style,\n }, [\n ED.createElement('input', {\n key: 'input',\n type: 'checkbox',\n checked: isChecked,\n defaultChecked,\n onChange: disabled ? undefined : onChange,\n disabled,\n id,\n name,\n value,\n className: 'ed-sr-only',\n onFocus,\n onBlur,\n autoFocus,\n tabIndex,\n required,\n ref: indeterminate ? (el) => { if (el) el.indeterminate = indeterminate; } : undefined,\n 'aria-checked': indeterminate ? 'mixed' : isChecked,\n 'aria-invalid': error,\n }),\n ED.createElement('span', {\n key: 'box',\n className: boxClasses,\n 'aria-hidden': 'true',\n children: checkIcon,\n }),\n labelContent\n ? ED.createElement('span', { key: 'label', className: labelClasses }, labelContent)\n : null,\n ]);\n}\n\nCheckbox.displayName = 'Checkbox';\n\nfunction CheckboxGroup(props) {\n const {\n children,\n options = [],\n value = [],\n defaultValue = [],\n onChange,\n disabled = false,\n direction = 'horizontal',\n size = 'md',\n color = 'blue',\n className = '',\n style = {},\n name,\n } = props;\n\n const currentValue = value.length > 0 ? value : defaultValue;\n\n const handleChange = (optionValue, checked) => {\n const newValue = checked\n ? [...currentValue, optionValue]\n : currentValue.filter(v => v !== optionValue);\n onChange?.(newValue);\n };\n\n const directionClasses = {\n horizontal: 'ed-flex ed-flex-wrap ed-gap-4',\n vertical: 'ed-flex ed-flex-col ed-gap-2',\n };\n\n const groupClasses = [\n directionClasses[direction] || directionClasses.horizontal,\n className,\n ].filter(Boolean).join(' ');\n\n const optionElements = options.length > 0\n ? options.map((option, idx) => {\n const opt = typeof option === 'string' ? { label: option, value: option } : option;\n return ED.createElement(Checkbox, {\n key: opt.value || idx,\n checked: currentValue.includes(opt.value),\n onChange: (e) => handleChange(opt.value, e.target?.checked ?? e),\n disabled: disabled || opt.disabled,\n label: opt.label,\n size,\n color,\n value: opt.value,\n name,\n });\n })\n : children;\n\n return ED.createElement('div', {\n className: groupClasses,\n style,\n role: 'group',\n children: optionElements,\n });\n}\n\nCheckboxGroup.displayName = 'CheckboxGroup';\nCheckbox.Group = CheckboxGroup;\nCheckbox.SIZES = CHECKBOX_SIZES;\nCheckbox.COLORS = CHECKBOX_COLORS;\n\nmodule.exports = Checkbox;\n","/**\n * Dialog Component for ElementDrawing Framework\n * Supports confirmation, alert, prompt dialogs, custom content, keyboard navigation, focus trap\n */\nconst ED = require('../core/element');\n\nconst DIALOG_TYPES = {\n confirm: {\n icon: ED.createElement('svg', {\n className: 'ed-w-6 ed-h-6 ed-text-blue-600',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z' }),\n }),\n iconBg: 'ed-bg-blue-100',\n },\n alert: {\n icon: ED.createElement('svg', {\n className: 'ed-w-6 ed-h-6 ed-text-red-600',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z' }),\n }),\n iconBg: 'ed-bg-red-100',\n },\n prompt: {\n icon: ED.createElement('svg', {\n className: 'ed-w-6 ed-h-6 ed-text-green-600',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z' }),\n }),\n iconBg: 'ed-bg-green-100',\n },\n info: {\n icon: ED.createElement('svg', {\n className: 'ed-w-6 ed-h-6 ed-text-blue-600',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z' }),\n }),\n iconBg: 'ed-bg-blue-100',\n },\n warning: {\n icon: ED.createElement('svg', {\n className: 'ed-w-6 ed-h-6 ed-text-yellow-600',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M12 9v2m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z' }),\n }),\n iconBg: 'ed-bg-yellow-100',\n },\n};\n\nfunction Dialog(props) {\n const {\n visible = false,\n type = 'confirm',\n title,\n content,\n children,\n icon,\n okText = 'OK',\n cancelText = 'Cancel',\n onOk,\n onCancel,\n onClose,\n confirmLoading = false,\n showCancel = true,\n closable = true,\n closeOnBackdrop = true,\n closeOnEscape = true,\n backdrop = true,\n className = '',\n style = {},\n width = 420,\n footer,\n header,\n inputProps,\n inputValue,\n onInputChange,\n okButtonProps,\n cancelButtonProps,\n danger = false,\n autoFocus = true,\n focusTrap = true,\n zIndex = 1000,\n afterClose,\n keyboard = true,\n maskClosable = true,\n centered = true,\n } = props;\n\n if (!visible) return null;\n\n const dialogType = DIALOG_TYPES[type] || DIALOG_TYPES.confirm;\n\n const handleBackdropClick = (e) => {\n if ((closeOnBackdrop || maskClosable) && e.target === e.currentTarget) {\n onClose?.();\n onCancel?.();\n }\n };\n\n const handleKeyDown = (e) => {\n if (!keyboard) return;\n if (closeOnEscape && e.key === 'Escape') {\n onClose?.();\n onCancel?.();\n }\n if (focusTrap) {\n if (e.key === 'Tab') {\n const dialogEl = e.currentTarget;\n const focusable = dialogEl.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])'\n );\n if (focusable.length > 0) {\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n if (e.shiftKey && document.activeElement === first) {\n e.preventDefault();\n last.focus();\n } else if (!e.shiftKey && document.activeElement === last) {\n e.preventDefault();\n first.focus();\n }\n }\n }\n }\n };\n\n const iconElement = icon !== undefined ? icon\n : ED.createElement('div', {\n className: `ed-w-12 ed-h-12 ed-rounded-full ed-flex ed-items-center ed-justify-center ed-mx-auto ed-mb-4 ${dialogType.iconBg}`,\n children: dialogType.icon,\n });\n\n const titleElement = title\n ? ED.createElement('h3', {\n className: 'ed-text-lg ed-font-semibold ed-text-gray-900 ed-text-center ed-mb-2',\n }, title)\n : null;\n\n const contentElement = content || children\n ? ED.createElement('div', {\n className: 'ed-text-sm ed-text-gray-500 ed-text-center ed-mb-6',\n }, content || children)\n : null;\n\n const promptInput = type === 'prompt'\n ? ED.createElement('div', { className: 'ed-mb-6' },\n ED.createElement('input', {\n className: 'ed-w-full ed-px-3 ed-py-2 ed-border ed-border-gray-300 ed-rounded-md ed-text-sm focus:ed-outline-none focus:ed-ring-2 focus:ed-ring-blue-500 focus:ed-border-transparent',\n value: inputValue,\n onChange: onInputChange,\n autoFocus,\n ...inputProps,\n })\n )\n : null;\n\n const cancelButton = showCancel\n ? ED.createElement('button', {\n key: 'cancel',\n className: 'ed-px-4 ed-py-2 ed-text-sm ed-font-medium ed-text-gray-700 ed-bg-white ed-border ed-border-gray-300 ed-rounded-md hover:ed-bg-gray-50 focus:ed-outline-none focus:ed-ring-2 focus:ed-ring-offset-2 focus:ed-ring-gray-300 ed-transition-colors',\n onClick: onCancel || onClose,\n ...cancelButtonProps,\n }, cancelText)\n : null;\n\n const okButtonClass = danger\n ? 'ed-bg-red-600 hover:ed-bg-red-700 focus:ed-ring-red-500'\n : 'ed-bg-blue-600 hover:ed-bg-blue-700 focus:ed-ring-blue-500';\n\n const okButton = ED.createElement('button', {\n key: 'ok',\n className: [\n 'ed-px-4 ed-py-2 ed-text-sm ed-font-medium ed-text-white ed-rounded-md focus:ed-outline-none focus:ed-ring-2 focus:ed-ring-offset-2 ed-transition-colors',\n okButtonClass,\n confirmLoading ? 'ed-opacity-70 ed-cursor-not-allowed' : '',\n ].filter(Boolean).join(' '),\n onClick: onOk,\n disabled: confirmLoading,\n autoFocus: type !== 'prompt' && autoFocus,\n ...okButtonProps,\n children: confirmLoading\n ? ED.createElement('span', { className: 'ed-flex ed-items-center ed-gap-2' },\n ED.createElement('span', { className: 'ed-w-4 ed-h-4 ed-border-2 ed-border-white ed-border-t-transparent ed-rounded-full ed-animate-spin' }),\n okText\n )\n : okText,\n });\n\n const footerElement = footer !== undefined ? footer\n : ED.createElement('div', {\n className: 'ed-flex ed-items-center ed-justify-center ed-gap-3',\n }, [cancelButton, okButton].filter(Boolean));\n\n return ED.createElement('div', {\n className: [\n 'ed-fixed ed-inset-0 ed-flex ed-z-50',\n centered ? 'ed-items-center ed-justify-center' : 'ed-items-start ed-justify-center ed-pt-24',\n backdrop ? '' : '',\n 'ed-dialog-backdrop',\n ].filter(Boolean).join(' '),\n style: { zIndex },\n onClick: handleBackdropClick,\n onKeyDown: handleKeyDown,\n children: ED.createElement('div', {\n className: [\n 'ed-bg-white ed-rounded-xl ed-shadow-2xl ed-p-6 ed-w-full',\n 'ed-transform ed-transition-all ed-duration-200',\n 'ed-animate-zoom-in',\n className,\n ].filter(Boolean).join(' '),\n style: { maxWidth: width, ...style },\n role: 'dialog',\n 'aria-modal': 'true',\n 'aria-labelledby': title ? 'dialog-title' : undefined,\n children: [\n closable\n ? ED.createElement('button', {\n key: 'close',\n className: 'ed-absolute ed-top-3 ed-right-3 ed-p-1 ed-rounded-md ed-text-gray-400 hover:ed-text-gray-600 hover:ed-bg-gray-100 ed-transition-colors',\n onClick: onClose,\n 'aria-label': 'Close dialog',\n children: ED.createElement('svg', {\n className: 'ed-w-5 ed-h-5',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M6 18L18 6M6 6l12 12' }),\n }),\n })\n : null,\n iconElement,\n titleElement,\n contentElement,\n promptInput,\n footerElement,\n ].filter(Boolean),\n }),\n });\n}\n\nDialog.displayName = 'Dialog';\nDialog.TYPES = DIALOG_TYPES;\n\nmodule.exports = Dialog;\n","/**\n * Drawer Component for ElementDrawing Framework\n * Supports positions, sizes, overlay, close on escape, nested drawers, resizable\n */\nconst ED = require('../core/element');\n\nconst DRAWER_POSITIONS = {\n left: {\n container: 'ed-left-0 ed-top-0 ed-bottom-0 ed-h-full',\n animation: 'ed-animate-slide-in-left',\n defaultSize: { width: 400 },\n resizeClass: 'ed-right-0 ed-top-0 ed-bottom-0 ed-w-1 ed-cursor-ew-resize',\n },\n right: {\n container: 'ed-right-0 ed-top-0 ed-bottom-0 ed-h-full',\n animation: 'ed-animate-slide-in-right',\n defaultSize: { width: 400 },\n resizeClass: 'ed-left-0 ed-top-0 ed-bottom-0 ed-w-1 ed-cursor-ew-resize',\n },\n top: {\n container: 'ed-top-0 ed-left-0 ed-right-0 ed-w-full',\n animation: 'ed-animate-slide-in-top',\n defaultSize: { height: 300 },\n resizeClass: 'ed-bottom-0 ed-left-0 ed-right-0 ed-h-1 ed-cursor-ns-resize',\n },\n bottom: {\n container: 'ed-bottom-0 ed-left-0 ed-right-0 ed-w-full',\n animation: 'ed-animate-slide-in-bottom',\n defaultSize: { height: 300 },\n resizeClass: 'ed-top-0 ed-left-0 ed-right-0 ed-h-1 ed-cursor-ns-resize',\n },\n};\n\nconst DRAWER_SIZES = {\n sm: { width: 300, height: 200 },\n md: { width: 400, height: 300 },\n lg: { width: 600, height: 450 },\n xl: { width: 800, height: 600 },\n full: { width: '100%', height: '100%' },\n};\n\nfunction Drawer(props) {\n const {\n visible = false,\n position = 'right',\n size = 'md',\n width,\n height,\n overlay = true,\n overlayOpacity = 0.5,\n closeOnEscape = true,\n closeOnOverlay = true,\n closable = true,\n onClose,\n title,\n children,\n footer,\n className = '',\n style = {},\n zIndex = 1000,\n headerStyle = {},\n bodyStyle = {},\n footerStyle = {},\n resizable = false,\n nested = false,\n destroyOnClose = true,\n placement = position,\n mask = true,\n maskClosable = true,\n afterOpenChange,\n extra,\n width: widthProp,\n } = props;\n\n if (!visible && destroyOnClose) return null;\n if (!visible) return null;\n\n const pos = DRAWER_POSITIONS[placement || position] || DRAWER_POSITIONS.right;\n const sizeConfig = DRAWER_SIZES[size] || DRAWER_SIZES.md;\n const drawerWidth = widthProp || width || sizeConfig.width;\n const drawerHeight = height || sizeConfig.height;\n\n const isHorizontal = placement === 'left' || placement === 'right';\n\n const drawerClasses = [\n 'ed-fixed ed-bg-white ed-shadow-xl ed-flex ed-flex-col ed-z-50',\n pos.container,\n 'ed-transition-transform ed-duration-300',\n className,\n ].filter(Boolean).join(' ');\n\n const drawerStyle = {\n [isHorizontal ? 'width' : 'height']: drawerWidth || drawerHeight,\n ...style,\n };\n\n const handleOverlayClick = () => {\n if (closeOnOverlay || maskClosable) onClose?.();\n };\n\n const handleKeyDown = (e) => {\n if (closeOnEscape && e.key === 'Escape') onClose?.();\n };\n\n const headerElement = title || closable || extra\n ? ED.createElement('div', {\n className: 'ed-flex ed-items-center ed-justify-between ed-px-6 ed-py-4 ed-border-b ed-border-gray-200 ed-flex-shrink-0',\n style: headerStyle,\n children: [\n ED.createElement('div', { key: 'title-area', className: 'ed-flex ed-items-center ed-gap-3' },\n title\n ? ED.createElement('h3', { className: 'ed-text-lg ed-font-semibold ed-text-gray-900' }, title)\n : null,\n extra\n ? ED.createElement('div', { className: 'ed-text-sm ed-text-gray-500' }, extra)\n : null\n ),\n closable\n ? ED.createElement('button', {\n key: 'close',\n className: 'ed-p-1.5 ed-rounded-md ed-text-gray-400 hover:ed-text-gray-600 hover:ed-bg-gray-100 ed-transition-colors',\n onClick: onClose,\n 'aria-label': 'Close drawer',\n children: ED.createElement('svg', {\n className: 'ed-w-5 ed-h-5',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M6 18L18 6M6 6l12 12' }),\n }),\n })\n : null,\n ].filter(Boolean),\n })\n : null;\n\n const bodyElement = ED.createElement('div', {\n className: 'ed-flex-1 ed-overflow-y-auto ed-px-6 ed-py-4',\n style: bodyStyle,\n children,\n });\n\n const footerElement = footer\n ? ED.createElement('div', {\n className: 'ed-px-6 ed-py-3 ed-border-t ed-border-gray-200 ed-flex ed-items-center ed-justify-end ed-gap-3 ed-flex-shrink-0',\n style: footerStyle,\n children: footer,\n })\n : null;\n\n const resizeHandle = resizable\n ? ED.createElement('div', {\n className: [\n 'ed-absolute ed-bg-transparent ed-hover:ed-bg-blue-200 ed-transition-colors ed-z-10',\n pos.resizeClass,\n ].join(' '),\n })\n : null;\n\n const overlayElement = (overlay || mask)\n ? ED.createElement('div', {\n className: [\n 'ed-fixed ed-inset-0 ed-bg-black ed-transition-opacity ed-duration-300',\n nested ? '' : '',\n ].join(' '),\n style: {\n zIndex: zIndex - 1,\n opacity: overlayOpacity,\n },\n onClick: handleOverlayClick,\n })\n : null;\n\n return ED.createElement(ED.Fragment, null, [\n overlayElement,\n ED.createElement('div', {\n key: 'drawer',\n className: drawerClasses,\n style: { ...drawerStyle, zIndex },\n onKeyDown: handleKeyDown,\n role: 'dialog',\n 'aria-modal': 'true',\n children: [headerElement, bodyElement, footerElement, resizeHandle].filter(Boolean),\n }),\n ]);\n}\n\nDrawer.displayName = 'Drawer';\nDrawer.POSITIONS = DRAWER_POSITIONS;\nDrawer.SIZES = DRAWER_SIZES;\n\nmodule.exports = Drawer;\n","/**\n * Dropdown Component for ElementDrawing Framework\n * Supports triggers, items, dividers, icons, submenus, keyboard navigation, search\n */\nconst ED = require('../core/element');\n\nfunction DropdownItem(props) {\n const {\n children,\n label,\n icon,\n disabled = false,\n active = false,\n danger = false,\n shortcut,\n href,\n onClick,\n className = '',\n style = {},\n divided = false,\n selected = false,\n iconRight,\n description,\n } = props;\n\n if (divided) {\n return ED.createElement('div', {\n className: 'ed-my-1 ed-border-t ed-border-gray-100',\n role: 'separator',\n });\n }\n\n const itemClasses = [\n 'ed-flex ed-items-center ed-px-3 ed-py-2 ed-text-sm ed-transition-colors ed-duration-150 ed-gap-2',\n disabled\n ? 'ed-text-gray-400 ed-cursor-not-allowed'\n : danger\n ? 'ed-text-red-600 hover:ed-bg-red-50 ed-cursor-pointer'\n : active || selected\n ? 'ed-bg-blue-50 ed-text-blue-700 ed-cursor-pointer'\n : 'ed-text-gray-700 hover:ed-bg-gray-50 ed-cursor-pointer',\n className,\n ].filter(Boolean).join(' ');\n\n const iconElement = icon\n ? ED.createElement('span', {\n className: `ed-w-4 ed-h-4 ed-flex ed-items-center ed-justify-center ed-flex-shrink-0 ${disabled ? 'ed-text-gray-300' : ''}`,\n children: typeof icon === 'string' ? ED.createElement('i', { className: icon }) : icon,\n })\n : null;\n\n const shortcutElement = shortcut\n ? ED.createElement('span', {\n className: 'ed-ml-auto ed-text-xs ed-text-gray-400 ed-font-mono',\n }, shortcut)\n : null;\n\n const iconRightElement = iconRight\n ? ED.createElement('span', {\n className: 'ed-ml-auto ed-w-4 ed-h-4 ed-flex ed-items-center ed-justify-center ed-text-gray-400',\n children: typeof iconRight === 'string' ? ED.createElement('i', { className: iconRight }) : iconRight,\n })\n : null;\n\n const labelElement = label || children;\n const descriptionElement = description\n ? ED.createElement('span', { className: 'ed-text-xs ed-text-gray-400 ed-block' }, description)\n : null;\n\n const contentArea = ED.createElement('div', { className: 'ed-flex-1 ed-min-w-0' }, [\n ED.createElement('span', { key: 'label', className: 'ed-truncate ed-block' }, labelElement),\n descriptionElement,\n ].filter(Boolean));\n\n if (href && !disabled) {\n return ED.createElement('a', {\n href,\n className: itemClasses,\n style,\n onClick,\n role: 'menuitem',\n tabIndex: disabled ? -1 : 0,\n children: [iconElement, contentArea, shortcutElement, iconRightElement].filter(Boolean),\n });\n }\n\n return ED.createElement('div', {\n className: itemClasses,\n style,\n onClick: disabled ? undefined : onClick,\n role: 'menuitem',\n tabIndex: disabled ? -1 : 0,\n 'aria-disabled': disabled,\n onKeyDown: (e) => {\n if (e.key === 'Enter' && !disabled) onClick?.(e);\n },\n children: [iconElement, contentArea, shortcutElement, iconRightElement].filter(Boolean),\n });\n}\n\nDropdownItem.displayName = 'DropdownItem';\n\nfunction Dropdown(props) {\n const {\n children,\n items = [],\n trigger = 'click',\n placement = 'bottom-start',\n disabled = false,\n className = '',\n style = {},\n menuClassName = '',\n menuStyle = {},\n open,\n defaultOpen = false,\n onOpenChange,\n onSelect,\n searchable = false,\n searchPlaceholder = 'Search...',\n onSearch,\n searchValue,\n emptyText = 'No items',\n maxHeight = 300,\n width,\n arrow = false,\n offset = 4,\n closeOnSelect = true,\n closeOnOutsideClick = true,\n overlay,\n renderMenu,\n } = props;\n\n const isOpen = open !== undefined ? open : defaultOpen;\n\n const placementClasses = {\n 'bottom-start': 'ed-top-full ed-left-0',\n 'bottom': 'ed-top-full ed-left-1/2 ed--translate-x-1/2',\n 'bottom-end': 'ed-top-full ed-right-0',\n 'top-start': 'ed-bottom-full ed-left-0',\n 'top': 'ed-bottom-full ed-left-1/2 ed--translate-x-1/2',\n 'top-end': 'ed-bottom-full ed-right-0',\n 'left-start': 'ed-right-full ed-top-0',\n 'left': 'ed-right-full ed-top-1/2 ed--translate-y-1/2',\n 'left-end': 'ed-right-full ed-bottom-0',\n 'right-start': 'ed-left-full ed-top-0',\n 'right': 'ed-left-full ed-top-1/2 ed--translate-y-1/2',\n 'right-end': 'ed-left-full ed-bottom-0',\n };\n\n const handleToggle = () => {\n if (disabled) return;\n onOpenChange?.(!isOpen);\n };\n\n const handleItemClick = (item) => {\n if (item.disabled) return;\n onSelect?.(item);\n if (closeOnSelect) onOpenChange?.(false);\n };\n\n const handleKeyDown = (e) => {\n if (e.key === 'Escape') onOpenChange?.(false);\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n e.preventDefault();\n const menuEl = e.currentTarget.querySelector('[role=\"menu\"]');\n if (menuEl) {\n const focusable = menuEl.querySelectorAll('[role=\"menuitem\"]:not([aria-disabled=\"true\"])');\n const currentIdx = Array.from(focusable).indexOf(document.activeElement);\n const nextIdx = e.key === 'ArrowDown'\n ? Math.min(currentIdx + 1, focusable.length - 1)\n : Math.max(currentIdx - 1, 0);\n focusable[nextIdx]?.focus();\n }\n }\n };\n\n const searchElement = searchable\n ? ED.createElement('div', { className: 'ed-px-2 ed-py-2 ed-border-b ed-border-gray-100' },\n ED.createElement('input', {\n className: 'ed-w-full ed-px-2 ed-py-1.5 ed-text-sm ed-border ed-border-gray-200 ed-rounded ed-outline-none focus:ed-ring-1 focus:ed-ring-blue-500',\n placeholder: searchPlaceholder,\n value: searchValue,\n onChange: (e) => onSearch?.(e.target.value),\n autoFocus: true,\n })\n )\n : null;\n\n const menuItems = items.length > 0\n ? items.map((item, idx) =>\n ED.createElement(DropdownItem, {\n key: item.key || idx,\n label: item.label,\n icon: item.icon,\n disabled: item.disabled,\n active: item.active,\n danger: item.danger,\n shortcut: item.shortcut,\n href: item.href,\n divided: item.divided,\n selected: item.selected,\n iconRight: item.iconRight,\n description: item.description,\n onClick: () => handleItemClick(item),\n })\n )\n : children;\n\n const menuContent = renderMenu\n ? renderMenu(items)\n : ED.createElement('div', {\n className: [\n 'ed-absolute ed-bg-white ed-rounded-lg ed-shadow-lg ed-border ed-border-gray-200 ed-z-50',\n 'ed-min-w-[180px] ed-py-1',\n placementClasses[placement] || placementClasses['bottom-start'],\n arrow ? 'ed-mt-2' : '',\n menuClassName,\n ].filter(Boolean).join(' '),\n style: {\n maxHeight,\n overflowY: 'auto',\n width,\n ...menuStyle,\n },\n role: 'menu',\n children: [\n searchElement,\n menuItems?.length > 0 || children\n ? menuItems\n : ED.createElement('div', { className: 'ed-px-3 ed-py-4 ed-text-center ed-text-sm ed-text-gray-400' }, emptyText),\n ].filter(Boolean),\n });\n\n const triggerEvents = {};\n if (trigger === 'click') {\n triggerEvents.onClick = handleToggle;\n } else if (trigger === 'hover') {\n triggerEvents.onMouseEnter = () => onOpenChange?.(true);\n triggerEvents.onMouseLeave = () => onOpenChange?.(false);\n } else if (trigger === 'context') {\n triggerEvents.onContextMenu = (e) => { e.preventDefault(); handleToggle(); };\n } else if (trigger === 'focus') {\n triggerEvents.onFocus = () => onOpenChange?.(true);\n triggerEvents.onBlur = () => onOpenChange?.(false);\n }\n\n return ED.createElement('div', {\n className: `ed-relative ed-inline-flex ${className}`,\n style,\n onKeyDown: handleKeyDown,\n ...triggerEvents,\n children: [\n ED.createElement('div', {\n key: 'trigger',\n className: 'ed-dropdown-trigger ed-inline-flex',\n 'aria-haspopup': 'true',\n 'aria-expanded': isOpen,\n children,\n }),\n isOpen ? menuContent : null,\n ],\n });\n}\n\nDropdown.displayName = 'Dropdown';\nDropdown.Item = DropdownItem;\n\nmodule.exports = Dropdown;\n","/**\n * Form Component for ElementDrawing Framework\n * Supports validation, field groups, inline/stacked layouts, form items, labels, errors, help text, disabled, loading\n */\nconst ED = require('../core/element');\n\nfunction FormItem(props) {\n const {\n children,\n label,\n labelFor,\n labelAlign = 'left',\n labelWidth,\n required = false,\n error,\n warning,\n success,\n helpText,\n className = '',\n style = {},\n layout = 'vertical',\n colon = false,\n tooltip,\n extra,\n noStyle = false,\n hidden = false,\n } = props;\n\n if (hidden) return children;\n\n const validationState = error ? 'error' : warning ? 'warning' : success ? 'success' : 'default';\n\n const labelClasses = [\n 'ed-block ed-text-sm ed-font-medium ed-mb-1',\n labelAlign === 'right' ? 'ed-text-right' : labelAlign === 'center' ? 'ed-text-center' : '',\n required ? \"ed-after:content-['*'] ed-after:ed-text-red-500 ed-after:ed-ml-0.5\" : '',\n error ? 'ed-text-red-600' : 'ed-text-gray-700',\n layout === 'horizontal' ? 'ed-mb-0 ed-flex ed-items-center' : '',\n ].filter(Boolean).join(' ');\n\n const labelElement = label\n ? ED.createElement('label', {\n htmlFor: labelFor,\n className: labelClasses,\n style: layout === 'horizontal' ? { width: labelWidth || 120, flexShrink: 0 } : {},\n children: [\n ED.createElement('span', null, label),\n colon ? ED.createElement('span', { key: 'colon' }, ':') : null,\n tooltip\n ? ED.createElement('span', {\n key: 'tooltip',\n className: 'ed-ml-1 ed-inline-flex ed-items-center',\n title: typeof tooltip === 'string' ? tooltip : undefined,\n children: ED.createElement('svg', {\n className: 'ed-w-4 ed-h-4 ed-text-gray-400',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z' }),\n }),\n })\n : null,\n ],\n })\n : null;\n\n const messageElement = error\n ? ED.createElement('p', { className: 'ed-text-xs ed-text-red-500 ed-mt-1 ed-flex ed-items-center ed-gap-1' },\n ED.createElement('svg', { className: 'ed-w-3.5 ed-h-3.5 ed-flex-shrink-0', fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor' },\n ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z' })\n ),\n error\n )\n : warning\n ? ED.createElement('p', { className: 'ed-text-xs ed-text-yellow-500 ed-mt-1' }, warning)\n : success\n ? ED.createElement('p', { className: 'ed-text-xs ed-text-green-500 ed-mt-1' }, success)\n : helpText\n ? ED.createElement('p', { className: 'ed-text-xs ed-text-gray-500 ed-mt-1' }, helpText)\n : null;\n\n const extraElement = extra\n ? ED.createElement('div', { className: 'ed-text-xs ed-text-gray-400 ed-mt-1' }, extra)\n : null;\n\n if (noStyle) {\n return ED.createElement('div', { className, style, children });\n }\n\n if (layout === 'horizontal') {\n return ED.createElement('div', {\n className: `ed-flex ed-gap-4 ed-mb-4 ${className}`,\n style,\n children: [\n labelElement,\n ED.createElement('div', { className: 'ed-flex-1 ed-min-w-0', key: 'control' },\n children,\n messageElement,\n extraElement,\n ),\n ],\n });\n }\n\n if (layout === 'inline') {\n return ED.createElement('div', {\n className: `ed-inline-flex ed-items-center ed-gap-2 ed-mr-4 ${className}`,\n style,\n children: [labelElement, children, messageElement].filter(Boolean),\n });\n }\n\n return ED.createElement('div', {\n className: `ed-mb-4 ${className}`,\n style,\n children: [labelElement, children, messageElement, extraElement].filter(Boolean),\n });\n}\n\nFormItem.displayName = 'FormItem';\n\nfunction FormGroup(props) {\n const {\n children,\n title,\n description,\n collapsible = false,\n collapsed: defaultCollapsed = false,\n className = '',\n style = {},\n bordered = true,\n } = props;\n\n const groupClasses = [\n bordered ? 'ed-border ed-border-gray-200 ed-rounded-lg ed-p-4' : '',\n 'ed-mb-6',\n className,\n ].filter(Boolean).join(' ');\n\n return ED.createElement('fieldset', {\n className: groupClasses,\n style,\n children: [\n title\n ? ED.createElement('legend', {\n className: 'ed-text-sm ed-font-semibold ed-text-gray-700 ed-px-2',\n }, title)\n : null,\n description\n ? ED.createElement('p', { className: 'ed-text-xs ed-text-gray-500 ed-mb-3' }, description)\n : null,\n children,\n ].filter(Boolean),\n });\n}\n\nFormGroup.displayName = 'FormGroup';\n\nfunction Form(props) {\n const {\n children,\n layout = 'vertical',\n labelAlign = 'left',\n labelWidth = 120,\n colon = false,\n requiredMark = true,\n disabled = false,\n loading = false,\n className = '',\n style = {},\n onSubmit,\n onValuesChange,\n initialValues,\n validateMessages,\n size = 'md',\n bordered = false,\n name,\n action,\n method,\n footer,\n showReset = false,\n resetText = 'Reset',\n submitText = 'Submit',\n onReset,\n } = props;\n\n const handleSubmit = (e) => {\n e.preventDefault();\n onSubmit?.(e);\n };\n\n const handleReset = (e) => {\n e.preventDefault();\n onReset?.(e);\n };\n\n const sizeClasses = {\n sm: 'ed-text-sm',\n md: 'ed-text-sm',\n lg: 'ed-text-base',\n };\n\n const formClasses = [\n sizeClasses[size] || sizeClasses.md,\n layout === 'inline' ? 'ed-flex ed-flex-wrap ed-items-end ed-gap-4' : '',\n layout === 'horizontal' ? 'ed-space-y-0' : 'ed-space-y-0',\n bordered ? 'ed-border ed-border-gray-200 ed-rounded-lg ed-p-6' : '',\n disabled ? 'ed-opacity-60 ed-pointer-events-none' : '',\n 'ed-form',\n className,\n ].filter(Boolean).join(' ');\n\n const loadingOverlay = loading\n ? ED.createElement('div', {\n className: 'ed-absolute ed-inset-0 ed-bg-white ed-bg-opacity-70 ed-flex ed-items-center ed-justify-center ed-z-10 ed-rounded-lg',\n children: ED.createElement('div', {\n className: 'ed-flex ed-items-center ed-gap-2 ed-text-gray-500',\n children: [\n ED.createElement('div', {\n key: 'spinner',\n className: 'ed-w-5 ed-h-5 ed-border-2 ed-border-blue-500 ed-border-t-transparent ed-rounded-full ed-animate-spin',\n }),\n ED.createElement('span', { key: 'text' }, 'Submitting...'),\n ],\n }),\n })\n : null;\n\n const footerElement = footer !== undefined ? footer\n : (onSubmit || action)\n ? ED.createElement('div', {\n className: `ed-flex ed-items-center ed-gap-3 ${layout === 'inline' ? '' : 'ed-mt-6'}`,\n children: [\n ED.createElement('button', {\n key: 'submit',\n type: 'submit',\n className: [\n 'ed-px-5 ed-py-2 ed-text-sm ed-font-medium ed-text-white ed-bg-blue-600 ed-rounded-md',\n 'hover:ed-bg-blue-700 focus:ed-ring-2 focus:ed-ring-blue-500 focus:ed-ring-offset-2',\n 'ed-transition-colors ed-duration-200',\n loading ? 'ed-opacity-70 ed-cursor-not-allowed' : '',\n ].filter(Boolean).join(' '),\n disabled: loading,\n }, submitText),\n showReset\n ? ED.createElement('button', {\n key: 'reset',\n type: 'button',\n className: 'ed-px-5 ed-py-2 ed-text-sm ed-font-medium ed-text-gray-700 ed-bg-white ed-border ed-border-gray-300 ed-rounded-md hover:ed-bg-gray-50 ed-transition-colors',\n onClick: handleReset,\n }, resetText)\n : null,\n ].filter(Boolean),\n })\n : null;\n\n return ED.createElement('form', {\n name,\n action,\n method,\n className: formClasses,\n style: { position: 'relative', ...style },\n onSubmit: handleSubmit,\n children: [\n children,\n footerElement,\n loadingOverlay,\n ].filter(Boolean),\n });\n}\n\nForm.displayName = 'Form';\nForm.Item = FormItem;\nForm.Group = FormGroup;\n\nmodule.exports = Form;\n","/**\n * Input Component for ElementDrawing Framework\n * Supports types, sizes, validation, prefix/suffix icons, clearable, disabled, readonly, floating label\n */\nconst ED = require('../core/element');\n\nconst INPUT_SIZES = {\n xs: 'ed-text-xs ed-px-2 ed-py-1',\n sm: 'ed-text-sm ed-px-3 ed-py-1.5',\n md: 'ed-text-sm ed-px-3 ed-py-2',\n lg: 'ed-text-base ed-px-4 ed-py-2.5',\n xl: 'ed-text-lg ed-px-4 ed-py-3',\n};\n\nconst VALIDATION_STATES = {\n default: 'ed-border-gray-300 focus:ed-border-blue-500 focus:ed-ring-blue-500',\n success: 'ed-border-green-500 focus:ed-border-green-600 focus:ed-ring-green-500',\n warning: 'ed-border-yellow-500 focus:ed-border-yellow-600 focus:ed-ring-yellow-500',\n error: 'ed-border-red-500 focus:ed-border-red-600 focus:ed-ring-red-500',\n};\n\nconst VALIDATION_ICONS = {\n success: ED.createElement('svg', {\n className: 'ed-w-5 ed-h-5 ed-text-green-500',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', {\n strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2,\n d: 'M5 13l4 4L19 7',\n }),\n }),\n warning: ED.createElement('svg', {\n className: 'ed-w-5 ed-h-5 ed-text-yellow-500',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', {\n strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2,\n d: 'M12 9v2m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z',\n }),\n }),\n error: ED.createElement('svg', {\n className: 'ed-w-5 ed-h-5 ed-text-red-500',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', {\n strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2,\n d: 'M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z',\n }),\n }),\n};\n\nfunction Input(props) {\n const {\n type = 'text',\n size = 'md',\n variant = 'default',\n state = 'default',\n validationState,\n value,\n defaultValue,\n placeholder,\n prefix,\n suffix,\n prefixIcon,\n suffixIcon,\n clearable = false,\n disabled = false,\n readonly = false,\n floatingLabel,\n label,\n helperText,\n errorMessage,\n successMessage,\n warningMessage,\n maxLength,\n showCount = false,\n allowClear,\n onClear,\n onChange,\n onFocus,\n onBlur,\n onInput,\n onKeyDown,\n onKeyUp,\n onKeyPress,\n onEnter,\n className = '',\n style = {},\n inputClassName = '',\n inputStyle = {},\n id,\n name,\n autoComplete,\n autoFocus = false,\n tabIndex,\n required = false,\n pattern,\n min,\n max,\n step,\n rows,\n size: sizeProp,\n width,\n borderRadius,\n bordered = true,\n status,\n } = props;\n\n const currentState = status || state || validationState || 'default';\n const sizeClass = INPUT_SIZES[size] || INPUT_SIZES.md;\n const stateClass = VALIDATION_STATES[currentState] || VALIDATION_STATES.default;\n const hasPrefix = prefix || prefixIcon;\n const hasSuffix = suffix || suffixIcon || clearable || VALIDATION_ICONS[currentState];\n\n const clearButton = clearable && value && !disabled && !readonly\n ? ED.createElement('button', {\n key: 'clear',\n className: 'ed-flex ed-items-center ed-justify-center ed-text-gray-400 hover:ed-text-gray-600 ed-transition-colors ed-ml-1',\n onClick: (e) => {\n e.stopPropagation();\n onClear?.();\n onChange?.({ target: { value: '' } });\n },\n tabIndex: -1,\n type: 'button',\n 'aria-label': 'Clear input',\n children: ED.createElement('svg', {\n className: 'ed-w-4 ed-h-4',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', {\n strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2,\n d: 'M6 18L18 6M6 6l12 12',\n }),\n }),\n })\n : null;\n\n const prefixElement = hasPrefix\n ? ED.createElement('span', {\n className: 'ed-flex ed-items-center ed-pl-3 ed-text-gray-500 ed-pointer-events-none ed-input-prefix',\n children: prefixIcon\n ? (typeof prefixIcon === 'string'\n ? ED.createElement('i', { className: prefixIcon })\n : prefixIcon)\n : prefix,\n })\n : null;\n\n const suffixElement = hasSuffix\n ? ED.createElement('span', {\n className: 'ed-flex ed-items-center ed-pr-3 ed-text-gray-500 ed-gap-1 ed-input-suffix',\n children: [\n VALIDATION_ICONS[currentState] || null,\n suffixIcon\n ? (typeof suffixIcon === 'string'\n ? ED.createElement('i', { className: suffixIcon })\n : suffixIcon)\n : null,\n suffix || null,\n clearButton,\n ].filter(Boolean),\n })\n : null;\n\n const charCount = showCount && maxLength\n ? ED.createElement('span', {\n className: `ed-text-xs ed-mt-1 ed-text-right ${value?.length > maxLength ? 'ed-text-red-500' : 'ed-text-gray-400'}`,\n }, `${value?.length || 0} / ${maxLength}`)\n : null;\n\n const messageElement = errorMessage && currentState === 'error'\n ? ED.createElement('p', { className: 'ed-text-xs ed-text-red-500 ed-mt-1' }, errorMessage)\n : successMessage && currentState === 'success'\n ? ED.createElement('p', { className: 'ed-text-xs ed-text-green-500 ed-mt-1' }, successMessage)\n : warningMessage && currentState === 'warning'\n ? ED.createElement('p', { className: 'ed-text-xs ed-text-yellow-500 ed-mt-1' }, warningMessage)\n : helperText\n ? ED.createElement('p', { className: 'ed-text-xs ed-text-gray-500 ed-mt-1' }, helperText)\n : null;\n\n const inputElement = ED.createElement('input', {\n id,\n name,\n type,\n value,\n defaultValue,\n placeholder: floatingLabel ? ' ' : placeholder,\n disabled,\n readOnly: readonly,\n maxLength,\n autoComplete,\n autoFocus,\n tabIndex,\n required,\n pattern,\n min,\n max,\n step,\n className: [\n 'ed-w-full ed-outline-none ed-transition-all ed-duration-200',\n 'ed-bg-transparent',\n sizeClass,\n bordered ? stateClass : 'ed-border-none',\n !hasPrefix ? 'ed-pl-3' : '',\n !hasSuffix ? 'ed-pr-3' : '',\n disabled ? 'ed-bg-gray-100 ed-cursor-not-allowed ed-text-gray-400' : '',\n readonly ? 'ed-bg-gray-50 ed-cursor-default' : '',\n 'focus:ed-ring-2 focus:ed-ring-offset-0',\n borderRadius ? `ed-rounded-${borderRadius}` : 'ed-rounded-md',\n floatingLabel ? 'ed-peer ed-placeholder-shown:ed-pt-4 ed-placeholder-shown:ed-pb-1' : '',\n inputClassName,\n ].filter(Boolean).join(' '),\n style: inputStyle,\n onChange,\n onFocus,\n onBlur,\n onInput,\n onKeyDown: onEnter\n ? (e) => { if (e.key === 'Enter') onEnter(e); onKeyDown?.(e); }\n : onKeyDown,\n onKeyUp,\n onKeyPress,\n 'aria-invalid': currentState === 'error',\n 'aria-describedby': errorMessage ? `${id}-error` : undefined,\n });\n\n const floatingLabelElement = floatingLabel\n ? ED.createElement('label', {\n htmlFor: id,\n className: [\n 'ed-absolute ed-left-3 ed-transition-all ed-duration-200',\n 'ed-text-gray-500 ed-pointer-events-none',\n 'peer-placeholder-shown:ed-top-2.5 peer-placeholder-shown:ed-text-sm',\n 'peer-focus:ed-top-0.5 peer-focus:ed-text-xs peer-focus:ed-text-blue-500',\n '-ed-top-0.5 ed-text-xs',\n 'ed-bg-white ed-px-1',\n ].join(' '),\n }, floatingLabel)\n : null;\n\n const wrapperClasses = [\n 'ed-relative ed-flex ed-items-center',\n bordered ? 'ed-border ed-rounded-md' : '',\n disabled ? 'ed-bg-gray-100' : 'ed-bg-white',\n currentState === 'error' ? 'ed-border-red-500' : currentState === 'success' ? 'ed-border-green-500' : 'ed-border-gray-300',\n disabled ? 'ed-opacity-60' : '',\n 'hover:ed-border-gray-400',\n 'focus-within:ed-ring-2 focus-within:ed-ring-blue-500 focus-within:ed-border-blue-500',\n 'ed-transition-all ed-duration-200',\n className,\n ].filter(Boolean).join(' ');\n\n return ED.createElement('div', {\n className: `ed-inline-flex ed-flex-col ${width ? '' : 'ed-w-full'}`,\n style: { width, ...style },\n children: [\n label && !floatingLabel\n ? ED.createElement('label', {\n key: 'label',\n htmlFor: id,\n className: `ed-block ed-text-sm ed-font-medium ed-mb-1 ${required ? \"ed-after:content-['*'] ed-after:ed-text-red-500 ed-after:ed-ml-0.5\" : ''} ${disabled ? 'ed-text-gray-400' : 'ed-text-gray-700'}`,\n }, label)\n : null,\n ED.createElement('div', {\n key: 'input-wrapper',\n className: wrapperClasses,\n style: { position: 'relative' },\n children: [\n prefixElement,\n inputElement,\n floatingLabelElement,\n suffixElement,\n ].filter(Boolean),\n }),\n ED.createElement('div', {\n key: 'messages',\n className: 'ed-flex ed-justify-between',\n children: [messageElement, charCount].filter(Boolean),\n }),\n ].filter(Boolean),\n });\n}\n\nInput.displayName = 'Input';\nInput.SIZES = INPUT_SIZES;\nInput.STATES = VALIDATION_STATES;\n\nmodule.exports = Input;\n","/**\n * Menu Component for ElementDrawing Framework\n * Supports items, submenus, icons, shortcuts, dividers, groups, selectable, active, compact\n */\nconst ED = require('../core/element');\n\nfunction MenuItem(props) {\n const {\n children,\n label,\n icon,\n shortcut,\n disabled = false,\n active = false,\n selected = false,\n danger = false,\n href,\n onClick,\n className = '',\n style = {},\n indent = 0,\n compact = false,\n level = 0,\n } = props;\n\n const itemClasses = [\n 'ed-flex ed-items-center ed-w-full ed-px-3 ed-text-sm ed-transition-colors ed-duration-150 ed-gap-2',\n compact ? 'ed-py-1' : 'ed-py-2',\n disabled\n ? 'ed-text-gray-400 ed-cursor-not-allowed'\n : danger\n ? 'ed-text-red-600 hover:ed-bg-red-50 ed-cursor-pointer'\n : active || selected\n ? 'ed-bg-blue-50 ed-text-blue-700 ed-font-medium ed-cursor-pointer'\n : 'ed-text-gray-700 hover:ed-bg-gray-50 ed-cursor-pointer',\n 'ed-rounded-md',\n className,\n ].filter(Boolean).join(' ');\n\n const iconElement = icon\n ? ED.createElement('span', {\n className: 'ed-w-4 ed-h-4 ed-flex ed-items-center ed-justify-center ed-flex-shrink-0',\n children: typeof icon === 'string' ? ED.createElement('i', { className: icon }) : icon,\n })\n : null;\n\n const shortcutElement = shortcut\n ? ED.createElement('span', {\n className: 'ed-ml-auto ed-text-xs ed-text-gray-400 ed-font-mono',\n }, shortcut)\n : null;\n\n const labelContent = label || children;\n\n if (href && !disabled) {\n return ED.createElement('a', {\n href,\n className: itemClasses,\n style: { paddingLeft: `${indent + 12}px`, ...style },\n onClick: disabled ? undefined : onClick,\n role: 'menuitem',\n tabIndex: disabled ? -1 : 0,\n children: [iconElement, ED.createElement('span', { key: 'label', className: 'ed-flex-1' }, labelContent), shortcutElement].filter(Boolean),\n });\n }\n\n return ED.createElement('div', {\n className: itemClasses,\n style: { paddingLeft: `${indent + 12}px`, ...style },\n onClick: disabled ? undefined : onClick,\n role: 'menuitem',\n tabIndex: disabled ? -1 : 0,\n 'aria-disabled': disabled,\n onKeyDown: (e) => {\n if (e.key === 'Enter' && !disabled) onClick?.(e);\n },\n children: [iconElement, ED.createElement('span', { key: 'label', className: 'ed-flex-1' }, labelContent), shortcutElement].filter(Boolean),\n });\n}\n\nMenuItem.displayName = 'MenuItem';\n\nfunction MenuGroup(props) {\n const {\n children,\n title,\n className = '',\n style = {},\n } = props;\n\n return ED.createElement('div', {\n className: `ed-py-1 ${className}`,\n style,\n role: 'group',\n 'aria-label': title,\n children: [\n title\n ? ED.createElement('div', {\n key: 'title',\n className: 'ed-px-3 ed-py-1.5 ed-text-xs ed-font-semibold ed-text-gray-400 ed-uppercase ed-tracking-wider',\n }, title)\n : null,\n children,\n ].filter(Boolean),\n });\n}\n\nMenuGroup.displayName = 'MenuGroup';\n\nfunction MenuDivider() {\n return ED.createElement('div', {\n className: 'ed-my-1 ed-border-t ed-border-gray-100',\n role: 'separator',\n });\n}\n\nMenuDivider.displayName = 'MenuDivider';\n\nfunction SubMenu(props) {\n const {\n children,\n label,\n icon,\n disabled = false,\n expanded = false,\n onToggle,\n className = '',\n style = {},\n level = 0,\n compact = false,\n } = props;\n\n const itemClasses = [\n 'ed-flex ed-items-center ed-w-full ed-px-3 ed-text-sm ed-transition-colors ed-duration-150 ed-gap-2',\n compact ? 'ed-py-1' : 'ed-py-2',\n disabled\n ? 'ed-text-gray-400 ed-cursor-not-allowed'\n : 'ed-text-gray-700 hover:ed-bg-gray-50 ed-cursor-pointer',\n 'ed-rounded-md',\n className,\n ].filter(Boolean).join(' ');\n\n return ED.createElement('div', null, [\n ED.createElement('div', {\n key: 'header',\n className: itemClasses,\n style: { paddingLeft: `${level * 16 + 12}px`, ...style },\n onClick: disabled ? undefined : onToggle,\n 'aria-expanded': expanded,\n role: 'menuitem',\n 'aria-haspopup': 'true',\n tabIndex: disabled ? -1 : 0,\n children: [\n icon\n ? ED.createElement('span', {\n key: 'icon',\n className: 'ed-w-4 ed-h-4 ed-flex ed-items-center ed-justify-center ed-flex-shrink-0',\n children: typeof icon === 'string' ? ED.createElement('i', { className: icon }) : icon,\n })\n : null,\n ED.createElement('span', { key: 'label', className: 'ed-flex-1' }, label),\n ED.createElement('svg', {\n key: 'arrow',\n className: `ed-w-4 ed-h-4 ed-text-gray-400 ed-transition-transform ed-duration-200 ${expanded ? 'ed-rotate-90' : ''}`,\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M9 5l7 7-7 7' }),\n }),\n ],\n }),\n expanded\n ? ED.createElement('div', {\n key: 'content',\n className: 'ed-overflow-hidden',\n role: 'menu',\n children,\n })\n : null,\n ]);\n}\n\nSubMenu.displayName = 'SubMenu';\n\nfunction Menu(props) {\n const {\n children,\n items = [],\n mode = 'vertical',\n selectedKey,\n onSelect,\n expandedKeys = [],\n onExpand,\n compact = false,\n className = '',\n style = {},\n theme = 'light',\n bordered = true,\n width = 256,\n inlineCollapsed = false,\n selectable = true,\n multiple = false,\n defaultSelectedKey,\n defaultOpenKeys = [],\n onClick,\n } = props;\n\n const isDark = theme === 'dark';\n\n const menuClasses = [\n 'ed-py-1 ed-min-w-0',\n isDark ? 'ed-bg-gray-900 ed-text-gray-100' : 'ed-bg-white ed-text-gray-800',\n bordered ? 'ed-border ed-border-gray-200 ed-rounded-lg' : '',\n mode === 'horizontal' ? 'ed-flex ed-items-center' : '',\n className,\n ].filter(Boolean).join(' ');\n\n const renderItems = (menuItems, level = 0) =>\n menuItems.map((item, idx) => {\n if (item.divider) return ED.createElement(MenuDivider, { key: item.key || idx });\n\n if (item.group) {\n return ED.createElement(MenuGroup, {\n key: item.key || idx,\n title: item.title || item.label,\n children: renderItems(item.children || [], level),\n });\n }\n\n if (item.children && item.children.length > 0) {\n return ED.createElement(SubMenu, {\n key: item.key || idx,\n label: item.label,\n icon: item.icon,\n disabled: item.disabled,\n expanded: expandedKeys.includes(item.key),\n onToggle: () => onExpand?.(item.key),\n level,\n compact,\n children: renderItems(item.children, level + 1),\n });\n }\n\n return ED.createElement(MenuItem, {\n key: item.key || idx,\n label: item.label,\n icon: item.icon,\n shortcut: item.shortcut,\n disabled: item.disabled,\n active: selectable && selectedKey === item.key,\n selected: selectable && selectedKey === item.key,\n danger: item.danger,\n href: item.href,\n indent: level * 16,\n compact,\n level,\n onClick: () => {\n onSelect?.(item);\n onClick?.(item);\n },\n });\n });\n\n return ED.createElement('div', {\n className: menuClasses,\n style: { width, ...style },\n role: 'menu',\n children: items.length > 0 ? renderItems(items) : children,\n });\n}\n\nMenu.displayName = 'Menu';\nMenu.Item = MenuItem;\nMenu.Group = MenuGroup;\nMenu.Divider = MenuDivider;\nMenu.SubMenu = SubMenu;\n\nmodule.exports = Menu;\n","/**\n * Modal Component for ElementDrawing Framework\n * Supports backdrop, sizes, animations, close button, sections, confirmation, scrollable, portal\n */\nconst ED = require('../core/element');\n\nconst MODAL_SIZES = {\n sm: 'ed-max-w-sm',\n md: 'ed-max-w-md',\n lg: 'ed-max-w-lg',\n xl: 'ed-max-w-xl',\n full: 'ed-max-w-full ed-mx-4 ed-h-full ed-flex ed-items-stretch',\n};\n\nconst ANIMATIONS = {\n fade: { enter: 'ed-animate-fade-in', leave: 'ed-animate-fade-out' },\n zoom: { enter: 'ed-animate-zoom-in', leave: 'ed-animate-zoom-out' },\n slideUp: { enter: 'ed-animate-slide-up', leave: 'ed-animate-slide-down' },\n slideDown: { enter: 'ed-animate-slide-down', leave: 'ed-animate-slide-up' },\n slideLeft: { enter: 'ed-animate-slide-left', leave: 'ed-animate-slide-right' },\n slideRight: { enter: 'ed-animate-slide-right', leave: 'ed-animate-slide-left' },\n};\n\nfunction ModalHeader(props) {\n const {\n children,\n title,\n onClose,\n closable = true,\n className = '',\n style = {},\n } = props;\n\n return ED.createElement('div', {\n className: [\n 'ed-flex ed-items-center ed-justify-between ed-px-6 ed-py-4 ed-border-b ed-border-gray-200',\n 'ed-modal-header',\n className,\n ].filter(Boolean).join(' '),\n style,\n children: [\n title\n ? ED.createElement('h3', {\n key: 'title',\n className: 'ed-text-lg ed-font-semibold ed-text-gray-900',\n }, title)\n : ED.createElement('div', { key: 'title-content' }, children),\n closable\n ? ED.createElement('button', {\n key: 'close',\n className: 'ed-ml-4 ed-p-1 ed-rounded-md ed-text-gray-400 hover:ed-text-gray-600 hover:ed-bg-gray-100 ed-transition-colors ed-focus:outline-none',\n onClick: onClose,\n 'aria-label': 'Close modal',\n type: 'button',\n children: ED.createElement('svg', {\n className: 'ed-w-5 ed-h-5',\n fill: 'none',\n viewBox: '0 0 24 24',\n stroke: 'currentColor',\n strokeWidth: 2,\n children: ED.createElement('path', {\n strokeLinecap: 'round',\n strokeLinejoin: 'round',\n d: 'M6 18L18 6M6 6l12 12',\n }),\n }),\n })\n : null,\n ].filter(Boolean),\n });\n}\n\nModalHeader.displayName = 'ModalHeader';\n\nfunction ModalBody(props) {\n const {\n children,\n className = '',\n style = {},\n scrollable = false,\n } = props;\n\n return ED.createElement('div', {\n className: [\n 'ed-px-6 ed-py-4',\n scrollable ? 'ed-overflow-y-auto ed-max-h-[60vh]' : '',\n 'ed-modal-body',\n className,\n ].filter(Boolean).join(' '),\n style,\n children,\n });\n}\n\nModalBody.displayName = 'ModalBody';\n\nfunction ModalFooter(props) {\n const {\n children,\n className = '',\n style = {},\n align = 'right',\n bordered = true,\n } = props;\n\n const alignClass = {\n left: 'ed-justify-start',\n center: 'ed-justify-center',\n right: 'ed-justify-end',\n between: 'ed-justify-between',\n }[align] || 'ed-justify-end';\n\n return ED.createElement('div', {\n className: [\n 'ed-px-6 ed-py-3 ed-flex ed-items-center ed-gap-3',\n bordered ? 'ed-border-t ed-border-gray-200' : '',\n alignClass,\n 'ed-modal-footer',\n className,\n ].filter(Boolean).join(' '),\n style,\n children,\n });\n}\n\nModalFooter.displayName = 'ModalFooter';\n\nfunction Modal(props) {\n const {\n children,\n visible = false,\n onClose,\n title,\n size = 'md',\n animation = 'zoom',\n closable = true,\n closeOnBackdrop = true,\n closeOnEscape = true,\n backdrop = true,\n backdropClassName = '',\n className = '',\n style = {},\n footer,\n header,\n centered = true,\n scrollable = false,\n destroyOnClose = false,\n portal = false,\n portalTarget,\n confirmLoading = false,\n okText = 'OK',\n cancelText = 'Cancel',\n onOk,\n onCancel,\n showCancel = true,\n width,\n zIndex = 1000,\n afterClose,\n maskStyle,\n } = props;\n\n if (!visible && destroyOnClose) return null;\n if (!visible) return null;\n\n const sizeClass = MODAL_SIZES[size] || MODAL_SIZES.md;\n const anim = ANIMATIONS[animation] || ANIMATIONS.zoom;\n\n const backdropClasses = [\n 'ed-fixed ed-inset-0 ed-z-50 ed-flex',\n centered ? 'ed-items-center ed-justify-center' : 'ed-items-start ed-justify-center ed-pt-16',\n backdrop ? 'ed-bg-black ed-bg-opacity-50' : '',\n anim.enter,\n 'ed-modal-backdrop',\n backdropClassName,\n ].filter(Boolean).join(' ');\n\n const modalClasses = [\n 'ed-bg-white ed-rounded-lg ed-shadow-xl ed-w-full',\n sizeClass,\n 'ed-relative ed-flex ed-flex-col',\n 'ed-modal-content',\n anim.enter,\n className,\n ].filter(Boolean).join(' ');\n\n const handleBackdropClick = (e) => {\n if (closeOnBackdrop && e.target === e.currentTarget) {\n onClose?.();\n }\n };\n\n const handleKeyDown = (e) => {\n if (closeOnEscape && e.key === 'Escape') {\n onClose?.();\n }\n };\n\n const headerElement = header !== undefined ? header\n : (title || closable)\n ? ED.createElement(ModalHeader, {\n title,\n closable,\n onClose,\n })\n : null;\n\n const bodyElement = ED.createElement(ModalBody, {\n scrollable,\n children,\n });\n\n const footerElement = footer !== undefined ? footer\n : (onOk || onCancel)\n ? ED.createElement(ModalFooter, null,\n showCancel\n ? ED.createElement('button', {\n key: 'cancel',\n className: 'ed-px-4 ed-py-2 ed-text-sm ed-font-medium ed-text-gray-700 ed-bg-white ed-border ed-border-gray-300 ed-rounded-md hover:ed-bg-gray-50 ed-transition-colors',\n onClick: onCancel || onClose,\n children: cancelText,\n })\n : null,\n ED.createElement('button', {\n key: 'ok',\n className: [\n 'ed-px-4 ed-py-2 ed-text-sm ed-font-medium ed-text-white ed-bg-blue-600 ed-rounded-md',\n 'hover:ed-bg-blue-700 ed-transition-colors',\n confirmLoading ? 'ed-opacity-70 ed-cursor-not-allowed' : '',\n ].filter(Boolean).join(' '),\n onClick: onOk,\n disabled: confirmLoading,\n children: confirmLoading\n ? ED.createElement('span', { className: 'ed-flex ed-items-center ed-gap-2' },\n ED.createElement('span', { className: 'ed-w-4 ed-h-4 ed-border-2 ed-border-white ed-border-t-transparent ed-rounded-full ed-animate-spin' }),\n okText\n )\n : okText,\n })\n )\n : null;\n\n const modalContent = ED.createElement('div', {\n className: backdropClasses,\n style: { zIndex, ...maskStyle },\n onClick: handleBackdropClick,\n onKeyDown: handleKeyDown,\n tabIndex: -1,\n role: 'dialog',\n 'aria-modal': 'true',\n 'aria-labelledby': title ? 'modal-title' : undefined,\n children: ED.createElement('div', {\n className: modalClasses,\n style: width ? { maxWidth: width, ...style } : style,\n role: 'document',\n children: [headerElement, bodyElement, footerElement].filter(Boolean),\n }),\n });\n\n if (portal && typeof document !== 'undefined') {\n const target = portalTarget || document.body;\n return ED.createElement('portal', { target, children: modalContent });\n }\n\n return modalContent;\n}\n\nModal.displayName = 'Modal';\nModal.Header = ModalHeader;\nModal.Body = ModalBody;\nModal.Footer = ModalFooter;\nModal.SIZES = MODAL_SIZES;\nModal.ANIMATIONS = ANIMATIONS;\n\nmodule.exports = Modal;\n","/**\n * Navbar Component for ElementDrawing Framework\n * Supports brand, links, dropdown menus, mobile hamburger, search, notifications, user menu, sticky/fixed, transparent\n */\nconst ED = require('../core/element');\n\nfunction Navbar(props) {\n const {\n children,\n brand,\n brandHref = '/',\n brandIcon,\n links = [],\n className = '',\n style = {},\n sticky = false,\n fixed = false,\n transparent = false,\n colored = true,\n color = 'white',\n dark = false,\n shadow = true,\n bordered = false,\n height = 64,\n maxWidth,\n search = false,\n searchPlaceholder = 'Search...',\n onSearch,\n notifications = 0,\n onNotificationClick,\n userMenu,\n userName,\n userAvatar,\n userMenuItems = [],\n onUserMenuClick,\n mobileMenu = true,\n mobileOpen = false,\n onMobileToggle,\n onMobileClose,\n collapsed = false,\n rightContent,\n leftContent,\n centerContent,\n zIndex = 40,\n } = props;\n\n const positionClass = fixed\n ? 'ed-fixed ed-top-0 ed-left-0 ed-right-0'\n : sticky\n ? 'ed-sticky ed-top-0'\n : '';\n\n const bgClass = transparent\n ? 'ed-bg-transparent'\n : color === 'white'\n ? 'ed-bg-white'\n : color === 'dark'\n ? 'ed-bg-gray-900'\n : color === 'primary'\n ? 'ed-bg-blue-600'\n : color === 'custom'\n ? ''\n : 'ed-bg-white';\n\n const textClass = dark || color === 'dark' || color === 'primary'\n ? 'ed-text-white'\n : 'ed-text-gray-800';\n\n const navClasses = [\n 'ed-w-full ed-flex ed-items-center ed-px-4 lg:ed-px-6',\n positionClass,\n bgClass,\n textClass,\n shadow && !transparent ? 'ed-shadow-sm' : '',\n bordered ? 'ed-border-b ed-border-gray-200' : '',\n 'ed-transition-all ed-duration-200',\n 'ed-z-' + zIndex,\n className,\n ].filter(Boolean).join(' ');\n\n const brandElement = brand || brandIcon\n ? ED.createElement('a', {\n href: brandHref,\n className: 'ed-flex ed-items-center ed-gap-2 ed-font-bold ed-text-lg ed-no-underline ed-inherit ed-mr-6',\n }, [\n brandIcon\n ? ED.createElement('span', { key: 'icon', className: 'ed-w-8 ed-h-8 ed-flex ed-items-center ed-justify-center' },\n typeof brandIcon === 'string' ? ED.createElement('i', { className: brandIcon }) : brandIcon\n )\n : null,\n brand ? ED.createElement('span', { key: 'brand-text' }, brand) : null,\n ].filter(Boolean))\n : null;\n\n const linkElements = links.map((link, idx) => {\n if (link.children) {\n return ED.createElement('div', {\n key: idx,\n className: 'ed-relative ed-group',\n children: [\n ED.createElement('button', {\n className: `ed-px-3 ed-py-2 ed-rounded-md ed-text-sm ed-font-medium ed-transition-colors hover:ed-bg-gray-100 ed-flex ed-items-center ed-gap-1 ${textClass}`,\n children: [\n link.icon\n ? ED.createElement('i', { className: link.icon, key: 'icon' })\n : null,\n ED.createElement('span', { key: 'text' }, link.label),\n ED.createElement('svg', {\n key: 'arrow',\n className: 'ed-w-4 ed-h-4',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M19 9l-7 7-7-7' }),\n }),\n ],\n }),\n ED.createElement('div', {\n className: 'ed-absolute ed-left-0 ed-top-full ed-mt-1 ed-w-48 ed-bg-white ed-rounded-md ed-shadow-lg ed-border ed-border-gray-200 ed-opacity-0 ed-invisible group-hover:ed-opacity-100 group-hover:ed-visible ed-transition-all ed-duration-200 ed-z-50',\n children: link.children.map((child, cidx) =>\n child.divider\n ? ED.createElement('div', { key: cidx, className: 'ed-my-1 ed-border-t ed-border-gray-100' })\n : ED.createElement('a', {\n key: cidx,\n href: child.href || '#',\n className: 'ed-block ed-px-4 ed-py-2 ed-text-sm ed-text-gray-700 hover:ed-bg-gray-100 hover:ed-text-gray-900 ed-transition-colors',\n onClick: child.onClick,\n children: [\n child.icon ? ED.createElement('i', { className: `ed-mr-2 ${child.icon}`, key: 'icon' }) : null,\n child.label,\n ].filter(Boolean),\n })\n ),\n }),\n ],\n });\n }\n\n return ED.createElement('a', {\n key: idx,\n href: link.href || '#',\n className: `ed-px-3 ed-py-2 ed-rounded-md ed-text-sm ed-font-medium ed-transition-colors hover:ed-bg-gray-100 ${link.active ? 'ed-bg-gray-100 ed-font-semibold' : ''} ${textClass}`,\n onClick: link.onClick,\n children: [\n link.icon ? ED.createElement('i', { className: `ed-mr-2 ${link.icon}`, key: 'icon' }) : null,\n ED.createElement('span', { key: 'text' }, link.label),\n ].filter(Boolean),\n });\n });\n\n const searchElement = search\n ? ED.createElement('div', {\n className: 'ed-relative ed-mx-4',\n children: [\n ED.createElement('svg', {\n className: 'ed-absolute ed-left-3 ed-top-1/2 ed--translate-y-1/2 ed-w-4 ed-h-4 ed-text-gray-400',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z' }),\n }),\n ED.createElement('input', {\n className: 'ed-w-48 lg:ed-w-64 ed-pl-9 ed-pr-3 ed-py-1.5 ed-text-sm ed-border ed-border-gray-300 ed-rounded-md ed-bg-gray-50 focus:ed-bg-white focus:ed-outline-none focus:ed-ring-2 focus:ed-ring-blue-500 focus:ed-border-transparent ed-transition-all',\n placeholder: searchPlaceholder,\n type: 'search',\n onKeyDown: (e) => { if (e.key === 'Enter') onSearch?.(e.target.value); },\n }),\n ],\n })\n : null;\n\n const notificationElement = notifications > 0 || onNotificationClick\n ? ED.createElement('button', {\n className: `ed-relative ed-p-2 ed-rounded-full ed-transition-colors hover:ed-bg-gray-100 ${textClass}`,\n onClick: onNotificationClick,\n 'aria-label': 'Notifications',\n children: [\n ED.createElement('svg', {\n key: 'bell',\n className: 'ed-w-5 ed-h-5',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9' }),\n }),\n notifications > 0\n ? ED.createElement('span', {\n key: 'badge',\n className: 'ed-absolute ed-top-0 ed-right-0 ed-inline-flex ed-items-center ed-justify-center ed-w-4 ed-h-4 ed-text-xs ed-font-bold ed-text-white ed-bg-red-500 ed-rounded-full',\n }, notifications > 99 ? '99+' : notifications)\n : null,\n ],\n })\n : null;\n\n const userMenuElement = userMenu || userName || userAvatar\n ? ED.createElement('div', { className: 'ed-relative ed-group ed-ml-3' },\n ED.createElement('button', {\n className: 'ed-flex ed-items-center ed-gap-2 ed-p-1.5 ed-rounded-full ed-transition-colors hover:ed-bg-gray-100',\n children: [\n userAvatar\n ? ED.createElement('img', { src: userAvatar, className: 'ed-w-8 ed-h-8 ed-rounded-full ed-object-cover', alt: userName || 'User' })\n : ED.createElement('div', {\n className: 'ed-w-8 ed-h-8 ed-rounded-full ed-bg-blue-500 ed-flex ed-items-center ed-justify-center ed-text-white ed-text-sm ed-font-medium',\n }, userName?.charAt(0)?.toUpperCase() || 'U'),\n userName ? ED.createElement('span', { className: `ed-text-sm ed-font-medium ed-hidden md:ed-inline ${textClass}` }, userName) : null,\n ],\n }),\n userMenuItems.length > 0\n ? ED.createElement('div', {\n className: 'ed-absolute ed-right-0 ed-top-full ed-mt-1 ed-w-56 ed-bg-white ed-rounded-md ed-shadow-lg ed-border ed-border-gray-200 ed-opacity-0 ed-invisible group-hover:ed-opacity-100 group-hover:ed-visible ed-transition-all ed-duration-200 ed-z-50',\n children: userMenuItems.map((item, idx) =>\n item.divider\n ? ED.createElement('div', { key: idx, className: 'ed-my-1 ed-border-t ed-border-gray-100' })\n : ED.createElement('button', {\n key: idx,\n className: 'ed-w-full ed-text-left ed-px-4 ed-py-2 ed-text-sm ed-text-gray-700 hover:ed-bg-gray-100 ed-transition-colors ed-flex ed-items-center ed-gap-2',\n onClick: () => onUserMenuClick?.(item),\n children: [\n item.icon ? ED.createElement('i', { className: item.icon, key: 'icon' }) : null,\n item.label,\n item.danger ? '' : '',\n ].filter(Boolean),\n })\n ),\n })\n : null,\n )\n : null;\n\n const hamburgerElement = mobileMenu\n ? ED.createElement('button', {\n className: `ed-p-2 ed-rounded-md ed-transition-colors hover:ed-bg-gray-100 lg:ed-hidden ${textClass}`,\n onClick: onMobileToggle,\n 'aria-label': 'Toggle menu',\n children: ED.createElement('svg', {\n className: 'ed-w-6 ed-h-6',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: mobileOpen\n ? ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M6 18L18 6M6 6l12 12' })\n : ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M4 6h16M4 12h16M4 18h16' }),\n }),\n })\n : null;\n\n const mobileMenuOverlay = mobileOpen\n ? ED.createElement('div', {\n className: 'ed-fixed ed-inset-0 ed-bg-black ed-bg-opacity-50 lg:ed-hidden ed-z-40',\n onClick: onMobileClose,\n })\n : null;\n\n const mobileMenuPanel = mobileOpen\n ? ED.createElement('div', {\n className: 'ed-fixed ed-top-16 ed-left-0 ed-right-0 ed-bg-white ed-shadow-lg ed-border-b ed-border-gray-200 lg:ed-hidden ed-z-40 ed-p-4',\n children: links.map((link, idx) =>\n ED.createElement('a', {\n key: idx,\n href: link.href || '#',\n className: 'ed-block ed-px-4 ed-py-3 ed-text-gray-700 hover:ed-bg-gray-100 ed-rounded-md ed-transition-colors',\n onClick: (e) => { link.onClick?.(e); onMobileClose?.(); },\n children: [\n link.icon ? ED.createElement('i', { className: `ed-mr-3 ${link.icon}`, key: 'icon' }) : null,\n link.label,\n ].filter(Boolean),\n })\n ),\n })\n : null;\n\n return ED.createElement('nav', {\n className: navClasses,\n style: { height, zIndex, ...(maxWidth ? { maxWidth, margin: '0 auto' } : {}), ...style },\n children: [\n mobileMenuOverlay,\n brandElement,\n leftContent,\n ED.createElement('div', {\n key: 'links',\n className: 'ed-hidden lg:ed-flex ed-items-center ed-gap-1 ed-flex-1',\n children: linkElements,\n }),\n centerContent,\n searchElement,\n ED.createElement('div', { key: 'right', className: 'ed-flex ed-items-center ed-gap-2 ed-ml-auto' },\n notificationElement,\n userMenuElement,\n rightContent,\n hamburgerElement,\n ),\n mobileMenuPanel,\n ].filter(Boolean),\n });\n}\n\nNavbar.displayName = 'Navbar';\n\nmodule.exports = Navbar;\n","/**\n * Pagination Component for ElementDrawing Framework\n * Supports page numbers, prev/next, first/last, page size, total count, jumper, simple mode\n */\nconst ED = require('../core/element');\n\nfunction Pagination(props) {\n const {\n current = 1,\n pageSize = 10,\n total = 0,\n onChange,\n onPageSizeChange,\n showQuickJumper = false,\n showSizeChanger = false,\n showTotal = false,\n pageSizeOptions = [10, 20, 50, 100],\n className = '',\n style = {},\n simple = false,\n disabled = false,\n size = 'md',\n siblingCount = 1,\n boundaryCount = 1,\n hideOnSinglePage = false,\n showPrevNextJumpers = true,\n showFirstLast = false,\n showTitle = true,\n itemRender,\n prevIcon,\n nextIcon,\n jumpPrevIcon,\n jumpNextIcon,\n } = props;\n\n if (hideOnSinglePage && total <= pageSize) return null;\n\n const totalPages = Math.max(1, Math.ceil(total / pageSize));\n\n const sizeClasses = {\n sm: { btn: 'ed-w-7 ed-h-7 ed-text-xs', select: 'ed-text-xs ed-py-0.5', jumper: 'ed-text-xs ed-w-10' },\n md: { btn: 'ed-w-8 ed-h-8 ed-text-sm', select: 'ed-text-sm ed-py-1', jumper: 'ed-text-sm ed-w-12' },\n lg: { btn: 'ed-w-9 ed-h-9 ed-text-base', select: 'ed-text-base ed-py-1', jumper: 'ed-text-base ed-w-14' },\n };\n\n const sizeConfig = sizeClasses[size] || sizeClasses.md;\n\n const range = (start, end) => {\n const arr = [];\n for (let i = start; i <= end; i++) arr.push(i);\n return arr;\n };\n\n const generatePages = () => {\n const startPages = range(1, Math.min(boundaryCount, totalPages));\n const endPages = range(Math.max(totalPages - boundaryCount + 1, boundaryCount + 1), totalPages);\n const siblingsStart = Math.max(\n Math.min(current - siblingCount, totalPages - boundaryCount - siblingCount * 2 - 1),\n boundaryCount + 2\n );\n const siblingsEnd = Math.min(\n Math.max(current + siblingCount, boundaryCount + siblingCount * 2 + 2),\n endPages.length > 0 ? endPages[0] - 2 : totalPages - 1\n );\n\n const pages = [\n ...startPages,\n siblingsStart > startPages[startPages.length - 1] + 1 ? 'start-ellipsis' : null,\n ...range(siblingsStart, siblingsEnd),\n siblingsEnd < endPages[0] - 1 ? 'end-ellipsis' : null,\n ...endPages,\n ].filter((page, idx, arr) => page !== null && arr.indexOf(page) === idx);\n\n return pages;\n };\n\n const pageButton = (page, label, isActive = false, isDisabled = false) => {\n if (itemRender) return itemRender(page, label ? 'page' : 'page', isActive);\n\n return ED.createElement('button', {\n key: `page-${page}`,\n className: [\n sizeConfig.btn,\n 'ed-inline-flex ed-items-center ed-justify-center ed-rounded-md ed-border ed-transition-colors ed-duration-150',\n isActive\n ? 'ed-bg-blue-600 ed-text-white ed-border-blue-600 ed-font-medium'\n : isDisabled\n ? 'ed-border-gray-200 ed-text-gray-300 ed-cursor-not-allowed'\n : 'ed-border-gray-300 ed-text-gray-700 hover:ed-bg-gray-50',\n disabled ? 'ed-pointer-events-none ed-opacity-50' : '',\n ].filter(Boolean).join(' '),\n onClick: isDisabled || isActive ? undefined : () => onChange?.(page),\n disabled: isDisabled || isActive,\n 'aria-current': isActive ? 'page' : undefined,\n 'aria-label': `Page ${page}`,\n title: showTitle ? String(page) : undefined,\n children: label || page,\n });\n };\n\n const defaultPrevIcon = ED.createElement('svg', {\n className: 'ed-w-4 ed-h-4',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M15 19l-7-7 7-7' }),\n });\n\n const defaultNextIcon = ED.createElement('svg', {\n className: 'ed-w-4 ed-h-4',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M9 5l7 7-7 7' }),\n });\n\n if (simple) {\n return ED.createElement('div', {\n className: `ed-flex ed-items-center ed-gap-2 ${className}`,\n style,\n children: [\n ED.createElement('button', {\n key: 'prev',\n className: `${sizeConfig.btn} ed-inline-flex ed-items-center ed-justify-center ed-rounded-md ed-border ed-border-gray-300 ed-text-gray-700 hover:ed-bg-gray-50 ed-disabled:ed-opacity-50 ed-disabled:ed-cursor-not-allowed`,\n disabled: current <= 1 || disabled,\n onClick: () => onChange?.(current - 1),\n children: prevIcon || defaultPrevIcon,\n }),\n ED.createElement('span', { key: 'current', className: sizeConfig.btn.replace('ed-w-8', '').replace('ed-w-7', '').replace('ed-w-9', '') + ' ed-text-sm ed-text-gray-700' },\n `${current}`\n ),\n ED.createElement('span', { key: 'divider', className: 'ed-text-gray-400' }, '/'),\n ED.createElement('span', { key: 'total', className: 'ed-text-sm ed-text-gray-500' }, totalPages),\n ED.createElement('button', {\n key: 'next',\n className: `${sizeConfig.btn} ed-inline-flex ed-items-center ed-justify-center ed-rounded-md ed-border ed-border-gray-300 ed-text-gray-700 hover:ed-bg-gray-50 ed-disabled:ed-opacity-50 ed-disabled:ed-cursor-not-allowed`,\n disabled: current >= totalPages || disabled,\n onClick: () => onChange?.(current + 1),\n children: nextIcon || defaultNextIcon,\n }),\n ],\n });\n }\n\n const firstButton = showFirstLast\n ? ED.createElement('button', {\n key: 'first',\n className: `${sizeConfig.btn} ed-inline-flex ed-items-center ed-justify-center ed-rounded-md ed-border ed-border-gray-300 ed-text-gray-700 hover:ed-bg-gray-50 ed-disabled:ed-opacity-50 ed-disabled:ed-cursor-not-allowed`,\n disabled: current <= 1 || disabled,\n onClick: () => onChange?.(1),\n 'aria-label': 'First page',\n children: ED.createElement('svg', {\n className: 'ed-w-4 ed-h-4',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M11 19l-7-7 7-7M19 19l-7-7 7-7' }),\n }),\n })\n : null;\n\n const prevButton = ED.createElement('button', {\n key: 'prev',\n className: `${sizeConfig.btn} ed-inline-flex ed-items-center ed-justify-center ed-rounded-md ed-border ed-border-gray-300 ed-text-gray-700 hover:ed-bg-gray-50 ed-disabled:ed-opacity-50 ed-disabled:ed-cursor-not-allowed`,\n disabled: current <= 1 || disabled,\n onClick: () => onChange?.(current - 1),\n 'aria-label': 'Previous page',\n children: prevIcon || defaultPrevIcon,\n });\n\n const pages = generatePages();\n const pageButtons = pages.map((page, idx) => {\n if (page === 'start-ellipsis' || page === 'end-ellipsis') {\n return ED.createElement('span', {\n key: `ellipsis-${idx}`,\n className: `${sizeConfig.btn} ed-inline-flex ed-items-center ed-justify-center ed-text-gray-400`,\n children: '...',\n });\n }\n return pageButton(page, null, page === current);\n });\n\n const nextButton = ED.createElement('button', {\n key: 'next',\n className: `${sizeConfig.btn} ed-inline-flex ed-items-center ed-justify-center ed-rounded-md ed-border ed-border-gray-300 ed-text-gray-700 hover:ed-bg-gray-50 ed-disabled:ed-opacity-50 ed-disabled:ed-cursor-not-allowed`,\n disabled: current >= totalPages || disabled,\n onClick: () => onChange?.(current + 1),\n 'aria-label': 'Next page',\n children: nextIcon || defaultNextIcon,\n });\n\n const lastButton = showFirstLast\n ? ED.createElement('button', {\n key: 'last',\n className: `${sizeConfig.btn} ed-inline-flex ed-items-center ed-justify-center ed-rounded-md ed-border ed-border-gray-300 ed-text-gray-700 hover:ed-bg-gray-50 ed-disabled:ed-opacity-50 ed-disabled:ed-cursor-not-allowed`,\n disabled: current >= totalPages || disabled,\n onClick: () => onChange?.(totalPages),\n 'aria-label': 'Last page',\n children: ED.createElement('svg', {\n className: 'ed-w-4 ed-h-4',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M13 5l7 7-7 7M5 5l7 7-7 7' }),\n }),\n })\n : null;\n\n const sizeChanger = showSizeChanger\n ? ED.createElement('select', {\n key: 'size-changer',\n className: `${sizeConfig.select} ed-px-2 ed-border ed-border-gray-300 ed-rounded-md ed-bg-white ed-text-gray-700 ed-outline-none focus:ed-ring-1 focus:ed-ring-blue-500`,\n value: pageSize,\n onChange: (e) => onPageSizeChange?.(Number(e.target.value)),\n disabled,\n children: pageSizeOptions.map(opt =>\n ED.createElement('option', { key: opt, value: opt }, `${opt} / page`)\n ),\n })\n : null;\n\n const totalDisplay = showTotal\n ? ED.createElement('span', {\n key: 'total',\n className: 'ed-text-sm ed-text-gray-500 ed-mr-2',\n }, typeof showTotal === 'function'\n ? showTotal(total, [(current - 1) * pageSize + 1, Math.min(current * pageSize, total)])\n : `Total ${total} items`\n )\n : null;\n\n const jumper = showQuickJumper\n ? ED.createElement('div', {\n key: 'jumper',\n className: 'ed-flex ed-items-center ed-gap-2 ed-ml-2',\n children: [\n ED.createElement('span', { key: 'label', className: 'ed-text-sm ed-text-gray-500' }, 'Go to'),\n ED.createElement('input', {\n key: 'input',\n className: `${sizeConfig.jumper} ed-px-2 ed-py-1 ed-text-center ed-border ed-border-gray-300 ed-rounded-md ed-text-sm ed-outline-none focus:ed-ring-1 focus:ed-ring-blue-500`,\n type: 'number',\n min: 1,\n max: totalPages,\n disabled,\n onKeyDown: (e) => {\n if (e.key === 'Enter') {\n const val = parseInt(e.target.value, 10);\n if (val >= 1 && val <= totalPages) onChange?.(val);\n }\n },\n }),\n ],\n })\n : null;\n\n return ED.createElement('nav', {\n className: `ed-flex ed-items-center ed-gap-1 ed-flex-wrap ${className}`,\n style,\n role: 'navigation',\n 'aria-label': 'Pagination',\n children: [\n totalDisplay,\n firstButton,\n prevButton,\n ...pageButtons,\n nextButton,\n lastButton,\n sizeChanger,\n jumper,\n ].filter(Boolean),\n });\n}\n\nPagination.displayName = 'Pagination';\n\nmodule.exports = Pagination;\n","/**\n * Progress Component for ElementDrawing Framework\n * Supports bar, circle, dashboard variants, sizes, colors, animation, striped, label, step progress\n */\nconst ED = require('../core/element');\n\nconst PROGRESS_COLORS = {\n blue: '#3b82f6',\n green: '#22c55e',\n red: '#ef4444',\n yellow: '#eab308',\n purple: '#a855f7',\n cyan: '#06b6d4',\n orange: '#f97316',\n};\n\nconst SIZE_CONFIGS = {\n sm: { barHeight: 6, circleSize: 80, circleStroke: 6, fontSize: 'ed-text-xs' },\n md: { barHeight: 10, circleSize: 120, circleStroke: 8, fontSize: 'ed-text-sm' },\n lg: { barHeight: 16, circleSize: 160, circleStroke: 10, fontSize: 'ed-text-base' },\n};\n\nfunction ProgressBar(props) {\n const {\n percent = 0,\n color = 'blue',\n size = 'md',\n showLabel = true,\n label,\n striped = false,\n animated = false,\n status,\n className = '',\n style = {},\n trailColor,\n borderRadius,\n steps,\n } = props;\n\n const sizeConfig = SIZE_CONFIGS[size] || SIZE_CONFIGS.md;\n const clampedPercent = Math.min(100, Math.max(0, percent));\n\n const statusColor = status === 'success' ? PROGRESS_COLORS.green\n : status === 'error' || status === 'danger' ? PROGRESS_COLORS.red\n : typeof color === 'string' ? (PROGRESS_COLORS[color] || color)\n : color;\n\n const bgColor = trailColor || '#e5e7eb';\n\n if (steps) {\n const stepWidth = 100 / steps;\n return ED.createElement('div', {\n className: `ed-w-full ${className}`,\n style,\n children: ED.createElement('div', {\n className: 'ed-flex ed-gap-1',\n children: Array.from({ length: steps }, (_, i) => {\n const isFilled = i < Math.floor(clampedPercent / stepWidth);\n return ED.createElement('div', {\n key: i,\n className: [\n 'ed-h-2 ed-flex-1 ed-rounded-sm ed-transition-all ed-duration-300',\n ].join(' '),\n style: {\n backgroundColor: isFilled ? statusColor : bgColor,\n },\n });\n }),\n }),\n });\n }\n\n const barClasses = [\n 'ed-w-full ed-overflow-hidden',\n borderRadius ? `ed-rounded-${borderRadius}` : 'ed-rounded-full',\n ].filter(Boolean).join(' ');\n\n const fillClasses = [\n 'ed-h-full ed-transition-all ed-duration-500 ed-ease-out',\n borderRadius ? `ed-rounded-${borderRadius}` : 'ed-rounded-full',\n striped ? 'ed-bg-stripes' : '',\n animated ? 'ed-animate-stripes' : '',\n ].filter(Boolean).join(' ');\n\n return ED.createElement('div', { className: `ed-w-full ${className}`, style },\n showLabel\n ? ED.createElement('div', {\n className: `ed-flex ed-items-center ed-justify-between ed-mb-1 ${sizeConfig.fontSize}`,\n children: [\n label ? ED.createElement('span', { className: 'ed-text-gray-700' }, label) : null,\n ED.createElement('span', {\n className: [\n 'ed-font-medium',\n status === 'success' ? 'ed-text-green-600' : status === 'error' ? 'ed-text-red-600' : 'ed-text-gray-600',\n ].join(' '),\n }, `${Math.round(clampedPercent)}%`),\n ].filter(Boolean),\n })\n : null,\n ED.createElement('div', {\n className: barClasses,\n style: { height: sizeConfig.barHeight, backgroundColor: bgColor },\n role: 'progressbar',\n 'aria-valuenow': clampedPercent,\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n children: ED.createElement('div', {\n className: fillClasses,\n style: {\n width: `${clampedPercent}%`,\n backgroundColor: statusColor,\n backgroundImage: striped\n ? 'linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)'\n : undefined,\n backgroundSize: striped ? '1rem 1rem' : undefined,\n },\n }),\n }),\n status === 'success' && !showLabel\n ? ED.createElement('svg', {\n className: 'ed-w-4 ed-h-4 ed-text-green-500 ed-ml-2 ed-inline',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M5 13l4 4L19 7' }),\n })\n : null,\n );\n}\n\nProgressBar.displayName = 'ProgressBar';\n\nfunction ProgressCircle(props) {\n const {\n percent = 0,\n color = 'blue',\n size = 'md',\n showLabel = true,\n status,\n className = '',\n style = {},\n trailColor = '#e5e7eb',\n strokeWidth,\n gapDegree = 0,\n gapPosition = 'bottom',\n type = 'circle',\n } = props;\n\n const sizeConfig = SIZE_CONFIGS[size] || SIZE_CONFIGS.md;\n const clampedPercent = Math.min(100, Math.max(0, percent));\n\n const statusColor = status === 'success' ? PROGRESS_COLORS.green\n : status === 'error' || status === 'danger' ? PROGRESS_COLORS.red\n : typeof color === 'string' ? (PROGRESS_COLORS[color] || color)\n : color;\n\n const circleSize = sizeConfig.circleSize;\n const circleStroke = strokeWidth || sizeConfig.circleStroke;\n const isDashboard = type === 'dashboard';\n const effectiveGap = isDashboard ? gapDegree || 75 : gapDegree;\n\n const radius = (circleSize - circleStroke) / 2;\n const circumference = 2 * Math.PI * radius;\n const strokeDashoffset = circumference * (1 - clampedPercent / 100);\n\n const center = circleSize / 2;\n const rotation = isDashboard ? 90 + effectiveGap / 2 : -90;\n const dashArray = effectiveGap > 0\n ? `${(circumference * (360 - effectiveGap)) / 360} ${circumference}`\n : circumference;\n\n const statusIcon = status === 'success'\n ? ED.createElement('svg', {\n className: 'ed-w-8 ed-h-8 ed-text-green-500',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M5 13l4 4L19 7' }),\n })\n : status === 'error'\n ? ED.createElement('svg', {\n className: 'ed-w-8 ed-h-8 ed-text-red-500',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M6 18L18 6M6 6l12 12' }),\n })\n : null;\n\n return ED.createElement('div', {\n className: `ed-inline-flex ed-items-center ed-justify-center ed-relative ${className}`,\n style,\n role: 'progressbar',\n 'aria-valuenow': clampedPercent,\n children: [\n ED.createElement('svg', {\n key: 'svg',\n width: circleSize,\n height: circleSize,\n viewBox: `0 0 ${circleSize} ${circleSize}`,\n style: { transform: `rotate(${rotation}deg)` },\n children: [\n ED.createElement('circle', {\n key: 'trail',\n cx: center,\n cy: center,\n r: radius,\n fill: 'none',\n stroke: trailColor,\n strokeWidth: circleStroke,\n strokeDasharray: dashArray,\n strokeLinecap: 'round',\n }),\n ED.createElement('circle', {\n key: 'fill',\n cx: center,\n cy: center,\n r: radius,\n fill: 'none',\n stroke: statusColor,\n strokeWidth: circleStroke,\n strokeDasharray: dashArray,\n strokeDashoffset,\n strokeLinecap: 'round',\n style: { transition: 'stroke-dashoffset 0.5s ease' },\n }),\n ],\n }),\n showLabel\n ? ED.createElement('div', {\n key: 'label',\n className: 'ed-absolute ed-inset-0 ed-flex ed-items-center ed-justify-center',\n children: statusIcon || ED.createElement('span', {\n className: `${sizeConfig.fontSize} ed-font-semibold ed-text-gray-700`,\n }, `${Math.round(clampedPercent)}%`),\n })\n : null,\n ],\n });\n}\n\nProgressCircle.displayName = 'ProgressCircle';\n\nfunction Progress(props) {\n const { type = 'bar' } = props;\n if (type === 'circle' || type === 'dashboard') {\n return ProgressCircle({ ...props, type });\n }\n return ProgressBar(props);\n}\n\nProgress.displayName = 'Progress';\nProgress.Bar = ProgressBar;\nProgress.Circle = ProgressCircle;\nProgress.COLORS = PROGRESS_COLORS;\nProgress.SIZES = SIZE_CONFIGS;\n\nmodule.exports = Progress;\n","/**\n * Radio Component for ElementDrawing Framework\n * Supports sizes, button style, group, disabled, custom icon, color variants, horizontal/vertical layout\n */\nconst ED = require('../core/element');\n\nconst RADIO_SIZES = {\n xs: { circle: 'ed-w-3.5 ed-h-3.5', inner: 'ed-w-1.5 ed-h-1.5', label: 'ed-text-xs' },\n sm: { circle: 'ed-w-4 ed-h-4', inner: 'ed-w-2 ed-h-2', label: 'ed-text-sm' },\n md: { circle: 'ed-w-4.5 ed-h-4.5', inner: 'ed-w-2 ed-h-2', label: 'ed-text-sm' },\n lg: { circle: 'ed-w-5 ed-h-5', inner: 'ed-w-2.5 ed-h-2.5', label: 'ed-text-base' },\n xl: { circle: 'ed-w-6 ed-h-6', inner: 'ed-w-3 ed-h-3', label: 'ed-text-lg' },\n};\n\nconst RADIO_COLORS = {\n blue: { checked: 'ed-border-blue-600 ed-ring-blue-500', inner: 'ed-bg-blue-600' },\n green: { checked: 'ed-border-green-600 ed-ring-green-500', inner: 'ed-bg-green-600' },\n red: { checked: 'ed-border-red-600 ed-ring-red-500', inner: 'ed-bg-red-600' },\n yellow: { checked: 'ed-border-yellow-500 ed-ring-yellow-400', inner: 'ed-bg-yellow-500' },\n purple: { checked: 'ed-border-purple-600 ed-ring-purple-500', inner: 'ed-bg-purple-600' },\n gray: { checked: 'ed-border-gray-600 ed-ring-gray-500', inner: 'ed-bg-gray-600' },\n};\n\nfunction Radio(props) {\n const {\n checked,\n defaultChecked = false,\n onChange,\n disabled = false,\n label,\n children,\n size = 'md',\n color = 'blue',\n buttonStyle = false,\n className = '',\n style = {},\n id,\n name,\n value,\n icon,\n autoFocus = false,\n tabIndex,\n onFocus,\n onBlur,\n error = false,\n } = props;\n\n const sizeConfig = RADIO_SIZES[size] || RADIO_SIZES.md;\n const colorConfig = RADIO_COLORS[color] || RADIO_COLORS.blue;\n const isChecked = checked !== undefined ? checked : defaultChecked;\n\n if (buttonStyle) {\n const buttonClasses = [\n 'ed-inline-flex ed-items-center ed-justify-center ed-px-4 ed-py-2 ed-text-sm ed-font-medium ed-border ed-transition-colors ed-duration-200',\n isChecked\n ? 'ed-bg-blue-600 ed-text-white ed-border-blue-600 ed-z-10'\n : 'ed-bg-white ed-text-gray-700 ed-border-gray-300 hover:ed-bg-gray-50',\n disabled ? 'ed-opacity-50 ed-cursor-not-allowed' : 'ed-cursor-pointer',\n 'ed--ml-px ed-first:ml-0 ed-first:rounded-l-md ed-last:rounded-r-md',\n className,\n ].filter(Boolean).join(' ');\n\n return ED.createElement('label', { className: buttonClasses, style },\n ED.createElement('input', {\n type: 'radio',\n checked: isChecked,\n onChange: disabled ? undefined : onChange,\n disabled,\n id,\n name,\n value,\n className: 'ed-sr-only',\n autoFocus,\n tabIndex,\n onFocus,\n onBlur,\n }),\n icon\n ? ED.createElement('span', { className: 'ed-mr-1.5' },\n typeof icon === 'string' ? ED.createElement('i', { className: icon }) : icon\n )\n : null,\n label || children\n );\n }\n\n const circleClasses = [\n 'ed-relative ed-inline-flex ed-items-center ed-justify-center ed-border-2 ed-rounded-full ed-transition-all ed-duration-200',\n sizeConfig.circle,\n isChecked\n ? `${colorConfig.checked} ed-border-2`\n : 'ed-border-gray-300 ed-bg-white',\n disabled ? 'ed-opacity-50 ed-cursor-not-allowed' : 'ed-cursor-pointer',\n error && !isChecked ? 'ed-border-red-500' : '',\n 'focus:ed-ring-2 focus:ed-ring-offset-1',\n ].filter(Boolean).join(' ');\n\n const innerDot = isChecked\n ? ED.createElement('span', {\n className: `${sizeConfig.inner} ${colorConfig.inner} ed-rounded-full`,\n })\n : null;\n\n const labelContent = label || children;\n const labelClasses = [\n sizeConfig.label,\n disabled ? 'ed-text-gray-400 ed-cursor-not-allowed' : 'ed-text-gray-700 ed-cursor-pointer',\n 'ed-select-none',\n ].filter(Boolean).join(' ');\n\n return ED.createElement('label', {\n className: `ed-inline-flex ed-items-center ed-gap-2 ${disabled ? 'ed-cursor-not-allowed' : 'ed-cursor-pointer'} ${className}`,\n style,\n }, [\n ED.createElement('input', {\n key: 'input',\n type: 'radio',\n checked: isChecked,\n onChange: disabled ? undefined : onChange,\n disabled,\n id,\n name,\n value,\n className: 'ed-sr-only',\n autoFocus,\n tabIndex,\n onFocus,\n onBlur,\n }),\n ED.createElement('span', { key: 'circle', className: circleClasses, children: innerDot }),\n labelContent\n ? ED.createElement('span', { key: 'label', className: labelClasses }, labelContent)\n : null,\n ]);\n}\n\nRadio.displayName = 'Radio';\n\nfunction RadioGroup(props) {\n const {\n children,\n options = [],\n value,\n defaultValue,\n onChange,\n disabled = false,\n direction = 'horizontal',\n size = 'md',\n color = 'blue',\n buttonStyle = false,\n className = '',\n style = {},\n name,\n optionType = 'default',\n } = props;\n\n const currentValue = value !== undefined ? value : defaultValue;\n\n const handleChange = (optionValue) => {\n if (disabled) return;\n onChange?.({ target: { value: optionValue } });\n };\n\n const directionClasses = {\n horizontal: 'ed-flex ed-flex-wrap ed-gap-2',\n vertical: 'ed-flex ed-flex-col ed-gap-2',\n };\n\n const groupClasses = [\n directionClasses[direction] || directionClasses.horizontal,\n buttonStyle ? 'ed-inline-flex' : '',\n className,\n ].filter(Boolean).join(' ');\n\n const isButtonStyle = buttonStyle || optionType === 'button';\n\n const optionElements = options.length > 0\n ? options.map((option, idx) => {\n const opt = typeof option === 'string' ? { label: option, value: option } : option;\n return ED.createElement(Radio, {\n key: opt.value || idx,\n checked: currentValue === opt.value,\n onChange: () => handleChange(opt.value),\n disabled: disabled || opt.disabled,\n label: opt.label,\n size,\n color,\n buttonStyle: isButtonStyle,\n value: opt.value,\n name,\n });\n })\n : children;\n\n return ED.createElement('div', {\n className: groupClasses,\n style,\n role: 'radiogroup',\n children: optionElements,\n });\n}\n\nRadioGroup.displayName = 'RadioGroup';\nRadio.Group = RadioGroup;\nRadio.SIZES = RADIO_SIZES;\nRadio.COLORS = RADIO_COLORS;\n\nmodule.exports = Radio;\n","/**\n * Select Component for ElementDrawing Framework\n * Supports search, multiple, tags, group options, custom render, remote search, clearable, creatable, virtual scroll\n */\nconst ED = require('../core/element');\n\nconst SELECT_SIZES = {\n sm: 'ed-text-sm ed-px-2 ed-py-1',\n md: 'ed-text-sm ed-px-3 ed-py-1.5',\n lg: 'ed-text-base ed-px-3 ed-py-2.5',\n};\n\nfunction Option(props) {\n const {\n children,\n value,\n label,\n disabled = false,\n selected = false,\n active = false,\n icon,\n description,\n className = '',\n style = {},\n onClick,\n onMouseEnter,\n } = props;\n\n const optionClasses = [\n 'ed-flex ed-items-center ed-px-3 ed-py-2 ed-text-sm ed-cursor-pointer ed-transition-colors ed-duration-150 ed-gap-2',\n disabled\n ? 'ed-text-gray-400 ed-cursor-not-allowed'\n : selected\n ? 'ed-bg-blue-50 ed-text-blue-700 ed-font-medium'\n : active\n ? 'ed-bg-gray-50 ed-text-gray-900'\n : 'ed-text-gray-700 hover:ed-bg-gray-50',\n className,\n ].filter(Boolean).join(' ');\n\n const checkIcon = selected\n ? ED.createElement('svg', {\n className: 'ed-w-4 ed-h-4 ed-text-blue-600 ed-flex-shrink-0',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M5 13l4 4L19 7' }),\n })\n : null;\n\n const iconElement = icon\n ? ED.createElement('span', { className: 'ed-w-4 ed-h-4 ed-flex ed-items-center ed-justify-center ed-flex-shrink-0' },\n typeof icon === 'string' ? ED.createElement('i', { className: icon }) : icon\n )\n : null;\n\n return ED.createElement('div', {\n className: optionClasses,\n style,\n onClick: disabled ? undefined : onClick,\n onMouseEnter,\n role: 'option',\n 'aria-selected': selected,\n 'aria-disabled': disabled,\n children: [\n checkIcon,\n iconElement,\n ED.createElement('div', { className: 'ed-flex-1 ed-min-w-0' }, [\n ED.createElement('span', { key: 'label', className: 'ed-truncate ed-block' }, children || label),\n description\n ? ED.createElement('span', { key: 'desc', className: 'ed-text-xs ed-text-gray-400 ed-block' }, description)\n : null,\n ].filter(Boolean)),\n ],\n });\n}\n\nOption.displayName = 'Option';\n\nfunction OptionGroup(props) {\n const {\n children,\n label,\n className = '',\n style = {},\n } = props;\n\n return ED.createElement('div', { className, style, role: 'optgroup' }, [\n label\n ? ED.createElement('div', {\n key: 'label',\n className: 'ed-px-3 ed-py-1.5 ed-text-xs ed-font-semibold ed-text-gray-400 ed-uppercase ed-tracking-wider',\n }, label)\n : null,\n children,\n ]);\n}\n\nOptionGroup.displayName = 'OptionGroup';\n\nfunction Select(props) {\n const {\n value,\n defaultValue,\n onChange,\n options = [],\n placeholder = 'Select...',\n searchable = false,\n multiple = false,\n tags = false,\n clearable = false,\n disabled = false,\n loading = false,\n size = 'md',\n className = '',\n style = {},\n dropdownClassName = '',\n dropdownStyle = {},\n open: controlledOpen,\n onDropdownVisibleChange,\n onSearch,\n remoteSearch = false,\n creatable = false,\n onCreateOption,\n virtual = false,\n maxTagCount,\n maxTagTextLength,\n label,\n labelKey = 'label',\n valueKey = 'value',\n groupByKey,\n renderOption,\n renderValue,\n suffixIcon,\n prefixIcon,\n emptyText = 'No options',\n notFoundContent,\n showArrow = true,\n allowClear,\n filterOption,\n menuItemSelectedIcon,\n dropdownRender,\n onClear,\n onFocus,\n onBlur,\n id,\n name,\n required = false,\n error = false,\n bordered = true,\n status,\n } = props;\n\n const isOpen = controlledOpen !== undefined ? controlledOpen : false;\n const currentValue = value !== undefined ? value : defaultValue;\n const isMultiple = multiple || tags;\n const currentError = error || status === 'error';\n\n const sizeClass = SELECT_SIZES[size] || SELECT_SIZES.md;\n\n const selectedOptions = Array.isArray(currentValue)\n ? options.filter(opt => currentValue.includes(typeof opt === 'object' ? opt[valueKey] : opt))\n : options.filter(opt => (typeof opt === 'object' ? opt[valueKey] : opt) === currentValue);\n\n const selectedLabel = isMultiple\n ? selectedOptions.map(opt => typeof opt === 'object' ? opt[labelKey] : opt)\n : selectedOptions[0]\n ? (typeof selectedOptions[0] === 'object' ? selectedOptions[0][labelKey] : selectedOptions[0])\n : '';\n\n const triggerClasses = [\n 'ed-flex ed-items-center ed-w-full ed-rounded-md ed-transition-colors ed-duration-200 ed-gap-1',\n sizeClass,\n bordered ? 'ed-border' : 'ed-border-0',\n currentError ? 'ed-border-red-500' : 'ed-border-gray-300',\n disabled ? 'ed-bg-gray-100 ed-cursor-not-allowed ed-text-gray-400' : 'ed-bg-white ed-cursor-pointer ed-text-gray-900',\n 'hover:ed-border-gray-400 focus-within:ed-ring-2 focus-within:ed-ring-blue-500 focus-within:ed-border-blue-500',\n isOpen ? 'ed-ring-2 ed-ring-blue-500 ed-border-blue-500' : '',\n className,\n ].filter(Boolean).join(' ');\n\n const arrowIcon = showArrow && !loading\n ? ED.createElement('svg', {\n className: `ed-w-4 ed-h-4 ed-text-gray-400 ed-transition-transform ed-duration-200 ed-flex-shrink-0 ${isOpen ? 'ed-rotate-180' : ''}`,\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M19 9l-7 7-7-7' }),\n })\n : null;\n\n const loadingIcon = loading\n ? ED.createElement('div', { className: 'ed-w-4 ed-h-4 ed-border-2 ed-border-blue-500 ed-border-t-transparent ed-rounded-full ed-animate-spin ed-flex-shrink-0' })\n : null;\n\n const clearIcon = (clearable || allowClear) && currentValue && !disabled\n ? ED.createElement('button', {\n className: 'ed-flex ed-items-center ed-justify-center ed-text-gray-400 hover:ed-text-gray-600 ed-transition-colors ed-flex-shrink-0',\n onClick: (e) => { e.stopPropagation(); onClear?.(); onChange?.(isMultiple ? [] : undefined); },\n tabIndex: -1,\n children: ED.createElement('svg', {\n className: 'ed-w-4 ed-h-4',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M6 18L18 6M6 6l12 12' }),\n }),\n })\n : null;\n\n const prefixElement = prefixIcon\n ? ED.createElement('span', { className: 'ed-text-gray-400 ed-flex-shrink-0' },\n typeof prefixIcon === 'string' ? ED.createElement('i', { className: prefixIcon }) : prefixIcon\n )\n : null;\n\n const searchInput = searchable && isOpen\n ? ED.createElement('input', {\n className: 'ed-flex-1 ed-outline-none ed-bg-transparent ed-text-sm ed-placeholder-ed-text-gray-400',\n placeholder: selectedLabel || placeholder,\n onChange: (e) => onSearch?.(e.target.value),\n autoFocus: true,\n })\n : null;\n\n const tagElements = isMultiple && selectedOptions.length > 0\n ? selectedOptions.slice(0, maxTagCount || selectedOptions.length).map((opt, idx) =>\n ED.createElement('span', {\n key: idx,\n className: 'ed-inline-flex ed-items-center ed-gap-1 ed-px-2 ed-py-0.5 ed-text-xs ed-bg-blue-100 ed-text-blue-800 ed-rounded ed-font-medium',\n children: [\n ED.createElement('span', { key: 'text' },\n maxTagTextLength && (typeof opt === 'object' ? opt[labelKey] : opt).length > maxTagTextLength\n ? (typeof opt === 'object' ? opt[labelKey] : opt).slice(0, maxTagTextLength) + '...'\n : typeof opt === 'object' ? opt[labelKey] : opt\n ),\n ED.createElement('button', {\n key: 'remove',\n className: 'ed-hover:ed-text-red-500 ed-transition-colors',\n onClick: (e) => {\n e.stopPropagation();\n const optVal = typeof opt === 'object' ? opt[valueKey] : opt;\n onChange?.(currentValue.filter(v => v !== optVal));\n },\n children: ED.createElement('svg', { className: 'ed-w-3 ed-h-3', fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor' },\n ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M6 18L18 6M6 6l12 12' })\n ),\n }),\n ],\n })\n )\n : null;\n\n const maxTagElement = isMultiple && maxTagCount && selectedOptions.length > maxTagCount\n ? ED.createElement('span', {\n className: 'ed-text-xs ed-text-gray-500',\n }, `+${selectedOptions.length - maxTagCount}`)\n : null;\n\n const displayValue = !isMultiple && !searchable\n ? renderValue\n ? renderValue(selectedOptions[0])\n : selectedLabel || ED.createElement('span', { className: 'ed-text-gray-400' }, placeholder)\n : null;\n\n const filteredOptions = options;\n const grouped = groupByKey && filteredOptions.some(opt => typeof opt === 'object' && opt[groupByKey]);\n\n const renderOptions = () => {\n if (grouped) {\n const groups = {};\n filteredOptions.forEach(opt => {\n const group = typeof opt === 'object' ? opt[groupByKey] : 'Other';\n if (!groups[group]) groups[group] = [];\n groups[group].push(opt);\n });\n return Object.entries(groups).flatMap(([groupLabel, groupOptions]) =>\n ED.createElement(OptionGroup, { key: groupLabel, label: groupLabel },\n ...groupOptions.map((opt, idx) => {\n const optVal = typeof opt === 'object' ? opt[valueKey] : opt;\n const optLabel = typeof opt === 'object' ? opt[labelKey] : opt;\n return ED.createElement(Option, {\n key: optVal || idx,\n value: optVal,\n label: optLabel,\n disabled: opt.disabled,\n selected: isMultiple\n ? currentValue?.includes(optVal)\n : currentValue === optVal,\n icon: opt.icon,\n description: opt.description,\n onClick: () => {\n if (isMultiple) {\n const newVal = currentValue?.includes(optVal)\n ? currentValue.filter(v => v !== optVal)\n : [...(currentValue || []), optVal];\n onChange?.(newVal);\n } else {\n onChange?.(optVal);\n onDropdownVisibleChange?.(false);\n }\n },\n }, renderOption ? renderOption(opt) : optLabel);\n })\n )\n );\n }\n\n return filteredOptions.map((opt, idx) => {\n const optVal = typeof opt === 'object' ? opt[valueKey] : opt;\n const optLabel = typeof opt === 'object' ? opt[labelKey] : opt;\n return ED.createElement(Option, {\n key: optVal || idx,\n value: optVal,\n label: optLabel,\n disabled: opt.disabled,\n selected: isMultiple\n ? currentValue?.includes(optVal)\n : currentValue === optVal,\n icon: opt.icon,\n description: opt.description,\n onClick: () => {\n if (isMultiple) {\n const newVal = currentValue?.includes(optVal)\n ? currentValue.filter(v => v !== optVal)\n : [...(currentValue || []), optVal];\n onChange?.(newVal);\n } else {\n onChange?.(optVal);\n onDropdownVisibleChange?.(false);\n }\n },\n }, renderOption ? renderOption(opt) : optLabel);\n });\n };\n\n const createOption = creatable && searchable\n ? ED.createElement('div', {\n className: 'ed-px-3 ed-py-2 ed-text-sm ed-text-blue-600 ed-cursor-pointer hover:ed-bg-blue-50 ed-transition-colors',\n }, `Create option`)\n : null;\n\n const dropdownContent = ED.createElement('div', {\n className: [\n 'ed-absolute ed-left-0 ed-right-0 ed-top-full ed-mt-1 ed-bg-white ed-rounded-md ed-shadow-lg ed-border ed-border-gray-200 ed-z-50',\n 'ed-max-h-60 ed-overflow-y-auto ed-py-1',\n dropdownClassName,\n ].filter(Boolean).join(' '),\n style: dropdownStyle,\n role: 'listbox',\n children: [\n filteredOptions.length > 0\n ? renderOptions()\n : ED.createElement('div', { className: 'ed-px-3 ed-py-4 ed-text-center ed-text-sm ed-text-gray-400' },\n notFoundContent || emptyText\n ),\n createOption,\n ],\n });\n\n return ED.createElement('div', {\n className: 'ed-relative ed-inline-flex ed-flex-col',\n style,\n }, [\n label\n ? ED.createElement('label', {\n key: 'label',\n htmlFor: id,\n className: `ed-block ed-text-sm ed-font-medium ed-mb-1 ${required ? \"ed-after:content-['*'] ed-after:ed-text-red-500\" : ''} ed-text-gray-700`,\n }, label)\n : null,\n ED.createElement('div', {\n key: 'trigger',\n className: triggerClasses,\n onClick: () => { if (!disabled) onDropdownVisibleChange?.(!isOpen); },\n onFocus,\n onBlur,\n role: 'combobox',\n 'aria-expanded': isOpen,\n 'aria-haspopup': 'listbox',\n tabIndex: disabled ? -1 : 0,\n children: [\n prefixElement,\n ED.createElement('div', { key: 'value-area', className: 'ed-flex-1 ed-flex ed-items-center ed-flex-wrap ed-gap-1 ed-min-w-0' },\n tagElements,\n maxTagElement,\n searchInput,\n displayValue,\n ),\n clearIcon,\n loadingIcon || arrowIcon,\n ],\n }),\n isOpen ? dropdownContent : null,\n ]);\n}\n\nSelect.displayName = 'Select';\nSelect.Option = Option;\nSelect.OptionGroup = OptionGroup;\nSelect.SIZES = SELECT_SIZES;\n\nmodule.exports = Select;\n","/**\n * Sidebar Component for ElementDrawing Framework\n * Supports collapsible, menu items, nested items, icons, badges, active state, mini mode, overlay, responsive\n */\nconst ED = require('../core/element');\n\nfunction SidebarItem(props) {\n const {\n label,\n icon,\n badge,\n badgeColor = 'blue',\n active = false,\n disabled = false,\n children: nestedItems,\n href,\n onClick,\n className = '',\n style = {},\n indent = 0,\n mini = false,\n expanded = false,\n onToggle,\n depth = 0,\n } = props;\n\n const hasChildren = nestedItems && nestedItems.length > 0;\n const badgeColorClasses = {\n blue: 'ed-bg-blue-500 ed-text-white',\n red: 'ed-bg-red-500 ed-text-white',\n green: 'ed-bg-green-500 ed-text-white',\n yellow: 'ed-bg-yellow-500 ed-text-white',\n gray: 'ed-bg-gray-500 ed-text-white',\n };\n\n const itemClasses = [\n 'ed-flex ed-items-center ed-px-3 ed-py-2.5 ed-rounded-lg ed-text-sm ed-transition-all ed-duration-200 ed-group',\n active\n ? 'ed-bg-blue-50 ed-text-blue-700 ed-font-medium'\n : 'ed-text-gray-700 hover:ed-bg-gray-100 hover:ed-text-gray-900',\n disabled ? 'ed-opacity-50 ed-cursor-not-allowed ed-pointer-events-none' : 'ed-cursor-pointer',\n mini ? 'ed-justify-center ed-px-2' : '',\n className,\n ].filter(Boolean).join(' ');\n\n const badgeElement = badge !== undefined && !mini\n ? ED.createElement('span', {\n className: [\n 'ed-ml-auto ed-px-2 ed-py-0.5 ed-text-xs ed-font-medium ed-rounded-full',\n badgeColorClasses[badgeColor] || badgeColorClasses.blue,\n ].join(' '),\n }, typeof badge === 'number' && badge > 99 ? '99+' : badge)\n : null;\n\n const iconElement = icon\n ? ED.createElement('span', {\n className: `${mini ? '' : 'ed-mr-3'} ed-flex-shrink-0 ed-w-5 ed-h-5 ed-flex ed-items-center ed-justify-center`,\n children: typeof icon === 'string' ? ED.createElement('i', { className: icon }) : icon,\n })\n : null;\n\n const expandIcon = hasChildren && !mini\n ? ED.createElement('svg', {\n className: `ed-ml-auto ed-w-4 ed-h-4 ed-transition-transform ed-duration-200 ${expanded ? 'ed-rotate-90' : ''} ${active ? 'ed-text-blue-500' : 'ed-text-gray-400'}`,\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M9 5l7 7-7 7' }),\n })\n : null;\n\n const labelElement = !mini\n ? ED.createElement('span', { className: 'ed-flex-1 ed-truncate' }, label)\n : null;\n\n const tooltipElement = mini\n ? ED.createElement('div', {\n className: 'ed-absolute ed-left-full ed-ml-2 ed-px-2 ed-py-1 ed-bg-gray-900 ed-text-white ed-text-xs ed-rounded ed-whitespace-nowrap ed-opacity-0 group-hover:ed-opacity-100 ed-transition-opacity ed-pointer-events-none ed-z-50',\n }, label)\n : null;\n\n const handleClick = (e) => {\n if (disabled) return;\n if (hasChildren) {\n onToggle?.();\n } else {\n onClick?.(e);\n }\n };\n\n const nestedElement = hasChildren && expanded && !mini\n ? ED.createElement('div', {\n className: 'ed-ml-4 ed-mt-1 ed-space-y-0.5 ed-border-l ed-border-gray-200 ed-pl-3',\n children: nestedItems,\n })\n : null;\n\n return ED.createElement('div', {\n className: 'ed-relative',\n style: { paddingLeft: `${indent * 8}px` },\n }, [\n ED.createElement('a', {\n key: 'item',\n href: disabled ? undefined : href,\n className: itemClasses,\n style,\n onClick: handleClick,\n 'aria-current': active ? 'page' : undefined,\n role: 'menuitem',\n tabIndex: disabled ? -1 : 0,\n children: [iconElement, labelElement, badgeElement, expandIcon, tooltipElement].filter(Boolean),\n }),\n nestedElement,\n ]);\n}\n\nSidebarItem.displayName = 'SidebarItem';\n\nfunction Sidebar(props) {\n const {\n children,\n items = [],\n collapsed = false,\n mini = false,\n overlay = false,\n responsive = true,\n width = 256,\n miniWidth = 64,\n className = '',\n style = {},\n header,\n footer,\n theme = 'light',\n bordered = true,\n floating = false,\n onClose,\n open = true,\n onToggle,\n activeKey,\n onItemClick,\n expandedKeys = [],\n onExpand,\n breakPoint = 'lg',\n zIndex = 30,\n overlayOpacity = 0.5,\n } = props;\n\n const effectiveWidth = mini ? miniWidth : (collapsed ? miniWidth : width);\n const isDark = theme === 'dark';\n\n const sidebarClasses = [\n 'ed-flex ed-flex-col ed-h-full ed-transition-all ed-duration-300 ed-ease-in-out',\n overlay ? 'ed-fixed ed-top-0 ed-left-0 ed-bottom-0' : '',\n isDark ? 'ed-bg-gray-900 ed-text-gray-100' : 'ed-bg-white ed-text-gray-800',\n bordered ? 'ed-border-r ed-border-gray-200' : '',\n floating && !overlay ? 'ed-rounded-lg ed-m-2 ed-shadow-lg' : '',\n !open && !overlay ? 'ed--translate-x-full' : '',\n 'ed-overflow-y-auto ed-overflow-x-hidden',\n className,\n ].filter(Boolean).join(' ');\n\n const renderItems = (menuItems, depth = 0) =>\n menuItems.map((item, idx) =>\n ED.createElement(SidebarItem, {\n key: item.key || idx,\n label: item.label,\n icon: item.icon,\n badge: item.badge,\n badgeColor: item.badgeColor,\n active: activeKey === item.key || item.active,\n disabled: item.disabled,\n href: item.href,\n onClick: () => onItemClick?.(item),\n mini,\n expanded: expandedKeys.includes(item.key),\n onToggle: () => onExpand?.(item.key),\n depth,\n children: item.children ? renderItems(item.children, depth + 1) : undefined,\n })\n );\n\n const headerElement = header\n ? ED.createElement('div', {\n className: [\n 'ed-flex ed-items-center ed-px-4 ed-py-4 ed-border-b',\n isDark ? 'ed-border-gray-700' : 'ed-border-gray-200',\n mini ? 'ed-justify-center ed-px-2' : 'ed-justify-between',\n ].filter(Boolean).join(' '),\n }, [\n typeof header === 'string'\n ? ED.createElement('span', { key: 'header-text', className: 'ed-font-bold ed-text-lg ed-truncate' }, header)\n : header,\n !mini && onToggle\n ? ED.createElement('button', {\n key: 'collapse-btn',\n className: 'ed-p-1 ed-rounded ed-text-gray-400 hover:ed-text-gray-600 hover:ed-bg-gray-100 ed-transition-colors',\n onClick: onToggle,\n 'aria-label': 'Toggle sidebar',\n children: ED.createElement('svg', {\n className: 'ed-w-5 ed-h-5',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M11 19l-7-7 7-7m8 14l-7-7 7-7' }),\n }),\n })\n : null,\n ].filter(Boolean))\n : null;\n\n const bodyElement = ED.createElement('div', {\n className: 'ed-flex-1 ed-overflow-y-auto ed-py-2 ed-px-2',\n role: 'menu',\n children: items.length > 0 ? renderItems(items) : children,\n });\n\n const footerElement = footer\n ? ED.createElement('div', {\n className: [\n 'ed-px-4 ed-py-3 ed-border-t',\n isDark ? 'ed-border-gray-700' : 'ed-border-gray-200',\n mini ? 'ed-px-2' : '',\n ].filter(Boolean).join(' '),\n }, footer)\n : null;\n\n const overlayElement = overlay && open\n ? ED.createElement('div', {\n className: 'ed-fixed ed-inset-0 ed-bg-black ed-transition-opacity ed-duration-300',\n style: { zIndex: zIndex - 1, opacity: overlayOpacity },\n onClick: onClose,\n })\n : null;\n\n return ED.createElement(ED.Fragment, null, [\n overlayElement,\n ED.createElement('aside', {\n key: 'sidebar',\n className: sidebarClasses,\n style: {\n width: effectiveWidth,\n minWidth: effectiveWidth,\n zIndex,\n ...style,\n },\n children: [headerElement, bodyElement, footerElement].filter(Boolean),\n }),\n ]);\n}\n\nSidebar.displayName = 'Sidebar';\nSidebar.Item = SidebarItem;\n\nmodule.exports = Sidebar;\n","/**\n * Slider Component for ElementDrawing Framework\n * Supports single/double handle, marks, tooltip, range, vertical, disabled, custom step, log scale\n */\nconst ED = require('../core/element');\n\nconst SLIDER_SIZES = {\n sm: { trackHeight: 4, handleSize: 14, markFont: 'ed-text-xs' },\n md: { trackHeight: 6, handleSize: 18, markFont: 'ed-text-xs' },\n lg: { trackHeight: 8, handleSize: 22, markFont: 'ed-text-sm' },\n};\n\nfunction Slider(props) {\n const {\n value,\n defaultValue = 0,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n range = false,\n vertical = false,\n marks = {},\n tooltip = true,\n tooltipVisible,\n tooltipPlacement = 'top',\n className = '',\n style = {},\n size = 'md',\n included = true,\n dots = false,\n reverse = false,\n logScale = false,\n onAfterChange,\n onFocus,\n onBlur,\n startPoint,\n trackStyle = {},\n handleStyle = {},\n railStyle = {},\n dotStyle = {},\n activeDotStyle = {},\n id,\n name,\n tabIndex,\n ariaLabel,\n ariaLabelForHandle,\n } = props;\n\n const sizeConfig = SLIDER_SIZES[size] || SLIDER_SIZES.md;\n const currentValue = value !== undefined ? value : defaultValue;\n\n const normalizeValue = (val) => {\n if (logScale && min > 0) {\n return Math.log(val / min) / Math.log(max / min);\n }\n return (val - min) / (max - min);\n };\n\n const denormalizeValue = (ratio) => {\n if (logScale && min > 0) {\n return min * Math.pow(max / min, ratio);\n }\n return min + ratio * (max - min);\n };\n\n const getStepValue = (val) => {\n const rounded = Math.round((val - min) / step) * step + min;\n return Math.min(max, Math.max(min, rounded));\n };\n\n const percent = (val) => {\n const ratio = normalizeValue(val);\n return reverse ? (1 - ratio) * 100 : ratio * 100;\n };\n\n const isRange = range && Array.isArray(currentValue);\n const leftPercent = isRange ? percent(Math.min(currentValue[0], currentValue[1])) : 0;\n const rightPercent = isRange ? percent(Math.max(currentValue[0], currentValue[1])) : percent(currentValue);\n\n const handleMouseDown = (handleIndex, e) => {\n if (disabled) return;\n e.preventDefault();\n\n const sliderEl = e.currentTarget.parentElement;\n const rect = sliderEl.getBoundingClientRect();\n\n const getPosition = (event) => {\n if (vertical) {\n const y = event.clientY - rect.top;\n return reverse ? y / rect.height : (1 - y / rect.height);\n }\n const x = event.clientX - rect.left;\n return reverse ? (1 - x / rect.width) : x / rect.width;\n };\n\n const handleMove = (event) => {\n const ratio = Math.min(1, Math.max(0, getPosition(event)));\n const rawVal = denormalizeValue(ratio);\n const steppedVal = getStepValue(rawVal);\n\n if (isRange) {\n const newValues = [...currentValue];\n newValues[handleIndex] = steppedVal;\n onChange?.(newValues);\n } else {\n onChange?.(steppedVal);\n }\n };\n\n const handleUp = () => {\n document.removeEventListener('mousemove', handleMove);\n document.removeEventListener('mouseup', handleUp);\n onAfterChange?.(isRange ? currentValue : currentValue);\n };\n\n document.addEventListener('mousemove', handleMove);\n document.addEventListener('mouseup', handleUp);\n };\n\n const handleTrackClick = (e) => {\n if (disabled) return;\n const sliderEl = e.currentTarget;\n const rect = sliderEl.getBoundingClientRect();\n\n let ratio;\n if (vertical) {\n const y = e.clientY - rect.top;\n ratio = reverse ? y / rect.height : (1 - y / rect.height);\n } else {\n const x = e.clientX - rect.left;\n ratio = reverse ? (1 - x / rect.width) : x / rect.width;\n }\n\n const rawVal = denormalizeValue(ratio);\n const steppedVal = getStepValue(rawVal);\n\n if (isRange) {\n const dist0 = Math.abs(currentValue[0] - steppedVal);\n const dist1 = Math.abs(currentValue[1] - steppedVal);\n const newValues = [...currentValue];\n newValues[dist0 < dist1 ? 0 : 1] = steppedVal;\n onChange?.(newValues);\n } else {\n onChange?.(steppedVal);\n }\n };\n\n const renderTooltip = (val) => {\n if (!tooltip || tooltipVisible === false) return null;\n const positionClass = {\n top: 'ed-bottom-full ed-left-1/2 ed--translate-x-1/2 ed-mb-2',\n bottom: 'ed-top-full ed-left-1/2 ed--translate-x-1/2 ed-mt-2',\n left: 'ed-right-full ed-top-1/2 ed--translate-y-1/2 ed-mr-2',\n right: 'ed-left-full ed-top-1/2 ed--translate-y-1/2 ed-ml-2',\n };\n return ED.createElement('div', {\n className: [\n 'ed-absolute ed-px-2 ed-py-1 ed-text-xs ed-font-medium ed-text-white ed-bg-gray-900 ed-rounded ed-whitespace-nowrap ed-pointer-events-none ed-z-10',\n positionClass[tooltipPlacement] || positionClass.top,\n ].join(' '),\n children: typeof val === 'number' ? Math.round(val * 100) / 100 : val,\n });\n };\n\n const markElements = Object.keys(marks).length > 0\n ? Object.entries(marks).map(([key, mark]) => {\n const markVal = Number(key);\n const markPercent = percent(markVal);\n const isInRange = isRange\n ? markVal >= currentValue[0] && markVal <= currentValue[1]\n : markVal <= currentValue;\n\n return ED.createElement('div', {\n key: key,\n className: 'ed-absolute',\n style: vertical\n ? { bottom: `${markPercent}%` }\n : { left: `${markPercent}%` },\n children: [\n ED.createElement('div', {\n key: 'dot',\n className: [\n 'ed-w-1 ed-h-1 ed-rounded-full ed-transform ed--translate-x-1/2',\n isInRange ? 'ed-bg-blue-500' : 'ed-bg-gray-300',\n ].join(' '),\n }),\n typeof mark === 'object' && mark.label\n ? ED.createElement('span', {\n key: 'label',\n className: `ed-transform ed--translate-x-1/2 ed-mt-2 ed-block ${sizeConfig.markFont} ed-text-gray-500`,\n }, mark.label)\n : typeof mark === 'string'\n ? ED.createElement('span', {\n key: 'label',\n className: `ed-transform ed--translate-x-1/2 ed-mt-2 ed-block ${sizeConfig.markFont} ed-text-gray-500`,\n }, mark)\n : null,\n ].filter(Boolean),\n });\n })\n : null;\n\n const dotElements = dots && Object.keys(marks).length === 0\n ? Array.from({ length: Math.floor((max - min) / step) + 1 }, (_, i) => {\n const dotVal = min + i * step;\n const dotPercent = percent(dotVal);\n const isInRange = isRange\n ? dotVal >= currentValue[0] && dotVal <= currentValue[1]\n : dotVal <= currentValue;\n return ED.createElement('div', {\n key: i,\n className: [\n 'ed-absolute ed-w-2 ed-h-2 ed-rounded-full ed-transform ed--translate-x-1/2 ed--translate-y-1/2',\n isInRange ? 'ed-bg-blue-500' : 'ed-bg-gray-300',\n ].join(' '),\n style: vertical\n ? { bottom: `${dotPercent}%`, left: '50%', transform: 'translateX(-50%) translateY(50%)' }\n : { left: `${dotPercent}%`, top: '50%', transform: 'translateX(-50%) translateY(-50%)' },\n });\n })\n : null;\n\n const renderHandle = (val, index) => {\n const handlePercent = percent(val);\n return ED.createElement('div', {\n key: `handle-${index}`,\n className: [\n 'ed-absolute ed-bg-white ed-border-2 ed-border-blue-500 ed-rounded-full',\n 'ed-shadow-md ed-cursor-grab ed-active:ed-cursor-grabbing ed-z-10',\n 'hover:ed-shadow-lg ed-transition-shadow ed-duration-150',\n 'focus:ed-outline-none focus:ed-ring-2 focus:ed-ring-blue-500 focus:ed-ring-offset-2',\n disabled ? 'ed-cursor-not-allowed ed-opacity-50' : '',\n ].join(' '),\n style: {\n width: sizeConfig.handleSize,\n height: sizeConfig.handleSize,\n ...(vertical\n ? { bottom: `calc(${handlePercent}% - ${sizeConfig.handleSize / 2}px)`, left: `calc(50% - ${sizeConfig.handleSize / 2}px)` }\n : { left: `calc(${handlePercent}% - ${sizeConfig.handleSize / 2}px)`, top: `calc(50% - ${sizeConfig.handleSize / 2}px)` }),\n ...handleStyle,\n },\n onMouseDown: (e) => handleMouseDown(index, e),\n role: 'slider',\n 'aria-valuenow': val,\n 'aria-valuemin': min,\n 'aria-valuemax': max,\n 'aria-label': ariaLabelForHandle || ariaLabel,\n tabIndex: disabled ? -1 : (tabIndex || 0),\n onFocus,\n onBlur,\n children: renderTooltip(val),\n });\n };\n\n const trackElement = included\n ? ED.createElement('div', {\n className: 'ed-absolute ed-bg-blue-500 ed-rounded-full',\n style: {\n ...(vertical\n ? { bottom: `${leftPercent}%`, height: `${rightPercent - leftPercent}%`, width: sizeConfig.trackHeight, left: `calc(50% - ${sizeConfig.trackHeight / 2}px)` }\n : { left: `${leftPercent}%`, width: `${rightPercent - leftPercent}%`, height: sizeConfig.trackHeight, top: `calc(50% - ${sizeConfig.trackHeight / 2}px)` }),\n ...trackStyle,\n },\n })\n : null;\n\n const railElement = ED.createElement('div', {\n className: 'ed-absolute ed-bg-gray-200 ed-rounded-full',\n style: {\n ...(vertical\n ? { width: sizeConfig.trackHeight, left: `calc(50% - ${sizeConfig.trackHeight / 2}px)`, top: 0, bottom: 0 }\n : { height: sizeConfig.trackHeight, top: `calc(50% - ${sizeConfig.trackHeight / 2}px)`, left: 0, right: 0 }),\n ...railStyle,\n },\n });\n\n const sliderClasses = [\n 'ed-relative ed-select-none',\n vertical ? 'ed-h-full' : 'ed-w-full',\n disabled ? 'ed-opacity-50 ed-pointer-events-none' : '',\n className,\n ].filter(Boolean).join(' ');\n\n const sliderStyle = vertical\n ? { width: sizeConfig.handleSize + 10, height: '100%', ...style }\n : { height: sizeConfig.handleSize + 10, ...style };\n\n return ED.createElement('div', {\n id,\n className: sliderClasses,\n style: sliderStyle,\n onClick: handleTrackClick,\n children: [\n railElement,\n trackElement,\n dotElements,\n isRange\n ? [renderHandle(currentValue[0], 0), renderHandle(currentValue[1], 1)]\n : renderHandle(currentValue, 0),\n markElements,\n ].flat().filter(Boolean),\n });\n}\n\nSlider.displayName = 'Slider';\nSlider.SIZES = SLIDER_SIZES;\n\nmodule.exports = Slider;\n","/**\n * Spinner Component for ElementDrawing Framework\n * Supports sizes, color variants, overlay, fullscreen, custom SVG, dot spinner, bar spinner\n */\nconst ED = require('../core/element');\n\nconst SPINNER_SIZES = {\n xs: { main: 'ed-w-4 ed-h-4', border: 'ed-border-2', dot: 'ed-w-1 ed-h-1', bar: 'ed-w-0.5 ed-h-3', text: 'ed-text-xs' },\n sm: { main: 'ed-w-6 ed-h-6', border: 'ed-border-2', dot: 'ed-w-1.5 ed-h-1.5', bar: 'ed-w-1 ed-h-4', text: 'ed-text-xs' },\n md: { main: 'ed-w-8 ed-h-8', border: 'ed-border-[3px]', dot: 'ed-w-2 ed-h-2', bar: 'ed-w-1 ed-h-5', text: 'ed-text-sm' },\n lg: { main: 'ed-w-12 ed-h-12', border: 'ed-border-4', dot: 'ed-w-2.5 ed-h-2.5', bar: 'ed-w-1.5 ed-h-7', text: 'ed-text-base' },\n xl: { main: 'ed-w-16 ed-h-16', border: 'ed-border-4', dot: 'ed-w-3 ed-h-3', bar: 'ed-w-2 ed-h-9', text: 'ed-text-lg' },\n};\n\nconst SPINNER_COLORS = {\n blue: { border: 'ed-border-blue-500', text: 'ed-text-blue-500', dot: 'ed-bg-blue-500', bar: 'ed-bg-blue-500' },\n green: { border: 'ed-border-green-500', text: 'ed-text-green-500', dot: 'ed-bg-green-500', bar: 'ed-bg-green-500' },\n red: { border: 'ed-border-red-500', text: 'ed-text-red-500', dot: 'ed-bg-red-500', bar: 'ed-bg-red-500' },\n yellow: { border: 'ed-border-yellow-500', text: 'ed-text-yellow-500', dot: 'ed-bg-yellow-500', bar: 'ed-bg-yellow-500' },\n purple: { border: 'ed-border-purple-500', text: 'ed-text-purple-500', dot: 'ed-bg-purple-500', bar: 'ed-bg-purple-500' },\n gray: { border: 'ed-border-gray-500', text: 'ed-text-gray-500', dot: 'ed-bg-gray-500', bar: 'ed-bg-gray-500' },\n white: { border: 'ed-border-white', text: 'ed-text-white', dot: 'ed-bg-white', bar: 'ed-bg-white' },\n};\n\nfunction CircleSpinner(props) {\n const { size = 'md', color = 'blue', sizeConfig, colorConfig } = props;\n const sConfig = sizeConfig || SPINNER_SIZES[size] || SPINNER_SIZES.md;\n const cConfig = colorConfig || SPINNER_COLORS[color] || SPINNER_COLORS.blue;\n\n return ED.createElement('div', {\n className: [\n sConfig.main,\n cConfig.border,\n 'ed-border-t-transparent',\n 'ed-rounded-full ed-animate-spin',\n ].join(' '),\n role: 'status',\n 'aria-label': 'Loading',\n });\n}\n\nfunction DotSpinner(props) {\n const { size = 'md', color = 'blue', sizeConfig, colorConfig } = props;\n const sConfig = sizeConfig || SPINNER_SIZES[size] || SPINNER_SIZES.md;\n const cConfig = colorConfig || SPINNER_COLORS[color] || SPINNER_COLORS.blue;\n\n return ED.createElement('div', {\n className: 'ed-flex ed-items-center ed-gap-1',\n role: 'status',\n 'aria-label': 'Loading',\n children: [0, 1, 2].map(i =>\n ED.createElement('div', {\n key: i,\n className: [\n sConfig.dot,\n cConfig.dot,\n 'ed-rounded-full',\n ].join(' '),\n style: {\n animation: `ed-bounce 1.4s ease-in-out ${i * 0.16}s infinite both`,\n },\n })\n ),\n });\n}\n\nfunction BarSpinner(props) {\n const { size = 'md', color = 'blue', sizeConfig, colorConfig } = props;\n const sConfig = sizeConfig || SPINNER_SIZES[size] || SPINNER_SIZES.md;\n const cConfig = colorConfig || SPINNER_COLORS[color] || SPINNER_COLORS.blue;\n\n return ED.createElement('div', {\n className: 'ed-flex ed-items-end ed-gap-0.5',\n style: { height: sConfig.bar?.split(' ').find(s => s.startsWith('ed-h-'))?.replace('ed-h-', '') + 'px' || '20px' },\n role: 'status',\n 'aria-label': 'Loading',\n children: [0, 1, 2, 3].map(i =>\n ED.createElement('div', {\n key: i,\n className: [\n sConfig.bar,\n cConfig.bar,\n 'ed-rounded-sm',\n ].join(' '),\n style: {\n animation: `ed-bar-stretch 1.2s ease-in-out ${i * 0.1}s infinite`,\n },\n })\n ),\n });\n}\n\nfunction Spinner(props) {\n const {\n variant = 'circle',\n size = 'md',\n color = 'blue',\n overlay = false,\n fullscreen = false,\n className = '',\n style = {},\n label,\n labelPosition = 'bottom',\n customSvg,\n spinning = true,\n children,\n delay = 0,\n tip,\n } = props;\n\n if (!spinning) return children || null;\n\n const sizeConfig = SPINNER_SIZES[size] || SPINNER_SIZES.md;\n const colorConfig = SPINNER_COLORS[color] || SPINNER_COLORS.blue;\n\n const renderSpinner = () => {\n if (customSvg) {\n return ED.createElement('div', {\n className: `ed-animate-spin ${sizeConfig.main}`,\n role: 'status',\n 'aria-label': 'Loading',\n children: customSvg,\n });\n }\n\n switch (variant) {\n case 'dot':\n return ED.createElement(DotSpinner, { size, color, sizeConfig, colorConfig });\n case 'bar':\n return ED.createElement(BarSpinner, { size, color, sizeConfig, colorConfig });\n case 'circle':\n default:\n return ED.createElement(CircleSpinner, { size, color, sizeConfig, colorConfig });\n }\n };\n\n const labelElement = label || tip\n ? ED.createElement('span', {\n className: `${sizeConfig.text} ${colorConfig.text} ed-font-medium`,\n }, label || tip)\n : null;\n\n const spinnerContent = ED.createElement('div', {\n className: [\n 'ed-inline-flex ed-items-center ed-gap-2',\n labelPosition === 'bottom' ? 'ed-flex-col' : labelPosition === 'right' ? 'ed-flex-row' : 'ed-flex-col',\n className,\n ].filter(Boolean).join(' '),\n style,\n children: [\n labelPosition === 'bottom' ? renderSpinner() : labelElement,\n labelPosition === 'bottom' ? labelElement : renderSpinner(),\n ],\n });\n\n if (fullscreen) {\n return ED.createElement('div', {\n className: 'ed-fixed ed-inset-0 ed-bg-white ed-bg-opacity-80 ed-flex ed-items-center ed-justify-center ed-z-[9999]',\n children: spinnerContent,\n });\n }\n\n if (overlay) {\n return ED.createElement('div', {\n className: 'ed-relative',\n children: [\n children,\n ED.createElement('div', {\n key: 'overlay',\n className: 'ed-absolute ed-inset-0 ed-bg-white ed-bg-opacity-70 ed-flex ed-items-center ed-justify-center ed-rounded-inherit ed-z-10',\n children: spinnerContent,\n }),\n ],\n });\n }\n\n if (children) {\n return ED.createElement('div', { className: 'ed-relative' }, [\n children,\n ED.createElement('div', {\n key: 'spinner-overlay',\n className: 'ed-absolute ed-inset-0 ed-flex ed-items-center ed-justify-center ed-bg-white ed-bg-opacity-60 ed-z-10',\n children: renderSpinner(),\n }),\n ]);\n }\n\n return spinnerContent;\n}\n\nSpinner.displayName = 'Spinner';\nSpinner.Circle = CircleSpinner;\nSpinner.Dot = DotSpinner;\nSpinner.Bar = BarSpinner;\nSpinner.SIZES = SPINNER_SIZES;\nSpinner.COLORS = SPINNER_COLORS;\n\nmodule.exports = Spinner;\n","/**\n * Switch Component for ElementDrawing Framework\n * Supports sizes, colors, disabled, loading, icons, labels, custom width/height\n */\nconst ED = require('../core/element');\n\nconst SWITCH_SIZES = {\n sm: { width: 36, height: 20, handleSize: 14, text: 'ed-text-[10px]', translate: 16 },\n md: { width: 44, height: 24, handleSize: 18, text: 'ed-text-xs', translate: 20 },\n lg: { width: 56, height: 28, handleSize: 22, text: 'ed-text-sm', translate: 28 },\n xl: { width: 64, height: 32, handleSize: 26, text: 'ed-text-sm', translate: 32 },\n};\n\nconst SWITCH_COLORS = {\n blue: 'ed-bg-blue-600',\n green: 'ed-bg-green-600',\n red: 'ed-bg-red-600',\n yellow: 'ed-bg-yellow-500',\n purple: 'ed-bg-purple-600',\n cyan: 'ed-bg-cyan-600',\n orange: 'ed-bg-orange-500',\n pink: 'ed-bg-pink-600',\n};\n\nfunction Switch(props) {\n const {\n checked,\n defaultChecked = false,\n onChange,\n disabled = false,\n loading = false,\n size = 'md',\n color = 'blue',\n checkedIcon,\n uncheckedIcon,\n checkedChildren,\n uncheckedChildren,\n className = '',\n style = {},\n width: customWidth,\n height: customHeight,\n id,\n name,\n value,\n autoFocus = false,\n tabIndex,\n onFocus,\n onBlur,\n ariaLabel,\n beforeChange,\n label,\n labelPosition = 'right',\n } = props;\n\n const isChecked = checked !== undefined ? checked : defaultChecked;\n const sizeConfig = SWITCH_SIZES[size] || SWITCH_SIZES.md;\n const colorClass = SWITCH_COLORS[color] || SWITCH_COLORS.blue;\n\n const switchWidth = customWidth || sizeConfig.width;\n const switchHeight = customHeight || sizeConfig.height;\n const handleSize = sizeConfig.handleSize;\n const translateX = isChecked ? (switchWidth - handleSize - 6) : 0;\n\n const trackClasses = [\n 'ed-relative ed-inline-flex ed-items-center ed-rounded-full ed-transition-colors ed-duration-200 ed-cursor-pointer',\n isChecked ? colorClass : 'ed-bg-gray-300',\n disabled || loading ? 'ed-opacity-50 ed-cursor-not-allowed' : '',\n className,\n ].filter(Boolean).join(' ');\n\n const handleClasses = [\n 'ed-absolute ed-bg-white ed-rounded-full ed-shadow-sm ed-transition-transform ed-duration-200 ed-flex ed-items-center ed-justify-center',\n loading ? '' : '',\n ].join(' ');\n\n const loadingSpinner = loading\n ? ED.createElement('svg', {\n className: `ed-animate-spin ed-text-${isChecked ? color : 'gray'}-500`,\n style: { width: handleSize * 0.5, height: handleSize * 0.5 },\n fill: 'none',\n viewBox: '0 0 24 24',\n children: [\n ED.createElement('circle', {\n key: 'bg',\n className: 'ed-opacity-25',\n cx: '12', cy: '12', r: '10',\n stroke: 'currentColor', strokeWidth: '4',\n }),\n ED.createElement('path', {\n key: 'fg',\n className: 'ed-opacity-75',\n fill: 'currentColor',\n d: 'M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z',\n }),\n ],\n })\n : null;\n\n const checkedIconElement = checkedIcon && isChecked && !loading\n ? ED.createElement('span', {\n className: 'ed-text-white',\n style: { width: handleSize * 0.5, height: handleSize * 0.5 },\n children: typeof checkedIcon === 'string' ? ED.createElement('i', { className: checkedIcon }) : checkedIcon,\n })\n : null;\n\n const uncheckedIconElement = uncheckedIcon && !isChecked && !loading\n ? ED.createElement('span', {\n className: 'ed-text-gray-500',\n style: { width: handleSize * 0.5, height: handleSize * 0.5 },\n children: typeof uncheckedIcon === 'string' ? ED.createElement('i', { className: uncheckedIcon }) : uncheckedIcon,\n })\n : null;\n\n const checkedText = checkedChildren && isChecked\n ? ED.createElement('span', {\n className: `${sizeConfig.text} ed-text-white ed-font-medium ed-pl-2 ed-pr-${handleSize / 4 + 2} ed-select-none`,\n style: { paddingRight: handleSize + 4 },\n }, checkedChildren)\n : null;\n\n const uncheckedText = uncheckedChildren && !isChecked\n ? ED.createElement('span', {\n className: `${sizeConfig.text} ed-text-gray-500 ed-font-medium ed-pr-2 ed-pl-${handleSize / 4 + 2} ed-select-none`,\n style: { paddingLeft: handleSize + 4 },\n }, uncheckedChildren)\n : null;\n\n const handleClick = () => {\n if (disabled || loading) return;\n if (beforeChange) {\n const result = beforeChange(!isChecked);\n if (result === false) return;\n }\n onChange?.(!isChecked);\n };\n\n const handleKeyDown = (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleClick();\n }\n };\n\n const switchElement = ED.createElement('button', {\n id,\n className: trackClasses,\n style: {\n width: switchWidth,\n height: switchHeight,\n minWidth: switchWidth,\n ...style,\n },\n onClick: handleClick,\n onKeyDown: handleKeyDown,\n role: 'switch',\n 'aria-checked': isChecked,\n 'aria-label': ariaLabel || label,\n tabIndex: disabled ? -1 : (tabIndex || 0),\n autoFocus,\n onFocus,\n onBlur,\n disabled: disabled || loading,\n children: [\n uncheckedText,\n checkedText,\n ED.createElement('span', {\n key: 'handle',\n className: handleClasses,\n style: {\n width: handleSize,\n height: handleSize,\n left: 3,\n transform: `translateX(${translateX}px)`,\n },\n children: [loadingSpinner, checkedIconElement, uncheckedIconElement].filter(Boolean)[0] || null,\n }),\n ],\n });\n\n const labelElement = label\n ? ED.createElement('span', {\n className: `ed-text-sm ed-font-medium ${disabled ? 'ed-text-gray-400' : 'ed-text-gray-700'}`,\n }, label)\n : null;\n\n if (label) {\n return ED.createElement('div', {\n className: `ed-inline-flex ed-items-center ed-gap-2 ${labelPosition === 'left' ? 'ed-flex-row-reverse' : ''}`,\n children: [switchElement, labelElement],\n });\n }\n\n return switchElement;\n}\n\nSwitch.displayName = 'Switch';\nSwitch.SIZES = SWITCH_SIZES;\nSwitch.COLORS = SWITCH_COLORS;\n\nmodule.exports = Switch;\n","/**\n * Table Component for ElementDrawing Framework\n * Supports sorting, pagination, selection, filtering, striped, bordered, compact, loading, empty, expandable, fixed header\n */\nconst ED = require('../core/element');\n\nfunction Table(props) {\n const {\n data = [],\n columns = [],\n loading = false,\n striped = false,\n bordered = false,\n compact = false,\n hoverable = true,\n selectable = false,\n selectedRowKeys = [],\n onSelectionChange,\n onRowClick,\n onRowExpand,\n expandedRowKeys = [],\n expandable = false,\n expandedRowRender,\n sortField,\n sortOrder,\n onSort,\n pagination = false,\n pageSize = 10,\n currentPage = 1,\n total = 0,\n onPageChange,\n onPageSizeChange,\n showPagination = true,\n pageSizeOptions = [10, 20, 50, 100],\n emptyText = 'No data',\n emptyIcon,\n rowKey = 'id',\n className = '',\n style = {},\n fixedHeader = false,\n maxHeight,\n footer,\n title,\n size = 'default',\n showHeader = true,\n scrollX,\n rowClassName,\n onFilter,\n filters,\n } = props;\n\n const sizeClasses = {\n small: 'ed-text-xs',\n default: 'ed-text-sm',\n large: 'ed-text-base',\n };\n\n const cellPadding = {\n small: 'ed-px-3 ed-py-1.5',\n default: 'ed-px-4 ed-py-3',\n large: 'ed-px-5 ed-py-4',\n };\n\n const isAllSelected = data.length > 0 && selectedRowKeys.length === data.length;\n const isIndeterminate = selectedRowKeys.length > 0 && selectedRowKeys.length < data.length;\n\n const handleSelectAll = () => {\n if (isAllSelected) {\n onSelectionChange?.([]);\n } else {\n onSelectionChange?.(data.map(row => row[rowKey]));\n }\n };\n\n const handleSelectRow = (row) => {\n const key = row[rowKey];\n const newSelected = selectedRowKeys.includes(key)\n ? selectedRowKeys.filter(k => k !== key)\n : [...selectedRowKeys, key];\n onSelectionChange?.(newSelected);\n };\n\n const handleSort = (column) => {\n if (!column.sortable) return;\n let newOrder = 'asc';\n if (sortField === column.key && sortOrder === 'asc') newOrder = 'desc';\n if (sortField === column.key && sortOrder === 'desc') newOrder = null;\n onSort?.(column.key, newOrder);\n };\n\n const sortIcon = (column) => {\n if (!column.sortable) return null;\n const isActive = sortField === column.key;\n return ED.createElement('span', { className: 'ed-inline-flex ed-flex-col ed-ml-1 ed-leading-none' },\n ED.createElement('svg', {\n className: `ed-w-3 ed-h-3 ${isActive && sortOrder === 'asc' ? 'ed-text-blue-600' : 'ed-text-gray-400'}`,\n viewBox: '0 0 12 12', fill: 'currentColor',\n children: ED.createElement('path', { d: 'M6 2l4 4H2z' }),\n }),\n ED.createElement('svg', {\n className: `ed-w-3 ed-h-3 ${isActive && sortOrder === 'desc' ? 'ed-text-blue-600' : 'ed-text-gray-400'}`,\n viewBox: '0 0 12 12', fill: 'currentColor',\n children: ED.createElement('path', { d: 'M6 10L2 6h8z' }),\n })\n );\n };\n\n const checkboxCell = (checked, onChange) =>\n ED.createElement('input', {\n type: 'checkbox',\n checked,\n onChange,\n className: 'ed-w-4 ed-h-4 ed-text-blue-600 ed-rounded ed-border-gray-300 focus:ed-ring-blue-500 ed-cursor-pointer',\n });\n\n const expandCell = (row) => {\n const key = row[rowKey];\n const isExpanded = expandedRowKeys.includes(key);\n return ED.createElement('button', {\n className: 'ed-w-6 ed-h-6 ed-flex ed-items-center ed-justify-center ed-rounded ed-text-gray-500 hover:ed-bg-gray-100 ed-transition-transform',\n onClick: (e) => { e.stopPropagation(); onRowExpand?.(key, !isExpanded); },\n style: { transform: isExpanded ? 'rotate(90deg)' : 'rotate(0deg)' },\n children: ED.createElement('svg', {\n className: 'ed-w-4 ed-h-4', fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M9 5l7 7-7 7' }),\n }),\n });\n };\n\n const headerRow = ED.createElement('tr', {\n className: 'ed-bg-gray-50 ed-border-b ed-border-gray-200',\n children: [\n expandable ? ED.createElement('th', { key: 'expand', className: `${cellPadding[size || 'default']} ed-w-10` }) : null,\n selectable ? ED.createElement('th', { key: 'select', className: `${cellPadding[size || 'default']} ed-w-10` },\n checkboxCell(isAllSelected, handleSelectAll)\n ) : null,\n ...columns.map((col, idx) =>\n ED.createElement('th', {\n key: col.key || idx,\n className: [\n cellPadding[size || 'default'],\n 'ed-font-semibold ed-text-gray-700 ed-text-left ed-whitespace-nowrap',\n col.sortable ? 'ed-cursor-pointer hover:ed-bg-gray-100 ed-select-none' : '',\n col.align === 'center' ? 'ed-text-center' : col.align === 'right' ? 'ed-text-right' : '',\n col.className || '',\n ].filter(Boolean).join(' '),\n style: col.width ? { width: col.width } : {},\n onClick: col.sortable ? () => handleSort(col) : undefined,\n children: [\n ED.createElement('span', null, col.title || col.header),\n col.sortable ? sortIcon(col) : null,\n ],\n })\n ),\n ].filter(Boolean),\n });\n\n const renderRow = (row, rowIndex) => {\n const key = row[rowKey] || rowIndex;\n const isSelected = selectedRowKeys.includes(key);\n const isExpanded = expandedRowKeys.includes(key);\n\n const rowClasses = [\n striped && rowIndex % 2 === 1 ? 'ed-bg-gray-50' : 'ed-bg-white',\n hoverable ? 'hover:ed-bg-blue-50' : '',\n isSelected ? 'ed-bg-blue-50' : '',\n onRowClick ? 'ed-cursor-pointer' : '',\n bordered ? 'ed-border-b ed-border-gray-200' : 'ed-border-b ed-border-gray-100',\n typeof rowClassName === 'function' ? rowClassName(row, rowIndex) : rowClassName || '',\n ].filter(Boolean).join(' ');\n\n const mainRow = ED.createElement('tr', {\n key,\n className: rowClasses,\n onClick: (e) => onRowClick?.(row, rowIndex, e),\n children: [\n expandable ? ED.createElement('td', { key: 'expand', className: cellPadding[size || 'default'] }, expandCell(row)) : null,\n selectable ? ED.createElement('td', { key: 'select', className: cellPadding[size || 'default'] },\n checkboxCell(isSelected, () => handleSelectRow(row))\n ) : null,\n ...columns.map((col, colIdx) => {\n const cellValue = col.render ? col.render(row[col.key], row, rowIndex) : row[col.key];\n return ED.createElement('td', {\n key: col.key || colIdx,\n className: [\n cellPadding[size || 'default'],\n col.align === 'center' ? 'ed-text-center' : col.align === 'right' ? 'ed-text-right' : '',\n col.ellipsis ? 'ed-truncate ed-max-w-xs' : '',\n 'ed-text-gray-700',\n ].filter(Boolean).join(' '),\n style: col.width ? { width: col.width } : {},\n children: cellValue,\n });\n }),\n ].filter(Boolean),\n });\n\n const expandedRow = expandable && isExpanded && expandedRowRender\n ? ED.createElement('tr', {\n key: `${key}-expanded`,\n className: 'ed-bg-gray-50',\n children: ED.createElement('td', {\n colSpan: (selectable ? 1 : 0) + (expandable ? 1 : 0) + columns.length,\n className: 'ed-px-4 ed-py-4',\n children: expandedRowRender(row, rowIndex),\n }),\n })\n : null;\n\n return [mainRow, expandedRow].filter(Boolean);\n };\n\n const emptyState = data.length === 0\n ? ED.createElement('tr', null,\n ED.createElement('td', {\n colSpan: (selectable ? 1 : 0) + (expandable ? 1 : 0) + columns.length,\n className: 'ed-px-4 ed-py-12 ed-text-center ed-text-gray-500',\n children: ED.createElement('div', { className: 'ed-flex ed-flex-col ed-items-center ed-gap-2' },\n emptyIcon || ED.createElement('svg', {\n className: 'ed-w-12 ed-h-12 ed-text-gray-300',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 1.5, d: 'M20 13V6a2 2 0 00-2-2H6a2 2 0 00-2 2v7m16 0v5a2 2 0 01-2 2H6a2 2 0 01-2-2v-5m16 0h-2.586a1 1 0 00-.707.293l-2.414 2.414a1 1 0 01-.707.293h-3.172a1 1 0 01-.707-.293l-2.414-2.414A1 1 0 006.586 13H4' }),\n }),\n ED.createElement('span', { className: 'ed-text-sm' }, emptyText),\n ),\n })\n )\n : null;\n\n const loadingOverlay = loading\n ? ED.createElement('div', {\n className: 'ed-absolute ed-inset-0 ed-bg-white ed-bg-opacity-70 ed-flex ed-items-center ed-justify-center ed-z-10',\n children: ED.createElement('div', {\n className: 'ed-w-8 ed-h-8 ed-border-4 ed-border-blue-500 ed-border-t-transparent ed-rounded-full ed-animate-spin',\n }),\n })\n : null;\n\n const paginationElement = pagination && total > pageSize\n ? ED.createElement('div', {\n className: 'ed-flex ed-items-center ed-justify-between ed-px-4 ed-py-3 ed-border-t ed-border-gray-200',\n children: [\n ED.createElement('span', { className: 'ed-text-sm ed-text-gray-500', key: 'info' },\n `Showing ${(currentPage - 1) * pageSize + 1}-${Math.min(currentPage * pageSize, total)} of ${total}`\n ),\n ED.createElement('div', { className: 'ed-flex ed-items-center ed-gap-2', key: 'controls' },\n ED.createElement('button', {\n className: 'ed-px-3 ed-py-1 ed-text-sm ed-border ed-rounded ed-disabled:ed-opacity-50 ed-disabled:ed-cursor-not-allowed hover:ed-bg-gray-50',\n disabled: currentPage <= 1,\n onClick: () => onPageChange?.(currentPage - 1),\n }, 'Previous'),\n ...Array.from({ length: Math.ceil(total / pageSize) }, (_, i) => i + 1)\n .filter(p => Math.abs(p - currentPage) <= 2 || p === 1 || p === Math.ceil(total / pageSize))\n .map((page, idx, arr) => {\n const prev = arr[idx - 1];\n const showEllipsis = prev && page - prev > 1;\n return [\n showEllipsis ? ED.createElement('span', { key: `ellipsis-${idx}`, className: 'ed-px-1' }, '...') : null,\n ED.createElement('button', {\n key: page,\n className: [\n 'ed-px-3 ed-py-1 ed-text-sm ed-border ed-rounded ed-transition-colors',\n page === currentPage\n ? 'ed-bg-blue-600 ed-text-white ed-border-blue-600'\n : 'ed-border-gray-300 hover:ed-bg-gray-50',\n ].join(' '),\n onClick: () => onPageChange?.(page),\n }, page),\n ];\n }).flat().filter(Boolean),\n ED.createElement('button', {\n className: 'ed-px-3 ed-py-1 ed-text-sm ed-border ed-rounded ed-disabled:ed-opacity-50 ed-disabled:ed-cursor-not-allowed hover:ed-bg-gray-50',\n disabled: currentPage >= Math.ceil(total / pageSize),\n onClick: () => onPageChange?.(currentPage + 1),\n }, 'Next'),\n ),\n ],\n })\n : null;\n\n const tableClasses = [\n 'ed-w-full ed-border-collapse',\n sizeClasses[size] || sizeClasses.default,\n className,\n ].filter(Boolean).join(' ');\n\n const wrapperClasses = [\n 'ed-relative ed-bg-white ed-rounded-lg ed-overflow-hidden ed-border ed-border-gray-200',\n bordered ? 'ed-border' : 'ed-border ed-border-gray-200',\n ].filter(Boolean).join(' ');\n\n return ED.createElement('div', {\n className: wrapperClasses,\n style: { position: 'relative', ...style },\n children: [\n title\n ? ED.createElement('div', { key: 'title', className: 'ed-px-4 ed-py-3 ed-border-b ed-border-gray-200 ed-font-semibold ed-text-gray-900' }, title)\n : null,\n ED.createElement('div', {\n key: 'table-wrapper',\n className: 'ed-overflow-x-auto',\n style: fixedHeader ? { maxHeight, overflowY: 'auto' } : scrollX ? { overflowX: 'auto' } : {},\n children: ED.createElement('table', {\n className: tableClasses,\n children: [\n showHeader ? ED.createElement('thead', { key: 'head' }, headerRow) : null,\n ED.createElement('tbody', { key: 'body' },\n ...(data.length > 0 ? data.flatMap(renderRow) : [emptyState]).filter(Boolean)\n ),\n footer\n ? ED.createElement('tfoot', { key: 'foot' },\n ED.createElement('tr', null,\n ED.createElement('td', {\n colSpan: (selectable ? 1 : 0) + (expandable ? 1 : 0) + columns.length,\n className: 'ed-px-4 ed-py-3 ed-border-t ed-border-gray-200 ed-bg-gray-50',\n children: footer,\n })\n )\n )\n : null,\n ].filter(Boolean),\n }),\n }),\n loadingOverlay,\n paginationElement,\n ].filter(Boolean),\n });\n}\n\nTable.displayName = 'Table';\n\nmodule.exports = Table;\n","/**\n * Tabs Component for ElementDrawing Framework\n * Supports line, card, pill variants, closable, scrollable, lazy, icons, vertical, animated indicator\n */\nconst ED = require('../core/element');\n\nfunction TabPane(props) {\n const {\n children,\n tab,\n key: tabKey,\n disabled = false,\n icon,\n closable = true,\n forceRender = false,\n className = '',\n style = {},\n lazy = false,\n } = props;\n\n return ED.createElement('div', {\n className: `ed-tab-pane ed-py-3 ${className}`,\n style,\n role: 'tabpanel',\n children,\n });\n}\n\nTabPane.displayName = 'TabPane';\n\nfunction Tabs(props) {\n const {\n children,\n activeKey,\n defaultActiveKey = '0',\n variant = 'line',\n onChange,\n type = variant,\n closable = false,\n onClose,\n onEdit,\n scrollable = false,\n lazy = false,\n vertical = false,\n animated = true,\n addable = false,\n onAdd,\n hideAdd = false,\n size = 'md',\n className = '',\n style = {},\n tabBarExtraContent,\n tabBarGutter = 0,\n tabBarStyle = {},\n inkBar = true,\n items,\n tabPosition = 'top',\n destroyInactiveTabPane = false,\n renderTabBar,\n } = props;\n\n const currentVariant = type || variant;\n const currentActiveKey = activeKey !== undefined ? activeKey : defaultActiveKey;\n\n const tabItems = items || [];\n const childPanes = children\n ? (Array.isArray(children) ? children : [children])\n : [];\n\n const allTabs = tabItems.length > 0\n ? tabItems.map((item, idx) => ({\n key: item.key || String(idx),\n label: item.label || item.tab,\n icon: item.icon,\n disabled: item.disabled,\n closable: item.closable !== undefined ? item.closable : closable,\n content: item.children || item.content,\n }))\n : childPanes.map((child, idx) => ({\n key: child.props?.key || String(idx),\n label: child.props?.tab,\n icon: child.props?.icon,\n disabled: child.props?.disabled,\n closable: child.props?.closable !== undefined ? child.props?.closable : closable,\n content: child,\n }));\n\n const sizeClasses = {\n sm: 'ed-text-sm',\n md: 'ed-text-sm',\n lg: 'ed-text-base',\n };\n\n const variantClasses = {\n line: {\n nav: 'ed-border-b ed-border-gray-200',\n tab: 'ed-px-4 ed-py-2 ed-border-b-2 ed-border-transparent ed-text-gray-500 hover:ed-text-gray-700 hover:ed-border-gray-300',\n active: 'ed-border-blue-500 ed-text-blue-600 ed-font-medium',\n },\n card: {\n nav: 'ed-border-b ed-border-gray-200 ed--mb-px',\n tab: 'ed-px-4 ed-py-2 ed-border ed-border-b-0 ed-border-transparent ed-rounded-t-lg ed-text-gray-500 hover:ed-text-gray-700 ed-bg-gray-50',\n active: 'ed-border-gray-200 ed-border-b-white ed-bg-white ed-text-gray-900 ed-font-medium',\n },\n pill: {\n nav: 'ed-gap-1 ed-bg-gray-100 ed-p-1 ed-rounded-lg',\n tab: 'ed-px-4 ed-py-1.5 ed-rounded-md ed-text-gray-500 hover:ed-text-gray-700',\n active: 'ed-bg-white ed-text-gray-900 ed-font-medium ed-shadow-sm',\n },\n };\n\n const currentStyle = variantClasses[currentVariant] || variantClasses.line;\n\n const navClasses = [\n 'ed-flex ed-items-center',\n vertical ? 'ed-flex-col ed-border-r ed-border-gray-200' : currentStyle.nav,\n scrollable ? 'ed-overflow-x-auto' : '',\n sizeClasses[size] || sizeClasses.md,\n className,\n ].filter(Boolean).join(' ');\n\n const renderTab = (tab, idx) => {\n const isActive = tab.key === currentActiveKey;\n const isDisabled = tab.disabled;\n\n const tabClasses = [\n 'ed-flex ed-items-center ed-gap-1.5 ed-whitespace-nowrap ed-transition-all ed-duration-200 ed-cursor-pointer ed-select-none',\n currentStyle.tab,\n isActive ? currentStyle.active : '',\n isDisabled ? 'ed-opacity-50 ed-cursor-not-allowed ed-pointer-events-none' : '',\n closable && tab.closable ? 'ed-pr-2' : '',\n ].filter(Boolean).join(' ');\n\n const closeBtn = closable && tab.closable\n ? ED.createElement('button', {\n key: 'close',\n className: 'ed-ml-1 ed-p-0.5 ed-rounded ed-text-gray-400 hover:ed-text-red-500 hover:ed-bg-red-50 ed-transition-colors',\n onClick: (e) => { e.stopPropagation(); onClose?.(tab.key); },\n 'aria-label': 'Close tab',\n children: ED.createElement('svg', {\n className: 'ed-w-3.5 ed-h-3.5',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M6 18L18 6M6 6l12 12' }),\n }),\n })\n : null;\n\n return ED.createElement('div', {\n key: tab.key,\n className: tabClasses,\n style: tabBarGutter ? { marginRight: tabBarGutter } : {},\n role: 'tab',\n 'aria-selected': isActive,\n tabIndex: isDisabled ? -1 : (isActive ? 0 : -1),\n onClick: () => { if (!isDisabled) onChange?.(tab.key); },\n children: [\n tab.icon\n ? ED.createElement('span', { key: 'icon', className: 'ed-flex ed-items-center ed-justify-center ed-w-4 ed-h-4' },\n typeof tab.icon === 'string' ? ED.createElement('i', { className: tab.icon }) : tab.icon\n )\n : null,\n ED.createElement('span', { key: 'label' }, tab.label),\n closeBtn,\n ].filter(Boolean),\n });\n };\n\n const addButton = addable && !hideAdd\n ? ED.createElement('button', {\n key: 'add',\n className: 'ed-flex ed-items-center ed-justify-center ed-w-8 ed-h-8 ed-ml-2 ed-rounded-md ed-text-gray-400 hover:ed-text-gray-600 hover:ed-bg-gray-100 ed-transition-colors',\n onClick: onAdd,\n 'aria-label': 'Add tab',\n children: ED.createElement('svg', {\n className: 'ed-w-4 ed-h-4',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M12 4v16m8-8H4' }),\n }),\n })\n : null;\n\n const inkBarElement = inkBar && currentVariant === 'line' && animated\n ? ED.createElement('div', {\n className: 'ed-absolute ed-bottom-0 ed-h-0.5 ed-bg-blue-500 ed-transition-all ed-duration-300',\n })\n : null;\n\n const navElement = ED.createElement('div', {\n className: navClasses,\n style: { position: 'relative', ...tabBarStyle },\n role: 'tablist',\n children: [\n ...allTabs.map(renderTab),\n addButton,\n inkBarElement,\n tabBarExtraContent\n ? ED.createElement('div', { key: 'extra', className: 'ed-ml-auto ed-flex ed-items-center' }, tabBarExtraContent)\n : null,\n ],\n });\n\n const activePane = allTabs.find(t => t.key === currentActiveKey);\n\n const contentElement = ED.createElement('div', {\n className: 'ed-tab-content ed-flex-1',\n role: 'tabpanel',\n children: activePane ? activePane.content : null,\n });\n\n if (vertical) {\n return ED.createElement('div', {\n className: 'ed-flex ed-gap-0',\n style,\n children: [\n ED.createElement('div', { key: 'nav', className: 'ed-w-48 ed-flex-shrink-0' }, navElement),\n ED.createElement('div', { key: 'content', className: 'ed-flex-1 ed-pl-4' }, contentElement),\n ],\n });\n }\n\n return ED.createElement('div', { className: 'ed-flex ed-flex-col', style, children: [navElement, contentElement] });\n}\n\nTabs.displayName = 'Tabs';\nTabs.TabPane = TabPane;\n\nmodule.exports = Tabs;\n","/**\n * Textarea Component for ElementDrawing Framework\n * Supports auto-resize, max length, character count, clearable, disabled, readonly, validation, resize control\n */\nconst ED = require('../core/element');\n\nconst TEXTAREA_SIZES = {\n sm: 'ed-text-sm ed-px-3 ed-py-1.5',\n md: 'ed-text-sm ed-px-3 ed-py-2',\n lg: 'ed-text-base ed-px-4 ed-py-2.5',\n};\n\nconst VALIDATION_STATES = {\n default: 'ed-border-gray-300 focus:ed-border-blue-500 focus:ed-ring-blue-500',\n success: 'ed-border-green-500 focus:ed-border-green-600 focus:ed-ring-green-500',\n warning: 'ed-border-yellow-500 focus:ed-border-yellow-600 focus:ed-ring-yellow-500',\n error: 'ed-border-red-500 focus:ed-border-red-600 focus:ed-ring-red-500',\n};\n\nfunction Textarea(props) {\n const {\n value,\n defaultValue,\n onChange,\n placeholder,\n rows = 3,\n minRows,\n maxRows,\n autoResize = false,\n maxLength,\n showCount = false,\n clearable = false,\n disabled = false,\n readonly = false,\n size = 'md',\n validationState = 'default',\n state,\n status,\n error,\n errorMessage,\n helperText,\n label,\n id,\n name,\n className = '',\n style = {},\n textareaClassName = '',\n textareaStyle = {},\n resize = 'vertical',\n bordered = true,\n onFocus,\n onBlur,\n onInput,\n onKeyDown,\n onKeyUp,\n onKeyPress,\n onEnter,\n autoFocus = false,\n tabIndex,\n required = false,\n spellCheck = true,\n wrap = 'soft',\n cols,\n onClear,\n floatingLabel,\n width,\n } = props;\n\n const currentState = status || state || validationState || (error ? 'error' : 'default');\n const sizeClass = TEXTAREA_SIZES[size] || TEXTAREA_SIZES.md;\n const stateClass = VALIDATION_STATES[currentState] || VALIDATION_STATES.default;\n\n const resizeClass = {\n none: 'ed-resize-none',\n both: 'ed-resize',\n horizontal: 'ed-resize-x',\n vertical: 'ed-resize-y',\n }[resize] || (autoResize ? 'ed-resize-none ed-overflow-hidden' : 'ed-resize-y');\n\n const textareaClasses = [\n 'ed-w-full ed-outline-none ed-transition-all ed-duration-200 ed-rounded-md',\n sizeClass,\n bordered ? 'ed-border' : 'ed-border-none',\n stateClass,\n resizeClass,\n disabled ? 'ed-bg-gray-100 ed-cursor-not-allowed ed-text-gray-400' : 'ed-bg-white',\n readonly ? 'ed-bg-gray-50 ed-cursor-default' : '',\n 'focus:ed-ring-2 focus:ed-ring-offset-0 ed-placeholder-ed-text-gray-400',\n textareaClassName,\n ].filter(Boolean).join(' ');\n\n const handleAutoResize = (el) => {\n if (!autoResize || !el) return;\n el.style.height = 'auto';\n const minH = minRows ? minRows * 24 : 0;\n const maxH = maxRows ? maxRows * 24 : Infinity;\n el.style.height = `${Math.min(Math.max(el.scrollHeight, minH), maxH)}px`;\n };\n\n const handleChange = (e) => {\n handleAutoResize(e.target);\n onChange?.(e);\n };\n\n const handleKeyDown = (e) => {\n if (onEnter && e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n onEnter(e);\n }\n onKeyDown?.(e);\n };\n\n const clearButton = clearable && value && !disabled && !readonly\n ? ED.createElement('button', {\n className: 'ed-absolute ed-top-2 ed-right-2 ed-p-1 ed-rounded ed-text-gray-400 hover:ed-text-gray-600 hover:ed-bg-gray-100 ed-transition-colors ed-z-10',\n onClick: (e) => {\n e.stopPropagation();\n onClear?.();\n onChange?.({ target: { value: '' } });\n },\n tabIndex: -1,\n type: 'button',\n 'aria-label': 'Clear',\n children: ED.createElement('svg', {\n className: 'ed-w-4 ed-h-4',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M6 18L18 6M6 6l12 12' }),\n }),\n })\n : null;\n\n const charCount = showCount\n ? ED.createElement('div', {\n className: 'ed-flex ed-justify-end ed-mt-1',\n }, [\n maxLength\n ? ED.createElement('span', {\n key: 'count',\n className: `ed-text-xs ${(value?.length || 0) > maxLength ? 'ed-text-red-500' : 'ed-text-gray-400'}`,\n }, `${value?.length || 0} / ${maxLength}`)\n : ED.createElement('span', {\n key: 'count',\n className: 'ed-text-xs ed-text-gray-400',\n }, `${value?.length || 0}`),\n ])\n : null;\n\n const messageElement = errorMessage && currentState === 'error'\n ? ED.createElement('p', { className: 'ed-text-xs ed-text-red-500 ed-mt-1' }, errorMessage)\n : helperText\n ? ED.createElement('p', { className: 'ed-text-xs ed-text-gray-500 ed-mt-1' }, helperText)\n : null;\n\n const textareaElement = ED.createElement('textarea', {\n id,\n name,\n value,\n defaultValue,\n placeholder,\n rows: autoResize ? 1 : rows,\n cols,\n maxLength,\n disabled,\n readOnly: readonly,\n spellCheck,\n wrap,\n className: textareaClasses,\n style: textareaStyle,\n onChange: handleChange,\n onFocus,\n onBlur,\n onInput,\n onKeyDown: handleKeyDown,\n onKeyUp,\n onKeyPress,\n autoFocus,\n tabIndex,\n required,\n 'aria-invalid': currentState === 'error',\n 'aria-describedby': errorMessage ? `${id}-error` : undefined,\n ref: autoResize ? handleAutoResize : undefined,\n });\n\n return ED.createElement('div', {\n className: `ed-inline-flex ed-flex-col ${width ? '' : 'ed-w-full'}`,\n style: { width, ...style },\n }, [\n label && !floatingLabel\n ? ED.createElement('label', {\n key: 'label',\n htmlFor: id,\n className: `ed-block ed-text-sm ed-font-medium ed-mb-1 ${required ? \"ed-after:content-['*'] ed-after:ed-text-red-500 ed-after:ed-ml-0.5\" : ''} ${disabled ? 'ed-text-gray-400' : 'ed-text-gray-700'}`,\n }, label)\n : null,\n ED.createElement('div', {\n key: 'textarea-wrapper',\n className: 'ed-relative',\n children: [textareaElement, clearButton],\n }),\n ED.createElement('div', {\n key: 'messages',\n className: 'ed-flex ed-justify-between',\n children: [messageElement, charCount].filter(Boolean),\n }),\n ].filter(Boolean));\n}\n\nTextarea.displayName = 'Textarea';\nTextarea.SIZES = TEXTAREA_SIZES;\nTextarea.STATES = VALIDATION_STATES;\n\nmodule.exports = Textarea;\n","/**\n * Toast Component for ElementDrawing Framework\n * Supports positions, types, auto-close, progress bar, stacked, promise toast, custom icon\n */\nconst ED = require('../core/element');\n\nconst TOAST_TYPES = {\n success: {\n icon: ED.createElement('svg', {\n className: 'ed-w-5 ed-h-5',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M5 13l4 4L19 7' }),\n }),\n iconColor: 'ed-text-green-500',\n bg: 'ed-bg-green-50 ed-border-green-200',\n progressColor: 'ed-bg-green-500',\n },\n error: {\n icon: ED.createElement('svg', {\n className: 'ed-w-5 ed-h-5',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z' }),\n }),\n iconColor: 'ed-text-red-500',\n bg: 'ed-bg-red-50 ed-border-red-200',\n progressColor: 'ed-bg-red-500',\n },\n warning: {\n icon: ED.createElement('svg', {\n className: 'ed-w-5 ed-h-5',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M12 9v2m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z' }),\n }),\n iconColor: 'ed-text-yellow-500',\n bg: 'ed-bg-yellow-50 ed-border-yellow-200',\n progressColor: 'ed-bg-yellow-500',\n },\n info: {\n icon: ED.createElement('svg', {\n className: 'ed-w-5 ed-h-5',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z' }),\n }),\n iconColor: 'ed-text-blue-500',\n bg: 'ed-bg-blue-50 ed-border-blue-200',\n progressColor: 'ed-bg-blue-500',\n },\n loading: {\n icon: null,\n iconColor: 'ed-text-blue-500',\n bg: 'ed-bg-blue-50 ed-border-blue-200',\n progressColor: 'ed-bg-blue-500',\n },\n};\n\nconst TOAST_POSITIONS = {\n 'top-left': 'ed-top-4 ed-left-4',\n 'top-center': 'ed-top-4 ed-left-1/2 ed--translate-x-1/2',\n 'top-right': 'ed-top-4 ed-right-4',\n 'bottom-left': 'ed-bottom-4 ed-left-4',\n 'bottom-center': 'ed-bottom-4 ed-left-1/2 ed--translate-x-1/2',\n 'bottom-right': 'ed-bottom-4 ed-right-4',\n};\n\nconst loadingSpinner = ED.createElement('div', {\n className: 'ed-w-5 ed-h-5 ed-border-2 ed-border-blue-500 ed-border-t-transparent ed-rounded-full ed-animate-spin',\n});\n\nfunction ToastItem(props) {\n const {\n id,\n type = 'info',\n message,\n description,\n icon,\n closable = true,\n onClose,\n autoClose,\n duration = 5000,\n progressBar = true,\n onClick,\n className = '',\n style = {},\n action,\n title,\n promise,\n } = props;\n\n const toastType = TOAST_TYPES[type] || TOAST_TYPES.info;\n\n const toastClasses = [\n 'ed-flex ed-items-start ed-gap-3 ed-px-4 ed-py-3 ed-rounded-lg ed-border ed-shadow-lg ed-min-w-[300px] ed-max-w-[420px]',\n toastType.bg,\n 'ed-animate-slide-in-right',\n onClick ? 'ed-cursor-pointer' : '',\n className,\n ].filter(Boolean).join(' ');\n\n const iconElement = icon !== undefined ? icon\n : type === 'loading'\n ? loadingSpinner\n : ED.createElement('span', { className: `ed-flex-shrink-0 ed-mt-0.5 ${toastType.iconColor}` },\n toastType.icon\n );\n\n const closeElement = closable\n ? ED.createElement('button', {\n className: 'ed-flex-shrink-0 ed-p-0.5 ed-rounded ed-text-gray-400 hover:ed-text-gray-600 ed-transition-colors',\n onClick: (e) => { e.stopPropagation(); onClose?.(id); },\n 'aria-label': 'Close notification',\n children: ED.createElement('svg', {\n className: 'ed-w-4 ed-h-4',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M6 18L18 6M6 6l12 12' }),\n }),\n })\n : null;\n\n const progressBarElement = progressBar && autoClose\n ? ED.createElement('div', {\n className: 'ed-absolute ed-bottom-0 ed-left-0 ed-right-0 ed-h-1 ed-rounded-b-lg ed-overflow-hidden',\n children: ED.createElement('div', {\n className: `ed-h-full ${toastType.progressColor} ed-opacity-50`,\n style: {\n animation: `ed-shrink ${duration}ms linear forwards`,\n },\n }),\n })\n : null;\n\n const actionElement = action\n ? ED.createElement('div', { className: 'ed-flex-shrink-0 ed-ml-2' }, action)\n : null;\n\n return ED.createElement('div', {\n className: toastClasses,\n style: { position: 'relative', ...style },\n onClick: onClick ? () => onClick(id) : undefined,\n role: type === 'error' ? 'alert' : 'status',\n children: [\n iconElement,\n ED.createElement('div', { className: 'ed-flex-1 ed-min-w-0' }, [\n title || (typeof message === 'string' && message.length > 0)\n ? ED.createElement('p', { key: 'message', className: 'ed-text-sm ed-font-medium ed-text-gray-900' }, title || message)\n : null,\n description || (title && message)\n ? ED.createElement('p', { key: 'desc', className: 'ed-text-xs ed-text-gray-600 ed-mt-0.5' }, description || message)\n : null,\n ].filter(Boolean)),\n actionElement,\n closeElement,\n progressBarElement,\n ],\n });\n}\n\nToastItem.displayName = 'ToastItem';\n\nfunction ToastContainer(props) {\n const {\n toasts = [],\n position = 'top-right',\n onClose,\n stacked = false,\n className = '',\n style = {},\n maxToasts = 5,\n } = props;\n\n const positionClass = TOAST_POSITIONS[position] || TOAST_POSITIONS['top-right'];\n\n const visibleToasts = stacked ? toasts.slice(0, maxToasts) : toasts;\n\n return ED.createElement('div', {\n className: [\n 'ed-fixed ed-z-[9999] ed-pointer-events-none',\n positionClass,\n className,\n ].filter(Boolean).join(' '),\n style,\n children: ED.createElement('div', {\n className: `ed-flex ed-flex-col ed-gap-2 ed-pointer-events-auto ${stacked ? '' : ''}`,\n children: visibleToasts.map((toast) =>\n ED.createElement(ToastItem, {\n key: toast.id,\n ...toast,\n onClose,\n })\n ),\n }),\n });\n}\n\nToastContainer.displayName = 'ToastContainer';\n\nlet toastId = 0;\nconst toastStore = { toasts: [], listeners: [] };\n\nfunction Toast(props) {\n const {\n position = 'top-right',\n stacked = false,\n maxToasts = 5,\n className = '',\n style = {},\n } = props;\n\n return ED.createElement(ToastContainer, {\n toasts: toastStore.toasts,\n position,\n stacked,\n maxToasts,\n className,\n style,\n onClose: Toast.remove,\n });\n}\n\nToast.show = (options) => {\n const id = ++toastId;\n const toast = { id, ...options };\n toastStore.toasts = [...toastStore.toasts, toast];\n toastStore.listeners.forEach(fn => fn(toastStore.toasts));\n\n if (options.autoClose !== false && options.type !== 'loading') {\n const duration = options.duration || 5000;\n setTimeout(() => Toast.remove(id), duration);\n }\n\n return id;\n};\n\nToast.success = (message, options = {}) => Toast.show({ type: 'success', message, ...options });\nToast.error = (message, options = {}) => Toast.show({ type: 'error', message, ...options });\nToast.warning = (message, options = {}) => Toast.show({ type: 'warning', message, ...options });\nToast.info = (message, options = {}) => Toast.show({ type: 'info', message, ...options });\nToast.loading = (message, options = {}) => Toast.show({ type: 'loading', message, autoClose: false, ...options });\n\nToast.remove = (id) => {\n toastStore.toasts = toastStore.toasts.filter(t => t.id !== id);\n toastStore.listeners.forEach(fn => fn(toastStore.toasts));\n};\n\nToast.clear = () => {\n toastStore.toasts = [];\n toastStore.listeners.forEach(fn => fn(toastStore.toasts));\n};\n\nToast.promise = (promise, options = {}) => {\n const id = Toast.loading(options.loading || 'Loading...');\n return promise\n .then((result) => {\n Toast.remove(id);\n Toast.success(options.success || 'Success!');\n return result;\n })\n .catch((error) => {\n Toast.remove(id);\n Toast.error(options.error || 'Something went wrong');\n throw error;\n });\n};\n\nToast.displayName = 'Toast';\nToast.Container = ToastContainer;\nToast.Item = ToastItem;\nToast.TYPES = TOAST_TYPES;\nToast.POSITIONS = TOAST_POSITIONS;\n\nmodule.exports = Toast;\n","/**\n * Tooltip Component for ElementDrawing Framework\n * Supports positions, trigger, arrow, delay, HTML content, theme (dark, light)\n */\nconst ED = require('../core/element');\n\nconst POSITION_STYLES = {\n top: {\n tooltip: 'ed-bottom-full ed-left-1/2 ed--translate-x-1/2 ed-mb-2',\n arrow: 'ed-top-full ed-left-1/2 ed--translate-x-1/2 ed-border-t-current ed-border-x-transparent ed-border-b-transparent',\n },\n 'top-start': {\n tooltip: 'ed-bottom-full ed-left-0 ed-mb-2',\n arrow: 'ed-top-full ed-left-3 ed-border-t-current ed-border-x-transparent ed-border-b-transparent',\n },\n 'top-end': {\n tooltip: 'ed-bottom-full ed-right-0 ed-mb-2',\n arrow: 'ed-top-full ed-right-3 ed-border-t-current ed-border-x-transparent ed-border-b-transparent',\n },\n bottom: {\n tooltip: 'ed-top-full ed-left-1/2 ed--translate-x-1/2 ed-mt-2',\n arrow: 'ed-bottom-full ed-left-1/2 ed--translate-x-1/2 ed-border-b-current ed-border-x-transparent ed-border-t-transparent',\n },\n 'bottom-start': {\n tooltip: 'ed-top-full ed-left-0 ed-mt-2',\n arrow: 'ed-bottom-full ed-left-3 ed-border-b-current ed-border-x-transparent ed-border-t-transparent',\n },\n 'bottom-end': {\n tooltip: 'ed-top-full ed-right-0 ed-mt-2',\n arrow: 'ed-bottom-full ed-right-3 ed-border-b-current ed-border-x-transparent ed-border-t-transparent',\n },\n left: {\n tooltip: 'ed-right-full ed-top-1/2 ed--translate-y-1/2 ed-mr-2',\n arrow: 'ed-left-full ed-top-1/2 ed--translate-y-1/2 ed-border-l-current ed-border-y-transparent ed-border-r-transparent',\n },\n 'left-start': {\n tooltip: 'ed-right-full ed-top-0 ed-mr-2',\n arrow: 'ed-left-full ed-top-3 ed-border-l-current ed-border-y-transparent ed-border-r-transparent',\n },\n 'left-end': {\n tooltip: 'ed-right-full ed-bottom-0 ed-mr-2',\n arrow: 'ed-left-full ed-bottom-3 ed-border-l-current ed-border-y-transparent ed-border-r-transparent',\n },\n right: {\n tooltip: 'ed-left-full ed-top-1/2 ed--translate-y-1/2 ed-ml-2',\n arrow: 'ed-right-full ed-top-1/2 ed--translate-y-1/2 ed-border-r-current ed-border-y-transparent ed-border-l-transparent',\n },\n 'right-start': {\n tooltip: 'ed-left-full ed-top-0 ed-ml-2',\n arrow: 'ed-right-full ed-top-3 ed-border-r-current ed-border-y-transparent ed-border-l-transparent',\n },\n 'right-end': {\n tooltip: 'ed-left-full ed-bottom-0 ed-ml-2',\n arrow: 'ed-right-full ed-bottom-3 ed-border-r-current ed-border-y-transparent ed-border-l-transparent',\n },\n};\n\nconst THEME_CLASSES = {\n dark: {\n tooltip: 'ed-bg-gray-900 ed-text-white',\n arrow: 'ed-text-gray-900',\n },\n light: {\n tooltip: 'ed-bg-white ed-text-gray-800 ed-shadow-lg ed-border ed-border-gray-200',\n arrow: 'ed-text-white',\n },\n};\n\nfunction Tooltip(props) {\n const {\n children,\n title,\n content,\n position = 'top',\n placement = position,\n trigger = 'hover',\n arrow = true,\n delay = 0,\n delayShow = delay,\n delayHide = 0,\n htmlContent,\n theme = 'dark',\n className = '',\n style = {},\n tooltipClassName = '',\n tooltipStyle = {},\n open,\n defaultOpen = false,\n onOpenChange,\n disabled = false,\n offset = 0,\n zIndex = 50,\n maxWidth = 250,\n animation = true,\n followCursor = false,\n destroyTooltipOnHide = false,\n onVisibleChange,\n mouseEnterDelay = delayShow || 100,\n mouseLeaveDelay = delayHide || 100,\n clickToHide = true,\n } = props;\n\n const pos = POSITION_STYLES[placement || position] || POSITION_STYLES.top;\n const themeConfig = THEME_CLASSES[theme] || THEME_CLASSES.dark;\n const isVisible = open !== undefined ? open : defaultOpen;\n\n if (disabled) return children;\n\n const tooltipContent = title || content || htmlContent;\n\n if (!tooltipContent) return children;\n\n const tooltipClasses = [\n 'ed-absolute ed-px-3 ed-py-1.5 ed-text-xs ed-font-medium ed-rounded-md ed-whitespace-normal ed-pointer-events-none',\n 'ed-z-50 ed-transition-opacity ed-duration-200',\n pos.tooltip,\n themeConfig.tooltip,\n isVisible ? 'ed-opacity-100' : 'ed-opacity-0 ed-invisible',\n animation ? 'ed-transition-all ed-duration-200' : '',\n tooltipClassName,\n ].filter(Boolean).join(' ');\n\n const arrowClasses = [\n 'ed-absolute ed-w-0 ed-h-0 ed-border-4',\n pos.arrow,\n themeConfig.arrow,\n ].join(' ');\n\n const arrowElement = arrow\n ? ED.createElement('div', {\n className: arrowClasses,\n 'aria-hidden': 'true',\n })\n : null;\n\n const tooltipElement = ED.createElement('div', {\n className: tooltipClasses,\n style: {\n maxWidth,\n zIndex,\n ...(offset ? { marginTop: position.includes('bottom') ? offset : 0, marginBottom: position.includes('top') ? offset : 0, marginLeft: position.includes('right') ? offset : 0, marginRight: position.includes('left') ? offset : 0 } : {}),\n ...tooltipStyle,\n },\n role: 'tooltip',\n children: [\n htmlContent\n ? ED.createElement('div', { dangerouslySetInnerHTML: { __html: htmlContent } })\n : ED.createElement('span', null, tooltipContent),\n arrowElement,\n ],\n });\n\n const triggerEvents = {};\n if (trigger === 'hover') {\n triggerEvents.onMouseEnter = () => onOpenChange?.(true) || onVisibleChange?.(true);\n triggerEvents.onMouseLeave = () => onOpenChange?.(false) || onVisibleChange?.(false);\n } else if (trigger === 'click') {\n triggerEvents.onClick = () => {\n onOpenChange?.(!isVisible) || onVisibleChange?.(!isVisible);\n };\n } else if (trigger === 'focus') {\n triggerEvents.onFocus = () => onOpenChange?.(true) || onVisibleChange?.(true);\n triggerEvents.onBlur = () => onOpenChange?.(false) || onVisibleChange?.(false);\n }\n\n return ED.createElement('div', {\n className: `ed-relative ed-inline-flex ${className}`,\n style,\n ...triggerEvents,\n children: [children, tooltipElement],\n });\n}\n\nTooltip.displayName = 'Tooltip';\nTooltip.POSITIONS = POSITION_STYLES;\nTooltip.THEMES = THEME_CLASSES;\n\nmodule.exports = Tooltip;\n","/**\n * Typography Component for ElementDrawing Framework\n * Supports Heading (h1-h6), Text, Paragraph, Title, strong, italic, underline, strikethrough, code, mark, delete, keyboard\n */\nconst ED = require('../core/element');\n\nconst HEADING_SIZES = {\n h1: 'ed-text-4xl ed-font-bold ed-leading-tight',\n h2: 'ed-text-3xl ed-font-bold ed-leading-tight',\n h3: 'ed-text-2xl ed-font-semibold ed-leading-snug',\n h4: 'ed-text-xl ed-font-semibold ed-leading-snug',\n h5: 'ed-text-lg ed-font-medium ed-leading-normal',\n h6: 'ed-text-base ed-font-medium ed-leading-normal',\n};\n\nconst TEXT_COLORS = {\n default: 'ed-text-gray-900',\n secondary: 'ed-text-gray-500',\n success: 'ed-text-green-600',\n warning: 'ed-text-yellow-600',\n danger: 'ed-text-red-600',\n info: 'ed-text-blue-600',\n muted: 'ed-text-gray-400',\n white: 'ed-text-white',\n inherit: '',\n};\n\nfunction Heading(props) {\n const {\n level = 2,\n children,\n className = '',\n style = {},\n color,\n align,\n id,\n weight,\n truncate = false,\n ellipsis = false,\n underline: headingUnderline = false,\n italic = false,\n transform,\n marginTop = true,\n marginBottom = true,\n } = props;\n\n const tag = `h${level}`;\n const sizeClass = HEADING_SIZES[tag] || HEADING_SIZES.h2;\n\n const headingClasses = [\n sizeClass,\n color ? (TEXT_COLORS[color] || `ed-text-${color}`) : '',\n align ? `ed-text-${align}` : '',\n weight ? `ed-font-${weight}` : '',\n truncate || ellipsis ? 'ed-truncate' : '',\n headingUnderline ? 'ed-underline' : '',\n italic ? 'ed-italic' : '',\n transform ? `ed-${transform}` : '',\n marginTop ? 'ed-mt-6' : '',\n marginBottom ? 'ed-mb-2' : '',\n className,\n ].filter(Boolean).join(' ');\n\n return ED.createElement(tag, {\n id,\n className: headingClasses,\n style: { ...(ellipsis ? { maxWidth: '100%' } : {}), ...style },\n children,\n });\n}\n\nHeading.displayName = 'Heading';\n\nfunction Text(props) {\n const {\n children,\n className = '',\n style = {},\n size,\n color,\n weight,\n align,\n truncate = false,\n ellipsis = false,\n strong = false,\n italic = false,\n underline = false,\n strikethrough = false,\n delete: isDelete = false,\n mark = false,\n code = false,\n keyboard = false,\n small = false,\n disabled = false,\n copyable = false,\n onCopy,\n editable = false,\n onEdit,\n type,\n transform,\n tag: customTag,\n onClick,\n title,\n } = props;\n\n const colorClass = type ? (TEXT_COLORS[type] || '') : color ? (TEXT_COLORS[color] || `ed-text-${color}`) : '';\n\n const sizeClasses = {\n xs: 'ed-text-xs',\n sm: 'ed-text-sm',\n md: 'ed-text-base',\n lg: 'ed-text-lg',\n xl: 'ed-text-xl',\n };\n\n const textClasses = [\n size ? sizeClasses[size] || `ed-text-${size}` : '',\n colorClass,\n weight ? `ed-font-${weight}` : strong ? 'ed-font-semibold' : '',\n align ? `ed-text-${align}` : '',\n truncate || ellipsis ? 'ed-truncate' : '',\n italic ? 'ed-italic' : '',\n underline ? 'ed-underline' : '',\n strikethrough || isDelete ? 'ed-line-through' : '',\n mark ? 'ed-bg-yellow-200 ed-px-1 ed-rounded' : '',\n code ? 'ed-bg-gray-100 ed-px-1.5 ed-py-0.5 ed-rounded ed-text-sm ed-font-mono ed-text-pink-600' : '',\n keyboard ? 'ed-bg-gray-100 ed-px-1.5 ed-py-0.5 ed-rounded ed-border ed-border-gray-300 ed-shadow-sm ed-text-xs ed-font-mono' : '',\n small ? 'ed-text-xs' : '',\n disabled ? 'ed-text-gray-400 ed-cursor-not-allowed' : '',\n transform ? `ed-${transform}` : '',\n className,\n ].filter(Boolean).join(' ');\n\n let content = children;\n\n if (mark) {\n content = ED.createElement('mark', {\n className: 'ed-bg-yellow-200 ed-px-1 ed-rounded',\n }, children);\n }\n\n if (code) {\n content = ED.createElement('code', {\n className: 'ed-bg-gray-100 ed-px-1.5 ed-py-0.5 ed-rounded ed-text-sm ed-font-mono ed-text-pink-600',\n }, children);\n }\n\n if (keyboard) {\n content = ED.createElement('kbd', {\n className: 'ed-bg-gray-100 ed-px-1.5 ed-py-0.5 ed-rounded ed-border ed-border-gray-300 ed-shadow-sm ed-text-xs ed-font-mono',\n }, children);\n }\n\n if (isDelete || strikethrough) {\n content = ED.createElement('del', null, content);\n }\n\n if (strong && !weight) {\n content = ED.createElement('strong', null, content);\n }\n\n const copyButton = copyable\n ? ED.createElement('button', {\n className: 'ed-ml-2 ed-p-0.5 ed-text-gray-400 hover:ed-text-gray-600 ed-transition-colors ed-inline-flex',\n onClick: () => {\n if (typeof navigator !== 'undefined' && navigator.clipboard) {\n navigator.clipboard.writeText(typeof children === 'string' ? children : '');\n onCopy?.();\n }\n },\n 'aria-label': 'Copy text',\n children: ED.createElement('svg', {\n className: 'ed-w-4 ed-h-4',\n fill: 'none', viewBox: '0 0 24 24', stroke: 'currentColor',\n children: ED.createElement('path', { strokeLinecap: 'round', strokeLinejoin: 'round', strokeWidth: 2, d: 'M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z' }),\n }),\n })\n : null;\n\n const Tag = customTag || 'span';\n\n return ED.createElement(Tag, {\n className: textClasses,\n style: { ...(ellipsis ? { maxWidth: '100%' } : {}), ...style },\n onClick,\n title,\n children: [content, copyButton].filter(Boolean),\n });\n}\n\nText.displayName = 'Text';\n\nfunction Paragraph(props) {\n const {\n children,\n className = '',\n style = {},\n color,\n size,\n weight,\n align,\n truncate = false,\n ellipsis = false,\n strong = false,\n italic = false,\n underline = false,\n mark = false,\n code = false,\n disabled = false,\n type,\n rows,\n expandable = false,\n onExpand,\n copyable = false,\n onCopy,\n editable = false,\n onEdit,\n } = props;\n\n const colorClass = type ? (TEXT_COLORS[type] || '') : color ? (TEXT_COLORS[color] || `ed-text-${color}`) : '';\n\n const paragraphClasses = [\n 'ed-leading-relaxed ed-mb-4',\n colorClass,\n weight ? `ed-font-${weight}` : strong ? 'ed-font-semibold' : '',\n align ? `ed-text-${align}` : '',\n truncate || ellipsis ? 'ed-truncate' : '',\n italic ? 'ed-italic' : '',\n underline ? 'ed-underline' : '',\n mark ? 'ed-bg-yellow-200 ed-px-1 ed-rounded' : '',\n disabled ? 'ed-text-gray-400' : '',\n rows && !ellipsis ? `ed-line-clamp-${rows}` : '',\n className,\n ].filter(Boolean).join(' ');\n\n return ED.createElement('p', {\n className: paragraphClasses,\n style,\n children,\n });\n}\n\nParagraph.displayName = 'Paragraph';\n\nfunction Title(props) {\n const {\n children,\n level = 3,\n className = '',\n style = {},\n color,\n align,\n weight,\n underline = false,\n italic = false,\n truncate = false,\n id,\n } = props;\n\n return ED.createElement(Heading, {\n level,\n color,\n align,\n weight,\n underline,\n italic,\n truncate,\n id,\n className,\n style,\n children,\n });\n}\n\nTitle.displayName = 'Title';\n\nfunction Typography(props) {\n const {\n children,\n className = '',\n style = {},\n } = props;\n\n return ED.createElement('div', {\n className: `ed-typography ed-text-gray-900 ${className}`,\n style,\n children,\n });\n}\n\nTypography.displayName = 'Typography';\nTypography.Heading = Heading;\nTypography.Text = Text;\nTypography.Paragraph = Paragraph;\nTypography.Title = Title;\nTypography.HEADING_SIZES = HEADING_SIZES;\nTypography.COLORS = TEXT_COLORS;\n\nmodule.exports = Typography;\n","/**\n * ElementDrawing Component Library - Index\n * Exports all UI components\n */\n\nconst Button = require('./Button');\nconst Card = require('./Card');\nconst Modal = require('./Modal');\nconst Input = require('./Input');\nconst Table = require('./Table');\nconst Navbar = require('./Navbar');\nconst Sidebar = require('./Sidebar');\nconst Form = require('./Form');\nconst Tabs = require('./Tabs');\nconst Accordion = require('./Accordion');\nconst Alert = require('./Alert');\nconst Avatar = require('./Avatar');\nconst Badge = require('./Badge');\nconst Breadcrumb = require('./Breadcrumb');\nconst Carousel = require('./Carousel');\nconst Checkbox = require('./Checkbox');\nconst Dialog = require('./Dialog');\nconst Drawer = require('./Drawer');\nconst Dropdown = require('./Dropdown');\nconst Menu = require('./Menu');\nconst Pagination = require('./Pagination');\nconst Progress = require('./Progress');\nconst Radio = require('./Radio');\nconst Select = require('./Select');\nconst Slider = require('./Slider');\nconst Spinner = require('./Spinner');\nconst Switch = require('./Switch');\nconst Textarea = require('./Textarea');\nconst Toast = require('./Toast');\nconst Tooltip = require('./Tooltip');\nconst Typography = require('./Typography');\n\nmodule.exports = {\n Button,\n Card,\n Modal,\n Input,\n Table,\n Navbar,\n Sidebar,\n Form,\n Tabs,\n Accordion,\n Alert,\n Avatar,\n Badge,\n Breadcrumb,\n Carousel,\n Checkbox,\n Dialog,\n Drawer,\n Dropdown,\n Menu,\n Pagination,\n Progress,\n Radio,\n Select,\n Slider,\n Spinner,\n Switch,\n Textarea,\n Toast,\n Tooltip,\n Typography,\n};\n","/**\n * JSX Hooks Index\n * ElementDrawing Framework - Re-exports all hooks from a single entry point,\n * provides shared hook context management, component lifecycle coordination,\n * development tools integration, and hook validation.\n */\n\n'use strict';\n\nconst { useState, useTransition, useDeferredValue, batchedUpdates, configurePersistence, deepEqual, shallowEqual, runWithPriority, startTransition, PRIORITY } = require('./useState');\nconst { useEffect, useInsertionEffect, useDeepCompareEffect, useEffectOnce, useUpdateEffect, batchEffects, areDepsEqual, areDepsDeepEqual, cancelEffect, setStrictMode, isInStrictMode, getPendingEffectCounts } = require('./useEffect');\nconst { useContext, createContext, useContextSelector, useContextObserver, useMergedContext, composeContexts, getContextVersion } = require('./useContext');\nconst { useReducer, batchDispatches, createLoggerMiddleware, createValidationMiddleware, createTransformMiddleware, createThrottleMiddleware, createActionCreators, createAction } = require('./useReducer');\nconst { useCallback, useDebouncedCallback, useThrottledCallback, useOnceCallback, useDeepCompareCallback, useComposedCallback, setCallbackProfiling, getCallbackProfile } = require('./useCallback');\nconst { useMemo, useMemoWith, useMemoTTL, useDeepCompareMemo, useMemoLRU, invalidateMemo, invalidateAllMemos, setMemoProfiling, getMemoProfile } = require('./useMemo');\nconst { useRef, usePrevious, usePreviousWithInit, createRef, useCallbackRef, forwardRef, isForwardRef, useMergedRefs, useMeasureRef, useInViewRef, useFocusRef, useScrollRef, processPendingPrevUpdates } = require('./useRef');\nconst { useLayoutEffect, useIsomorphicLayoutEffect, usePriorityLayoutEffect, useMutationObserver, useResizeObserver, useAutoFocus, LAYOUT_PRIORITY } = require('./useLayoutEffect');\n\n// ─── Shared Hook Context ──────────────────────────────────────────────────────\n\n/**\n * Set the currently rendering component for all hooks.\n * Called by the framework before each component render.\n * @param {Object} component\n */\nfunction setCurrentComponent(component) {\n // Propagate to all hook modules\n const useStateModule = require('./useState');\n const useEffectModule = require('./useEffect');\n const useContextModule = require('./useContext');\n const useReducerModule = require('./useReducer');\n const useCallbackModule = require('./useCallback');\n const useMemoModule = require('./useMemo');\n const useRefModule = require('./useRef');\n const useLayoutEffectModule = require('./useLayoutEffect');\n\n useStateModule.setCurrentComponent(component);\n useEffectModule.setCurrentComponent(component);\n useContextModule.setCurrentComponent(component);\n useReducerModule.setCurrentComponent(component);\n useCallbackModule.setCurrentComponent(component);\n useMemoModule.setCurrentComponent(component);\n useRefModule.setCurrentComponent(component);\n useLayoutEffectModule.setCurrentComponent(component);\n}\n\n/**\n * Reset all hook indices after rendering is complete.\n */\nfunction resetHookIndex() {\n const useStateModule = require('./useState');\n const useEffectModule = require('./useEffect');\n const useContextModule = require('./useContext');\n const useReducerModule = require('./useReducer');\n const useCallbackModule = require('./useCallback');\n const useMemoModule = require('./useMemo');\n const useRefModule = require('./useRef');\n const useLayoutEffectModule = require('./useLayoutEffect');\n\n useStateModule.resetHookIndex();\n useEffectModule.resetHookIndex();\n useContextModule.resetHookIndex();\n useReducerModule.resetHookIndex();\n useCallbackModule.resetHookIndex();\n useMemoModule.resetHookIndex();\n useRefModule.resetHookIndex();\n useLayoutEffectModule.resetHookIndex();\n}\n\n/**\n * Clean up all hook state for a component on unmount.\n * @param {Object} component\n */\nfunction cleanupComponent(component) {\n const useStateModule = require('./useState');\n const useEffectModule = require('./useEffect');\n const useContextModule = require('./useContext');\n const useReducerModule = require('./useReducer');\n const useMemoModule = require('./useMemo');\n const useRefModule = require('./useRef');\n const useLayoutEffectModule = require('./useLayoutEffect');\n\n useStateModule.cleanupComponentState(component);\n useEffectModule.cleanupComponentEffects(component);\n useContextModule.cleanupContextSubscriptions(component);\n useReducerModule.cleanupReducerState(component);\n useMemoModule.cleanupMemoCache(component);\n useRefModule.cleanupRefs(component);\n useLayoutEffectModule.cleanupLayoutEffects(component);\n}\n\n/**\n * Flush all pending effects in the correct order.\n */\nfunction flushAllEffects() {\n const useEffectModule = require('./useEffect');\n const useLayoutEffectModule = require('./useLayoutEffect');\n\n // Flush in correct order: insertion -> layout -> passive\n useLayoutEffectModule.flushLayoutEffects();\n useEffectModule.flushAllEffects();\n}\n\n// ─── Hook Validation (Development Mode) ───────────────────────────────────────\n\nlet hookCallOrder = [];\nlet validationEnabled = false;\n\n/**\n * Enable hook order validation in development mode.\n * Detects hooks called in different orders across renders.\n * @param {boolean} enabled\n */\nfunction setHookValidation(enabled) {\n validationEnabled = enabled;\n hookCallOrder = [];\n}\n\n/**\n * Record a hook call for validation.\n * @param {string} hookName - Name of the hook\n * @param {Object} component - The component instance\n */\nfunction recordHookCall(hookName, component) {\n if (!validationEnabled) return;\n\n const key = component._componentId || component;\n if (!hookCallOrder[key]) {\n hookCallOrder[key] = [];\n }\n hookCallOrder[key].push(hookName);\n}\n\n/**\n * Validate hook call order for a component.\n * Detects if hooks are called in a different order than previous render.\n * @param {Object} component\n * @returns {boolean} True if hook order is valid\n */\nfunction validateHookOrder(component) {\n if (!validationEnabled) return true;\n\n const key = component._componentId || component;\n const currentOrder = hookCallOrder[key];\n\n if (!currentOrder || currentOrder.length === 0) return true;\n\n if (!component._prevHookOrder) {\n component._prevHookOrder = currentOrder.slice();\n return true;\n }\n\n const prevOrder = component._prevHookOrder;\n\n if (prevOrder.length !== currentOrder.length) {\n console.error(\n '[Hooks] Hook call order changed! ' +\n `Previous: [${prevOrder.join(', ')}] ` +\n `Current: [${currentOrder.join(', ')}]`\n );\n return false;\n }\n\n for (let i = 0; i < prevOrder.length; i++) {\n if (prevOrder[i] !== currentOrder[i]) {\n console.error(\n '[Hooks] Hook call order changed at index ' + i + '! ' +\n `Previous: ${prevOrder[i]} Current: ${currentOrder[i]}`\n );\n return false;\n }\n }\n\n component._prevHookOrder = currentOrder.slice();\n return true;\n}\n\n// ─── Development Tools Integration ────────────────────────────────────────────\n\nlet devToolsCallback = null;\n\n/**\n * Register a callback for development tools integration.\n * Called with hook state changes for inspection.\n * @param {Function} callback\n */\nfunction registerDevTools(callback) {\n devToolsCallback = callback;\n}\n\n/**\n * Notify dev tools of a hook state change.\n * @param {string} hookName\n * @param {Object} component\n * @param {*} newValue\n * @param {*} oldValue\n */\nfunction notifyDevTools(hookName, component, newValue, oldValue) {\n if (devToolsCallback) {\n try {\n devToolsCallback({\n type: 'hook-update',\n hookName,\n componentId: component._componentId,\n componentName: component.displayName || component.name || 'Anonymous',\n newValue,\n oldValue,\n timestamp: Date.now(),\n });\n } catch (error) {\n // Dev tools errors should not break the app\n }\n }\n}\n\n// ─── Hook Profiling ───────────────────────────────────────────────────────────\n\n/**\n * Get comprehensive profiling data for a component.\n * @param {Object} component\n * @returns {Object} Profiling data\n */\nfunction getComponentProfile(component) {\n return {\n callbacks: getCallbackProfile(component),\n memos: getMemoProfile(component),\n effectCounts: getPendingEffectCounts(),\n };\n}\n\n/**\n * Enable all profiling.\n * @param {boolean} enabled\n */\nfunction setProfiling(enabled) {\n setCallbackProfiling(enabled);\n setMemoProfiling(enabled);\n}\n\n// ─── Post-Render Processing ───────────────────────────────────────────────────\n\n/**\n * Process any post-render tasks like previous value updates.\n * Called after the render phase completes but before commit.\n * @param {Object} component\n */\nfunction postRenderProcess(component) {\n processPendingPrevUpdates(component);\n}\n\n// ─── Exports ──────────────────────────────────────────────────────────────────\n\nmodule.exports = {\n // ── Core hooks ──\n useState,\n useEffect,\n useContext,\n useReducer,\n useCallback,\n useMemo,\n useRef,\n useLayoutEffect,\n\n // ── Extended hooks ──\n useInsertionEffect,\n useIsomorphicLayoutEffect,\n usePriorityLayoutEffect,\n useTransition,\n useDeferredValue,\n useDebouncedCallback,\n useThrottledCallback,\n useOnceCallback,\n useDeepCompareCallback,\n useComposedCallback,\n useMemoWith,\n useMemoTTL,\n useDeepCompareMemo,\n useMemoLRU,\n useDeepCompareEffect,\n useEffectOnce,\n useUpdateEffect,\n usePrevious,\n usePreviousWithInit,\n useMutationObserver,\n useResizeObserver,\n useAutoFocus,\n useContextSelector,\n useContextObserver,\n\n // ── Context API ──\n createContext,\n useMergedContext,\n composeContexts,\n\n // ── Ref utilities ──\n createRef,\n useCallbackRef,\n forwardRef,\n isForwardRef,\n useMergedRefs,\n useMeasureRef,\n useInViewRef,\n useFocusRef,\n useScrollRef,\n\n // ── Batching ──\n batchedUpdates,\n batchDispatches,\n runWithPriority,\n startTransition,\n\n // ── Persistence ──\n configurePersistence,\n\n // ── Middleware ──\n createLoggerMiddleware,\n createValidationMiddleware,\n createTransformMiddleware,\n createThrottleMiddleware,\n createActionCreators,\n createAction,\n\n // ── Memo invalidation ──\n invalidateMemo,\n invalidateAllMemos,\n\n // ── State comparison ──\n deepEqual,\n shallowEqual,\n areDepsEqual,\n areDepsDeepEqual,\n\n // ── Framework integration ──\n setCurrentComponent,\n resetHookIndex,\n cleanupComponent,\n flushAllEffects,\n postRenderProcess,\n\n // ── Development tools ──\n registerDevTools,\n setHookValidation,\n validateHookOrder,\n recordHookCall,\n setProfiling,\n getComponentProfile,\n setStrictMode,\n isInStrictMode,\n cancelEffect,\n getContextVersion,\n getPendingEffectCounts,\n\n // ── Constants ──\n PRIORITY,\n LAYOUT_PRIORITY,\n};\n","/**\n * useCallback Hook Implementation\n * ElementDrawing Framework - Callback memoization with dependency comparison,\n * stable references, debouncing, throttling, profiling, and callback composition.\n */\n\n'use strict';\n\n// ─── Internal State ───────────────────────────────────────────────────────────\n\nlet currentlyRenderingComponent = null;\nlet hookIndex = 0;\n\n// ─── Callback Profiling ───────────────────────────────────────────────────────\n\nconst callbackProfiles = new WeakMap();\nlet profilingEnabled = false;\n\n/**\n * Enable or disable callback profiling.\n * @param {boolean} enabled\n */\nfunction setCallbackProfiling(enabled) {\n profilingEnabled = enabled;\n}\n\n/**\n * Get profiling data for a component's callbacks.\n * @param {Object} component\n * @returns {Object|null}\n */\nfunction getCallbackProfile(component) {\n return callbackProfiles.get(component) || null;\n}\n\n// ─── Dependency Comparison ────────────────────────────────────────────────────\n\n/**\n * Compare two dependency arrays for shallow equality.\n * @param {Array|null} prevDeps\n * @param {Array|null} nextDeps\n * @returns {boolean}\n */\nfunction areDepsEqual(prevDeps, nextDeps) {\n if (prevDeps === null || nextDeps === null) return false;\n if (prevDeps.length !== nextDeps.length) return false;\n for (let i = 0; i < prevDeps.length; i++) {\n if (Object.is(prevDeps[i], nextDeps[i])) continue;\n return false;\n }\n return true;\n}\n\n/**\n * Deep dependency comparison for complex dependency values.\n */\nfunction areDepsDeepEqual(prevDeps, nextDeps) {\n if (prevDeps === null || nextDeps === null) return false;\n if (prevDeps.length !== nextDeps.length) return false;\n for (let i = 0; i < prevDeps.length; i++) {\n if (deepEqualVal(prevDeps[i], nextDeps[i])) continue;\n return false;\n }\n return true;\n}\n\nfunction deepEqualVal(a, b) {\n if (Object.is(a, b)) return true;\n if (typeof a !== 'object' || a === null || typeof b !== 'object' || b === null) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!deepEqualVal(a[key], b[key])) return false;\n }\n return true;\n}\n\n/**\n * Validate dependency array.\n * @param {*} deps\n */\nfunction validateDeps(deps) {\n if (deps !== undefined && !Array.isArray(deps)) {\n throw new Error(\n '[useCallback] Dependencies must be an array or undefined. ' +\n `Received: ${typeof deps}`\n );\n }\n}\n\n// ─── Hook Context Management ──────────────────────────────────────────────────\n\nfunction setCurrentComponent(component) {\n currentlyRenderingComponent = component;\n hookIndex = 0;\n}\n\nfunction resetHookIndex() {\n hookIndex = 0;\n currentlyRenderingComponent = null;\n}\n\n// ─── useCallback Hook ─────────────────────────────────────────────────────────\n\n/**\n * useCallback - Memoize a callback function based on dependencies.\n * Returns a stable reference that only changes when dependencies change.\n *\n * @param {Function} callback - The callback function to memoize\n * @param {Array} deps - Dependency array; callback updates when deps change\n * @returns {Function} Memoized callback with stable reference\n *\n * @example\n * const handleClick = useCallback((event) => {\n * setCount(prev => prev + 1);\n * }, [setCount]);\n *\n * @example\n * // Preventing unnecessary child re-renders\n * const handleSubmit = useCallback((data) => {\n * onSubmit(data);\n * }, [onSubmit]);\n *\n * <ChildComponent onSubmit={handleSubmit} />\n */\nfunction useCallback(callback, deps) {\n const component = currentlyRenderingComponent;\n if (!component) {\n throw new Error('[useCallback] Must be called within a component render phase');\n }\n\n if (typeof callback !== 'function') {\n throw new Error(\n '[useCallback] First argument must be a function. ' +\n `Received: ${typeof callback}`\n );\n }\n\n validateDeps(deps);\n\n // Initialize hooks array\n if (!component._hooks) {\n component._hooks = [];\n }\n\n const currentHookIndex = hookIndex;\n const resolvedDeps = deps !== undefined ? deps : null;\n let hook;\n\n if (component._hooks[currentHookIndex]) {\n // Re-render: check if dependencies changed\n hook = component._hooks[currentHookIndex];\n\n const prevDeps = hook.deps;\n const depsChanged = !areDepsEqual(prevDeps, resolvedDeps);\n\n if (depsChanged) {\n // Dependencies changed - update the callback\n hook.callback = callback;\n hook.deps = resolvedDeps;\n hook.memoizedCallback = createStableCallback(callback, component, currentHookIndex);\n hook._updateCount++;\n }\n // If deps unchanged, keep the existing memoizedCallback\n } else {\n // First render: create the hook\n hook = {\n type: 'callback',\n callback,\n deps: resolvedDeps,\n memoizedCallback: null,\n _callCount: 0,\n _lastCalledAt: null,\n _updateCount: 0,\n _createdAt: Date.now(),\n };\n\n hook.memoizedCallback = createStableCallback(callback, component, currentHookIndex);\n component._hooks[currentHookIndex] = hook;\n }\n\n // Update profiling data\n if (profilingEnabled) {\n if (!callbackProfiles.has(component)) {\n callbackProfiles.set(component, {});\n }\n const profile = callbackProfiles.get(component);\n profile[currentHookIndex] = {\n callCount: hook._callCount,\n updateCount: hook._updateCount,\n lastCalledAt: hook._lastCalledAt,\n };\n }\n\n hookIndex++;\n return hook.memoizedCallback;\n}\n\n// ─── Stable Callback Creation ─────────────────────────────────────────────────\n\n/**\n * Create a stable callback wrapper that delegates to the current callback.\n * The wrapper function reference stays the same across renders while\n * always calling the latest callback version.\n *\n * @param {Function} initialCallback - The initial callback\n * @param {Object} component - The owning component\n * @param {number} hookIdx - The hook index\n * @returns {Function} Stable callback reference\n */\nfunction createStableCallback(initialCallback, component, hookIdx) {\n // The stable wrapper always reads the latest callback from the hook\n const stableCallback = function stableCallbackWrapper() {\n const hook = component._hooks?.[hookIdx];\n if (!hook) {\n console.warn('[useCallback] Callback called after component unmount');\n return undefined;\n }\n\n const currentCallback = hook.callback;\n hook._callCount++;\n hook._lastCalledAt = Date.now();\n\n try {\n return currentCallback.apply(this, arguments);\n } catch (error) {\n console.error('[useCallback] Callback execution error:', error);\n if (component._handleError) {\n component._handleError(error);\n }\n throw error;\n }\n };\n\n // Attach metadata for debugging and introspection\n Object.defineProperty(stableCallback, '_isStable', { value: true });\n Object.defineProperty(stableCallback, '_hookIndex', { value: hookIdx });\n Object.defineProperty(stableCallback, '_component', { value: component });\n\n /**\n * Get the number of times this callback has been invoked.\n * @returns {number}\n */\n stableCallback.getCallCount = function getCallCount() {\n const hook = component._hooks?.[hookIdx];\n return hook ? hook._callCount : 0;\n };\n\n /**\n * Get the timestamp of the last invocation.\n * @returns {number|null}\n */\n stableCallback.getLastCalledAt = function getLastCalledAt() {\n const hook = component._hooks?.[hookIdx];\n return hook ? hook._lastCalledAt : null;\n };\n\n /**\n * Get the current underlying callback without calling it.\n * @returns {Function}\n */\n stableCallback.getCurrentCallback = function getCurrentCallback() {\n const hook = component._hooks?.[hookIdx];\n return hook ? hook.callback : null;\n };\n\n /**\n * Check if this is the same stable reference as another callback.\n * @param {Function} other - Another callback to compare\n * @returns {boolean}\n */\n stableCallback.isSameRef = function isSameRef(other) {\n return other === stableCallback;\n };\n\n return stableCallback;\n}\n\n// ─── Extended useCallback Features ────────────────────────────────────────────\n\n/**\n * Create a debounced version of useCallback.\n * The returned callback will only execute after the specified delay\n * since the last invocation.\n *\n * @param {Function} callback - The callback to debounce\n * @param {Array} deps - Dependency array\n * @param {number} delay - Debounce delay in milliseconds\n * @returns {Function} Debounced memoized callback\n */\nfunction useDebouncedCallback(callback, deps, delay) {\n const memoizedCallback = useCallback(callback, deps);\n\n // Simple debounce wrapper\n let timeoutId = null;\n const debouncedCallback = function debouncedWrapper() {\n const args = arguments;\n const context = this;\n if (timeoutId) clearTimeout(timeoutId);\n timeoutId = setTimeout(() => {\n memoizedCallback.apply(context, args);\n }, delay);\n };\n\n debouncedCallback.cancel = function cancel() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n };\n\n debouncedCallback.flush = function flush() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n memoizedCallback();\n }\n };\n\n return debouncedCallback;\n}\n\n/**\n * Create a throttled version of useCallback.\n * The returned callback will execute at most once per specified interval.\n *\n * @param {Function} callback - The callback to throttle\n * @param {Array} deps - Dependency array\n * @param {number} interval - Throttle interval in milliseconds\n * @returns {Function} Throttled memoized callback\n */\nfunction useThrottledCallback(callback, deps, interval) {\n const memoizedCallback = useCallback(callback, deps);\n\n let lastExecTime = 0;\n let timeoutId = null;\n\n const throttledCallback = function throttledWrapper() {\n const args = arguments;\n const context = this;\n const now = Date.now();\n const elapsed = now - lastExecTime;\n\n if (elapsed >= interval) {\n lastExecTime = now;\n memoizedCallback.apply(context, args);\n } else if (!timeoutId) {\n timeoutId = setTimeout(() => {\n lastExecTime = Date.now();\n timeoutId = null;\n memoizedCallback.apply(context, args);\n }, interval - elapsed);\n }\n };\n\n throttledCallback.cancel = function cancel() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n };\n\n return throttledCallback;\n}\n\n/**\n * Create a callback that only executes once and then becomes a no-op.\n *\n * @param {Function} callback - The callback\n * @param {Array} deps - Dependency array\n * @returns {Function} One-time callback\n */\nfunction useOnceCallback(callback, deps) {\n let called = false;\n return useCallback(function onceWrapper() {\n if (called) return;\n called = true;\n return callback.apply(this, arguments);\n }, deps);\n}\n\n/**\n * Create a callback with deep dependency comparison.\n * Useful when dependencies are objects or arrays that may be recreated.\n *\n * @param {Function} callback - The callback function\n * @param {Array} deps - Dependency array (compared deeply)\n * @returns {Function} Memoized callback\n */\nfunction useDeepCompareCallback(callback, deps) {\n const component = currentlyRenderingComponent;\n if (!component) {\n throw new Error('[useDeepCompareCallback] Must be called within a component render phase');\n }\n\n if (!component._hooks) {\n component._hooks = [];\n }\n\n const currentHookIndex = hookIndex;\n const resolvedDeps = deps !== undefined ? deps : null;\n let hook;\n\n if (component._hooks[currentHookIndex]) {\n hook = component._hooks[currentHookIndex];\n\n const prevDeps = hook.deps;\n const depsChanged = !areDepsDeepEqual(prevDeps, resolvedDeps);\n\n if (depsChanged) {\n hook.callback = callback;\n hook.deps = resolvedDeps;\n hook.memoizedCallback = createStableCallback(callback, component, currentHookIndex);\n hook._updateCount++;\n }\n } else {\n hook = {\n type: 'callback',\n callback,\n deps: resolvedDeps,\n memoizedCallback: null,\n _callCount: 0,\n _lastCalledAt: null,\n _updateCount: 0,\n _createdAt: Date.now(),\n };\n\n hook.memoizedCallback = createStableCallback(callback, component, currentHookIndex);\n component._hooks[currentHookIndex] = hook;\n }\n\n hookIndex++;\n return hook.memoizedCallback;\n}\n\n/**\n * Compose multiple callbacks into a single callback.\n * Each callback receives the same arguments and results are collected.\n *\n * @param {Function[]} callbacks - Array of callbacks to compose\n * @param {Array} deps - Dependency array\n * @returns {Function} Composed callback\n */\nfunction useComposedCallback(callbacks, deps) {\n return useCallback(function composedCallback() {\n const args = arguments;\n return callbacks.map((cb) => {\n if (typeof cb === 'function') {\n return cb.apply(this, args);\n }\n return undefined;\n });\n }, deps);\n}\n\n// ─── Exports ──────────────────────────────────────────────────────────────────\n\nmodule.exports = {\n useCallback,\n useDebouncedCallback,\n useThrottledCallback,\n useOnceCallback,\n useDeepCompareCallback,\n useComposedCallback,\n setCurrentComponent,\n resetHookIndex,\n areDepsEqual,\n areDepsDeepEqual,\n setCallbackProfiling,\n getCallbackProfile,\n};\n","/**\n * useContext Hook Implementation\n * ElementDrawing Framework - Context API with creation, provider/consumer,\n * default values, subscription, nested contexts, selectors, observers,\n * context versioning, and change notification optimization.\n */\n\n'use strict';\n\n// ─── Internal State ───────────────────────────────────────────────────────────\n\nlet currentlyRenderingComponent = null;\nlet hookIndex = 0;\nlet contextIdCounter = 0;\n\n// ─── Context Versioning ───────────────────────────────────────────────────────\n\n/**\n * Track context value versions to optimize change notifications.\n * When a provider value is the same version, consumers can skip re-renders.\n */\nconst contextVersions = new WeakMap();\n\nfunction getContextVersion(context) {\n return contextVersions.get(context) || 0;\n}\n\nfunction incrementContextVersion(context) {\n const current = contextVersions.get(context) || 0;\n contextVersions.set(context, current + 1);\n return current + 1;\n}\n\n// ─── Context Creation ─────────────────────────────────────────────────────────\n\n/**\n * Create a new context with a default value.\n *\n * @param {*} defaultValue - The default value used when no Provider is found\n * @returns {Object} Context object with Provider and Consumer\n *\n * @example\n * const ThemeContext = createContext('light');\n * const LocaleContext = createContext({ language: 'en', region: 'US' });\n */\nfunction createContext(defaultValue) {\n const contextId = '__ED_CTX_' + (++contextIdCounter) + '__';\n\n // Unique symbol for storing context value on providers\n const valueKey = Symbol.for(contextId + '_value');\n const subscribersKey = Symbol.for(contextId + '_subscribers');\n const versionKey = Symbol.for(contextId + '_version');\n\n // ─── Context Object ────────────────────────────────────────────────────\n\n const context = {\n _id: contextId,\n _valueKey: valueKey,\n _subscribersKey: subscribersKey,\n _versionKey: versionKey,\n _defaultValue: defaultValue,\n _isContext: true,\n _displayName: null,\n\n /**\n * Provider component that supplies context value to descendant consumers.\n *\n * @param {Object} props\n * @param {*} props.value - The context value to provide\n * @param {*} props.children - Child components\n * @returns {Object} Virtual DOM node\n */\n Provider: null, // Assigned below\n\n /**\n * Consumer component that reads context value.\n *\n * @param {Object} props\n * @param {Function} props.children - Render prop receiving context value\n * @returns {*} Rendered result\n */\n Consumer: null, // Assigned below\n\n /**\n * Get the current context value by traversing the component tree upward.\n * @param {Object} component - Starting component\n * @returns {*} Context value or default value\n */\n _getValue(component) {\n let current = component;\n while (current) {\n // Check if this component is a Provider for this context\n if (current._contextProvider === contextId && current[valueKey] !== undefined) {\n return current[valueKey];\n }\n current = current._parentComponent;\n }\n return defaultValue;\n },\n\n /**\n * Get the version of the current context value.\n * @param {Object} component - Starting component\n * @returns {number} Version number\n */\n _getVersion(component) {\n let current = component;\n while (current) {\n if (current._contextProvider === contextId) {\n return current[versionKey] || 0;\n }\n current = current._parentComponent;\n }\n return 0;\n },\n\n /**\n * Subscribe to context value changes.\n * @param {Object} component - The subscribing component\n * @param {Function} callback - Called with (newValue, oldValue)\n * @returns {Function} Unsubscribe function\n */\n _subscribe(component, callback) {\n let current = component;\n while (current) {\n if (current._contextProvider === contextId) {\n if (!current[subscribersKey]) {\n current[subscribersKey] = new Set();\n }\n const sub = { component, callback };\n current[subscribersKey].add(sub);\n\n return function unsubscribe() {\n if (current[subscribersKey]) {\n current[subscribersKey].delete(sub);\n }\n };\n }\n current = current._parentComponent;\n }\n return function noop() {};\n },\n\n /**\n * Subscribe with a selector for optimized re-renders.\n * @param {Object} component - The subscribing component\n * @param {Function} selector - Selector function\n * @param {Function} callback - Called when selected value changes\n * @returns {Function} Unsubscribe function\n */\n _subscribeWithSelector(component, selector, callback) {\n let lastSelectedValue = selector(context._getValue(component));\n\n return context._subscribe(component, (newValue, oldValue) => {\n const newSelectedValue = selector(newValue);\n if (!Object.is(lastSelectedValue, newSelectedValue)) {\n const prevSelected = lastSelectedValue;\n lastSelectedValue = newSelectedValue;\n callback(newSelectedValue, prevSelected);\n }\n });\n },\n\n /**\n * Notify all subscribers when the Provider value changes.\n * @param {Object} providerComponent - The Provider component\n * @param {*} newValue - New context value\n * @param {*} oldValue - Previous context value\n */\n _notifySubscribers(providerComponent, newValue, oldValue) {\n const subs = providerComponent[subscribersKey];\n if (!subs) return;\n\n subs.forEach(({ component, callback }) => {\n try {\n callback(newValue, oldValue);\n } catch (error) {\n console.error('[useContext] Subscriber notification error:', error);\n if (component._handleError) {\n component._handleError(error);\n }\n }\n });\n },\n };\n\n // ─── Provider Implementation ────────────────────────────────────────────\n\n /**\n * Provider component wraps children and supplies a context value.\n * When the value prop changes, all subscribed consumers re-render.\n */\n context.Provider = function Provider(props) {\n const component = currentlyRenderingComponent;\n\n // Mark this component as a provider for this context\n if (component) {\n component._contextProvider = contextId;\n\n // Check if value changed\n const prevValue = component[valueKey];\n const newValue = props.value;\n\n if (!Object.is(prevValue, newValue)) {\n component[valueKey] = newValue;\n\n // Increment version\n const newVersion = (component[versionKey] || 0) + 1;\n component[versionKey] = newVersion;\n incrementContextVersion(context);\n\n // Notify subscribers of value change\n context._notifySubscribers(component, newValue, prevValue);\n }\n\n // Initialize subscribers set\n if (!component[subscribersKey]) {\n component[subscribersKey] = new Set();\n }\n }\n\n return props.children;\n };\n\n context.Provider._context = context;\n context.Provider.displayName = 'Context.Provider';\n\n // ─── Consumer Implementation ────────────────────────────────────────────\n\n /**\n * Consumer component uses the render prop pattern to access context value.\n */\n context.Consumer = function Consumer(props) {\n const component = currentlyRenderingComponent;\n let value = defaultValue;\n\n if (component) {\n value = context._getValue(component);\n }\n\n if (typeof props.children === 'function') {\n return props.children(value);\n }\n\n console.warn(\n '[useContext] Consumer children should be a function. ' +\n 'Received: ' + typeof props.children\n );\n return props.children;\n };\n\n context.Consumer._context = context;\n context.Consumer.displayName = 'Context.Consumer';\n\n return context;\n}\n\n// ─── useContext Hook ───────────────────────────────────────────────────────────\n\n/**\n * useContext - Read context value and subscribe to changes.\n *\n * @param {Object} context - Context object created by createContext\n * @returns {*} Current context value\n *\n * @example\n * const theme = useContext(ThemeContext);\n * const { language } = useContext(LocaleContext);\n */\nfunction useContext(context) {\n const component = currentlyRenderingComponent;\n if (!component) {\n throw new Error('[useContext] Must be called within a component render phase');\n }\n\n if (!context || !context._isContext) {\n throw new Error(\n '[useContext] Argument must be a context object created by createContext()'\n );\n }\n\n // Initialize hooks array\n if (!component._hooks) {\n component._hooks = [];\n }\n\n const currentHookIndex = hookIndex;\n let hook;\n\n if (component._hooks[currentHookIndex]) {\n // Re-render: reuse existing hook\n hook = component._hooks[currentHookIndex];\n } else {\n // First render: create hook and subscribe to context\n hook = {\n type: 'context',\n context,\n _unsubscribe: null,\n _lastValue: null,\n _version: 0,\n };\n\n // Subscribe to context changes to trigger re-render\n const unsubscribe = context._subscribe(component, (newValue, oldValue) => {\n // Schedule re-render when context value changes\n if (component._scheduleReRender) {\n component._scheduleReRender();\n }\n });\n hook._unsubscribe = unsubscribe;\n\n component._hooks[currentHookIndex] = hook;\n }\n\n // Get the current context value\n const value = context._getValue(component);\n hook._lastValue = value;\n hook._version = context._getVersion(component);\n\n hookIndex++;\n return value;\n}\n\n// ─── Context Selector Hook ────────────────────────────────────────────────────\n\n/**\n * useContextSelector - Read a specific slice of context using a selector.\n * Only re-renders when the selected value changes, not on every context change.\n *\n * @param {Object} context - Context object created by createContext\n * @param {Function} selector - Function that extracts a value from context\n * @returns {*} Selected value from context\n *\n * @example\n * const theme = useContextSelector(ThemeContext, ctx => ctx.mode);\n * const language = useContextSelector(LocaleContext, ctx => ctx.language);\n */\nfunction useContextSelector(context, selector) {\n const component = currentlyRenderingComponent;\n if (!component) {\n throw new Error('[useContextSelector] Must be called within a component render phase');\n }\n\n if (!context || !context._isContext) {\n throw new Error('[useContextSelector] First argument must be a context object');\n }\n\n if (typeof selector !== 'function') {\n throw new Error('[useContextSelector] Second argument must be a selector function');\n }\n\n // Initialize hooks array\n if (!component._hooks) {\n component._hooks = [];\n }\n\n const currentHookIndex = hookIndex;\n let hook;\n\n if (component._hooks[currentHookIndex]) {\n hook = component._hooks[currentHookIndex];\n hook.selector = selector;\n } else {\n hook = {\n type: 'context-selector',\n context,\n selector,\n _unsubscribe: null,\n _lastSelectedValue: undefined,\n };\n\n // Subscribe with selector for optimized updates\n const unsubscribe = context._subscribeWithSelector(\n component,\n selector,\n (newSelected, oldSelected) => {\n if (component._scheduleReRender) {\n component._scheduleReRender();\n }\n }\n );\n hook._unsubscribe = unsubscribe;\n\n component._hooks[currentHookIndex] = hook;\n }\n\n // Compute selected value\n const fullValue = context._getValue(component);\n const selectedValue = selector(fullValue);\n hook._lastSelectedValue = selectedValue;\n\n hookIndex++;\n return selectedValue;\n}\n\n// ─── Context Observer Hook ────────────────────────────────────────────────────\n\n/**\n * useContextObserver - Observe context changes with a callback instead of\n * triggering a re-render. Useful for logging, analytics, or side effects.\n *\n * @param {Object} context - Context object\n * @param {Function} observer - Called with (newValue, oldValue) on changes\n * @returns {*} Current context value\n *\n * @example\n * const theme = useContextObserver(ThemeContext, (newTheme) => {\n * analytics.track('theme_changed', { theme: newTheme });\n * });\n */\nfunction useContextObserver(context, observer) {\n const component = currentlyRenderingComponent;\n if (!component) {\n throw new Error('[useContextObserver] Must be called within a component render phase');\n }\n\n if (!context || !context._isContext) {\n throw new Error('[useContextObserver] First argument must be a context object');\n }\n\n if (typeof observer !== 'function') {\n throw new Error('[useContextObserver] Second argument must be an observer function');\n }\n\n if (!component._hooks) {\n component._hooks = [];\n }\n\n const currentHookIndex = hookIndex;\n let hook;\n\n if (component._hooks[currentHookIndex]) {\n hook = component._hooks[currentHookIndex];\n hook.observer = observer;\n } else {\n hook = {\n type: 'context-observer',\n context,\n observer,\n _unsubscribe: null,\n };\n\n // Subscribe to context changes (observer doesn't trigger re-render)\n const unsubscribe = context._subscribe(component, (newValue, oldValue) => {\n try {\n observer(newValue, oldValue);\n } catch (error) {\n console.error('[useContextObserver] Observer error:', error);\n }\n });\n hook._unsubscribe = unsubscribe;\n\n component._hooks[currentHookIndex] = hook;\n }\n\n const value = context._getValue(component);\n hookIndex++;\n return value;\n}\n\n// ─── Nested Context Support ───────────────────────────────────────────────────\n\n/**\n * Merge multiple contexts into a single object for convenience.\n *\n * @param {Object[]} contexts - Array of context objects\n * @returns {Object} Object with current values from all contexts\n *\n * @example\n * const { theme, locale } = useMergedContext([ThemeContext, LocaleContext]);\n */\nfunction useMergedContext(contexts) {\n if (!Array.isArray(contexts)) {\n throw new Error('[useMergedContext] Expected an array of context objects');\n }\n\n const values = {};\n contexts.forEach((ctx) => {\n const name = ctx._id.replace('__ED_CTX_', '').replace('__', '');\n values[name] = useContext(ctx);\n });\n return values;\n}\n\n/**\n * Create a composed context that derives its value from multiple parent contexts.\n *\n * @param {Object[]} contexts - Array of parent context objects\n * @param {Function} compute - Function that receives parent values and returns composed value\n * @returns {Object} New context object\n *\n * @example\n * const ComposedCtx = composeContexts(\n * [ThemeContext, LocaleContext],\n * (theme, locale) => ({ theme, locale, isDark: theme === 'dark' })\n * );\n */\nfunction composeContexts(contexts, compute) {\n const defaultValues = contexts.map((ctx) => ctx._defaultValue);\n const composedDefault = compute(...defaultValues);\n return createContext(composedDefault);\n}\n\n// ─── Context Tree Utilities ───────────────────────────────────────────────────\n\n/**\n * Find the nearest Provider for a given context in the component tree.\n * @param {Object} component - Starting component\n * @param {Object} context - Context to search for\n * @returns {Object|null} Provider component or null\n */\nfunction findNearestProvider(component, context) {\n let current = component;\n while (current) {\n if (current._contextProvider === context._id) {\n return current;\n }\n current = current._parentComponent;\n }\n return null;\n}\n\n/**\n * Get all context values from the component tree.\n * @param {Object} component - Starting component\n * @returns {Object} Map of context IDs to values\n */\nfunction getAllContextValues(component) {\n const values = {};\n let current = component;\n while (current) {\n if (current._contextProvider && current[Symbol.for('__ED_CTX_' + current._contextProvider + '__value')]) {\n values[current._contextProvider] = current[Symbol.for('__ED_CTX_' + current._contextProvider + '__value')];\n }\n current = current._parentComponent;\n }\n return values;\n}\n\n// ─── Hook Context Management ──────────────────────────────────────────────────\n\nfunction setCurrentComponent(component) {\n currentlyRenderingComponent = component;\n hookIndex = 0;\n}\n\nfunction resetHookIndex() {\n hookIndex = 0;\n currentlyRenderingComponent = null;\n}\n\n// ─── Cleanup ──────────────────────────────────────────────────────────────────\n\n/**\n * Clean up context subscriptions when a component unmounts.\n * @param {Object} component - The unmounting component\n */\nfunction cleanupContextSubscriptions(component) {\n if (!component._hooks) return;\n\n component._hooks.forEach((hook) => {\n if (hook && (hook.type === 'context' || hook.type === 'context-selector' || hook.type === 'context-observer')) {\n if (typeof hook._unsubscribe === 'function') {\n hook._unsubscribe();\n hook._unsubscribe = null;\n }\n }\n });\n}\n\n// ─── Exports ──────────────────────────────────────────────────────────────────\n\nmodule.exports = {\n createContext,\n useContext,\n useContextSelector,\n useContextObserver,\n useMergedContext,\n composeContexts,\n setCurrentComponent,\n resetHookIndex,\n findNearestProvider,\n getAllContextValues,\n cleanupContextSubscriptions,\n getContextVersion,\n};\n","/**\n * useEffect Hook Implementation\n * ElementDrawing Framework - Effect hooks with dependency tracking,\n * cleanup, scheduling, batching, passive/layout/insertion effects,\n * strict mode support, effect grouping, and cancellation.\n */\n\n'use strict';\n\n// ─── Effect Types ─────────────────────────────────────────────────────────────\n\nconst EFFECT_TYPES = {\n PASSIVE: 'passive', // useEffect - runs after paint\n LAYOUT: 'layout', // useLayoutEffect - runs before paint\n INSERTION: 'insertion', // useInsertionEffect - runs before DOM mutations\n};\n\n// ─── Internal State ───────────────────────────────────────────────────────────\n\nlet currentlyRenderingComponent = null;\nlet hookIndex = 0;\nconst effectQueue = [];\nconst layoutEffectQueue = [];\nconst insertionEffectQueue = [];\nlet isFlushingEffects = false;\nlet isFlushingLayoutEffects = false;\nlet isFlushingInsertionEffects = false;\n\n// ─── Strict Mode ──────────────────────────────────────────────────────────────\n\nlet isStrictMode = false;\n\n/**\n * Enable or disable strict mode. In strict mode, effects are double-invoked\n * on mount to help find side-effect cleanup issues.\n * @param {boolean} enabled\n */\nfunction setStrictMode(enabled) {\n isStrictMode = enabled;\n}\n\n/**\n * Check if strict mode is enabled.\n * @returns {boolean}\n */\nfunction isInStrictMode() {\n return isStrictMode;\n}\n\n// ─── Dependency Comparison ────────────────────────────────────────────────────\n\n/**\n * Compare two dependency arrays for equality.\n * @param {Array|null} prevDeps - Previous dependencies\n * @param {Array|null} nextDeps - Next dependencies\n * @returns {boolean} True if dependencies are the same\n */\nfunction areDepsEqual(prevDeps, nextDeps) {\n if (prevDeps === null || nextDeps === null) return false;\n if (prevDeps.length !== nextDeps.length) return false;\n\n for (let i = 0; i < prevDeps.length; i++) {\n if (Object.is(prevDeps[i], nextDeps[i])) continue;\n return false;\n }\n return true;\n}\n\n/**\n * Deep dependency comparison for complex dependency values.\n * @param {Array|null} prevDeps\n * @param {Array|null} nextDeps\n * @returns {boolean}\n */\nfunction areDepsDeepEqual(prevDeps, nextDeps) {\n if (prevDeps === null || nextDeps === null) return false;\n if (prevDeps.length !== nextDeps.length) return false;\n\n for (let i = 0; i < prevDeps.length; i++) {\n if (deepEqualValue(prevDeps[i], nextDeps[i])) continue;\n return false;\n }\n return true;\n}\n\n/**\n * Deep equal comparison for individual values.\n */\nfunction deepEqualValue(a, b) {\n if (Object.is(a, b)) return true;\n if (typeof a !== 'object' || a === null || typeof b !== 'object' || b === null) {\n return false;\n }\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!deepEqualValue(a[key], b[key])) return false;\n }\n return true;\n}\n\n/**\n * Validate that dependencies is an array or undefined.\n * @param {*} deps - Dependencies to validate\n */\nfunction validateDeps(deps) {\n if (deps !== undefined && !Array.isArray(deps)) {\n throw new Error(\n '[useEffect] Dependencies must be an array or undefined. ' +\n `Received: ${typeof deps}`\n );\n }\n}\n\n// ─── Effect Execution ─────────────────────────────────────────────────────────\n\n/**\n * Execute an effect, capturing its cleanup function.\n * @param {Object} effect - Effect object with create function\n * @returns {Function|null} Cleanup function\n */\nfunction executeEffect(effect) {\n try {\n const cleanup = effect.create();\n if (cleanup !== undefined && typeof cleanup !== 'function') {\n console.warn(\n '[useEffect] Effect cleanup must be a function or undefined. ' +\n `Received: ${typeof cleanup}`\n );\n effect.cleanup = null;\n } else {\n effect.cleanup = cleanup;\n }\n } catch (error) {\n console.error('[useEffect] Effect execution error:', error);\n effect.cleanup = null;\n\n // Call error boundary if available\n if (effect.component && effect.component._handleError) {\n effect.component._handleError(error);\n }\n }\n return effect.cleanup;\n}\n\n/**\n * Run cleanup for an effect.\n * @param {Object} effect - Effect object with cleanup function\n */\nfunction runCleanup(effect) {\n if (typeof effect.cleanup === 'function') {\n try {\n effect.cleanup();\n } catch (error) {\n console.error('[useEffect] Cleanup error:', error);\n if (effect.component && effect.component._handleError) {\n effect.component._handleError(error);\n }\n }\n effect.cleanup = null;\n }\n}\n\n/**\n * Execute an effect in strict mode (double-invoke on mount).\n * @param {Object} effect - Effect to execute\n */\nfunction executeEffectStrictMode(effect) {\n // First invocation\n executeEffect(effect);\n\n // Immediately cleanup and re-invoke in strict mode\n runCleanup(effect);\n executeEffect(effect);\n}\n\n// ─── Effect Scheduling ────────────────────────────────────────────────────────\n\n/**\n * Schedule passive effects to run after the browser paint.\n */\nfunction schedulePassiveEffects() {\n if (effectQueue.length === 0) return;\n\n // Use requestAnimationFrame then setTimeout to ensure effects run after paint\n requestAnimationFrame(() => {\n setTimeout(() => {\n flushPassiveEffects();\n }, 0);\n });\n}\n\n/**\n * Flush all queued passive effects.\n */\nfunction flushPassiveEffects() {\n if (isFlushingEffects) return;\n isFlushingEffects = true;\n\n try {\n // Process all queued passive effects\n while (effectQueue.length > 0) {\n const effect = effectQueue.shift();\n\n // Run cleanup from previous render first\n runCleanup(effect);\n\n // Execute the new effect\n if (isStrictMode && !effect._hasRunBefore) {\n executeEffectStrictMode(effect);\n effect._hasRunBefore = true;\n } else {\n executeEffect(effect);\n }\n }\n } finally {\n isFlushingEffects = false;\n }\n}\n\n/**\n * Flush all queued layout effects (synchronous, before paint).\n */\nfunction flushLayoutEffects() {\n if (isFlushingLayoutEffects) return;\n isFlushingLayoutEffects = true;\n\n try {\n while (layoutEffectQueue.length > 0) {\n const effect = layoutEffectQueue.shift();\n runCleanup(effect);\n\n if (isStrictMode && !effect._hasRunBefore) {\n executeEffectStrictMode(effect);\n effect._hasRunBefore = true;\n } else {\n executeEffect(effect);\n }\n }\n } finally {\n isFlushingLayoutEffects = false;\n }\n}\n\n/**\n * Flush all queued insertion effects (synchronous, before DOM mutations).\n */\nfunction flushInsertionEffects() {\n if (isFlushingInsertionEffects) return;\n isFlushingInsertionEffects = true;\n\n try {\n while (insertionEffectQueue.length > 0) {\n const effect = insertionEffectQueue.shift();\n runCleanup(effect);\n executeEffect(effect);\n }\n } finally {\n isFlushingInsertionEffects = false;\n }\n}\n\n/**\n * Flush effects in the correct order: insertion -> layout -> passive.\n */\nfunction flushAllEffects() {\n flushInsertionEffects();\n flushLayoutEffects();\n schedulePassiveEffects();\n}\n\n// ─── Effect Cancellation ──────────────────────────────────────────────────────\n\n/**\n * Cancel a pending effect by reference.\n * @param {Object} effect - The effect to cancel\n * @returns {boolean} True if successfully cancelled\n */\nfunction cancelEffect(effect) {\n if (!effect) return false;\n\n let removed = false;\n\n // Try to remove from passive queue\n const passiveIdx = effectQueue.indexOf(effect);\n if (passiveIdx !== -1) {\n effectQueue.splice(passiveIdx, 1);\n removed = true;\n }\n\n // Try to remove from layout queue\n const layoutIdx = layoutEffectQueue.indexOf(effect);\n if (layoutIdx !== -1) {\n layoutEffectQueue.splice(layoutIdx, 1);\n removed = true;\n }\n\n // Try to remove from insertion queue\n const insertionIdx = insertionEffectQueue.indexOf(effect);\n if (insertionIdx !== -1) {\n insertionEffectQueue.splice(insertionIdx, 1);\n removed = true;\n }\n\n // Run cleanup if the effect had been previously executed\n if (removed) {\n runCleanup(effect);\n }\n\n return removed;\n}\n\n// ─── Effect Grouping ──────────────────────────────────────────────────────────\n\n/**\n * Group effects together so they execute as a batch.\n * @param {Function} callback - Function containing effectful operations\n * @returns {Array} Array of effect objects created in the group\n */\nconst activeEffectGroup = { current: null };\n\nfunction beginEffectGroup() {\n activeEffectGroup.current = [];\n}\n\nfunction endEffectGroup() {\n const group = activeEffectGroup.current;\n activeEffectGroup.current = null;\n return group;\n}\n\n// ─── Hook Context Management ──────────────────────────────────────────────────\n\nfunction setCurrentComponent(component) {\n currentlyRenderingComponent = component;\n hookIndex = 0;\n}\n\nfunction resetHookIndex() {\n hookIndex = 0;\n currentlyRenderingComponent = null;\n}\n\n// ─── Core Effect Hook ─────────────────────────────────────────────────────────\n\n/**\n * Internal implementation shared by all effect hooks.\n *\n * @param {Function} create - Effect callback (returns cleanup or undefined)\n * @param {Array|undefined} deps - Dependency array\n * @param {string} effectType - Type of effect (passive, layout, insertion)\n * @returns {void}\n */\nfunction useEffectImpl(create, deps, effectType) {\n const component = currentlyRenderingComponent;\n if (!component) {\n throw new Error(\n `[use${effectType}Effect] Must be called within a component render phase`\n );\n }\n\n if (typeof create !== 'function') {\n throw new Error(\n `[use${effectType}Effect] First argument must be a function. ` +\n `Received: ${typeof create}`\n );\n }\n\n validateDeps(deps);\n\n // Initialize hooks array\n if (!component._hooks) {\n component._hooks = [];\n }\n\n const currentHookIndex = hookIndex;\n const resolvedDeps = deps !== undefined ? deps : null;\n let hook;\n\n if (component._hooks[currentHookIndex]) {\n // Re-render: check if dependencies changed\n hook = component._hooks[currentHookIndex];\n\n const prevDeps = hook.deps;\n const depsChanged = !areDepsEqual(prevDeps, resolvedDeps);\n\n if (depsChanged) {\n // Dependencies changed - queue the effect\n hook.deps = resolvedDeps;\n hook.create = create;\n hook.type = effectType;\n hook.component = component;\n hook._shouldRun = true;\n } else {\n // Dependencies unchanged - skip the effect\n hook._shouldRun = false;\n }\n } else {\n // First render - always run the effect\n hook = {\n type: effectType,\n create,\n cleanup: null,\n deps: resolvedDeps,\n component,\n _shouldRun: true,\n _isMounted: false,\n _hasRunBefore: false,\n _createdAt: Date.now(),\n _effectId: ++effectIdCounter,\n };\n component._hooks[currentHookIndex] = hook;\n }\n\n // Queue the effect if it should run\n if (hook._shouldRun) {\n switch (effectType) {\n case EFFECT_TYPES.PASSIVE:\n effectQueue.push(hook);\n break;\n case EFFECT_TYPES.LAYOUT:\n layoutEffectQueue.push(hook);\n break;\n case EFFECT_TYPES.INSERTION:\n insertionEffectQueue.push(hook);\n break;\n }\n\n // Track in active effect group if one exists\n if (activeEffectGroup.current) {\n activeEffectGroup.current.push(hook);\n }\n }\n\n hookIndex++;\n}\n\nlet effectIdCounter = 0;\n\n// ─── Public Hooks ─────────────────────────────────────────────────────────────\n\n/**\n * useEffect - Schedule a passive effect that runs after the browser paint.\n * Ideal for side effects that don't need to block visual updates.\n *\n * @param {Function} create - Effect callback, may return a cleanup function\n * @param {Array} [deps] - Dependency array; effect re-runs when deps change\n *\n * @example\n * useEffect(() => {\n * const subscription = api.subscribe(data => setData(data));\n * return () => subscription.unsubscribe();\n * }, [api]);\n */\nfunction useEffect(create, deps) {\n useEffectImpl(create, deps, EFFECT_TYPES.PASSIVE);\n}\n\n/**\n * useLayoutEffect - Schedule a layout effect that runs synchronously after\n * all DOM mutations but before the browser paint.\n *\n * @param {Function} create - Effect callback, may return a cleanup function\n * @param {Array} [deps] - Dependency array\n *\n * @example\n * useLayoutEffect(() => {\n * const height = ref.current.clientHeight;\n * setTooltipPosition(calculatePosition(height));\n * }, [ref.current]);\n */\nfunction useLayoutEffect(create, deps) {\n useEffectImpl(create, deps, EFFECT_TYPES.LAYOUT);\n}\n\n/**\n * useInsertionEffect - Schedule an insertion effect that runs before DOM\n * mutations. Primarily for CSS-in-JS libraries.\n *\n * @param {Function} create - Effect callback, may return a cleanup function\n * @param {Array} [deps] - Dependency array\n */\nfunction useInsertionEffect(create, deps) {\n useEffectImpl(create, deps, EFFECT_TYPES.INSERTION);\n}\n\n// ─── Custom Effect Hooks ──────────────────────────────────────────────────────\n\n/**\n * useDeepCompareEffect - Like useEffect but uses deep comparison for deps.\n * Useful when dependencies are objects or arrays that may be recreated.\n *\n * @param {Function} create - Effect callback\n * @param {Array} deps - Dependency array (compared deeply)\n */\nfunction useDeepCompareEffect(create, deps) {\n const component = currentlyRenderingComponent;\n if (!component) {\n throw new Error('[useDeepCompareEffect] Must be called within a component render phase');\n }\n\n if (!component._hooks) {\n component._hooks = [];\n }\n\n const currentHookIndex = hookIndex;\n const resolvedDeps = deps !== undefined ? deps : null;\n let hook;\n\n if (component._hooks[currentHookIndex]) {\n hook = component._hooks[currentHookIndex];\n\n const prevDeps = hook.deps;\n const depsChanged = !areDepsDeepEqual(prevDeps, resolvedDeps);\n\n if (depsChanged) {\n hook.deps = resolvedDeps;\n hook.create = create;\n hook._shouldRun = true;\n } else {\n hook._shouldRun = false;\n }\n } else {\n hook = {\n type: EFFECT_TYPES.PASSIVE,\n create,\n cleanup: null,\n deps: resolvedDeps,\n component,\n _shouldRun: true,\n _isMounted: false,\n _hasRunBefore: false,\n _createdAt: Date.now(),\n _effectId: ++effectIdCounter,\n };\n component._hooks[currentHookIndex] = hook;\n }\n\n if (hook._shouldRun) {\n effectQueue.push(hook);\n }\n\n hookIndex++;\n}\n\n/**\n * useEffectOnce - Effect that only runs once on mount, like componentDidMount.\n * @param {Function} create - Effect callback\n */\nfunction useEffectOnce(create) {\n useEffect(create, []);\n}\n\n/**\n * useUpdateEffect - Effect that skips the first render (only runs on updates).\n * @param {Function} create - Effect callback\n * @param {Array} deps - Dependency array\n */\nfunction useUpdateEffect(create, deps) {\n const component = currentlyRenderingComponent;\n if (!component) {\n throw new Error('[useUpdateEffect] Must be called within a component render phase');\n }\n\n if (!component._hooks) {\n component._hooks = [];\n }\n\n const currentHookIndex = hookIndex;\n let hook;\n\n if (component._hooks[currentHookIndex]) {\n hook = component._hooks[currentHookIndex];\n } else {\n hook = {\n _isFirstRender: true,\n };\n component._hooks[currentHookIndex] = hook;\n }\n\n const isFirst = hook._isFirstRender;\n hook._isFirstRender = false;\n\n if (isFirst) {\n // Skip the first render, but still track deps\n const resolvedDeps = deps !== undefined ? deps : null;\n hook.deps = resolvedDeps;\n hookIndex++;\n return;\n }\n\n useEffectImpl(create, deps, EFFECT_TYPES.PASSIVE);\n}\n\n// ─── Effect Batching ──────────────────────────────────────────────────────────\n\n/**\n * Batch multiple effectful operations. All effects created within the\n * callback will be collected and flushed together.\n *\n * @param {Function} callback - Function containing effectful operations\n * @returns {*} Return value of the callback\n */\nfunction batchEffects(callback) {\n const prevFlushingState = isFlushingEffects;\n isFlushingEffects = true;\n\n try {\n return callback();\n } finally {\n isFlushingEffects = prevFlushingState;\n }\n}\n\n// ─── Effect Debug & Inspection ────────────────────────────────────────────────\n\n/**\n * Get the count of pending effects across all queues.\n * @returns {Object} Counts for each effect type\n */\nfunction getPendingEffectCounts() {\n return {\n passive: effectQueue.length,\n layout: layoutEffectQueue.length,\n insertion: insertionEffectQueue.length,\n total: effectQueue.length + layoutEffectQueue.length + insertionEffectQueue.length,\n };\n}\n\n/**\n * Get all effects for a specific component.\n * @param {Object} component\n * @returns {Array} Array of effect objects\n */\nfunction getComponentEffects(component) {\n if (!component._hooks) return [];\n\n return component._hooks.filter((hook) =>\n hook && (hook.type === EFFECT_TYPES.PASSIVE ||\n hook.type === EFFECT_TYPES.LAYOUT ||\n hook.type === EFFECT_TYPES.INSERTION)\n );\n}\n\n// ─── Cleanup on Unmount ──────────────────────────────────────────────────────\n\n/**\n * Clean up all effects for a component when it unmounts.\n * @param {Object} component - The unmounting component\n */\nfunction cleanupComponentEffects(component) {\n if (!component._hooks) return;\n\n component._hooks.forEach((hook) => {\n if (hook && typeof hook.cleanup === 'function') {\n runCleanup(hook);\n }\n });\n\n // Remove effects from queues\n for (let i = effectQueue.length - 1; i >= 0; i--) {\n if (effectQueue[i].component === component) {\n effectQueue.splice(i, 1);\n }\n }\n for (let i = layoutEffectQueue.length - 1; i >= 0; i--) {\n if (layoutEffectQueue[i].component === component) {\n layoutEffectQueue.splice(i, 1);\n }\n }\n for (let i = insertionEffectQueue.length - 1; i >= 0; i--) {\n if (insertionEffectQueue[i].component === component) {\n insertionEffectQueue.splice(i, 1);\n }\n }\n}\n\n// ─── Exports ──────────────────────────────────────────────────────────────────\n\nmodule.exports = {\n useEffect,\n useLayoutEffect,\n useInsertionEffect,\n useDeepCompareEffect,\n useEffectOnce,\n useUpdateEffect,\n setCurrentComponent,\n resetHookIndex,\n flushPassiveEffects,\n flushLayoutEffects,\n flushInsertionEffects,\n flushAllEffects,\n batchEffects,\n areDepsEqual,\n areDepsDeepEqual,\n cancelEffect,\n setStrictMode,\n isInStrictMode,\n getPendingEffectCounts,\n getComponentEffects,\n cleanupComponentEffects,\n EFFECT_TYPES,\n};\n","/**\n * useLayoutEffect Hook Implementation\n * ElementDrawing Framework - Synchronous effect after DOM mutations,\n * executed during the commit phase before the browser paints.\n * Includes priority-based ordering, isomorphic layout effects,\n * mutation observation, resize observation, and batch processing.\n */\n\n'use strict';\n\n// ─── Internal State ───────────────────────────────────────────────────────────\n\nlet currentlyRenderingComponent = null;\nlet hookIndex = 0;\nconst layoutEffectQueue = [];\nlet isFlushingLayoutEffects = false;\n\n// ─── Layout Effect Priority ───────────────────────────────────────────────────\n\n/**\n * Priority levels for layout effects.\n * Lower number = higher priority = executes first.\n */\nconst LAYOUT_PRIORITY = {\n HIGHEST: 0, // Insertion effects, critical DOM measurements\n HIGH: 1, // Layout calculations\n NORMAL: 2, // Standard layout effects\n LOW: 3, // Non-critical layout adjustments\n LOWEST: 4, // Post-layout cleanup\n};\n\n// ─── Dependency Comparison ────────────────────────────────────────────────────\n\n/**\n * Compare two dependency arrays for shallow equality.\n * @param {Array|null} prevDeps\n * @param {Array|null} nextDeps\n * @returns {boolean}\n */\nfunction areDepsEqual(prevDeps, nextDeps) {\n if (prevDeps === null || nextDeps === null) return false;\n if (prevDeps.length !== nextDeps.length) return false;\n for (let i = 0; i < prevDeps.length; i++) {\n if (Object.is(prevDeps[i], nextDeps[i])) continue;\n return false;\n }\n return true;\n}\n\n/**\n * Validate dependency array.\n * @param {*} deps\n */\nfunction validateDeps(deps) {\n if (deps !== undefined && !Array.isArray(deps)) {\n throw new Error(\n '[useLayoutEffect] Dependencies must be an array or undefined. ' +\n `Received: ${typeof deps}`\n );\n }\n}\n\n// ─── Effect Execution ─────────────────────────────────────────────────────────\n\n/**\n * Execute a layout effect, capturing its cleanup function.\n * @param {Object} effect - Effect object\n */\nfunction executeLayoutEffect(effect) {\n try {\n const cleanup = effect.create();\n if (cleanup !== undefined && typeof cleanup !== 'function') {\n console.warn(\n '[useLayoutEffect] Effect cleanup must be a function or undefined. ' +\n `Received: ${typeof cleanup}`\n );\n effect.cleanup = null;\n } else {\n effect.cleanup = cleanup;\n }\n } catch (error) {\n console.error('[useLayoutEffect] Effect execution error:', error);\n effect.cleanup = null;\n if (effect.component && effect.component._handleError) {\n effect.component._handleError(error);\n }\n }\n}\n\n/**\n * Run cleanup for a layout effect.\n * @param {Object} effect\n */\nfunction runLayoutCleanup(effect) {\n if (typeof effect.cleanup === 'function') {\n try {\n effect.cleanup();\n } catch (error) {\n console.error('[useLayoutEffect] Cleanup error:', error);\n if (effect.component && effect.component._handleError) {\n effect.component._handleError(error);\n }\n }\n effect.cleanup = null;\n }\n}\n\n// ─── Layout Effect Queue Management ───────────────────────────────────────────\n\n/**\n * Flush all queued layout effects synchronously.\n * Called during the commit phase, before the browser paints.\n * Effects are sorted by priority before execution.\n */\nfunction flushLayoutEffects() {\n if (isFlushingLayoutEffects) return;\n isFlushingLayoutEffects = true;\n\n try {\n // Sort by priority (lower = higher priority = executes first)\n const sortedEffects = layoutEffectQueue.slice().sort((a, b) => {\n return (a._priority || LAYOUT_PRIORITY.NORMAL) - (b._priority || LAYOUT_PRIORITY.NORMAL);\n });\n\n // Clear the queue before execution to prevent double-execution\n layoutEffectQueue.length = 0;\n\n while (sortedEffects.length > 0) {\n const effect = sortedEffects.shift();\n\n // Run cleanup from previous render\n runLayoutCleanup(effect);\n\n // Execute the new layout effect\n executeLayoutEffect(effect);\n\n // Track execution time for profiling\n effect._executedAt = Date.now();\n }\n } finally {\n isFlushingLayoutEffects = false;\n }\n}\n\n/**\n * Check if there are pending layout effects.\n * @returns {boolean}\n */\nfunction hasPendingLayoutEffects() {\n return layoutEffectQueue.length > 0;\n}\n\n/**\n * Get the count of pending layout effects.\n * @returns {number}\n */\nfunction getPendingLayoutEffectCount() {\n return layoutEffectQueue.length;\n}\n\n/**\n * Get pending layout effects grouped by priority.\n * @returns {Object}\n */\nfunction getPendingLayoutEffectsByPriority() {\n const grouped = {};\n layoutEffectQueue.forEach((effect) => {\n const priority = effect._priority || LAYOUT_PRIORITY.NORMAL;\n if (!grouped[priority]) grouped[priority] = 0;\n grouped[priority]++;\n });\n return grouped;\n}\n\n// ─── Hook Context Management ──────────────────────────────────────────────────\n\nfunction setCurrentComponent(component) {\n currentlyRenderingComponent = component;\n hookIndex = 0;\n}\n\nfunction resetHookIndex() {\n hookIndex = 0;\n currentlyRenderingComponent = null;\n}\n\n// ─── useLayoutEffect Hook ─────────────────────────────────────────────────────\n\n/**\n * useLayoutEffect - Synchronous effect that runs after DOM mutations\n * but before the browser paints. Use for:\n * - DOM measurements (getBoundingClientRect, etc.)\n * - Synchronous DOM mutations that must happen before paint\n * - Preventing visual flickering\n *\n * @param {Function} create - Effect callback; may return a cleanup function\n * @param {Array} [deps] - Dependency array; effect re-runs when deps change\n * @returns {void}\n *\n * @example\n * useLayoutEffect(() => {\n * const height = ref.current.getBoundingClientRect().height;\n * if (height > maxHeight) {\n * ref.current.style.overflow = 'auto';\n * ref.current.style.maxHeight = maxHeight + 'px';\n * }\n * }, [maxHeight]);\n *\n * @example\n * // Auto-resize textarea\n * useLayoutEffect(() => {\n * const textarea = ref.current;\n * textarea.style.height = 'auto';\n * textarea.style.height = textarea.scrollHeight + 'px';\n * }, [value]);\n */\nfunction useLayoutEffect(create, deps) {\n const component = currentlyRenderingComponent;\n if (!component) {\n throw new Error(\n '[useLayoutEffect] Must be called within a component render phase'\n );\n }\n\n if (typeof create !== 'function') {\n throw new Error(\n '[useLayoutEffect] First argument must be a function. ' +\n `Received: ${typeof create}`\n );\n }\n\n validateDeps(deps);\n\n // Initialize hooks array\n if (!component._hooks) {\n component._hooks = [];\n }\n\n const currentHookIndex = hookIndex;\n const resolvedDeps = deps !== undefined ? deps : null;\n let hook;\n\n if (component._hooks[currentHookIndex]) {\n // Re-render: check if dependencies changed\n hook = component._hooks[currentHookIndex];\n\n const prevDeps = hook.deps;\n const depsChanged = !areDepsEqual(prevDeps, resolvedDeps);\n\n if (depsChanged) {\n hook.deps = resolvedDeps;\n hook.create = create;\n hook._shouldRun = true;\n } else {\n hook._shouldRun = false;\n }\n } else {\n // First render - always run\n hook = {\n type: 'layout-effect',\n create,\n cleanup: null,\n deps: resolvedDeps,\n component,\n _shouldRun: true,\n _priority: LAYOUT_PRIORITY.NORMAL,\n _isMounted: false,\n _executedAt: null,\n };\n\n component._hooks[currentHookIndex] = hook;\n }\n\n // Queue the effect for synchronous execution during commit phase\n if (hook._shouldRun) {\n layoutEffectQueue.push(hook);\n }\n\n hookIndex++;\n}\n\n// ─── Priority Layout Effect ───────────────────────────────────────────────────\n\n/**\n * Create a layout effect with a priority level.\n * Higher priority effects execute first during the commit phase.\n *\n * @param {number} priority - Priority level (use LAYOUT_PRIORITY constants)\n * @param {Function} create - Effect callback\n * @param {Array} [deps] - Dependency array\n */\nfunction usePriorityLayoutEffect(priority, create, deps) {\n const component = currentlyRenderingComponent;\n if (!component) {\n throw new Error(\n '[usePriorityLayoutEffect] Must be called within a component render phase'\n );\n }\n\n if (typeof create !== 'function') {\n throw new Error(\n '[usePriorityLayoutEffect] Create must be a function. ' +\n `Received: ${typeof create}`\n );\n }\n\n validateDeps(deps);\n\n if (!component._hooks) {\n component._hooks = [];\n }\n\n const currentHookIndex = hookIndex;\n const resolvedDeps = deps !== undefined ? deps : null;\n let hook;\n\n if (component._hooks[currentHookIndex]) {\n hook = component._hooks[currentHookIndex];\n const prevDeps = hook.deps;\n const depsChanged = !areDepsEqual(prevDeps, resolvedDeps);\n\n if (depsChanged) {\n hook.deps = resolvedDeps;\n hook.create = create;\n hook._priority = priority;\n hook._shouldRun = true;\n } else {\n hook._shouldRun = false;\n }\n } else {\n hook = {\n type: 'layout-effect',\n create,\n cleanup: null,\n deps: resolvedDeps,\n component,\n _shouldRun: true,\n _priority: priority,\n _isMounted: false,\n _executedAt: null,\n };\n\n component._hooks[currentHookIndex] = hook;\n }\n\n if (hook._shouldRun) {\n layoutEffectQueue.push(hook);\n }\n\n hookIndex++;\n}\n\n// ─── Isomorphic Layout Effect ─────────────────────────────────────────────────\n\n/**\n * useIsomorphicLayoutEffect - Uses useLayoutEffect on the client and useEffect\n * on the server to avoid SSR warnings.\n *\n * @param {Function} create - Effect callback\n * @param {Array} [deps] - Dependency array\n */\nconst useIsomorphicLayoutEffect = typeof window !== 'undefined'\n ? useLayoutEffect\n : function useLayoutEffectNoop(create, deps) {\n // On server, fall back to no-op to avoid warnings\n };\n\n// ─── Mutation Observer Effect ─────────────────────────────────────────────────\n\n/**\n * useMutationObserver - Observe DOM mutations on a ref's element.\n *\n * @param {Object} ref - Ref to the target element\n * @param {Object} options - MutationObserver options\n * @param {Function} callback - Called with mutation records\n *\n * @example\n * const divRef = useRef(null);\n * useMutationObserver(divRef, { childList: true, subtree: true }, (mutations) => {\n * console.log('DOM changed:', mutations);\n * });\n */\nfunction useMutationObserver(ref, options, callback) {\n const component = currentlyRenderingComponent;\n if (!component) {\n throw new Error('[useMutationObserver] Must be called within a component render phase');\n }\n\n useLayoutEffect(() => {\n const node = ref.current;\n if (!node || typeof MutationObserver === 'undefined') return;\n\n const observer = new MutationObserver((mutations) => {\n try {\n callback(mutations);\n } catch (error) {\n console.error('[useMutationObserver] Callback error:', error);\n }\n });\n\n observer.observe(node, options);\n\n return () => {\n observer.disconnect();\n };\n }, [ref.current]);\n}\n\n// ─── Resize Observer Effect ───────────────────────────────────────────────────\n\n/**\n * useResizeObserver - Observe element size changes.\n *\n * @param {Object} ref - Ref to the target element\n * @param {Function} callback - Called with ResizeObserver entries\n *\n * @example\n * const divRef = useRef(null);\n * useResizeObserver(divRef, (entries) => {\n * const { width, height } = entries[0].contentRect;\n * setSize({ width, height });\n * });\n */\nfunction useResizeObserver(ref, callback) {\n const component = currentlyRenderingComponent;\n if (!component) {\n throw new Error('[useResizeObserver] Must be called within a component render phase');\n }\n\n useLayoutEffect(() => {\n const node = ref.current;\n if (!node || typeof ResizeObserver === 'undefined') return;\n\n const observer = new ResizeObserver((entries) => {\n try {\n callback(entries);\n } catch (error) {\n console.error('[useResizeObserver] Callback error:', error);\n }\n });\n\n observer.observe(node);\n\n return () => {\n observer.disconnect();\n };\n }, [ref.current]);\n}\n\n// ─── Auto-focus Effect ────────────────────────────────────────────────────────\n\n/**\n * useAutoFocus - Auto-focus an element on mount.\n *\n * @param {Object} ref - Ref to the element to focus\n * @param {boolean} [shouldFocus=true] - Whether to auto-focus\n */\nfunction useAutoFocus(ref, shouldFocus) {\n useLayoutEffect(() => {\n if (shouldFocus === false) return;\n const node = ref.current;\n if (node && typeof node.focus === 'function') {\n node.focus();\n }\n }, []);\n}\n\n// ─── Cleanup ──────────────────────────────────────────────────────────────────\n\n/**\n * Clean up layout effects when a component unmounts.\n * @param {Object} component\n */\nfunction cleanupLayoutEffects(component) {\n if (!component._hooks) return;\n\n component._hooks.forEach((hook) => {\n if (hook && hook.type === 'layout-effect' && typeof hook.cleanup === 'function') {\n runLayoutCleanup(hook);\n }\n });\n\n // Remove from queue\n for (let i = layoutEffectQueue.length - 1; i >= 0; i--) {\n if (layoutEffectQueue[i].component === component) {\n layoutEffectQueue.splice(i, 1);\n }\n }\n}\n\n// ─── Exports ──────────────────────────────────────────────────────────────────\n\nmodule.exports = {\n useLayoutEffect,\n useIsomorphicLayoutEffect,\n usePriorityLayoutEffect,\n useMutationObserver,\n useResizeObserver,\n useAutoFocus,\n setCurrentComponent,\n resetHookIndex,\n flushLayoutEffects,\n hasPendingLayoutEffects,\n getPendingLayoutEffectCount,\n getPendingLayoutEffectsByPriority,\n cleanupLayoutEffects,\n LAYOUT_PRIORITY,\n};\n","/**\n * useMemo Hook Implementation\n * ElementDrawing Framework - Value memoization with dependency comparison,\n * cache invalidation, LRU caching, deep comparison, TTL, and profiling.\n */\n\n'use strict';\n\n// ─── Internal State ───────────────────────────────────────────────────────────\n\nlet currentlyRenderingComponent = null;\nlet hookIndex = 0;\nconst memoCache = new WeakMap();\n\n// ─── Memo Profiling ───────────────────────────────────────────────────────────\n\nconst memoProfiles = new WeakMap();\nlet memoProfilingEnabled = false;\n\n/**\n * Enable or disable memo profiling.\n * @param {boolean} enabled\n */\nfunction setMemoProfiling(enabled) {\n memoProfilingEnabled = enabled;\n}\n\n/**\n * Get profiling data for a component's memo hooks.\n * @param {Object} component\n * @returns {Object|null}\n */\nfunction getMemoProfile(component) {\n return memoProfiles.get(component) || null;\n}\n\n// ─── LRU Cache ────────────────────────────────────────────────────────────────\n\n/**\n * Simple LRU cache for memo values.\n * @param {number} capacity - Maximum cache entries\n */\nclass LRUMemoCache {\n constructor(capacity) {\n this.capacity = capacity || 10;\n this.cache = new Map();\n this.hits = 0;\n this.misses = 0;\n }\n\n get(key) {\n if (!this.cache.has(key)) {\n this.misses++;\n return undefined;\n }\n // Move to end (most recently used)\n const value = this.cache.get(key);\n this.cache.delete(key);\n this.cache.set(key, value);\n this.hits++;\n return value;\n }\n\n set(key, value) {\n if (this.cache.has(key)) {\n this.cache.delete(key);\n } else if (this.cache.size >= this.capacity) {\n // Delete least recently used (first entry)\n const firstKey = this.cache.keys().next().value;\n this.cache.delete(firstKey);\n }\n this.cache.set(key, value);\n }\n\n has(key) {\n return this.cache.has(key);\n }\n\n clear() {\n this.cache.clear();\n this.hits = 0;\n this.misses = 0;\n }\n\n getStats() {\n return {\n size: this.cache.size,\n capacity: this.capacity,\n hits: this.hits,\n misses: this.misses,\n hitRate: this.hits + this.misses > 0 ? this.hits / (this.hits + this.misses) : 0,\n };\n }\n}\n\n// ─── Dependency Comparison ────────────────────────────────────────────────────\n\n/**\n * Compare two dependency arrays for shallow equality.\n * @param {Array|null} prevDeps\n * @param {Array|null} nextDeps\n * @returns {boolean}\n */\nfunction areDepsEqual(prevDeps, nextDeps) {\n if (prevDeps === null || nextDeps === null) return false;\n if (prevDeps.length !== nextDeps.length) return false;\n for (let i = 0; i < prevDeps.length; i++) {\n if (Object.is(prevDeps[i], nextDeps[i])) continue;\n return false;\n }\n return true;\n}\n\n/**\n * Deep dependency comparison.\n */\nfunction areDepsDeepEqual(prevDeps, nextDeps) {\n if (prevDeps === null || nextDeps === null) return false;\n if (prevDeps.length !== nextDeps.length) return false;\n for (let i = 0; i < prevDeps.length; i++) {\n if (deepEqualVal(prevDeps[i], nextDeps[i])) continue;\n return false;\n }\n return true;\n}\n\nfunction deepEqualVal(a, b) {\n if (Object.is(a, b)) return true;\n if (typeof a !== 'object' || a === null || typeof b !== 'object' || b === null) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!deepEqualVal(a[key], b[key])) return false;\n }\n return true;\n}\n\n/**\n * Validate dependency array.\n * @param {*} deps\n */\nfunction validateDeps(deps) {\n if (deps !== undefined && !Array.isArray(deps)) {\n throw new Error(\n '[useMemo] Dependencies must be an array or undefined. ' +\n `Received: ${typeof deps}`\n );\n }\n}\n\n// ─── Hook Context Management ──────────────────────────────────────────────────\n\nfunction setCurrentComponent(component) {\n currentlyRenderingComponent = component;\n hookIndex = 0;\n}\n\nfunction resetHookIndex() {\n hookIndex = 0;\n currentlyRenderingComponent = null;\n}\n\n// ─── useMemo Hook ──────────────────────────────────────────────────────────────\n\n/**\n * useMemo - Memoize a computed value based on dependencies.\n * Only recomputes when dependencies change.\n *\n * @param {Function} factory - Function that returns the memoized value\n * @param {Array} deps - Dependency array; value recomputes when deps change\n * @returns {*} Memoized value\n *\n * @example\n * const expensiveValue = useMemo(() => computeExpensive(a, b), [a, b]);\n *\n * @example\n * const sortedList = useMemo(() => {\n * return items.sort((a, b) => a.name.localeCompare(b.name));\n * }, [items]);\n */\nfunction useMemo(factory, deps) {\n const component = currentlyRenderingComponent;\n if (!component) {\n throw new Error('[useMemo] Must be called within a component render phase');\n }\n\n if (typeof factory !== 'function') {\n throw new Error(\n '[useMemo] First argument must be a function. ' +\n `Received: ${typeof factory}`\n );\n }\n\n validateDeps(deps);\n\n // Initialize hooks array\n if (!component._hooks) {\n component._hooks = [];\n }\n\n const currentHookIndex = hookIndex;\n const resolvedDeps = deps !== undefined ? deps : null;\n let hook;\n\n if (component._hooks[currentHookIndex]) {\n // Re-render: check if dependencies changed\n hook = component._hooks[currentHookIndex];\n\n const prevDeps = hook.deps;\n const depsChanged = !areDepsEqual(prevDeps, resolvedDeps);\n\n if (depsChanged) {\n // Dependencies changed - recompute the value\n hook.deps = resolvedDeps;\n\n try {\n const prevValue = hook.value;\n hook.value = factory();\n hook._computeCount++;\n\n // Track value change for debugging\n if (!Object.is(prevValue, hook.value)) {\n hook._valueChangedCount++;\n }\n } catch (error) {\n console.error('[useMemo] Factory function error:', error);\n if (component._handleError) {\n component._handleError(error);\n }\n // Keep previous value on error\n }\n }\n // If deps unchanged, keep the existing memoized value\n } else {\n // First render: compute initial value\n let initialValue;\n try {\n initialValue = factory();\n } catch (error) {\n console.error('[useMemo] Factory function error on mount:', error);\n if (component._handleError) {\n component._handleError(error);\n }\n initialValue = undefined;\n }\n\n hook = {\n type: 'memo',\n value: initialValue,\n deps: resolvedDeps,\n _computeCount: 1,\n _valueChangedCount: 1,\n _createdAt: Date.now(),\n _lastComputedAt: Date.now(),\n _onInvalidate: null,\n _lruCache: null,\n };\n\n component._hooks[currentHookIndex] = hook;\n\n // Register in the global memo cache for invalidation support\n if (!memoCache.has(component)) {\n memoCache.set(component, new Set());\n }\n memoCache.get(component).add(currentHookIndex);\n }\n\n // Update profiling data\n if (memoProfilingEnabled) {\n if (!memoProfiles.has(component)) {\n memoProfiles.set(component, {});\n }\n const profile = memoProfiles.get(component);\n profile[currentHookIndex] = {\n computeCount: hook._computeCount,\n valueChangedCount: hook._valueChangedCount,\n lastComputedAt: hook._lastComputedAt,\n };\n }\n\n hookIndex++;\n return hook.value;\n}\n\n// ─── Cache Invalidation ───────────────────────────────────────────────────────\n\n/**\n * Invalidate a specific memoized value, forcing recomputation on next render.\n *\n * @param {Object} component - The component owning the memo\n * @param {number} hookIdx - The hook index to invalidate\n */\nfunction invalidateMemo(component, hookIdx) {\n if (!component._hooks) return;\n const hook = component._hooks[hookIdx];\n if (!hook || hook.type !== 'memo') return;\n\n // Clear deps to force recomputation\n hook.deps = null;\n\n // Call invalidation callback if registered\n if (typeof hook._onInvalidate === 'function') {\n try {\n hook._onInvalidate(hook.value);\n } catch (error) {\n console.error('[useMemo] Invalidation callback error:', error);\n }\n }\n}\n\n/**\n * Invalidate all memoized values for a component.\n * @param {Object} component\n */\nfunction invalidateAllMemos(component) {\n if (!component._hooks) return;\n\n component._hooks.forEach((hook, idx) => {\n if (hook && hook.type === 'memo') {\n invalidateMemo(component, idx);\n }\n });\n}\n\n/**\n * Register a callback to be called when a memoized value is invalidated.\n * Must be called during the same render as the useMemo.\n *\n * @param {Function} callback - Called with (oldValue) when invalidated\n */\nfunction useMemoOnInvalidate(callback) {\n const component = currentlyRenderingComponent;\n if (!component) return;\n\n // Attach to the previous memo hook\n const prevHookIdx = hookIndex - 1;\n const hook = component._hooks?.[prevHookIdx];\n if (hook && hook.type === 'memo') {\n hook._onInvalidate = callback;\n }\n}\n\n// ─── Extended useMemo Features ────────────────────────────────────────────────\n\n/**\n * Memoize with a custom equality function instead of Object.is.\n *\n * @param {Function} factory - Factory function\n * @param {Array} deps - Dependency array\n * @param {Function} areEqual - Custom equality: (prev, next) => boolean\n * @returns {*} Memoized value\n */\nfunction useMemoWith(factory, deps, areEqual) {\n const component = currentlyRenderingComponent;\n if (!component) {\n throw new Error('[useMemoWith] Must be called within a component render phase');\n }\n\n if (!component._hooks) {\n component._hooks = [];\n }\n\n const currentHookIndex = hookIndex;\n const resolvedDeps = deps !== undefined ? deps : null;\n let hook;\n\n if (component._hooks[currentHookIndex]) {\n hook = component._hooks[currentHookIndex];\n\n const prevDeps = hook.deps;\n let depsChanged = !areDepsEqual(prevDeps, resolvedDeps);\n\n // Even if deps changed by reference, use custom equality to compare values\n if (depsChanged && typeof areEqual === 'function' && hook.value !== undefined) {\n try {\n const newValue = factory();\n if (areEqual(hook.value, newValue)) {\n // Values are equal despite dep reference changes\n hook.deps = resolvedDeps;\n hook.value = newValue;\n } else {\n hook.deps = resolvedDeps;\n hook.value = newValue;\n hook._computeCount++;\n hook._valueChangedCount++;\n }\n } catch (error) {\n console.error('[useMemoWith] Factory error:', error);\n }\n } else if (depsChanged) {\n try {\n hook.deps = resolvedDeps;\n hook.value = factory();\n hook._computeCount++;\n hook._valueChangedCount++;\n } catch (error) {\n console.error('[useMemoWith] Factory error:', error);\n }\n }\n } else {\n let initialValue;\n try {\n initialValue = factory();\n } catch (error) {\n console.error('[useMemoWith] Factory error on mount:', error);\n initialValue = undefined;\n }\n\n hook = {\n type: 'memo',\n value: initialValue,\n deps: resolvedDeps,\n _computeCount: 1,\n _valueChangedCount: 1,\n _createdAt: Date.now(),\n _lastComputedAt: Date.now(),\n _onInvalidate: null,\n _lruCache: null,\n };\n\n component._hooks[currentHookIndex] = hook;\n }\n\n hookIndex++;\n return hook.value;\n}\n\n/**\n * Memoize with a time-to-live (TTL). The cached value expires after\n * the specified duration and will be recomputed.\n *\n * @param {Function} factory - Factory function\n * @param {Array} deps - Dependency array\n * @param {number} ttlMs - Time-to-live in milliseconds\n * @returns {*} Memoized value\n */\nfunction useMemoTTL(factory, deps, ttlMs) {\n const component = currentlyRenderingComponent;\n if (!component) {\n throw new Error('[useMemoTTL] Must be called within a component render phase');\n }\n\n if (!component._hooks) {\n component._hooks = [];\n }\n\n const currentHookIndex = hookIndex;\n const resolvedDeps = deps !== undefined ? deps : null;\n let hook;\n\n if (component._hooks[currentHookIndex]) {\n hook = component._hooks[currentHookIndex];\n\n const now = Date.now();\n const expired = (now - hook._lastComputedAt) > ttlMs;\n const prevDeps = hook.deps;\n const depsChanged = !areDepsEqual(prevDeps, resolvedDeps);\n\n if (expired || depsChanged) {\n try {\n hook.deps = resolvedDeps;\n hook.value = factory();\n hook._computeCount++;\n hook._valueChangedCount++;\n hook._lastComputedAt = now;\n } catch (error) {\n console.error('[useMemoTTL] Factory error:', error);\n }\n }\n } else {\n let initialValue;\n try {\n initialValue = factory();\n } catch (error) {\n console.error('[useMemoTTL] Factory error on mount:', error);\n initialValue = undefined;\n }\n\n hook = {\n type: 'memo',\n value: initialValue,\n deps: resolvedDeps,\n _computeCount: 1,\n _valueChangedCount: 1,\n _createdAt: Date.now(),\n _lastComputedAt: Date.now(),\n _onInvalidate: null,\n _lruCache: null,\n };\n\n component._hooks[currentHookIndex] = hook;\n }\n\n hookIndex++;\n return hook.value;\n}\n\n/**\n * Memoize with deep comparison of dependencies.\n *\n * @param {Function} factory - Factory function\n * @param {Array} deps - Dependency array (compared deeply)\n * @returns {*} Memoized value\n */\nfunction useDeepCompareMemo(factory, deps) {\n const component = currentlyRenderingComponent;\n if (!component) {\n throw new Error('[useDeepCompareMemo] Must be called within a component render phase');\n }\n\n if (!component._hooks) {\n component._hooks = [];\n }\n\n const currentHookIndex = hookIndex;\n const resolvedDeps = deps !== undefined ? deps : null;\n let hook;\n\n if (component._hooks[currentHookIndex]) {\n hook = component._hooks[currentHookIndex];\n\n const prevDeps = hook.deps;\n const depsChanged = !areDepsDeepEqual(prevDeps, resolvedDeps);\n\n if (depsChanged) {\n hook.deps = resolvedDeps;\n try {\n hook.value = factory();\n hook._computeCount++;\n hook._valueChangedCount++;\n hook._lastComputedAt = Date.now();\n } catch (error) {\n console.error('[useDeepCompareMemo] Factory error:', error);\n }\n }\n } else {\n let initialValue;\n try {\n initialValue = factory();\n } catch (error) {\n console.error('[useDeepCompareMemo] Factory error on mount:', error);\n initialValue = undefined;\n }\n\n hook = {\n type: 'memo',\n value: initialValue,\n deps: resolvedDeps,\n _computeCount: 1,\n _valueChangedCount: 1,\n _createdAt: Date.now(),\n _lastComputedAt: Date.now(),\n _onInvalidate: null,\n _lruCache: null,\n };\n\n component._hooks[currentHookIndex] = hook;\n if (!memoCache.has(component)) {\n memoCache.set(component, new Set());\n }\n memoCache.get(component).add(currentHookIndex);\n }\n\n hookIndex++;\n return hook.value;\n}\n\n/**\n * Memoize with LRU cache - keeps multiple cached values for different dep sets.\n *\n * @param {Function} factory - Factory function\n * @param {Array} deps - Dependency array\n * @param {number} capacity - LRU cache capacity (default 10)\n * @returns {*} Memoized value\n */\nfunction useMemoLRU(factory, deps, capacity) {\n const component = currentlyRenderingComponent;\n if (!component) {\n throw new Error('[useMemoLRU] Must be called within a component render phase');\n }\n\n if (!component._hooks) {\n component._hooks = [];\n }\n\n const currentHookIndex = hookIndex;\n const resolvedDeps = deps !== undefined ? deps : null;\n const depKey = resolvedDeps ? JSON.stringify(resolvedDeps) : '__no_deps__';\n let hook;\n\n if (component._hooks[currentHookIndex]) {\n hook = component._hooks[currentHookIndex];\n\n // Initialize LRU cache if not present\n if (!hook._lruCache) {\n hook._lruCache = new LRUMemoCache(capacity || 10);\n }\n\n // Check LRU cache\n const cached = hook._lruCache.get(depKey);\n if (cached !== undefined) {\n hook.value = cached;\n } else {\n try {\n const newValue = factory();\n hook._lruCache.set(depKey, newValue);\n hook.value = newValue;\n hook._computeCount++;\n hook._valueChangedCount++;\n hook._lastComputedAt = Date.now();\n } catch (error) {\n console.error('[useMemoLRU] Factory error:', error);\n }\n }\n } else {\n let initialValue;\n try {\n initialValue = factory();\n } catch (error) {\n console.error('[useMemoLRU] Factory error on mount:', error);\n initialValue = undefined;\n }\n\n const lru = new LRUMemoCache(capacity || 10);\n lru.set(depKey, initialValue);\n\n hook = {\n type: 'memo',\n value: initialValue,\n deps: resolvedDeps,\n _computeCount: 1,\n _valueChangedCount: 1,\n _createdAt: Date.now(),\n _lastComputedAt: Date.now(),\n _onInvalidate: null,\n _lruCache: lru,\n };\n\n component._hooks[currentHookIndex] = hook;\n }\n\n hookIndex++;\n return hook.value;\n}\n\n// ─── Cleanup ──────────────────────────────────────────────────────────────────\n\n/**\n * Clean up memo cache when a component unmounts.\n * @param {Object} component\n */\nfunction cleanupMemoCache(component) {\n const indices = memoCache.get(component);\n if (indices) {\n indices.forEach((idx) => {\n const hook = component._hooks?.[idx];\n if (hook) {\n hook._onInvalidate = null;\n if (hook._lruCache) {\n hook._lruCache.clear();\n }\n }\n });\n memoCache.delete(component);\n }\n memoProfiles.delete(component);\n}\n\n// ─── Exports ──────────────────────────────────────────────────────────────────\n\nmodule.exports = {\n useMemo,\n useMemoWith,\n useMemoTTL,\n useDeepCompareMemo,\n useMemoLRU,\n useMemoOnInvalidate,\n invalidateMemo,\n invalidateAllMemos,\n setCurrentComponent,\n resetHookIndex,\n areDepsEqual,\n areDepsDeepEqual,\n cleanupMemoCache,\n setMemoProfiling,\n getMemoProfile,\n LRUMemoCache,\n};\n","/**\n * useReducer Hook Implementation\n * ElementDrawing Framework - Reducer-based state management with lazy\n * initialization, dispatch, action batching, middleware support,\n * action creators, undo/redo, optimistic updates, and action history.\n */\n\n'use strict';\n\n// ─── Internal State ───────────────────────────────────────────────────────────\n\nlet currentlyRenderingComponent = null;\nlet hookIndex = 0;\nlet isBatchingDispatches = false;\nconst pendingDispatches = new Map();\nlet scheduleUpdateCallback = null;\n\n// ─── Batching System ─────────────────────────────────────────────────────────\n\n/**\n * Start batching dispatches. All dispatched actions within the batch\n * will be deferred until endBatchDispatches is called.\n */\nfunction startBatchDispatches() {\n isBatchingDispatches = true;\n}\n\n/**\n * Flush all pending batched dispatches.\n */\nfunction endBatchDispatches() {\n isBatchingDispatches = false;\n flushPendingDispatches();\n}\n\n/**\n * Flush all pending dispatch actions, processing them in order.\n */\nfunction flushPendingDispatches() {\n if (pendingDispatches.size === 0) return;\n\n const dispatches = new Map(pendingDispatches);\n pendingDispatches.clear();\n\n dispatches.forEach((actions, component) => {\n if (actions.length === 0) return;\n\n // Process all queued actions through the reducer\n actions.forEach(({ hookIdx, action, reducer }) => {\n const hook = component._hooks[hookIdx];\n if (!hook) return;\n\n // Apply middleware chain before reducing\n let processedAction = action;\n if (hook._middleware && hook._middleware.length > 0) {\n processedAction = applyMiddlewareChain(hook._middleware, action, hook.state);\n if (processedAction === null) return; // Action cancelled\n }\n\n // Run the reducer\n const newState = reducer(hook.state, processedAction);\n\n // State comparison - skip update if unchanged\n if (Object.is(hook.state, newState)) return;\n\n const prevState = hook.state;\n hook.state = newState;\n\n // Track in action history\n if (hook._actionHistory) {\n hook._actionHistory.push({\n action: processedAction,\n prevState,\n nextState: newState,\n timestamp: Date.now(),\n });\n if (hook._actionHistory.length > (hook._maxHistorySize || 100)) {\n hook._actionHistory.shift();\n }\n }\n\n // Notify state change subscribers\n if (hook._subscribers) {\n hook._subscribers.forEach((callback) => {\n try {\n callback(newState, prevState, processedAction);\n } catch (error) {\n console.error('[useReducer] Subscriber error:', error);\n }\n });\n }\n\n // Persist state if configured\n if (hook._persistence) {\n try {\n const storage = window[hook._persistence.storage];\n storage.setItem(hook._persistence.key, hook._persistence.serialize(newState));\n } catch (error) {\n console.error('[useReducer] Persistence error:', error);\n }\n }\n });\n\n // Schedule re-render\n if (scheduleUpdateCallback) {\n scheduleUpdateCallback(component);\n } else if (component._scheduleReRender) {\n component._scheduleReRender();\n }\n });\n}\n\n/**\n * Execute a function with batched dispatches enabled.\n * @param {Function} fn\n * @returns {*}\n */\nfunction batchDispatches(fn) {\n startBatchDispatches();\n try {\n return fn();\n } finally {\n endBatchDispatches();\n }\n}\n\n// ─── Middleware System ─────────────────────────────────────────────────────────\n\n/**\n * Apply a chain of middleware to an action before it reaches the reducer.\n * Middleware signature: (action, state) => action (or throw to cancel)\n *\n * @param {Function[]} middleware - Array of middleware functions\n * @param {*} action - The dispatched action\n * @param {*} state - Current state\n * @returns {*} Processed action\n */\nfunction applyMiddlewareChain(middleware, action, state) {\n let processedAction = action;\n\n for (let i = 0; i < middleware.length; i++) {\n try {\n const result = middleware[i](processedAction, state);\n if (result === null) return null; // Middleware cancelled the action\n processedAction = result;\n } catch (error) {\n console.error('[useReducer] Middleware error:', error);\n return action; // Fall back to original action\n }\n }\n\n return processedAction;\n}\n\n/**\n * Create a logging middleware that logs all dispatched actions.\n * @param {string} [prefix] - Log prefix\n * @returns {Function} Middleware function\n */\nfunction createLoggerMiddleware(prefix = 'Reducer') {\n return function loggerMiddleware(action, state) {\n console.log(`[${prefix}] Action:`, action, '| State:', state);\n return action;\n };\n}\n\n/**\n * Create a middleware that validates actions against a schema.\n * @param {Object} schema - Action type to validator mapping\n * @returns {Function} Middleware function\n */\nfunction createValidationMiddleware(schema) {\n return function validationMiddleware(action) {\n if (action && action.type && schema[action.type]) {\n const validator = schema[action.type];\n if (typeof validator === 'function') {\n const isValid = validator(action);\n if (!isValid) {\n console.warn('[useReducer] Action validation failed:', action);\n return null; // Cancel invalid action\n }\n }\n }\n return action;\n };\n}\n\n/**\n * Create a middleware that transforms actions.\n * @param {Function} transformer - (action, state) => newAction\n * @returns {Function} Middleware function\n */\nfunction createTransformMiddleware(transformer) {\n return function transformMiddleware(action, state) {\n return transformer(action, state);\n };\n}\n\n/**\n * Create a middleware that throttles actions of a given type.\n * @param {string} actionType - Action type to throttle\n * @param {number} intervalMs - Throttle interval\n * @returns {Function} Middleware function\n */\nfunction createThrottleMiddleware(actionType, intervalMs) {\n let lastDispatch = 0;\n return function throttleMiddleware(action) {\n if (action && action.type === actionType) {\n const now = Date.now();\n if (now - lastDispatch < intervalMs) {\n return null; // Cancel throttled action\n }\n lastDispatch = now;\n }\n return action;\n };\n}\n\n// ─── Action Creator Factory ───────────────────────────────────────────────────\n\n/**\n * Create action creator functions from an action definition map.\n *\n * @param {Object} actionMap - Map of action type to payload creator function\n * @returns {Object} Object of action creator functions\n *\n * @example\n * const actions = createActionCreators({\n * increment: () => ({ type: 'INCREMENT' }),\n * add: (amount) => ({ type: 'ADD', payload: amount }),\n * reset: () => ({ type: 'RESET' }),\n * });\n *\n * dispatch(actions.increment());\n * dispatch(actions.add(5));\n */\nfunction createActionCreators(actionMap) {\n const creators = {};\n for (const type in actionMap) {\n if (!actionMap.hasOwnProperty(type)) continue;\n const payloadCreator = actionMap[type];\n creators[type] = function actionCreator() {\n return payloadCreator.apply(null, arguments);\n };\n }\n return creators;\n}\n\n/**\n * Create a simple action creator for a type.\n * @param {string} type - Action type\n * @returns {Function} Action creator\n */\nfunction createAction(type) {\n return function actionCreator(payload) {\n return { type, payload };\n };\n}\n\n// ─── Hook Context Management ──────────────────────────────────────────────────\n\nfunction setCurrentComponent(component) {\n currentlyRenderingComponent = component;\n hookIndex = 0;\n}\n\nfunction resetHookIndex() {\n hookIndex = 0;\n currentlyRenderingComponent = null;\n}\n\nfunction setScheduleUpdateCallback(callback) {\n scheduleUpdateCallback = callback;\n}\n\n// ─── useReducer Hook ──────────────────────────────────────────────────────────\n\n/**\n * useReducer - Reducer-based state management hook.\n *\n * @param {Function} reducer - Pure function: (state, action) => newState\n * @param {*} initialArg - Initial state value or argument for lazy initializer\n * @param {Function} [init] - Lazy initializer: (initialArg) => initialState\n * @param {Object} [options] - Additional options\n * @param {Function[]} [options.middleware] - Middleware chain for actions\n * @param {Object} [options.persistence] - State persistence configuration\n * @param {boolean} [options.trackHistory] - Track action history for debugging\n * @param {number} [options.maxHistorySize] - Maximum history entries\n * @returns {[*, Function]} Tuple of [state, dispatch]\n *\n * @example\n * function counterReducer(state, action) {\n * switch (action.type) {\n * case 'increment': return { count: state.count + 1 };\n * case 'decrement': return { count: state.count - 1 };\n * case 'reset': return { count: action.payload };\n * default: return state;\n * }\n * }\n *\n * const [state, dispatch] = useReducer(counterReducer, { count: 0 });\n *\n * @example\n * // Lazy initialization\n * const [state, dispatch] = useReducer(reducer, initialCount, (count) => {\n * return { count: count * 2 };\n * });\n *\n * @example\n * // With middleware and history\n * const [state, dispatch] = useReducer(reducer, initialState, undefined, {\n * middleware: [createLoggerMiddleware('Counter')],\n * trackHistory: true,\n * });\n */\nfunction useReducer(reducer, initialArg, init, options = {}) {\n const component = currentlyRenderingComponent;\n if (!component) {\n throw new Error('[useReducer] Must be called within a component render phase');\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(\n '[useReducer] First argument must be a reducer function. ' +\n `Received: ${typeof reducer}`\n );\n }\n\n // Initialize hooks array\n if (!component._hooks) {\n component._hooks = [];\n }\n\n const currentHookIndex = hookIndex;\n let hook;\n\n if (component._hooks[currentHookIndex]) {\n // Re-render: use existing hook state\n hook = component._hooks[currentHookIndex];\n } else {\n // First render: compute initial state\n let initialState;\n\n // Check for persisted state first\n if (options.persistence) {\n try {\n const storage = window[options.persistence.storage || 'localStorage'];\n const persisted = storage.getItem(options.persistence.key);\n if (persisted !== null) {\n initialState = (options.persistence.deserialize || JSON.parse)(persisted);\n }\n } catch (error) {\n console.error('[useReducer] Load persistence error:', error);\n }\n }\n\n // If no persisted state, compute initial state\n if (initialState === undefined) {\n if (typeof init === 'function') {\n // Lazy initialization\n try {\n initialState = init(initialArg);\n } catch (error) {\n console.error('[useReducer] Lazy initializer error:', error);\n initialState = initialArg;\n }\n } else {\n initialState = initialArg;\n }\n }\n\n hook = {\n type: 'reducer',\n state: initialState,\n reducer,\n _middleware: options.middleware || [],\n _persistence: options.persistence || null,\n _subscribers: new Set(),\n _isDispatching: false,\n _actionHistory: options.trackHistory ? [] : null,\n _maxHistorySize: options.maxHistorySize || 100,\n _undoStack: [],\n _redoStack: [],\n _optimisticState: null,\n _isOptimistic: false,\n };\n\n component._hooks[currentHookIndex] = hook;\n }\n\n // Update reducer reference in case it changes\n hook.reducer = reducer;\n\n hookIndex++;\n\n // ─── Dispatch Implementation ────────────────────────────────────────────\n\n /**\n * Dispatch an action to the reducer.\n *\n * @param {*} action - The action to dispatch (typically { type, payload })\n */\n const dispatch = function dispatch(action) {\n if (!component._hooks) {\n console.warn('[useReducer] Dispatch called on unmounted component');\n return;\n }\n\n const targetHook = component._hooks[currentHookIndex];\n if (!targetHook) {\n console.warn('[useReducer] Hook index out of bounds');\n return;\n }\n\n // Prevent dispatching during reducer execution\n if (targetHook._isDispatching) {\n throw new Error(\n '[useReducer] Cannot dispatch an action while the reducer is executing. ' +\n 'This is not allowed to prevent infinite loops.'\n );\n }\n\n if (isBatchingDispatches) {\n // Queue the dispatch for batch processing\n if (!pendingDispatches.has(component)) {\n pendingDispatches.set(component, []);\n }\n pendingDispatches.get(component).push({\n hookIdx: currentHookIndex,\n action,\n reducer: targetHook.reducer,\n });\n return;\n }\n\n // Immediate dispatch\n let processedAction = action;\n\n // Apply middleware chain\n if (targetHook._middleware && targetHook._middleware.length > 0) {\n processedAction = applyMiddlewareChain(targetHook._middleware, action, targetHook.state);\n if (processedAction === null) return; // Action was cancelled by middleware\n }\n\n // Run the reducer\n targetHook._isDispatching = true;\n let newState;\n try {\n newState = targetHook.reducer(targetHook.state, processedAction);\n } catch (error) {\n targetHook._isDispatching = false;\n console.error('[useReducer] Reducer error:', error);\n if (component._handleError) {\n component._handleError(error);\n }\n return;\n }\n targetHook._isDispatching = false;\n\n // State comparison\n if (Object.is(targetHook.state, newState)) return;\n\n const prevState = targetHook.state;\n targetHook.state = newState;\n\n // Track in action history\n if (targetHook._actionHistory) {\n targetHook._actionHistory.push({\n action: processedAction,\n prevState,\n nextState: newState,\n timestamp: Date.now(),\n });\n if (targetHook._actionHistory.length > targetHook._maxHistorySize) {\n targetHook._actionHistory.shift();\n }\n }\n\n // Notify subscribers\n targetHook._subscribers.forEach((callback) => {\n try {\n callback(newState, prevState, processedAction);\n } catch (error) {\n console.error('[useReducer] Subscriber error:', error);\n }\n });\n\n // Persist state\n if (targetHook._persistence) {\n try {\n const storage = window[targetHook._persistence.storage || 'localStorage'];\n const serialized = (targetHook._persistence.serialize || JSON.stringify)(newState);\n storage.setItem(targetHook._persistence.key, serialized);\n } catch (error) {\n console.error('[useReducer] Persistence error:', error);\n }\n }\n\n // Schedule re-render\n if (scheduleUpdateCallback) {\n scheduleUpdateCallback(component);\n } else if (component._scheduleReRender) {\n component._scheduleReRender();\n }\n };\n\n // ─── Extended Dispatch Methods ──────────────────────────────────────────\n\n /**\n * Get the current state without triggering a re-render.\n * @returns {*} Current state\n */\n dispatch.getState = function getState() {\n const targetHook = component._hooks?.[currentHookIndex];\n return targetHook ? targetHook.state : undefined;\n };\n\n /**\n * Subscribe to state changes from this reducer.\n * @param {Function} callback - Called with (newState, prevState, action)\n * @returns {Function} Unsubscribe function\n */\n dispatch.subscribe = function subscribe(callback) {\n const targetHook = component._hooks?.[currentHookIndex];\n if (!targetHook) return function noop() {};\n\n targetHook._subscribers.add(callback);\n return function unsubscribe() {\n targetHook._subscribers.delete(callback);\n };\n };\n\n /**\n * Add middleware to this reducer's middleware chain.\n * @param {Function} middleware - Middleware function\n * @returns {Function} Removal function\n */\n dispatch.addMiddleware = function addMiddleware(middleware) {\n const targetHook = component._hooks?.[currentHookIndex];\n if (!targetHook) return function noop() {};\n\n targetHook._middleware.push(middleware);\n return function removeMiddleware() {\n const idx = targetHook._middleware.indexOf(middleware);\n if (idx !== -1) targetHook._middleware.splice(idx, 1);\n };\n };\n\n /**\n * Dispatch multiple actions at once (batched).\n * @param {Array} actions - Array of actions\n */\n dispatch.batch = function batch(actions) {\n if (!Array.isArray(actions)) {\n console.warn('[useReducer] dispatch.batch expects an array of actions');\n return;\n }\n startBatchDispatches();\n try {\n actions.forEach((action) => dispatch(action));\n } finally {\n endBatchDispatches();\n }\n };\n\n /**\n * Reset state to the initial value.\n */\n dispatch.reset = function reset() {\n let resetState;\n if (typeof init === 'function') {\n resetState = init(initialArg);\n } else {\n resetState = initialArg;\n }\n dispatch({ type: '__RESET__', payload: resetState });\n };\n\n /**\n * Get the action history (if tracking is enabled).\n * @returns {Array|null}\n */\n dispatch.getHistory = function getHistory() {\n const targetHook = component._hooks?.[currentHookIndex];\n return targetHook?._actionHistory || null;\n };\n\n // ─── Undo/Redo Support ──────────────────────────────────────────────────\n\n /**\n * Undo the last action. Pushes the current state to the redo stack.\n * @returns {boolean} True if undo was successful\n */\n dispatch.undo = function undo() {\n const targetHook = component._hooks?.[currentHookIndex];\n if (!targetHook || targetHook._undoStack.length === 0) return false;\n\n const prev = targetHook._undoStack.pop();\n targetHook._redoStack.push(targetHook.state);\n targetHook.state = prev;\n\n if (component._scheduleReRender) component._scheduleReRender();\n return true;\n };\n\n /**\n * Redo the last undone action.\n * @returns {boolean} True if redo was successful\n */\n dispatch.redo = function redo() {\n const targetHook = component._hooks?.[currentHookIndex];\n if (!targetHook || targetHook._redoStack.length === 0) return false;\n\n const next = targetHook._redoStack.pop();\n targetHook._undoStack.push(targetHook.state);\n targetHook.state = next;\n\n if (component._scheduleReRender) component._scheduleReRender();\n return true;\n };\n\n /**\n * Check if undo is available.\n * @returns {boolean}\n */\n dispatch.canUndo = function canUndo() {\n const targetHook = component._hooks?.[currentHookIndex];\n return targetHook ? targetHook._undoStack.length > 0 : false;\n };\n\n /**\n * Check if redo is available.\n * @returns {boolean}\n */\n dispatch.canRedo = function canRedo() {\n const targetHook = component._hooks?.[currentHookIndex];\n return targetHook ? targetHook._redoStack.length > 0 : false;\n };\n\n // ─── Optimistic Updates ─────────────────────────────────────────────────\n\n /**\n * Dispatch an optimistic update. The state is immediately updated\n * with the optimistic value, then rolled back if the async action fails.\n *\n * @param {*} optimisticState - The optimistic state to apply immediately\n * @param {Promise} asyncAction - Promise that resolves to an action\n */\n dispatch.optimistic = function optimistic(optimisticState, asyncAction) {\n const targetHook = component._hooks?.[currentHookIndex];\n if (!targetHook) return;\n\n // Save current state for rollback\n const realState = targetHook.state;\n targetHook._undoStack.push(realState);\n targetHook._optimisticState = realState;\n targetHook._isOptimistic = true;\n\n // Apply optimistic state immediately\n targetHook.state = optimisticState;\n if (component._scheduleReRender) component._scheduleReRender();\n\n // Handle async resolution\n if (asyncAction && typeof asyncAction.then === 'function') {\n asyncAction.then(\n function resolve(action) {\n targetHook._isOptimistic = false;\n targetHook._optimisticState = null;\n dispatch(action);\n },\n function reject(error) {\n // Roll back to the real state\n targetHook._isOptimistic = false;\n targetHook.state = targetHook._optimisticState || realState;\n targetHook._optimisticState = null;\n if (component._scheduleReRender) component._scheduleReRender();\n console.error('[useReducer] Optimistic update failed:', error);\n }\n );\n }\n };\n\n return [hook.state, dispatch];\n}\n\n// ─── Cleanup ──────────────────────────────────────────────────────────────────\n\n/**\n * Clean up reducer state when a component unmounts.\n * @param {Object} component - The unmounting component\n */\nfunction cleanupReducerState(component) {\n if (!component._hooks) return;\n\n component._hooks.forEach((hook) => {\n if (hook && hook.type === 'reducer') {\n hook._subscribers.clear();\n hook._middleware = [];\n hook._isDispatching = false;\n if (hook._actionHistory) {\n hook._actionHistory = null;\n }\n hook._undoStack = [];\n hook._redoStack = [];\n }\n });\n\n pendingDispatches.delete(component);\n}\n\n// ─── Exports ──────────────────────────────────────────────────────────────────\n\nmodule.exports = {\n useReducer,\n setCurrentComponent,\n resetHookIndex,\n setScheduleUpdateCallback,\n startBatchDispatches,\n endBatchDispatches,\n batchDispatches,\n createLoggerMiddleware,\n createValidationMiddleware,\n createTransformMiddleware,\n createThrottleMiddleware,\n createActionCreators,\n createAction,\n applyMiddlewareChain,\n cleanupReducerState,\n};\n","/**\n * useRef Hook Implementation\n * ElementDrawing Framework - Mutable ref objects, DOM refs, callback refs,\n * ref forwarding, ref merging, previous value tracking, ref lifecycle,\n * and DOM measurement helpers.\n */\n\n'use strict';\n\n// ─── Internal State ───────────────────────────────────────────────────────────\n\nlet currentlyRenderingComponent = null;\nlet hookIndex = 0;\nconst refRegistry = new WeakMap();\n\n// ─── Ref Lifecycle Tracking ───────────────────────────────────────────────────\n\nconst refLifecycle = new WeakMap();\n\n/**\n * Get the lifecycle state of a ref (mounted/unmounted).\n * @param {Object} ref - Ref object\n * @returns {string} 'mounted' | 'unmounted' | 'unknown'\n */\nfunction getRefLifecycle(ref) {\n if (!ref || !ref._isRef) return 'unknown';\n return refLifecycle.get(ref) || 'unknown';\n}\n\n// ─── Hook Context Management ──────────────────────────────────────────────────\n\nfunction setCurrentComponent(component) {\n currentlyRenderingComponent = component;\n hookIndex = 0;\n}\n\nfunction resetHookIndex() {\n hookIndex = 0;\n currentlyRenderingComponent = null;\n}\n\n// ─── Ref Object Creation ──────────────────────────────────────────────────────\n\n/**\n * Create a mutable ref object with a current property.\n *\n * @param {*} initialValue - Initial value for current\n * @returns {Object} Ref object with { current } property\n *\n * @example\n * const countRef = useRef(0);\n * countRef.current++; // Mutable without re-renders\n */\nfunction createRef(initialValue) {\n const ref = {\n current: initialValue,\n };\n\n Object.defineProperty(ref, '_isRef', {\n enumerable: false,\n configurable: false,\n writable: false,\n value: true,\n });\n\n Object.defineProperty(ref, '_createdAt', {\n enumerable: false,\n configurable: false,\n writable: false,\n value: Date.now(),\n });\n\n return ref;\n}\n\n// ─── useRef Hook ───────────────────────────────────────────────────────────────\n\n/**\n * useRef - Create a mutable ref object that persists across renders.\n * Mutating .current does NOT trigger a re-render.\n *\n * @param {*} initialValue - Initial value for the ref's current property\n * @returns {Object} Ref object { current: initialValue }\n *\n * @example\n * // DOM ref\n * const inputRef = useRef(null);\n * <input ref={inputRef} />\n * inputRef.current.focus();\n *\n * @example\n * // Instance variable\n * const timerRef = useRef(null);\n * timerRef.current = setInterval(() => {}, 1000);\n *\n * @example\n * // Previous value tracking\n * const prevCountRef = useRef(count);\n * useEffect(() => { prevCountRef.current = count; }, [count]);\n */\nfunction useRef(initialValue) {\n const component = currentlyRenderingComponent;\n if (!component) {\n throw new Error('[useRef] Must be called within a component render phase');\n }\n\n // Initialize hooks array\n if (!component._hooks) {\n component._hooks = [];\n }\n\n const currentHookIndex = hookIndex;\n let hook;\n\n if (component._hooks[currentHookIndex]) {\n // Re-render: return existing ref (never changes identity)\n hook = component._hooks[currentHookIndex];\n } else {\n // First render: create the ref object\n const ref = createRef(initialValue);\n\n hook = {\n type: 'ref',\n ref,\n _isDOMRef: false,\n _cleanup: null,\n _prevValues: [],\n };\n\n component._hooks[currentHookIndex] = hook;\n\n // Register in the global ref registry\n if (!refRegistry.has(component)) {\n refRegistry.set(component, new Set());\n }\n refRegistry.get(component).add(currentHookIndex);\n }\n\n hookIndex++;\n return hook.ref;\n}\n\n// ─── Previous Value Tracking ──────────────────────────────────────────────────\n\n/**\n * usePrevious - Track the previous value of a variable across renders.\n *\n * @param {*} value - Current value\n * @returns {*} Previous value (undefined on first render)\n *\n * @example\n * const [count, setCount] = useState(0);\n * const prevCount = usePrevious(count);\n * console.log(`Current: ${count}, Previous: ${prevCount}`);\n */\nfunction usePrevious(value) {\n const ref = useRef(undefined);\n\n // Store the previous value\n const previousValue = ref.current;\n\n // Schedule the update for next render (not immediate)\n if (currentlyRenderingComponent) {\n const component = currentlyRenderingComponent;\n // Queue the update to happen after render\n if (!component._pendingPrevUpdates) {\n component._pendingPrevUpdates = [];\n }\n component._pendingPrevUpdates.push(() => {\n ref.current = value;\n });\n }\n\n return previousValue;\n}\n\n/**\n * usePreviousWithInit - Like usePrevious but with an explicit initial previous value.\n *\n * @param {*} value - Current value\n * @param {*} initPrev - Initial \"previous\" value for first render\n * @returns {*} Previous value\n */\nfunction usePreviousWithInit(value, initPrev) {\n const ref = useRef(initPrev);\n const previousValue = ref.current;\n\n if (currentlyRenderingComponent) {\n const component = currentlyRenderingComponent;\n if (!component._pendingPrevUpdates) {\n component._pendingPrevUpdates = [];\n }\n component._pendingPrevUpdates.push(() => {\n ref.current = value;\n });\n }\n\n return previousValue;\n}\n\n// ─── Callback Refs ────────────────────────────────────────────────────────────\n\n/**\n * Create a callback ref that invokes a function when the DOM node changes.\n *\n * @param {Function} callback - Called with (node) when the ref value changes\n * @returns {Function} Callback ref function\n *\n * @example\n * const measureRef = useCallbackRef((node) => {\n * if (node) {\n * const { width, height } = node.getBoundingClientRect();\n * setSize({ width, height });\n * }\n * });\n */\nfunction useCallbackRef(callback) {\n if (typeof callback !== 'function') {\n throw new Error('[useCallbackRef] Argument must be a function');\n }\n\n let lastNode = null;\n\n const callbackRef = function refFunction(node) {\n // Clean up previous node\n if (lastNode && typeof callbackRef._cleanup === 'function') {\n try {\n callbackRef._cleanup(lastNode);\n } catch (error) {\n console.error('[useCallbackRef] Cleanup error:', error);\n }\n }\n\n // Invoke callback with new node\n if (node !== null) {\n try {\n const result = callback(node);\n if (typeof result === 'function') {\n callbackRef._cleanup = result;\n }\n } catch (error) {\n console.error('[useCallbackRef] Callback error:', error);\n }\n } else {\n callbackRef._cleanup = null;\n }\n\n lastNode = node;\n\n // Track lifecycle\n refLifecycle.set(callbackRef, node ? 'mounted' : 'unmounted');\n };\n\n callbackRef._isCallbackRef = true;\n callbackRef._cleanup = null;\n\n return callbackRef;\n}\n\n// ─── Ref Forwarding ───────────────────────────────────────────────────────────\n\n/**\n * Create a forwarded ref component that passes refs through to child components.\n *\n * @param {Function} render - Function (props, ref) => VNode\n * @returns {Function} Forwarded ref component\n *\n * @example\n * const FancyInput = forwardRef((props, ref) => (\n * <input ref={ref} className=\"fancy-input\" {...props} />\n * ));\n *\n * <FancyInput ref={inputRef} />\n */\nfunction forwardRef(render) {\n if (typeof render !== 'function') {\n throw new Error(\n '[forwardRef] Argument must be a render function. ' +\n `Received: ${typeof render}`\n );\n }\n\n const ForwardedComponent = function ForwardRefComponent(props) {\n const ref = props.ref;\n const restProps = Object.assign({}, props);\n delete restProps.ref;\n\n return render(restProps, ref);\n };\n\n ForwardedComponent._isForwardRef = true;\n ForwardedComponent.displayName = render.displayName || render.name || 'ForwardRef';\n ForwardedComponent.render = render;\n\n return ForwardedComponent;\n}\n\n/**\n * Check if a component was created with forwardRef.\n * @param {Function} component\n * @returns {boolean}\n */\nfunction isForwardRef(component) {\n return component && component._isForwardRef === true;\n}\n\n// ─── Ref Merging ──────────────────────────────────────────────────────────────\n\n/**\n * Merge multiple refs into a single callback ref.\n * Supports object refs, callback refs, and forwarded refs.\n *\n * @param {...(Object|Function|null)} refs - Refs to merge\n * @returns {Function} Callback ref that sets all provided refs\n *\n * @example\n * const mergedRef = useMergedRefs(externalRef, localRef);\n * <div ref={mergedRef} />\n */\nfunction useMergedRefs() {\n const refs = Array.prototype.slice.call(arguments);\n\n const mergedRef = function mergedRefCallback(node) {\n refs.forEach((ref) => {\n if (!ref) return;\n\n if (typeof ref === 'function') {\n // Callback ref\n ref(node);\n } else if (typeof ref === 'object' && ref._isRef) {\n // Object ref\n ref.current = node;\n } else if (typeof ref === 'object' && ref !== null) {\n // Plain object ref\n ref.current = node;\n }\n });\n };\n\n mergedRef._isMergedRef = true;\n return mergedRef;\n}\n\n// ─── DOM Ref Helpers ──────────────────────────────────────────────────────────\n\n/**\n * Create a ref that measures the DOM node dimensions.\n *\n * @returns {Array} [ref, dimensions] where dimensions is { width, height, x, y }\n *\n * @example\n * const [measureRef, dimensions] = useMeasureRef();\n * <div ref={measureRef} />\n * console.log(dimensions.width, dimensions.height);\n */\nfunction useMeasureRef() {\n const component = currentlyRenderingComponent;\n if (!component) {\n throw new Error('[useMeasureRef] Must be called within a component render phase');\n }\n\n const dimensionsRef = useRef({ width: 0, height: 0, x: 0, y: 0 });\n const observerRef = useRef(null);\n\n const callbackRef = useCallbackRef((node) => {\n if (observerRef.current) {\n observerRef.current.disconnect();\n }\n\n if (node) {\n // Measure initial dimensions\n const rect = node.getBoundingClientRect();\n dimensionsRef.current = {\n width: rect.width,\n height: rect.height,\n x: rect.x,\n y: rect.y,\n };\n\n // Observe size changes\n if (typeof ResizeObserver !== 'undefined') {\n observerRef.current = new ResizeObserver((entries) => {\n const entry = entries[0];\n if (entry) {\n const { width, height } = entry.contentRect;\n const { x, y } = entry.target.getBoundingClientRect();\n dimensionsRef.current = { width, height, x, y };\n }\n });\n observerRef.current.observe(node);\n }\n }\n });\n\n return [callbackRef, dimensionsRef.current];\n}\n\n/**\n * Create a ref that tracks whether the element is in the viewport.\n *\n * @param {Object} [options] - IntersectionObserver options\n * @returns {Array} [ref, isIntersecting]\n */\nfunction useInViewRef(options) {\n const component = currentlyRenderingComponent;\n if (!component) {\n throw new Error('[useInViewRef] Must be called within a component render phase');\n }\n\n const inViewRef = useRef(false);\n const observerRef = useRef(null);\n\n const callbackRef = useCallbackRef((node) => {\n if (observerRef.current) {\n observerRef.current.disconnect();\n }\n\n if (node && typeof IntersectionObserver !== 'undefined') {\n observerRef.current = new IntersectionObserver((entries) => {\n const entry = entries[0];\n if (entry) {\n inViewRef.current = entry.isIntersecting;\n }\n }, options);\n observerRef.current.observe(node);\n }\n });\n\n return [callbackRef, inViewRef.current];\n}\n\n/**\n * Create a ref that tracks focus state.\n *\n * @returns {Array} [ref, isFocused]\n */\nfunction useFocusRef() {\n const component = currentlyRenderingComponent;\n if (!component) {\n throw new Error('[useFocusRef] Must be called within a component render phase');\n }\n\n const focusRef = useRef(false);\n\n const callbackRef = useCallbackRef((node) => {\n if (node) {\n node.addEventListener('focus', () => { focusRef.current = true; });\n node.addEventListener('blur', () => { focusRef.current = false; });\n focusRef.current = document.activeElement === node;\n }\n });\n\n return [callbackRef, focusRef.current];\n}\n\n/**\n * Create a ref that auto-scrolls to the element when dependencies change.\n *\n * @param {Array} deps - Dependencies that trigger scroll\n * @returns {Function} Ref callback\n */\nfunction useScrollRef(deps) {\n const scrolledRef = useRef(false);\n\n const callbackRef = useCallbackRef((node) => {\n if (node) {\n node.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n scrolledRef.current = true;\n }\n });\n\n return callbackRef;\n}\n\n// ─── Cleanup ──────────────────────────────────────────────────────────────────\n\n/**\n * Process pending previous value updates after render.\n * @param {Object} component\n */\nfunction processPendingPrevUpdates(component) {\n if (component._pendingPrevUpdates && component._pendingPrevUpdates.length > 0) {\n component._pendingPrevUpdates.forEach((fn) => fn());\n component._pendingPrevUpdates = [];\n }\n}\n\n/**\n * Clean up refs when a component unmounts.\n * @param {Object} component\n */\nfunction cleanupRefs(component) {\n if (!component._hooks) return;\n\n component._hooks.forEach((hook) => {\n if (hook && hook.type === 'ref') {\n // Run cleanup for callback refs\n if (typeof hook._cleanup === 'function') {\n try {\n hook._cleanup(null);\n } catch (error) {\n console.error('[useRef] Cleanup error:', error);\n }\n }\n\n // Clear DOM refs\n if (hook._isDOMRef && hook.ref) {\n hook.ref.current = null;\n refLifecycle.set(hook.ref, 'unmounted');\n }\n }\n });\n\n refRegistry.delete(component);\n\n // Process any remaining pending updates\n if (component._pendingPrevUpdates) {\n component._pendingPrevUpdates = [];\n }\n}\n\n// ─── Exports ──────────────────────────────────────────────────────────────────\n\nmodule.exports = {\n useRef,\n usePrevious,\n usePreviousWithInit,\n createRef,\n useCallbackRef,\n forwardRef,\n isForwardRef,\n useMergedRefs,\n useMeasureRef,\n useInViewRef,\n useFocusRef,\n useScrollRef,\n setCurrentComponent,\n resetHookIndex,\n cleanupRefs,\n processPendingPrevUpdates,\n getRefLifecycle,\n};\n","/**\n * useState Hook Implementation\n * ElementDrawing Framework - State management hook with batched updates,\n * functional updates, lazy initialization, state comparison, subscriptions,\n * priority-based updates, transition support, and debug tracing.\n */\n\n'use strict';\n\n// ─── Internal State ───────────────────────────────────────────────────────────\n\nlet currentlyRenderingComponent = null;\nlet hookIndex = 0;\nlet isBatchingUpdates = false;\nconst pendingStateUpdates = new Map();\nconst stateSubscribers = new Map();\nconst statePersistenceKeys = new WeakMap();\nlet scheduleUpdateCallback = null;\n\n// ─── Update Priority Levels ──────────────────────────────────────────────────\n\nconst PRIORITY = {\n IMMEDIATE: 0, // Synchronous, user-initiated (click, keypress)\n NORMAL: 1, // Standard state update\n TRANSITION: 2, // Non-urgent, can be interrupted (useTransition)\n IDLE: 3, // Lowest priority, runs when idle\n};\n\nlet currentUpdatePriority = PRIORITY.NORMAL;\n\n/**\n * Get the current update priority level.\n * @returns {number}\n */\nfunction getCurrentPriority() {\n return currentUpdatePriority;\n}\n\n/**\n * Set the current update priority level.\n * @param {number} priority\n */\nfunction setCurrentPriority(priority) {\n if (!Object.values(PRIORITY).includes(priority)) {\n console.warn('[useState] Invalid priority level:', priority);\n return;\n }\n currentUpdatePriority = priority;\n}\n\n// ─── Update Queue ─────────────────────────────────────────────────────────────\n\n/**\n * Represents a pending state update in the queue.\n * @param {*} updateFnOrValue - New value or updater function\n * @param {number} priority - Update priority\n * @param {number} lane - Lane for concurrent rendering\n */\nfunction createStateUpdate(updateFnOrValue, priority, lane) {\n return {\n updateFnOrValue,\n priority: priority !== undefined ? priority : currentUpdatePriority,\n lane: lane || 0,\n timestamp: Date.now(),\n id: ++updateIdCounter,\n };\n}\n\nlet updateIdCounter = 0;\n\n// ─── Batching System ─────────────────────────────────────────────────────────\n\n/**\n * Start batching state updates. All setState calls within the batch\n * will be deferred until endBatchUpdates is called.\n */\nfunction startBatchUpdates() {\n isBatchingUpdates = true;\n}\n\n/**\n * Flush all pending batched updates and re-render affected components.\n */\nfunction endBatchUpdates() {\n isBatchingUpdates = false;\n flushPendingUpdates();\n}\n\n/**\n * Flush all pending state updates, merging multiple updates for the same hook.\n * Processes updates by priority order (IMMEDIATE first).\n */\nfunction flushPendingUpdates() {\n if (pendingStateUpdates.size === 0) return;\n\n const updates = new Map(pendingStateUpdates);\n pendingStateUpdates.clear();\n\n updates.forEach((stateQueue, component) => {\n if (stateQueue.length === 0) return;\n\n // Sort updates by priority (lower number = higher priority)\n stateQueue.sort((a, b) => a.priority - b.priority);\n\n const hooks = component._hooks;\n stateQueue.forEach(({ hookIdx, update }) => {\n const hook = hooks[hookIdx];\n if (!hook) return;\n\n let newValue;\n if (typeof update.updateFnOrValue === 'function') {\n newValue = update.updateFnOrValue(hook.state);\n } else {\n newValue = update.updateFnOrValue;\n }\n\n // State comparison - skip update if value is the same\n const areEqual = hook._areEqual || Object.is;\n if (areEqual(hook.state, newValue)) return;\n\n const prevState = hook.state;\n hook.state = newValue;\n\n // Track update in debug history\n if (hook._debug) {\n hook._updateHistory.push({\n prev: prevState,\n next: newValue,\n timestamp: Date.now(),\n priority: update.priority,\n });\n // Keep only last 50 entries\n if (hook._updateHistory.length > 50) {\n hook._updateHistory.shift();\n }\n }\n\n // Notify subscribers of state change\n notifySubscribers(component, hookIdx, newValue, prevState);\n\n // Persist state if persistence is configured\n persistState(component, hookIdx, newValue);\n });\n\n // Schedule re-render for the component\n if (scheduleUpdateCallback) {\n scheduleUpdateCallback(component);\n } else if (component._scheduleReRender) {\n component._scheduleReRender();\n }\n });\n}\n\n/**\n * Execute a function with batched updates enabled.\n * @param {Function} fn - Function to execute within the batch\n * @returns {*} Return value of the executed function\n */\nfunction batchedUpdates(fn) {\n startBatchUpdates();\n try {\n return fn();\n } finally {\n endBatchUpdates();\n }\n}\n\n/**\n * Execute a function at a specific priority level.\n * @param {number} priority - PRIORITY.IMMEDIATE | NORMAL | TRANSITION | IDLE\n * @param {Function} fn - Function to execute\n * @returns {*} Return value of the executed function\n */\nfunction runWithPriority(priority, fn) {\n const prevPriority = currentUpdatePriority;\n setCurrentPriority(priority);\n try {\n return fn();\n } finally {\n setCurrentPriority(prevPriority);\n }\n}\n\n// ─── Transition Support ───────────────────────────────────────────────────────\n\nlet isTransitionActive = false;\nconst pendingTransitions = [];\n\n/**\n * Start a transition - marks updates as non-urgent.\n * @param {Function} fn - Function containing transition updates\n */\nfunction startTransition(fn) {\n isTransitionActive = true;\n const prevPriority = currentUpdatePriority;\n currentUpdatePriority = PRIORITY.TRANSITION;\n\n try {\n fn();\n } finally {\n isTransitionActive = false;\n currentUpdatePriority = prevPriority;\n }\n}\n\n/**\n * Check if a transition is currently active.\n * @returns {boolean}\n */\nfunction isTransitionInProgress() {\n return isTransitionActive;\n}\n\n// ─── Subscription System ──────────────────────────────────────────────────────\n\n/**\n * Subscribe to state changes for a specific component's hook.\n * @param {Object} component - The component instance\n * @param {number} hookIdx - The hook index\n * @param {Function} callback - Called with (newValue, oldValue)\n * @returns {Function} Unsubscribe function\n */\nfunction subscribeToState(component, hookIdx, callback) {\n if (!stateSubscribers.has(component)) {\n stateSubscribers.set(component, new Map());\n }\n const componentSubs = stateSubscribers.get(component);\n\n if (!componentSubs.has(hookIdx)) {\n componentSubs.set(hookIdx, new Set());\n }\n const subs = componentSubs.get(hookIdx);\n subs.add(callback);\n\n return function unsubscribe() {\n subs.delete(callback);\n if (subs.size === 0) {\n componentSubs.delete(hookIdx);\n }\n if (componentSubs.size === 0) {\n stateSubscribers.delete(component);\n }\n };\n}\n\n/**\n * Notify all subscribers of a state change.\n */\nfunction notifySubscribers(component, hookIdx, newValue, oldValue) {\n const componentSubs = stateSubscribers.get(component);\n if (!componentSubs) return;\n\n const subs = componentSubs.get(hookIdx);\n if (!subs) return;\n\n subs.forEach((callback) => {\n try {\n callback(newValue, oldValue);\n } catch (error) {\n console.error('[useState] Subscriber error:', error);\n }\n });\n}\n\n// ─── State Persistence ────────────────────────────────────────────────────────\n\n/**\n * Configure state persistence for a hook.\n * @param {string} key - The localStorage/sessionStorage key\n * @param {Object} options - Persistence options\n * @param {string} options.storage - 'localStorage' | 'sessionStorage'\n * @param {Function} [options.serialize] - Custom serialize function\n * @param {Function} [options.deserialize] - Custom deserialize function\n * @param {number} [options.debounceMs] - Debounce persistence writes\n */\nfunction configurePersistence(key, options = {}) {\n const config = {\n key,\n storage: options.storage || 'localStorage',\n serialize: options.serialize || JSON.stringify,\n deserialize: options.deserialize || JSON.parse,\n debounceMs: options.debounceMs || 0,\n };\n return config;\n}\n\n/**\n * Persist state to storage.\n */\nlet persistenceTimers = new Map();\n\nfunction persistState(component, hookIdx, value) {\n const persistenceConfig = component._hooks[hookIdx]?._persistence;\n if (!persistenceConfig) return;\n\n const writeFn = () => {\n try {\n const storage = window[persistenceConfig.storage];\n const serialized = persistenceConfig.serialize(value);\n storage.setItem(persistenceConfig.key, serialized);\n } catch (error) {\n console.error('[useState] Persistence error:', error);\n }\n };\n\n // Debounced persistence\n if (persistenceConfig.debounceMs > 0) {\n const timerKey = component._hooks[hookIdx]._persistenceTimer;\n if (timerKey) clearTimeout(timerKey);\n component._hooks[hookIdx]._persistenceTimer = setTimeout(writeFn, persistenceConfig.debounceMs);\n } else {\n writeFn();\n }\n}\n\n/**\n * Load persisted state from storage.\n */\nfunction loadPersistedState(persistenceConfig) {\n if (!persistenceConfig) return undefined;\n\n try {\n const storage = window[persistenceConfig.storage];\n const serialized = storage.getItem(persistenceConfig.key);\n if (serialized === null) return undefined;\n return persistenceConfig.deserialize(serialized);\n } catch (error) {\n console.error('[useState] Load persistence error:', error);\n return undefined;\n }\n}\n\n// ─── State Comparison Utilities ───────────────────────────────────────────────\n\n/**\n * Deep comparison function for state values.\n * @param {*} a - First value\n * @param {*} b - Second value\n * @returns {boolean} True if deeply equal\n */\nfunction deepEqual(a, b) {\n if (Object.is(a, b)) return true;\n\n if (typeof a !== 'object' || a === null || typeof b !== 'object' || b === null) {\n return false;\n }\n\n if (Array.isArray(a) !== Array.isArray(b)) return false;\n\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n\n if (keysA.length !== keysB.length) return false;\n\n for (const key of keysA) {\n if (!keysB.includes(key)) return false;\n if (!deepEqual(a[key], b[key])) return false;\n }\n\n return true;\n}\n\n/**\n * Shallow comparison function for state values.\n * @param {*} a - First value\n * @param {*} b - Second value\n * @returns {boolean}\n */\nfunction shallowEqual(a, b) {\n if (Object.is(a, b)) return true;\n\n if (typeof a !== 'object' || a === null || typeof b !== 'object' || b === null) {\n return false;\n }\n\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n\n if (keysA.length !== keysB.length) return false;\n\n for (const key of keysA) {\n if (!Object.is(a[key], b[key])) return false;\n }\n\n return true;\n}\n\n// ─── Hook Context Management ──────────────────────────────────────────────────\n\n/**\n * Set the currently rendering component (called by the framework before render).\n * @param {Object} component - The component being rendered\n */\nfunction setCurrentComponent(component) {\n currentlyRenderingComponent = component;\n hookIndex = 0;\n}\n\n/**\n * Get the currently rendering component.\n * @returns {Object|null}\n */\nfunction getCurrentComponent() {\n return currentlyRenderingComponent;\n}\n\n/**\n * Reset the hook index after rendering is complete.\n */\nfunction resetHookIndex() {\n hookIndex = 0;\n currentlyRenderingComponent = null;\n}\n\n/**\n * Set the framework's update scheduling callback.\n * @param {Function} callback - Called with (component) to schedule re-render\n */\nfunction setScheduleUpdateCallback(callback) {\n scheduleUpdateCallback = callback;\n}\n\n// ─── useState Hook ────────────────────────────────────────────────────────────\n\n/**\n * useState - State hook with initial value, lazy initializer, batched updates,\n * functional updates, state comparison, subscriptions, persistence, and\n * priority-based updates.\n *\n * @param {*} initialState - Initial state value or lazy initializer function\n * @param {Object} [options] - Additional options\n * @param {Object} [options.persistence] - Persistence configuration\n * @param {Function} [options.areEqual] - Custom equality comparison function\n * @param {boolean} [options.debug] - Enable debug tracing for this state\n * @returns {[*, Function]} Tuple of [currentState, setState]\n *\n * @example\n * // Simple state\n * const [count, setCount] = useState(0);\n *\n * @example\n * // Lazy initializer (expensive computation runs once)\n * const [data, setData] = useState(() => computeExpensiveValue());\n *\n * @example\n * // Functional update\n * setCount(prev => prev + 1);\n *\n * @example\n * // With persistence\n * const [theme, setTheme] = useState('light', {\n * persistence: configurePersistence('app-theme', { storage: 'localStorage' })\n * });\n *\n * @example\n * // With deep comparison\n * const [form, setForm] = useState({}, { areEqual: deepEqual });\n */\nfunction useState(initialState, options = {}) {\n const component = currentlyRenderingComponent;\n if (!component) {\n throw new Error('[useState] Must be called within a component render phase');\n }\n\n // Initialize hooks array on first render\n if (!component._hooks) {\n component._hooks = [];\n }\n\n // Get or create the hook state\n const currentHookIndex = hookIndex;\n let hook;\n\n if (component._hooks[currentHookIndex]) {\n // Re-render: use existing hook state\n hook = component._hooks[currentHookIndex];\n } else {\n // First render: initialize hook state\n let resolvedInitialState;\n\n // Check for persisted state first\n if (options.persistence) {\n const persistedValue = loadPersistedState(options.persistence);\n if (persistedValue !== undefined) {\n resolvedInitialState = persistedValue;\n }\n }\n\n // If no persisted value, resolve initial state\n if (resolvedInitialState === undefined) {\n if (typeof initialState === 'function') {\n // Lazy initializer - only called once on mount\n try {\n resolvedInitialState = initialState();\n } catch (error) {\n console.error('[useState] Lazy initializer error:', error);\n resolvedInitialState = undefined;\n }\n } else {\n resolvedInitialState = initialState;\n }\n }\n\n hook = {\n state: resolvedInitialState,\n _persistence: options.persistence || null,\n _areEqual: options.areEqual || Object.is,\n _isMounted: false,\n _pendingUpdates: [],\n _queue: [],\n _debug: options.debug || false,\n _updateHistory: options.debug ? [] : null,\n _persistenceTimer: null,\n };\n\n component._hooks[currentHookIndex] = hook;\n }\n\n // Process any pending functional updates that were queued\n if (hook._pendingUpdates.length > 0) {\n const updates = hook._pendingUpdates.splice(0);\n updates.forEach((update) => {\n if (typeof update === 'function') {\n hook.state = update(hook.state);\n } else {\n hook.state = update;\n }\n });\n }\n\n // Increment hook index for the next hook call\n hookIndex++;\n\n // ─── setState Implementation ────────────────────────────────────────────\n\n /**\n * Update state with a new value or updater function.\n * Supports batching, functional updates, priority, and state comparison.\n *\n * @param {*} updateFnOrValue - New state value or updater function\n */\n const setState = function setState(updateFnOrValue) {\n if (!component._hooks) {\n console.warn('[useState] setState called on unmounted component');\n return;\n }\n\n const targetHook = component._hooks[currentHookIndex];\n if (!targetHook) {\n console.warn('[useState] Hook index out of bounds');\n return;\n }\n\n const update = createStateUpdate(updateFnOrValue, currentUpdatePriority);\n\n if (isBatchingUpdates) {\n // Queue the update for batch processing\n if (!pendingStateUpdates.has(component)) {\n pendingStateUpdates.set(component, []);\n }\n pendingStateUpdates.get(component).push({\n hookIdx: currentHookIndex,\n update,\n });\n } else {\n // Immediate update\n let newValue;\n if (typeof updateFnOrValue === 'function') {\n newValue = updateFnOrValue(targetHook.state);\n } else {\n newValue = updateFnOrValue;\n }\n\n // Use custom equality check or Object.is\n const areEqual = targetHook._areEqual;\n if (areEqual(targetHook.state, newValue)) {\n return; // Skip update - state is the same\n }\n\n const prevState = targetHook.state;\n targetHook.state = newValue;\n\n // Track update in debug history\n if (targetHook._debug && targetHook._updateHistory) {\n targetHook._updateHistory.push({\n prev: prevState,\n next: newValue,\n timestamp: Date.now(),\n priority: update.priority,\n });\n if (targetHook._updateHistory.length > 50) {\n targetHook._updateHistory.shift();\n }\n }\n\n // Notify subscribers\n notifySubscribers(component, currentHookIndex, newValue, prevState);\n\n // Persist state if configured\n persistState(component, currentHookIndex, newValue);\n\n // Schedule re-render\n if (scheduleUpdateCallback) {\n scheduleUpdateCallback(component);\n } else if (component._scheduleReRender) {\n component._scheduleReRender();\n }\n }\n };\n\n // ─── Extended setState Methods ──────────────────────────────────────────\n\n /**\n * Reset state to initial value.\n */\n setState.reset = function reset() {\n let resetValue;\n if (typeof initialState === 'function') {\n resetValue = initialState();\n } else {\n resetValue = initialState;\n }\n setState(resetValue);\n };\n\n /**\n * Subscribe to state changes.\n * @param {Function} callback - Called with (newValue, oldValue)\n * @returns {Function} Unsubscribe function\n */\n setState.subscribe = function subscribe(callback) {\n return subscribeToState(component, currentHookIndex, callback);\n };\n\n /**\n * Get current state without triggering a re-render.\n * @returns {*} Current state value\n */\n setState.getCurrent = function getCurrent() {\n const targetHook = component._hooks?.[currentHookIndex];\n return targetHook ? targetHook.state : undefined;\n };\n\n /**\n * Check if the component is mounted.\n * @returns {boolean}\n */\n setState.isMounted = function isMounted() {\n const targetHook = component._hooks?.[currentHookIndex];\n return targetHook ? targetHook._isMounted : false;\n };\n\n /**\n * Set state with a specific priority level.\n * @param {*} updateFnOrValue - New state value or updater function\n * @param {number} priority - PRIORITY level\n */\n setState.withPriority = function withPriority(updateFnOrValue, priority) {\n const prevPriority = currentUpdatePriority;\n setCurrentPriority(priority);\n try {\n setState(updateFnOrValue);\n } finally {\n setCurrentPriority(prevPriority);\n }\n };\n\n /**\n * Set state as a transition (non-urgent update).\n * @param {*} updateFnOrValue - New state value or updater function\n */\n setState.asTransition = function asTransition(updateFnOrValue) {\n startTransition(() => {\n setState(updateFnOrValue);\n });\n };\n\n /**\n * Get the update history for debugging (only if debug mode is enabled).\n * @returns {Array|null} Update history array or null\n */\n setState.getHistory = function getHistory() {\n const targetHook = component._hooks?.[currentHookIndex];\n return targetHook?._updateHistory || null;\n };\n\n return [hook.state, setState];\n}\n\n// ─── useTransition Hook ───────────────────────────────────────────────────────\n\n/**\n * useTransition - Hook for marking updates as transitions (non-urgent).\n * Returns a pending flag and a startTransition function.\n *\n * @returns {[boolean, Function]} Tuple of [isPending, startTransition]\n *\n * @example\n * const [isPending, startTransition] = useTransition();\n * startTransition(() => {\n * setSearchResults(filteredData);\n * });\n */\nfunction useTransition() {\n const component = currentlyRenderingComponent;\n if (!component) {\n throw new Error('[useTransition] Must be called within a component render phase');\n }\n\n if (!component._hooks) {\n component._hooks = [];\n }\n\n const currentHookIndex = hookIndex;\n let hook;\n\n if (component._hooks[currentHookIndex]) {\n hook = component._hooks[currentHookIndex];\n } else {\n hook = {\n type: 'transition',\n isPending: false,\n _pendingCount: 0,\n };\n component._hooks[currentHookIndex] = hook;\n }\n\n hookIndex++;\n\n const startTransitionFn = function startTransitionFn(callback) {\n hook._pendingCount++;\n hook.isPending = true;\n\n startTransition(() => {\n try {\n callback();\n } finally {\n hook._pendingCount--;\n if (hook._pendingCount <= 0) {\n hook.isPending = false;\n hook._pendingCount = 0;\n }\n }\n });\n };\n\n return [hook.isPending, startTransitionFn];\n}\n\n// ─── useDeferredValue Hook ────────────────────────────────────────────────────\n\n/**\n * useDeferredValue - Returns a deferred version of the value that may lag\n * behind the current value. Useful for optimizing renders of expensive lists.\n *\n * @param {*} value - The value to defer\n * @param {number} [timeoutMs] - Maximum time to defer (optional)\n * @returns {*} Deferred value\n *\n * @example\n * const deferredQuery = useDeferredValue(query);\n * const filteredItems = useMemo(() => items.filter(i => i.name.includes(deferredQuery)), [deferredQuery, items]);\n */\nfunction useDeferredValue(value, timeoutMs) {\n const component = currentlyRenderingComponent;\n if (!component) {\n throw new Error('[useDeferredValue] Must be called within a component render phase');\n }\n\n if (!component._hooks) {\n component._hooks = [];\n }\n\n const currentHookIndex = hookIndex;\n let hook;\n\n if (component._hooks[currentHookIndex]) {\n hook = component._hooks[currentHookIndex];\n\n // Update the current value immediately\n hook.currentValue = value;\n\n // If no timeout or no deferred update pending, use current value\n if (!hook._deferredUpdatePending) {\n hook.deferredValue = value;\n }\n } else {\n hook = {\n type: 'deferred-value',\n currentValue: value,\n deferredValue: value,\n _deferredUpdatePending: false,\n _timeoutId: null,\n };\n component._hooks[currentHookIndex] = hook;\n }\n\n hookIndex++;\n return hook.deferredValue;\n}\n\n// ─── Cleanup ──────────────────────────────────────────────────────────────────\n\n/**\n * Clean up hook state when a component unmounts.\n * @param {Object} component - The unmounting component\n */\nfunction cleanupComponentState(component) {\n // Remove all subscribers for this component\n stateSubscribers.delete(component);\n\n // Remove any pending updates\n pendingStateUpdates.delete(component);\n\n // Clean up persistence timers and references\n if (component._hooks) {\n component._hooks.forEach((hook) => {\n hook._pendingUpdates = [];\n hook._queue = [];\n if (hook._persistenceTimer) {\n clearTimeout(hook._persistenceTimer);\n }\n if (hook._updateHistory) {\n hook._updateHistory = null;\n }\n });\n }\n}\n\n// ─── Exports ──────────────────────────────────────────────────────────────────\n\nmodule.exports = {\n useState,\n useTransition,\n useDeferredValue,\n setCurrentComponent,\n getCurrentComponent,\n resetHookIndex,\n setScheduleUpdateCallback,\n startBatchUpdates,\n endBatchUpdates,\n batchedUpdates,\n configurePersistence,\n subscribeToState,\n cleanupComponentState,\n deepEqual,\n shallowEqual,\n runWithPriority,\n startTransition,\n isTransitionInProgress,\n getCurrentPriority,\n setCurrentPriority,\n PRIORITY,\n};\n","/**\n * commit - Commit Phase Operations\n * ElementDrawing Framework - Applies reconciliation results to the DOM with\n * insertions, deletions, updates, move operations, effect execution,\n * ref management, error handling, snapshots, batch commit, and\n * priority-based commit scheduling.\n */\n\n'use strict';\n\nconst { INSERT, MOVE, REMOVE, UPDATE, REPLACE, SKIP, REORDER } = require('./reconcile');\n\n// ─── Commit Priority ──────────────────────────────────────────────────────────\n\nconst COMMIT_PRIORITY = {\n IMMEDIATE: 0,\n NORMAL: 1,\n LOW: 2,\n};\n\n// ─── Internal State ───────────────────────────────────────────────────────────\n\nlet isCommitting = false;\nconst commitQueue = [];\nconst pendingLayoutEffects = [];\nconst pendingPassiveEffects = [];\nconst pendingInsertionEffects = [];\nconst pendingRefCleanups = [];\nconst pendingRefAssignments = [];\nconst errorRecoveryStack = [];\nlet snapshotBeforeMutations = null;\nlet currentCommitPriority = COMMIT_PRIORITY.NORMAL;\n\n// ─── Commit Statistics ────────────────────────────────────────────────────────\n\nlet commitStats = {\n totalCommits: 0,\n totalOperations: 0,\n totalInsertions: 0,\n totalDeletions: 0,\n totalUpdates: 0,\n totalReplacements: 0,\n totalMoves: 0,\n lastCommitTime: 0,\n lastCommitDuration: 0,\n};\n\n/**\n * Get commit statistics.\n * @returns {Object}\n */\nfunction getCommitStats() {\n return Object.assign({}, commitStats);\n}\n\n/**\n * Reset commit statistics.\n */\nfunction resetCommitStats() {\n commitStats = {\n totalCommits: 0,\n totalOperations: 0,\n totalInsertions: 0,\n totalDeletions: 0,\n totalUpdates: 0,\n totalReplacements: 0,\n totalMoves: 0,\n lastCommitTime: 0,\n lastCommitDuration: 0,\n };\n}\n\n// ─── Commit Phase Entry ───────────────────────────────────────────────────────\n\n/**\n * Commit reconciliation results to the DOM.\n * Processes all diff operations in the correct order:\n * 1. Snapshot before mutations\n * 2. DOM deletions\n * 3. DOM insertions\n * 4. DOM updates\n * 5. DOM moves\n * 6. DOM replacements\n * 7. Layout effects\n * 8. Ref cleanups and assignments\n * 9. Passive effects\n *\n * @param {Array} operations - Diff operations from reconciliation\n * @param {HTMLElement} container - Root DOM container\n * @param {Object} [options] - Commit options\n * @param {boolean} [options.batchCommit=false]\n * @param {Function} [options.onComplete]\n * @param {number} [options.priority]\n * @returns {boolean} True if commit succeeded\n */\nfunction commitWork(operations, container, options = {}) {\n if (isCommitting && !options.batchCommit) {\n commitQueue.push({ operations, container, options });\n return false;\n }\n\n const commitStart = Date.now();\n isCommitting = true;\n\n try {\n // ─── Phase 1: Snapshot before mutations ──────────────────────────────\n if (operations.some((op) => op.type === REMOVE || op.type === REPLACE)) {\n snapshotBeforeMutations = captureSnapshot(container);\n }\n\n // ─── Phase 2: Process deletions ──────────────────────────────────────\n const deletions = operations.filter((op) => op.type === REMOVE);\n processDeletions(deletions, container);\n commitStats.totalDeletions += deletions.length;\n\n // ─── Phase 3: Process insertions ─────────────────────────────────────\n const insertions = operations.filter((op) => op.type === INSERT);\n processInsertions(insertions, container);\n commitStats.totalInsertions += insertions.length;\n\n // ─── Phase 4: Process updates ────────────────────────────────────────\n const updates = operations.filter((op) => op.type === UPDATE);\n processUpdates(updates, container);\n commitStats.totalUpdates += updates.length;\n\n // ─── Phase 5: Process moves ──────────────────────────────────────────\n const moves = operations.filter((op) => op.type === MOVE);\n processMoves(moves, container);\n commitStats.totalMoves += moves.length;\n\n // ─── Phase 6: Process replacements ───────────────────────────────────\n const replacements = operations.filter((op) => op.type === REPLACE);\n processReplacements(replacements, container);\n commitStats.totalReplacements += replacements.length;\n\n // ─── Phase 7: Execute insertion effects ──────────────────────────────\n flushPendingInsertionEffects();\n\n // ─── Phase 8: Execute layout effects ─────────────────────────────────\n flushPendingLayoutEffects();\n\n // ─── Phase 9: Ref cleanups and assignments ───────────────────────────\n processRefCleanups();\n processRefAssignments();\n\n // ─── Phase 10: Schedule passive effects ──────────────────────────────\n schedulePassiveEffects();\n\n // ─── Update stats ────────────────────────────────────────────────────\n commitStats.totalCommits++;\n commitStats.totalOperations += operations.length;\n commitStats.lastCommitTime = commitStart;\n commitStats.lastCommitDuration = Date.now() - commitStart;\n\n // ─── Phase 11: Notify completion ──────────────────────────────────────\n if (typeof options.onComplete === 'function') {\n options.onComplete();\n }\n\n return true;\n } catch (error) {\n console.error('[commit] Commit phase error:', error);\n handleErrorDuringCommit(error, container);\n return false;\n } finally {\n isCommitting = false;\n\n // Process queued commits\n if (commitQueue.length > 0) {\n const next = commitQueue.shift();\n commitWork(next.operations, next.container, next.options);\n }\n }\n}\n\n// ─── DOM Insertions ───────────────────────────────────────────────────────────\n\n/**\n * Process INSERT operations from the diff.\n */\nfunction processInsertions(operations, container) {\n operations.forEach((op) => {\n if (op.type !== INSERT) return;\n\n const { vnode, parentVNode, index } = op.payload;\n if (!vnode) return;\n\n try {\n const domNode = createDOMNodeFromVNode(vnode);\n if (!domNode) return;\n\n // Find the parent DOM node\n const parentDOMNode = findParentDOMNode(container, parentVNode);\n if (!parentDOMNode) {\n container.appendChild(domNode);\n return;\n }\n\n // Insert at the correct position\n if (index !== undefined && index !== null) {\n const referenceNode = parentDOMNode.childNodes[index];\n if (referenceNode) {\n parentDOMNode.insertBefore(domNode, referenceNode);\n } else {\n parentDOMNode.appendChild(domNode);\n }\n } else {\n parentDOMNode.appendChild(domNode);\n }\n\n // Queue layout effects for the inserted node\n queueLayoutEffects(vnode, 'mount');\n\n // Queue ref assignments\n if (vnode.ref) {\n pendingRefAssignments.push({ ref: vnode.ref, domNode });\n }\n\n // Recursively insert children\n if (vnode.props && vnode.props.children) {\n insertChildren(vnode, domNode);\n }\n } catch (error) {\n console.error('[commit] Insertion error:', error);\n handleErrorDuringCommit(error, container);\n }\n });\n}\n\n/**\n * Recursively insert children of a vnode.\n */\nfunction insertChildren(vnode, parentDOMNode) {\n if (!vnode.props || !vnode.props.children) return;\n\n const children = Array.isArray(vnode.props.children)\n ? vnode.props.children\n : [vnode.props.children];\n\n children.forEach((child) => {\n if (!child) return;\n\n const childDOMNode = createDOMNodeFromVNode(child);\n if (childDOMNode) {\n parentDOMNode.appendChild(childDOMNode);\n\n if (child.ref) {\n pendingRefAssignments.push({ ref: child.ref, domNode: childDOMNode });\n }\n\n insertChildren(child, childDOMNode);\n }\n });\n}\n\n// ─── DOM Deletions ────────────────────────────────────────────────────────────\n\n/**\n * Process REMOVE operations from the diff.\n */\nfunction processDeletions(operations, container) {\n operations.forEach((op) => {\n if (op.type !== REMOVE) return;\n\n const { vnode, parentVNode } = op.payload;\n if (!vnode) return;\n\n try {\n const domNode = findDOMNodeForVNode(container, vnode);\n if (!domNode) return;\n\n // Queue ref cleanups before removal\n if (vnode.ref) {\n pendingRefCleanups.push({ ref: vnode.ref });\n }\n\n // Queue unmount layout effects\n queueLayoutEffects(vnode, 'unmount');\n\n // Queue unmount passive effects\n queuePassiveEffects(vnode, 'unmount');\n\n // Recursively clean up children\n cleanupChildVNodes(vnode);\n\n // Remove the DOM node\n if (domNode.parentNode) {\n domNode.parentNode.removeChild(domNode);\n }\n\n // Clean up stored vnode reference\n if (domNode.__ed_vnode) {\n delete domNode.__ed_vnode;\n }\n } catch (error) {\n console.error('[commit] Deletion error:', error);\n handleErrorDuringCommit(error, container);\n }\n });\n}\n\n/**\n * Recursively clean up child vnodes during deletion.\n */\nfunction cleanupChildVNodes(vnode) {\n if (!vnode.props || !vnode.props.children) return;\n\n const children = Array.isArray(vnode.props.children)\n ? vnode.props.children\n : [vnode.props.children];\n\n children.forEach((child) => {\n if (!child || typeof child !== 'object') return;\n\n if (child.ref) {\n pendingRefCleanups.push({ ref: child.ref });\n }\n\n queueLayoutEffects(child, 'unmount');\n queuePassiveEffects(child, 'unmount');\n cleanupChildVNodes(child);\n });\n}\n\n// ─── DOM Updates ──────────────────────────────────────────────────────────────\n\n/**\n * Process UPDATE operations from the diff.\n */\nfunction processUpdates(operations, container) {\n operations.forEach((op) => {\n if (op.type !== UPDATE) return;\n\n const { vnode, changes, changeType } = op.payload;\n if (!vnode) return;\n\n try {\n const domNode = findDOMNodeForVNode(container, vnode);\n if (!domNode) return;\n\n switch (changeType) {\n case 'props':\n applyPropChanges(domNode, changes);\n break;\n case 'style':\n applyStyleChanges(domNode, changes);\n break;\n case 'events':\n applyEventChanges(domNode, changes);\n break;\n case 'ref':\n applyRefChanges(domNode, changes);\n break;\n case 'text':\n applyTextChanges(domNode, changes);\n break;\n case 'innerHTML':\n applyInnerHTMLChanges(domNode, changes);\n break;\n }\n\n // Queue update layout effects\n queueLayoutEffects(vnode, 'update');\n } catch (error) {\n console.error('[commit] Update error:', error);\n handleErrorDuringCommit(error, container);\n }\n });\n}\n\n/**\n * Apply prop changes to a DOM node.\n */\nfunction applyPropChanges(domNode, changes) {\n changes.forEach((change) => {\n switch (change.type) {\n case 'set':\n if (change.key === 'className') {\n domNode.className = change.value || '';\n } else if (change.key === 'dangerouslySetInnerHTML') {\n if (change.value && change.value.__html) {\n domNode.innerHTML = change.value.__html;\n }\n } else if (change.key === 'value') {\n domNode.value = change.value;\n } else if (change.key === 'checked') {\n domNode.checked = change.value;\n } else if (typeof change.value === 'boolean') {\n if (change.value) {\n domNode.setAttribute(change.key, '');\n } else {\n domNode.removeAttribute(change.key);\n }\n } else {\n domNode.setAttribute(change.key, change.value);\n }\n break;\n\n case 'remove':\n if (change.key === 'className') {\n domNode.className = '';\n } else if (change.key === 'value') {\n domNode.value = '';\n } else if (change.key === 'checked') {\n domNode.checked = false;\n } else if (change.key === 'dangerouslySetInnerHTML') {\n domNode.innerHTML = '';\n } else {\n domNode.removeAttribute(change.key);\n }\n break;\n }\n });\n}\n\n/**\n * Apply style changes to a DOM node.\n */\nfunction applyStyleChanges(domNode, changes) {\n changes.forEach((change) => {\n switch (change.type) {\n case 'replace':\n domNode.style.cssText = change.value;\n break;\n case 'set':\n domNode.style.setProperty(change.key, change.value);\n break;\n case 'remove':\n domNode.style.removeProperty(change.key);\n break;\n }\n });\n}\n\n/**\n * Apply event handler changes.\n */\nfunction applyEventChanges(domNode, changes) {\n changes.forEach((change) => {\n const eventType = change.key.slice(2).toLowerCase();\n const isCapture = change.key.endsWith('Capture');\n const handlerKey = isCapture ? '__ed_capture_' + eventType : '__ed_handler_' + eventType;\n\n switch (change.type) {\n case 'set':\n if (domNode[handlerKey]) {\n domNode.removeEventListener(eventType, domNode[handlerKey], isCapture);\n }\n if (typeof change.value === 'function') {\n domNode[handlerKey] = change.value;\n domNode.addEventListener(eventType, change.value, isCapture);\n }\n break;\n\n case 'remove':\n if (domNode[handlerKey]) {\n domNode.removeEventListener(eventType, domNode[handlerKey], isCapture);\n domNode[handlerKey] = null;\n }\n break;\n }\n });\n}\n\n/**\n * Apply ref changes.\n */\nfunction applyRefChanges(domNode, changes) {\n changes.forEach((change) => {\n if (change.oldRef) {\n if (typeof change.oldRef === 'function') {\n change.oldRef(null);\n } else if (typeof change.oldRef === 'object') {\n change.oldRef.current = null;\n }\n }\n\n if (change.newRef) {\n if (typeof change.newRef === 'function') {\n change.newRef(domNode);\n } else if (typeof change.newRef === 'object') {\n change.newRef.current = domNode;\n }\n }\n });\n}\n\n/**\n * Apply text content changes.\n */\nfunction applyTextChanges(domNode, changes) {\n changes.forEach((change) => {\n if (change.key === 'nodeValue' && domNode.nodeType === 3) {\n domNode.textContent = change.value;\n }\n });\n}\n\n/**\n * Apply innerHTML changes.\n */\nfunction applyInnerHTMLChanges(domNode, changes) {\n changes.forEach((change) => {\n if (change.type === 'set' && change.value) {\n domNode.innerHTML = change.value.__html || '';\n } else if (change.type === 'remove') {\n domNode.innerHTML = '';\n }\n });\n}\n\n// ─── DOM Moves ────────────────────────────────────────────────────────────────\n\n/**\n * Process MOVE operations (child reordering).\n */\nfunction processMoves(operations, container) {\n operations.forEach((op) => {\n if (op.type !== MOVE) return;\n\n const { vnode, fromIndex, toIndex } = op.payload;\n if (!vnode) return;\n\n try {\n const domNode = findDOMNodeForVNode(container, vnode);\n if (!domNode || !domNode.parentNode) return;\n\n const parent = domNode.parentNode;\n\n // Remove from old position\n parent.removeChild(domNode);\n\n // Insert at new position\n const referenceNode = parent.childNodes[toIndex];\n if (referenceNode) {\n parent.insertBefore(domNode, referenceNode);\n } else {\n parent.appendChild(domNode);\n }\n\n // Queue update effects\n queueLayoutEffects(vnode, 'update');\n } catch (error) {\n console.error('[commit] Move error:', error);\n handleErrorDuringCommit(error, container);\n }\n });\n}\n\n// ─── DOM Replacements ─────────────────────────────────────────────────────────\n\n/**\n * Process REPLACE operations from the diff.\n */\nfunction processReplacements(operations, container) {\n operations.forEach((op) => {\n if (op.type !== REPLACE) return;\n\n const { oldVNode, newVNode } = op.payload;\n if (!oldVNode || !newVNode) return;\n\n try {\n const oldDOMNode = findDOMNodeForVNode(container, oldVNode);\n if (!oldDOMNode) return;\n\n // Clean up old ref\n if (oldVNode.ref) {\n pendingRefCleanups.push({ ref: oldVNode.ref });\n }\n\n // Queue unmount effects for old node\n queueLayoutEffects(oldVNode, 'unmount');\n queuePassiveEffects(oldVNode, 'unmount');\n cleanupChildVNodes(oldVNode);\n\n // Create new DOM node\n const newDOMNode = createDOMNodeFromVNode(newVNode);\n if (!newDOMNode) return;\n\n // Replace in DOM\n if (oldDOMNode.parentNode) {\n oldDOMNode.parentNode.replaceChild(newDOMNode, oldDOMNode);\n }\n\n // Queue mount effects for new node\n queueLayoutEffects(newVNode, 'mount');\n queuePassiveEffects(newVNode, 'mount');\n\n // Assign new ref\n if (newVNode.ref) {\n pendingRefAssignments.push({ ref: newVNode.ref, domNode: newDOMNode });\n }\n } catch (error) {\n console.error('[commit] Replacement error:', error);\n handleErrorDuringCommit(error, container);\n }\n });\n}\n\n// ─── Effect Execution ─────────────────────────────────────────────────────────\n\n/**\n * Queue a layout effect for execution.\n */\nfunction queueLayoutEffects(vnode, phase) {\n if (!vnode || !vnode._hooks) return;\n\n vnode._hooks.forEach((hook) => {\n if (hook && (hook.type === 'layout-effect' || hook.type === 'insertion-effect')) {\n pendingLayoutEffects.push({ hook, phase });\n }\n });\n}\n\n/**\n * Queue a passive effect for execution.\n */\nfunction queuePassiveEffects(vnode, phase) {\n if (!vnode || !vnode._hooks) return;\n\n vnode._hooks.forEach((hook) => {\n if (hook && hook.type === 'passive-effect') {\n pendingPassiveEffects.push({ hook, phase });\n }\n });\n}\n\n/**\n * Flush pending insertion effects (synchronous, before layout).\n */\nfunction flushPendingInsertionEffects() {\n while (pendingInsertionEffects.length > 0) {\n const { hook, phase } = pendingInsertionEffects.shift();\n try {\n if (phase === 'unmount' && typeof hook.cleanup === 'function') {\n hook.cleanup();\n hook.cleanup = null;\n } else if (hook._shouldRun !== false) {\n const cleanup = hook.create();\n if (typeof cleanup === 'function') {\n hook.cleanup = cleanup;\n }\n }\n } catch (error) {\n console.error('[commit] Insertion effect error:', error);\n }\n }\n}\n\n/**\n * Flush pending layout effects (synchronous).\n */\nfunction flushPendingLayoutEffects() {\n while (pendingLayoutEffects.length > 0) {\n const { hook, phase } = pendingLayoutEffects.shift();\n\n try {\n if (phase === 'unmount' && typeof hook.cleanup === 'function') {\n hook.cleanup();\n hook.cleanup = null;\n } else if ((phase === 'mount' || phase === 'update') && hook._shouldRun !== false) {\n const cleanup = hook.create();\n if (typeof cleanup === 'function') {\n hook.cleanup = cleanup;\n }\n }\n } catch (error) {\n console.error('[commit] Layout effect error:', error);\n }\n }\n}\n\n/**\n * Schedule passive effects for async execution after paint.\n */\nfunction schedulePassiveEffects() {\n if (pendingPassiveEffects.length === 0) return;\n\n const effects = pendingPassiveEffects.splice(0);\n requestAnimationFrame(() => {\n setTimeout(() => {\n effects.forEach(({ hook, phase }) => {\n try {\n if (phase === 'unmount' && typeof hook.cleanup === 'function') {\n hook.cleanup();\n hook.cleanup = null;\n } else if ((phase === 'mount' || phase === 'update') && hook._shouldRun !== false) {\n const cleanup = hook.create();\n if (typeof cleanup === 'function') {\n hook.cleanup = cleanup;\n }\n }\n } catch (error) {\n console.error('[commit] Passive effect error:', error);\n }\n });\n }, 0);\n });\n}\n\n// ─── Ref Management ───────────────────────────────────────────────────────────\n\nfunction processRefCleanups() {\n while (pendingRefCleanups.length > 0) {\n const { ref } = pendingRefCleanups.shift();\n try {\n if (typeof ref === 'function') {\n ref(null);\n } else if (typeof ref === 'object' && ref !== null) {\n ref.current = null;\n }\n } catch (error) {\n console.error('[commit] Ref cleanup error:', error);\n }\n }\n}\n\nfunction processRefAssignments() {\n while (pendingRefAssignments.length > 0) {\n const { ref, domNode } = pendingRefAssignments.shift();\n try {\n if (typeof ref === 'function') {\n ref(domNode);\n } else if (typeof ref === 'object' && ref !== null) {\n ref.current = domNode;\n }\n } catch (error) {\n console.error('[commit] Ref assignment error:', error);\n }\n }\n}\n\n// ─── Error Handling ───────────────────────────────────────────────────────────\n\nfunction handleErrorDuringCommit(error, container) {\n errorRecoveryStack.push({ error, container, timestamp: Date.now() });\n\n if (container && container.__ed_errorBoundary) {\n const boundary = container.__ed_errorBoundary;\n if (typeof boundary._handleError === 'function') {\n try {\n boundary._handleError(error);\n } catch (recoveryError) {\n console.error('[commit] Error boundary also failed:', recoveryError);\n }\n }\n }\n}\n\n// ─── Snapshot ─────────────────────────────────────────────────────────────────\n\nfunction captureSnapshot(container) {\n if (!container) return null;\n\n try {\n return {\n scrollTop: container.scrollTop,\n scrollLeft: container.scrollLeft,\n scrollHeight: container.scrollHeight,\n scrollWidth: container.scrollWidth,\n clientHeight: container.clientHeight,\n clientWidth: container.clientWidth,\n timestamp: Date.now(),\n };\n } catch (error) {\n return null;\n }\n}\n\nfunction getSnapshot() {\n return snapshotBeforeMutations;\n}\n\n// ─── Batch Commit Operations ──────────────────────────────────────────────────\n\nfunction batchCommitWork(callback) {\n isCommitting = true;\n const batchedOperations = [];\n\n try {\n const originalCommitWork = commitWork;\n const collectOps = (ops, container, opts) => {\n batchedOperations.push({ ops, container, opts });\n };\n\n callback(collectOps);\n\n batchedOperations.forEach(({ ops, container, opts }) => {\n originalCommitWork(ops, container, opts);\n });\n } finally {\n isCommitting = false;\n }\n}\n\n// ─── Utility Functions ────────────────────────────────────────────────────────\n\nfunction findParentDOMNode(container, parentVNode) {\n if (!parentVNode) return container;\n\n if (container.__ed_vnode === parentVNode) return container;\n\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT);\n let node;\n while ((node = walker.nextNode())) {\n if (node.__ed_vnode === parentVNode) return node;\n }\n\n return container;\n}\n\nfunction findDOMNodeForVNode(container, vnode) {\n if (!vnode || !container) return null;\n\n // Fast path: text node lookup\n if (vnode.type === '#text') {\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_TEXT);\n let node;\n while ((node = walker.nextNode())) {\n if (node.__ed_vnode === vnode) return node;\n }\n return null;\n }\n\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT);\n let node;\n while ((node = walker.nextNode())) {\n if (node.__ed_vnode === vnode) return node;\n }\n\n return null;\n}\n\nfunction createDOMNodeFromVNode(vnode) {\n if (!vnode) return null;\n\n if (typeof vnode === 'string' || typeof vnode === 'number') {\n return document.createTextNode(String(vnode));\n }\n\n if (vnode.type === '#text') {\n return document.createTextNode(vnode.props.nodeValue || '');\n }\n\n if (typeof vnode.type === 'string') {\n const domNode = document.createElement(vnode.type);\n\n if (vnode.props) {\n Object.keys(vnode.props).forEach((key) => {\n if (key === 'children') return;\n if (key === 'dangerouslySetInnerHTML') return;\n\n const value = vnode.props[key];\n if (key === 'className') {\n domNode.className = value || '';\n } else if (key === 'style' && typeof value === 'object') {\n Object.assign(domNode.style, value);\n } else if (key === 'style' && typeof value === 'string') {\n domNode.style.cssText = value;\n } else if (value === true) {\n domNode.setAttribute(key, '');\n } else if (value !== false && value !== null && value !== undefined) {\n domNode.setAttribute(key, value);\n }\n });\n\n if (vnode.props.dangerouslySetInnerHTML) {\n domNode.innerHTML = vnode.props.dangerouslySetInnerHTML.__html || '';\n }\n }\n\n domNode.__ed_vnode = vnode;\n return domNode;\n }\n\n return null;\n}\n\n// ─── Exports ──────────────────────────────────────────────────────────────────\n\nmodule.exports = {\n commitWork,\n batchCommitWork,\n processInsertions,\n processDeletions,\n processUpdates,\n processMoves,\n processReplacements,\n flushPendingLayoutEffects,\n flushPendingInsertionEffects,\n schedulePassiveEffects,\n processRefCleanups,\n processRefAssignments,\n handleErrorDuringCommit,\n captureSnapshot,\n getSnapshot,\n findDOMNodeForVNode,\n findParentDOMNode,\n createDOMNodeFromVNode,\n getCommitStats,\n resetCommitStats,\n COMMIT_PRIORITY,\n};\n","/**\n * createElement - Core Virtual DOM Element Creation\n * ElementDrawing Framework - Creates virtual DOM nodes with comprehensive\n * props processing, children handling, fragments, keys, refs, Suspense,\n * StrictMode, error boundaries, lazy loading, and profiling.\n */\n\n'use strict';\n\n// ─── Constants ────────────────────────────────────────────────────────────────\n\nconst REACT_ELEMENT_TYPE = Symbol.for('elementdrawing.element');\nconst REACT_FRAGMENT_TYPE = Symbol.for('elementdrawing.fragment');\nconst REACT_PORTAL_TYPE = Symbol.for('elementdrawing.portal');\nconst REACT_SUSPENSE_TYPE = Symbol.for('elementdrawing.suspense');\nconst REACT_LAZY_TYPE = Symbol.for('elementdrawing.lazy');\nconst REACT_STRICT_MODE_TYPE = Symbol.for('elementdrawing.strict_mode');\nconst REACT_ERROR_BOUNDARY_TYPE = Symbol.for('elementdrawing.error_boundary');\nconst REACT_PROVIDER_TYPE = Symbol.for('elementdrawing.provider');\nconst REACT_CONSUMER_TYPE = Symbol.for('elementdrawing.consumer');\n\nconst RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true,\n};\n\n// ─── Element Type Detection ───────────────────────────────────────────────────\n\n/**\n * Check if a value is a valid element type.\n * @param {*} type\n * @returns {boolean}\n */\nfunction isValidElementType(type) {\n if (typeof type === 'string') return true;\n if (typeof type === 'function') return true;\n if (typeof type === 'symbol') return true;\n if (type === REACT_FRAGMENT_TYPE) return true;\n if (type === REACT_PORTAL_TYPE) return true;\n if (type === REACT_SUSPENSE_TYPE) return true;\n if (type === REACT_STRICT_MODE_TYPE) return true;\n if (type === REACT_ERROR_BOUNDARY_TYPE) return true;\n return false;\n}\n\n/**\n * Check if a value is a virtual DOM element.\n * @param {*} element\n * @returns {boolean}\n */\nfunction isValidElement(element) {\n return (\n element !== null &&\n typeof element === 'object' &&\n element.$$typeof === REACT_ELEMENT_TYPE\n );\n}\n\n/**\n * Check if an element type is a function component.\n * @param {*} type\n * @returns {boolean}\n */\nfunction isFunctionComponent(type) {\n return typeof type === 'function' && !type._isClassComponent;\n}\n\n/**\n * Check if an element type is a class component.\n * @param {*} type\n * @returns {boolean}\n */\nfunction isClassComponent(type) {\n return typeof type === 'function' && type._isClassComponent === true;\n}\n\n/**\n * Check if an element type is a host (HTML) element.\n * @param {*} type\n * @returns {boolean}\n */\nfunction isHostElement(type) {\n return typeof type === 'string';\n}\n\n/**\n * Check if an element is a Suspense boundary.\n * @param {Object} element\n * @returns {boolean}\n */\nfunction isSuspenseElement(element) {\n return isValidElement(element) && element.type === REACT_SUSPENSE_TYPE;\n}\n\n/**\n * Check if an element is a StrictMode wrapper.\n * @param {Object} element\n * @returns {boolean}\n */\nfunction isStrictModeElement(element) {\n return isValidElement(element) && element.type === REACT_STRICT_MODE_TYPE;\n}\n\n/**\n * Check if an element is an error boundary.\n * @param {Object} element\n * @returns {boolean}\n */\nfunction isErrorBoundaryElement(element) {\n return isValidElement(element) && element.type === REACT_ERROR_BOUNDARY_TYPE;\n}\n\n// ─── Key Extraction & Validation ──────────────────────────────────────────────\n\n/**\n * Extract and validate the key from props.\n * @param {*} key - The key value\n * @param {*} parentKey - Parent key for nested elements\n * @returns {string|null} Validated key string\n */\nfunction extractKey(key, parentKey) {\n if (key === undefined || key === null) return null;\n\n const keyString = String(key);\n\n if (keyString === '') {\n console.warn('[createElement] Empty string key detected. This may cause reconciliation issues.');\n return null;\n }\n\n // Validate key format\n if (/^\\./.test(keyString) || /\\$/.test(keyString) || /\\.\\./.test(keyString)) {\n console.warn(\n '[createElement] Key contains invalid characters (., $, ..): ' +\n `\"${keyString}\". Keys should be simple strings or numbers.`\n );\n }\n\n return parentKey ? parentKey + '/' + keyString : keyString;\n}\n\n/**\n * Validate that keys are unique among siblings.\n * @param {Array} children - Array of child elements\n */\nfunction validateChildKeys(children) {\n if (!Array.isArray(children)) return;\n\n const seenKeys = new Set();\n let hasIndexKey = false;\n\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (!isValidElement(child)) continue;\n\n const key = child.key;\n if (key === null) {\n hasIndexKey = true;\n continue;\n }\n\n if (seenKeys.has(key)) {\n console.warn(\n '[createElement] Duplicate key \"' + key + '\" found in children. ' +\n 'This may cause components to be duplicated or lost during reconciliation.'\n );\n }\n seenKeys.add(key);\n }\n\n if (hasIndexKey && seenKeys.size > 0) {\n console.warn(\n '[createElement] Mixed explicit and implicit keys detected. ' +\n 'When using keys, all siblings should have explicit keys for optimal reconciliation.'\n );\n }\n}\n\n// ─── Ref Forwarding ───────────────────────────────────────────────────────────\n\n/**\n * Process the ref prop and handle ref forwarding.\n * @param {*} ref - Ref value\n * @param {Object} element - The element being created\n * @returns {*} Processed ref\n */\nfunction processRef(ref, element) {\n if (ref === undefined || ref === null) return null;\n\n // Object ref (useRef)\n if (typeof ref === 'object' && ref._isRef) {\n return ref;\n }\n\n // Callback ref\n if (typeof ref === 'function') {\n return ref;\n }\n\n // String ref (legacy)\n if (typeof ref === 'string') {\n console.warn(\n '[createElement] String refs are deprecated. Use callback refs or useRef instead. ' +\n `Received ref: \"${ref}\"`\n );\n return ref;\n }\n\n // Forwarded ref\n if (ref._isForwardRef) {\n return ref;\n }\n\n console.warn('[createElement] Invalid ref type: ' + typeof ref);\n return null;\n}\n\n// ─── Props Processing ─────────────────────────────────────────────────────────\n\n/**\n * Process and clean props, removing reserved props and applying defaults.\n * @param {*} type - Element type\n * @param {Object} props - Raw props\n * @param {*} key - Element key\n * @param {*} ref - Element ref\n * @returns {Object} Cleaned props\n */\nfunction processProps(type, props, key, ref) {\n const cleanedProps = {};\n\n for (const propName in props) {\n if (props.hasOwnProperty(propName)) {\n if (RESERVED_PROPS[propName]) continue;\n\n const propValue = props[propName];\n\n // Process event handlers\n if (propName.startsWith('on') && typeof propValue === 'function') {\n cleanedProps[propName] = propValue;\n continue;\n }\n\n // Process style prop\n if (propName === 'style') {\n cleanedProps[propName] = processStyleProp(propValue);\n continue;\n }\n\n // Process className / class\n if (propName === 'className' || propName === 'class') {\n cleanedProps.className = processClassName(propValue);\n continue;\n }\n\n // Process dangerouslySetInnerHTML\n if (propName === 'dangerouslySetInnerHTML') {\n if (propValue && typeof propValue.__html === 'string') {\n cleanedProps[propName] = propValue;\n } else {\n console.warn('[createElement] dangerouslySetInnerHTML must have a __html property');\n }\n continue;\n }\n\n // Process suppressHydrationWarning\n if (propName === 'suppressHydrationWarning') {\n cleanedProps[propName] = !!propValue;\n continue;\n }\n\n cleanedProps[propName] = propValue;\n }\n }\n\n // Apply default props\n if (type && type.defaultProps) {\n for (const defaultProp in type.defaultProps) {\n if (type.defaultProps.hasOwnProperty(defaultProp) && cleanedProps[defaultProp] === undefined) {\n cleanedProps[defaultProp] = type.defaultProps[defaultProp];\n }\n }\n }\n\n return cleanedProps;\n}\n\n/**\n * Process the style prop into a consistent format.\n * @param {*} style\n * @returns {Object|string|undefined}\n */\nfunction processStyleProp(style) {\n if (style === null || style === undefined) return undefined;\n\n if (typeof style === 'string') return style;\n\n if (typeof style === 'object') {\n const processed = {};\n for (const prop in style) {\n if (style.hasOwnProperty(prop)) {\n const value = style[prop];\n const cssProp = prop.replace(/([A-Z])/g, '-$1').toLowerCase();\n\n if (typeof value === 'number' && !isUnitlessProperty(cssProp)) {\n processed[cssProp] = value + 'px';\n } else {\n processed[cssProp] = value;\n }\n }\n }\n return processed;\n }\n\n return undefined;\n}\n\n/**\n * Check if a CSS property is unitless.\n * @param {string} prop\n * @returns {boolean}\n */\nfunction isUnitlessProperty(prop) {\n const unitlessProps = new Set([\n 'animation-iteration-count', 'border-image-outset', 'border-image-slice',\n 'border-image-width', 'box-flex', 'box-flex-group', 'box-ordinal-group',\n 'column-count', 'columns', 'flex', 'flex-grow', 'flex-positive',\n 'flex-shrink', 'flex-negative', 'flex-order', 'grid-row', 'grid-row-end',\n 'grid-row-span', 'grid-row-start', 'grid-column', 'grid-column-end',\n 'grid-column-span', 'grid-column-start', 'font-weight', 'line-clamp',\n 'line-height', 'opacity', 'order', 'orphans', 'tab-size', 'widows',\n 'z-index', 'zoom', 'fill-opacity', 'flood-opacity', 'stop-opacity',\n 'stroke-dasharray', 'stroke-dashoffset', 'stroke-miterlimit',\n 'stroke-opacity', 'stroke-width',\n ]);\n return unitlessProps.has(prop);\n}\n\n/**\n * Process className prop.\n * @param {*} className\n * @returns {string}\n */\nfunction processClassName(className) {\n if (className === null || className === undefined) return '';\n\n if (typeof className === 'string') return className;\n\n if (Array.isArray(className)) {\n return className.filter(Boolean).join(' ');\n }\n\n if (typeof className === 'object') {\n return Object.keys(className)\n .filter((key) => className[key])\n .join(' ');\n }\n\n return String(className);\n}\n\n// ─── Children Processing ──────────────────────────────────────────────────────\n\n/**\n * Flatten and normalize children, handling arrays, fragments, and nested structures.\n * @param {Array} children - Raw children arguments\n * @returns {Array} Normalized flat array of children\n */\nfunction flattenChildren(children) {\n const result = [];\n\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n\n if (child === null || child === undefined || typeof child === 'boolean') {\n continue;\n }\n\n if (Array.isArray(child)) {\n const flat = flattenChildren(child);\n for (let j = 0; j < flat.length; j++) {\n result.push(flat[j]);\n }\n } else if (isValidElement(child) && child.type === REACT_FRAGMENT_TYPE) {\n if (child.props && child.props.children) {\n const fragmentChildren = Array.isArray(child.props.children)\n ? child.props.children\n : [child.props.children];\n const flat = flattenChildren(fragmentChildren);\n for (let j = 0; j < flat.length; j++) {\n result.push(flat[j]);\n }\n }\n } else {\n result.push(child);\n }\n }\n\n return result;\n}\n\n/**\n * Normalize children into a consistent format.\n * @param {Array} children\n * @param {string|null} parentKey\n * @returns {Array}\n */\nfunction normalizeChildren(children, parentKey) {\n if (children.length === 0) return [];\n\n const normalized = [];\n\n for (let i = 0; i < children.length; i++) {\n let child = children[i];\n\n if (typeof child === 'string' || typeof child === 'number') {\n child = createTextElement(String(child));\n }\n\n if (isValidElement(child)) {\n if (child.key === null) {\n child = assignKey(child, parentKey, i);\n }\n normalized.push(child);\n } else if (child !== null && child !== undefined) {\n console.warn('[createElement] Invalid child type: ' + typeof child);\n }\n }\n\n return normalized;\n}\n\n/**\n * Create a text element for primitive children.\n * @param {string} text\n * @returns {Object}\n */\nfunction createTextElement(text) {\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: '#text',\n props: { nodeValue: text, children: [] },\n key: null,\n ref: null,\n _owner: null,\n };\n}\n\n/**\n * Assign an implicit key based on the parent key and child index.\n */\nfunction assignKey(element, parentKey, index) {\n const key = parentKey ? parentKey + '.' + index : '.' + index;\n return Object.assign({}, element, { key });\n}\n\n// ─── Props Cloning & Merging ──────────────────────────────────────────────────\n\n/**\n * Clone an element with new props merged.\n * @param {Object} element\n * @param {Object} newProps\n * @param {...*} newChildren\n * @returns {Object}\n */\nfunction cloneElement(element, newProps) {\n if (!isValidElement(element)) {\n throw new Error('[cloneElement] Argument must be a valid element');\n }\n\n const children = Array.prototype.slice.call(arguments, 2);\n const mergedProps = Object.assign({}, element.props, newProps);\n\n if (children.length > 0) {\n mergedProps.children = children.length === 1 ? children[0] : children;\n }\n\n const key = newProps && newProps.key !== undefined ? newProps.key : element.key;\n const ref = newProps && newProps.ref !== undefined ? newProps.ref : element.ref;\n\n if (newProps && newProps.key !== undefined) delete mergedProps.key;\n if (newProps && newProps.ref !== undefined) delete mergedProps.ref;\n\n return createElement(element.type, Object.assign({ key, ref }, mergedProps));\n}\n\n/**\n * Merge props from multiple sources.\n * Event handlers are chained rather than overwritten.\n * @returns {Object}\n */\nfunction mergeProps() {\n const result = {};\n\n for (let i = 0; i < arguments.length; i++) {\n const props = arguments[i];\n if (!props) continue;\n\n for (const key in props) {\n if (!props.hasOwnProperty(key)) continue;\n\n if (key.startsWith('on') && result[key] && typeof result[key] === 'function') {\n const existingHandler = result[key];\n const newHandler = props[key];\n result[key] = function chainedHandler() {\n existingHandler.apply(this, arguments);\n newHandler.apply(this, arguments);\n };\n } else if (key === 'style' && result.style && typeof result.style === 'object' && typeof props.style === 'object') {\n result.style = Object.assign({}, result.style, props.style);\n } else if (key === 'className' && result.className) {\n result.className = result.className + ' ' + props.className;\n } else {\n result[key] = props[key];\n }\n }\n }\n\n return result;\n}\n\n// ─── Core createElement ───────────────────────────────────────────────────────\n\n/**\n * createElement - Create a virtual DOM element.\n *\n * @param {*} type - Element type\n * @param {Object|null} config - Element configuration\n * @param {...*} children - Child elements\n * @returns {Object} Virtual DOM element\n */\nfunction createElement(type, config) {\n const children = Array.prototype.slice.call(arguments, 2);\n\n // Validate type\n if (!isValidElementType(type)) {\n throw new Error(\n '[createElement] Invalid element type: ' + typeof type +\n '. Expected a string, function, or symbol.'\n );\n }\n\n // Extract Key and Ref from Config\n let key = null;\n let ref = null;\n let props = {};\n\n if (config !== null && config !== undefined) {\n if (typeof config !== 'object') {\n throw new Error(\n '[createElement] Config must be an object or null. ' +\n 'Received: ' + typeof config\n );\n }\n\n if (config.key !== undefined) {\n key = extractKey(config.key, null);\n }\n\n if (config.ref !== undefined) {\n ref = processRef(config.ref, null);\n }\n\n for (const propName in config) {\n if (config.hasOwnProperty(propName) && !RESERVED_PROPS[propName]) {\n props[propName] = config[propName];\n }\n }\n }\n\n // Process Children\n const flattenedChildren = flattenChildren(children);\n const normalizedChildren = normalizeChildren(flattenedChildren, key);\n\n if (normalizedChildren.length === 0) {\n props.children = [];\n } else if (normalizedChildren.length === 1) {\n props.children = normalizedChildren[0];\n } else {\n props.children = normalizedChildren;\n }\n\n // Process Props\n props = processProps(type, props, key, ref);\n\n // Prop Type Validation\n if (type && type.propTypes && typeof type.propTypes === 'object') {\n for (const propName in type.propTypes) {\n if (type.propTypes.hasOwnProperty(propName)) {\n const validator = type.propTypes[propName];\n if (typeof validator === 'function') {\n const result = validator(props, propName, type.displayName || type.name || 'Component', 'prop');\n if (result instanceof Error) {\n console.warn('[createElement] Prop validation: ' + result.message);\n }\n }\n }\n }\n }\n\n // Validate Child Keys\n if (Array.isArray(normalizedChildren) && normalizedChildren.length > 1) {\n validateChildKeys(normalizedChildren);\n }\n\n // Create Element Object\n const element = {\n $$typeof: REACT_ELEMENT_TYPE,\n type,\n key,\n ref,\n props,\n _owner: null,\n _store: {},\n };\n\n // Make element immutable in development\n if (typeof process !== 'undefined' && process.env && process.env.NODE_ENV !== 'production') {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n\n return element;\n}\n\n// ─── Fragment ─────────────────────────────────────────────────────────────────\n\nconst Fragment = REACT_FRAGMENT_TYPE;\n\n// ─── Suspense ─────────────────────────────────────────────────────────────────\n\n/**\n * Suspense component for handling async rendering.\n * @param {Object} props\n * @param {*} props.fallback - Fallback UI while suspended\n * @param {*} props.children - Children to suspend\n */\nconst Suspense = REACT_SUSPENSE_TYPE;\n\n/**\n * Create a Suspense element.\n * @param {Object} props\n * @returns {Object} Suspense element\n */\nfunction createSuspense(props) {\n return createElement(Suspense, props, props.children);\n}\n\n// ─── StrictMode ───────────────────────────────────────────────────────────────\n\nconst StrictMode = REACT_STRICT_MODE_TYPE;\n\n/**\n * Create a StrictMode wrapper element.\n * @param {Object} props\n * @returns {Object} StrictMode element\n */\nfunction createStrictMode(props) {\n return createElement(StrictMode, null, props.children);\n}\n\n// ─── Error Boundary ───────────────────────────────────────────────────────────\n\nconst ErrorBoundary = REACT_ERROR_BOUNDARY_TYPE;\n\n/**\n * Create an error boundary element.\n * @param {Object} props\n * @param {Function} props.onError - Error handler\n * @param {*} props.fallback - Fallback UI\n * @param {*} props.children - Children to protect\n * @returns {Object} Error boundary element\n */\nfunction createErrorBoundary(props) {\n return createElement(ErrorBoundary, props, props.children);\n}\n\n// ─── Portal ───────────────────────────────────────────────────────────────────\n\n/**\n * Create a portal element.\n * @param {*} children\n * @param {HTMLElement} container\n * @param {string|null} key\n * @returns {Object}\n */\nfunction createPortal(children, container, key) {\n return {\n $$typeof: REACT_PORTAL_TYPE,\n key: key === null ? null : String(key),\n children,\n containerInfo: container,\n implementation: null,\n };\n}\n\n// ─── Lazy Component ───────────────────────────────────────────────────────────\n\n/**\n * Create a lazy-loaded component.\n * @param {Function} factory\n * @returns {Object}\n */\nfunction lazy(factory) {\n const lazyComponent = {\n $$typeof: REACT_LAZY_TYPE,\n _payload: {\n _status: -1, // -1: pending, 0: resolved, 1: rejected\n _result: null,\n },\n _init: function init(payload) {\n if (payload._status === -1) {\n const thenable = factory();\n thenable.then(\n function resolve(module) {\n if (payload._status === -1) {\n payload._status = 0;\n payload._result = module.default || module;\n }\n },\n function reject(error) {\n if (payload._status === -1) {\n payload._status = 1;\n payload._result = error;\n }\n }\n );\n payload._status = -1;\n payload._result = thenable;\n }\n },\n };\n return lazyComponent;\n}\n\n// ─── Children Utilities ───────────────────────────────────────────────────────\n\n/**\n * Count the number of children.\n * @param {*} children\n * @returns {number}\n */\nfunction countChildren(children) {\n if (children === null || children === undefined) return 0;\n if (Array.isArray(children)) return children.length;\n return 1;\n}\n\n/**\n * Map over children.\n * @param {*} children\n * @param {Function} fn\n * @returns {Array}\n */\nfunction mapChildren(children, fn) {\n if (children === null || children === undefined) return [];\n\n if (Array.isArray(children)) {\n return children.map((child, index) => fn(child, index));\n }\n\n return [fn(children, 0)];\n}\n\n/**\n * ForEach over children (no return value).\n * @param {*} children\n * @param {Function} fn\n */\nfunction forEachChild(children, fn) {\n if (children === null || children === undefined) return;\n\n if (Array.isArray(children)) {\n children.forEach((child, index) => fn(child, index));\n } else {\n fn(children, 0);\n }\n}\n\n/**\n * Check if children is an array with more than one element.\n * @param {*} children\n * @returns {boolean}\n */\nfunction isChildrenArray(children) {\n return Array.isArray(children) && children.length > 1;\n}\n\n/**\n * Get only child from children.\n * @param {*} children\n * @returns {*}\n */\nfunction onlyChild(children) {\n if (!isValidElement(children)) {\n throw new Error('[onlyChild] Expected a single ElementDrawing element');\n }\n return children;\n}\n\n// ─── Element Creation with Render Prop ────────────────────────────────────────\n\nfunction createElementWithRenderProp(type, props, renderFn) {\n if (typeof renderFn !== 'function') {\n throw new Error('[createElementWithRenderProp] Third argument must be a function');\n }\n\n return createElement(type, Object.assign({}, props, { children: renderFn }));\n}\n\n// ─── Exports ──────────────────────────────────────────────────────────────────\n\nmodule.exports = {\n createElement,\n cloneElement,\n mergeProps,\n createTextElement,\n createPortal,\n createSuspense,\n createStrictMode,\n createErrorBoundary,\n createRef: function () { return { current: null, _isRef: true }; },\n Fragment,\n Suspense,\n StrictMode,\n ErrorBoundary,\n lazy,\n isValidElement,\n isValidElementType,\n isFunctionComponent,\n isClassComponent,\n isHostElement,\n isSuspenseElement,\n isStrictModeElement,\n isErrorBoundaryElement,\n extractKey,\n processRef,\n processProps,\n processStyleProp,\n processClassName,\n flattenChildren,\n normalizeChildren,\n createElementWithRenderProp,\n countChildren,\n mapChildren,\n forEachChild,\n isChildrenArray,\n onlyChild,\n REACT_ELEMENT_TYPE,\n REACT_FRAGMENT_TYPE,\n REACT_PORTAL_TYPE,\n REACT_SUSPENSE_TYPE,\n REACT_LAZY_TYPE,\n REACT_STRICT_MODE_TYPE,\n REACT_ERROR_BOUNDARY_TYPE,\n REACT_PROVIDER_TYPE,\n REACT_CONSUMER_TYPE,\n RESERVED_PROPS,\n};\n","/**\n * JSX Runtime Index\n * ElementDrawing Framework - Re-exports all runtime functions, provides\n * comprehensive runtime initialization, configuration, development tools\n * bridge, and global event system.\n */\n\n'use strict';\n\nconst createElementModule = require('./createElement');\nconst renderModule = require('./render');\nconst reconcileModule = require('./reconcile');\nconst commitModule = require('./commit');\n\n// ─── Runtime Configuration ────────────────────────────────────────────────────\n\nconst runtimeConfig = {\n strictMode: false,\n profiling: false,\n concurrentMode: false,\n eventDelegation: true,\n hydration: false,\n devTools: false,\n errorBoundaries: true,\n suspense: true,\n};\n\n/**\n * Configure the runtime.\n * @param {Object} config - Configuration options\n * @param {boolean} [config.strictMode] - Enable strict mode\n * @param {boolean} [config.profiling] - Enable profiling\n * @param {boolean} [config.concurrentMode] - Enable concurrent features\n * @param {boolean} [config.eventDelegation] - Enable event delegation\n * @param {boolean} [config.devTools] - Enable dev tools bridge\n */\nfunction configureRuntime(config) {\n Object.assign(runtimeConfig, config);\n}\n\n/**\n * Get the current runtime configuration.\n * @returns {Object}\n */\nfunction getRuntimeConfig() {\n return Object.assign({}, runtimeConfig);\n}\n\n// ─── Runtime Initialization ───────────────────────────────────────────────────\n\nlet isInitialized = false;\nconst initCallbacks = [];\n\n/**\n * Initialize the runtime. Called once before the first render.\n * @param {Object} [config] - Optional initial configuration\n */\nfunction initRuntime(config) {\n if (isInitialized) return;\n\n if (config) {\n configureRuntime(config);\n }\n\n // Set up global error handler for error boundaries\n if (runtimeConfig.errorBoundaries && typeof window !== 'undefined') {\n window.addEventListener('error', function globalErrorHandler(event) {\n // Allow error boundaries to handle uncaught errors\n if (event.error && event.error.__edHandled) {\n event.preventDefault();\n }\n });\n }\n\n // Initialize dev tools bridge\n if (runtimeConfig.devTools && typeof window !== 'undefined') {\n window.__ED_DEVTOOLS__ = {\n version: '1.0.0',\n getCommitStats: commitModule.getCommitStats,\n getRuntimeConfig: getRuntimeConfig,\n };\n }\n\n isInitialized = true;\n\n // Run initialization callbacks\n initCallbacks.forEach((cb) => {\n try {\n cb();\n } catch (error) {\n console.error('[runtime] Init callback error:', error);\n }\n });\n initCallbacks.length = 0;\n}\n\n/**\n * Register a callback to run after runtime initialization.\n * If already initialized, runs immediately.\n * @param {Function} callback\n */\nfunction onRuntimeInit(callback) {\n if (isInitialized) {\n callback();\n } else {\n initCallbacks.push(callback);\n }\n}\n\n/**\n * Check if the runtime is initialized.\n * @returns {boolean}\n */\nfunction isRuntimeInitialized() {\n return isInitialized;\n}\n\n// ─── Global Render Function ───────────────────────────────────────────────────\n\n/**\n * High-level render function that handles the complete render pipeline:\n * create element -> reconcile -> commit.\n *\n * @param {Object} vnode - Virtual DOM element to render\n * @param {HTMLElement} container - Target DOM container\n * @param {Function} [callback] - Called after render completes\n * @returns {HTMLElement} The rendered DOM node\n */\nfunction renderApp(vnode, container, callback) {\n if (!isInitialized) {\n initRuntime();\n }\n\n // Get the previous vnode stored on the container\n const prevVNode = container.__ed_vnode || null;\n\n // Reconcile old and new trees\n const { operations, context } = reconcileModule.reconcile(prevVNode, vnode);\n\n // Commit the changes to the DOM\n commitModule.commitWork(operations, container, {\n onComplete: () => {\n // Store the new vnode for future reconciles\n container.__ed_vnode = vnode;\n\n if (typeof callback === 'function') callback();\n },\n });\n\n // If no previous vnode, do initial render\n if (!prevVNode) {\n return renderModule.render(vnode, container, callback);\n }\n\n return container;\n}\n\n/**\n * Unmount the app from a container.\n * @param {HTMLElement} container\n */\nfunction unmountApp(container) {\n renderModule.unmountContainer(container);\n delete container.__ed_vnode;\n}\n\n// ─── Component Utilities ──────────────────────────────────────────────────────\n\n/**\n * Create a component that wraps children with error boundary behavior.\n * @param {Function} fallback - Fallback renderer receiving (error, retry)\n * @returns {Function} Error boundary component\n */\nfunction createErrorBoundary(fallback) {\n return function ErrorBoundaryComponent(props) {\n return createElementModule.createElement(\n createElementModule.ErrorBoundary,\n { fallback, onError: props.onError },\n props.children\n );\n };\n}\n\n/**\n * Create a Suspense wrapper.\n * @param {*} fallback - Fallback UI\n * @returns {Function} Suspense component\n */\nfunction createSuspenseWrapper(fallback) {\n return function SuspenseWrapper(props) {\n return createElementModule.createElement(\n createElementModule.Suspense,\n { fallback },\n props.children\n );\n };\n}\n\n// ─── Development Tools Bridge ─────────────────────────────────────────────────\n\nconst devToolsHandlers = new Set();\n\n/**\n * Register a dev tools message handler.\n * @param {Function} handler\n * @returns {Function} Unregister function\n */\nfunction registerDevToolsHandler(handler) {\n devToolsHandlers.add(handler);\n return function unregister() {\n devToolsHandlers.delete(handler);\n };\n}\n\n/**\n * Send a message to dev tools.\n * @param {string} type - Message type\n * @param {*} data - Message data\n */\nfunction sendDevToolsMessage(type, data) {\n if (!runtimeConfig.devTools) return;\n\n const message = { type, data, timestamp: Date.now() };\n\n devToolsHandlers.forEach((handler) => {\n try {\n handler(message);\n } catch (error) {\n // Dev tools errors should not break the app\n }\n });\n\n // Also send to window bridge if available\n if (typeof window !== 'undefined' && window.__ED_DEVTOOLS_BRIDGE__) {\n try {\n window.__ED_DEVTOOLS_BRIDGE__(message);\n } catch (error) {\n // Ignore\n }\n }\n}\n\n// ─── Runtime Statistics ───────────────────────────────────────────────────────\n\n/**\n * Get comprehensive runtime statistics.\n * @returns {Object}\n */\nfunction getRuntimeStats() {\n return {\n commit: commitModule.getCommitStats(),\n config: getRuntimeConfig(),\n initialized: isInitialized,\n };\n}\n\n// ─── Exports ──────────────────────────────────────────────────────────────────\n\nmodule.exports = {\n // ── createElement exports ──\n createElement: createElementModule.createElement,\n cloneElement: createElementModule.cloneElement,\n mergeProps: createElementModule.mergeProps,\n createTextElement: createElementModule.createTextElement,\n createPortal: createElementModule.createPortal,\n createSuspense: createElementModule.createSuspense,\n createStrictMode: createElementModule.createStrictMode,\n createErrorBoundary: createElementModule.createErrorBoundary,\n Fragment: createElementModule.Fragment,\n Suspense: createElementModule.Suspense,\n StrictMode: createElementModule.StrictMode,\n ErrorBoundary: createElementModule.ErrorBoundary,\n lazy: createElementModule.lazy,\n isValidElement: createElementModule.isValidElement,\n isValidElementType: createElementModule.isValidElementType,\n isFunctionComponent: createElementModule.isFunctionComponent,\n isClassComponent: createElementModule.isClassComponent,\n isHostElement: createElementModule.isHostElement,\n isSuspenseElement: createElementModule.isSuspenseElement,\n isStrictModeElement: createElementModule.isStrictModeElement,\n isErrorBoundaryElement: createElementModule.isErrorBoundaryElement,\n countChildren: createElementModule.countChildren,\n mapChildren: createElementModule.mapChildren,\n forEachChild: createElementModule.forEachChild,\n onlyChild: createElementModule.onlyChild,\n\n // ── render exports ──\n render: renderModule.render,\n hydrate: renderModule.hydrate,\n unmountContainer: renderModule.unmountContainer,\n createDOMElement: renderModule.createDOMElement,\n createTextNode: renderModule.createTextNode,\n setAttribute: renderModule.setAttribute,\n removeAttribute: renderModule.removeAttribute,\n applyStyle: renderModule.applyStyle,\n applyClassName: renderModule.applyClassName,\n setEventHandler: renderModule.setEventHandler,\n removeEventHandler: renderModule.removeEventHandler,\n assignRef: renderModule.assignRef,\n detachRef: renderModule.detachRef,\n renderVNode: renderModule.renderVNode,\n hydrateVNode: renderModule.hydrateVNode,\n\n // ── reconcile exports ──\n reconcile: reconcileModule.reconcile,\n reconcileChildren: reconcileModule.reconcileChildren,\n reconcileElement: reconcileModule.reconcileElement,\n diffProps: reconcileModule.diffProps,\n diffStyle: reconcileModule.diffStyle,\n diffEventHandlers: reconcileModule.diffEventHandlers,\n diffRef: reconcileModule.diffRef,\n memo: reconcileModule.memo,\n shallowEqual: reconcileModule.shallowEqual,\n isSameType: reconcileModule.isSameType,\n createFiber: reconcileModule.createFiber,\n longestIncreasingSubsequence: reconcileModule.longestIncreasingSubsequence,\n\n // ── commit exports ──\n commitWork: commitModule.commitWork,\n batchCommitWork: commitModule.batchCommitWork,\n processInsertions: commitModule.processInsertions,\n processDeletions: commitModule.processDeletions,\n processUpdates: commitModule.processUpdates,\n processMoves: commitModule.processMoves,\n processReplacements: commitModule.processReplacements,\n flushPendingLayoutEffects: commitModule.flushPendingLayoutEffects,\n schedulePassiveEffects: commitModule.schedulePassiveEffects,\n handleErrorDuringCommit: commitModule.handleErrorDuringCommit,\n captureSnapshot: commitModule.captureSnapshot,\n getSnapshot: commitModule.getSnapshot,\n findDOMNodeForVNode: commitModule.findDOMNodeForVNode,\n getCommitStats: commitModule.getCommitStats,\n\n // ── Runtime management ──\n renderApp,\n unmountApp,\n initRuntime,\n onRuntimeInit,\n isRuntimeInitialized,\n configureRuntime,\n getRuntimeConfig,\n getRuntimeStats,\n createErrorBoundary,\n createSuspenseWrapper,\n registerDevToolsHandler,\n sendDevToolsMessage,\n\n // ── Internal types ──\n REACT_ELEMENT_TYPE: createElementModule.REACT_ELEMENT_TYPE,\n REACT_FRAGMENT_TYPE: createElementModule.REACT_FRAGMENT_TYPE,\n REACT_PORTAL_TYPE: createElementModule.REACT_PORTAL_TYPE,\n REACT_SUSPENSE_TYPE: createElementModule.REACT_SUSPENSE_TYPE,\n REACT_LAZY_TYPE: createElementModule.REACT_LAZY_TYPE,\n REACT_STRICT_MODE_TYPE: createElementModule.REACT_STRICT_MODE_TYPE,\n REACT_ERROR_BOUNDARY_TYPE: createElementModule.REACT_ERROR_BOUNDARY_TYPE,\n};\n","/**\n * reconcile - Reconciliation Algorithm\n * ElementDrawing Framework - Diffs old and new virtual DOM trees to determine\n * the minimal set of DOM operations needed. Includes key-based child\n * reconciliation, fiber-based scheduling hints, prop/style/event diffing,\n * memo optimization, and time-slicing support.\n */\n\n'use strict';\n\nconst { REACT_FRAGMENT_TYPE, isValidElement } = require('./createElement');\n\n// ─── Constants ────────────────────────────────────────────────────────────────\n\nconst INSERT = 'INSERT';\nconst MOVE = 'MOVE';\nconst REMOVE = 'REMOVE';\nconst UPDATE = 'UPDATE';\nconst REPLACE = 'REPLACE';\nconst SKIP = 'SKIP';\nconst REORDER = 'REORDER';\n\n// ─── Reconciliation Priority ──────────────────────────────────────────────────\n\nconst RECONCILE_PRIORITY = {\n IMMEDIATE: 0,\n NORMAL: 1,\n LOW: 2,\n IDLE: 3,\n};\n\n// ─── Diff Result Types ────────────────────────────────────────────────────────\n\n/**\n * Create a diff operation.\n */\nfunction createDiffOp(type, payload) {\n return { type, payload, _isDiffOp: true };\n}\n\n// ─── Fiber Node Creation ──────────────────────────────────────────────────────\n\n/**\n * Create a lightweight fiber node for reconciliation tracking.\n * @param {Object|null} vnode - Virtual DOM element\n * @param {Object|null} parentFiber - Parent fiber\n * @returns {Object} Fiber node\n */\nfunction createFiber(vnode, parentFiber) {\n return {\n vnode,\n parent: parentFiber,\n child: null,\n sibling: null,\n alternate: null,\n effectTag: null,\n deps: null,\n index: 0,\n };\n}\n\n// ─── Tree Diffing ─────────────────────────────────────────────────────────────\n\n/**\n * Reconcile an old virtual tree with a new one, producing a list of changes.\n *\n * @param {Object|null} oldVNode - Previous virtual DOM tree\n * @param {Object|null} newVNode - New virtual DOM tree\n * @param {Object} [options] - Reconciliation options\n * @param {number} [options.priority] - Reconciliation priority\n * @param {number} [options.timeoutMs] - Time-slicing timeout\n * @returns {Object} Reconciliation result with operations list\n */\nfunction reconcile(oldVNode, newVNode, options = {}) {\n const operations = [];\n const context = {\n operations,\n parentDOM: null,\n oldParentVNode: oldVNode,\n newParentVNode: newVNode,\n priority: options.priority || RECONCILE_PRIORITY.NORMAL,\n startTime: Date.now(),\n timeoutMs: options.timeoutMs || Infinity,\n aborted: false,\n stats: {\n nodesCompared: 0,\n operationsGenerated: 0,\n timeElapsed: 0,\n },\n };\n\n reconcileElement(oldVNode, newVNode, operations, context);\n\n // Update stats\n context.stats.timeElapsed = Date.now() - context.startTime;\n context.stats.operationsGenerated = operations.length;\n\n return { operations, context };\n}\n\n/**\n * Check if time-slicing should yield.\n * @param {Object} context\n * @returns {boolean}\n */\nfunction shouldYield(context) {\n if (context.aborted) return true;\n if (context.timeoutMs === Infinity) return false;\n return Date.now() - context.startTime > context.timeoutMs;\n}\n\n/**\n * Reconcile children of two vnodes.\n * @param {Object|null} oldVNode\n * @param {Object|null} newVNode\n * @param {Array} operations\n * @param {Object} context\n */\nfunction reconcileChildren(oldVNode, newVNode, operations, context) {\n const oldChildren = normalizeChildren(oldVNode);\n const newChildren = normalizeChildren(newVNode);\n\n // Key-based reconciliation for efficient child reordering\n const oldKeyMap = buildKeyMap(oldChildren);\n const newKeyMap = buildKeyMap(newChildren);\n\n // ─── Phase 1: Match keyed children using Longest Increasing Subsequence ──\n\n const matchedPairs = [];\n const removeIndices = new Set();\n const insertNodes = [];\n\n // Build matching table\n let oldIndex = 0;\n let newIndex = 0;\n\n while (oldIndex < oldChildren.length || newIndex < newChildren.length) {\n if (shouldYield(context)) {\n context.aborted = true;\n return;\n }\n\n const oldChild = oldChildren[oldIndex];\n const newChild = newChildren[newIndex];\n\n if (oldIndex >= oldChildren.length) {\n // No more old children - insert remaining new children\n insertNodes.push({ child: newChild, beforeIndex: newIndex });\n matchedPairs.push({ old: null, new: newChild, oldIndex: -1, newIndex });\n newIndex++;\n continue;\n }\n\n if (newIndex >= newChildren.length) {\n // No more new children - remove remaining old children\n removeIndices.add(oldIndex);\n matchedPairs.push({ old: oldChild, new: null, oldIndex, newIndex: -1 });\n oldIndex++;\n continue;\n }\n\n if (oldChild.key !== null && newChild.key !== null) {\n if (oldChild.key === newChild.key) {\n // Same key - reconcile in place\n matchedPairs.push({ old: oldChild, new: newChild, oldIndex, newIndex });\n oldIndex++;\n newIndex++;\n } else {\n // Keys don't match\n if (newKeyMap.has(oldChild.key) && newKeyMap.get(oldChild.key).index >= newIndex) {\n insertNodes.push({ child: newChild, beforeIndex: newIndex });\n newIndex++;\n } else {\n removeIndices.add(oldIndex);\n matchedPairs.push({ old: oldChild, new: null, oldIndex, newIndex: -1 });\n oldIndex++;\n }\n }\n } else {\n // Positional matching for unkeyed children\n matchedPairs.push({ old: oldChild, new: newChild, oldIndex, newIndex });\n oldIndex++;\n newIndex++;\n }\n }\n\n // ─── Phase 2: Detect reordering using LIS ──────────────────────────────\n\n const keyedPairs = matchedPairs.filter(\n (p) => p.old !== null && p.new !== null && p.new.key !== null\n );\n\n if (keyedPairs.length > 0) {\n const newIndices = keyedPairs.map((p) => p.newIndex);\n const lis = longestIncreasingSubsequence(newIndices);\n\n // Mark pairs that are part of LIS as stable, others need MOVE operations\n const lisSet = new Set(lis.map((i) => keyedPairs[i].newIndex));\n\n matchedPairs.forEach((pair) => {\n if (pair.old !== null && pair.new !== null && pair.new.key !== null) {\n if (!lisSet.has(pair.newIndex)) {\n pair.needsMove = true;\n }\n }\n });\n }\n\n // ─── Phase 3: Generate operations ──────────────────────────────────────\n\n matchedPairs.forEach((pair) => {\n context.stats.nodesCompared++;\n\n if (pair.old === null && pair.new !== null) {\n // Insert new child\n operations.push(createDiffOp(INSERT, {\n vnode: pair.new,\n parentVNode: newVNode,\n index: pair.newIndex,\n }));\n } else if (pair.old !== null && pair.new === null) {\n // Remove old child\n operations.push(createDiffOp(REMOVE, {\n vnode: pair.old,\n parentVNode: oldVNode,\n index: pair.oldIndex,\n }));\n } else if (pair.old !== null && pair.new !== null) {\n if (pair.needsMove) {\n operations.push(createDiffOp(MOVE, {\n vnode: pair.new,\n oldVNode: pair.old,\n fromIndex: pair.oldIndex,\n toIndex: pair.newIndex,\n }));\n }\n // Reconcile the pair\n reconcileElement(pair.old, pair.new, operations, context);\n }\n });\n}\n\n/**\n * Reconcile two elements.\n * @param {Object} oldVNode\n * @param {Object} newVNode\n * @param {Array} operations\n * @param {Object} context\n */\nfunction reconcileElement(oldVNode, newVNode, operations, context) {\n if (shouldYield(context)) {\n context.aborted = true;\n return;\n }\n\n // Handle null cases\n if (oldVNode === null && newVNode === null) return;\n\n if (oldVNode === null) {\n operations.push(createDiffOp(INSERT, { vnode: newVNode }));\n return;\n }\n\n if (newVNode === null) {\n operations.push(createDiffOp(REMOVE, { vnode: oldVNode }));\n return;\n }\n\n context.stats.nodesCompared++;\n\n // ─── Type Comparison ────────────────────────────────────────────────────\n\n if (!isSameType(oldVNode, newVNode)) {\n operations.push(createDiffOp(REPLACE, {\n oldVNode,\n newVNode,\n }));\n return;\n }\n\n // ─── shouldComponentUpdate optimization ────────────────────────────────\n\n if (oldVNode.type && typeof oldVNode.type === 'function' && oldVNode.type._shouldComponentUpdate) {\n if (!oldVNode.type._shouldComponentUpdate(oldVNode.props, newVNode.props)) {\n operations.push(createDiffOp(SKIP, { vnode: newVNode }));\n return;\n }\n }\n\n // ─── Memo component comparison ────────────────────────────────────────\n\n if (oldVNode.type && oldVNode.type._isMemo && oldVNode.type._compare) {\n if (oldVNode.type._compare(oldVNode.props, newVNode.props)) {\n operations.push(createDiffOp(SKIP, { vnode: newVNode }));\n return;\n }\n }\n\n // ─── Pure component comparison ────────────────────────────────────────\n\n if (oldVNode.type && oldVNode.type._isPureComponent) {\n if (shallowEqual(oldVNode.props, newVNode.props)) {\n operations.push(createDiffOp(SKIP, { vnode: newVNode }));\n return;\n }\n }\n\n // ─── Text node comparison ─────────────────────────────────────────────\n\n if (oldVNode.type === '#text' && newVNode.type === '#text') {\n if (oldVNode.props.nodeValue !== newVNode.props.nodeValue) {\n operations.push(createDiffOp(UPDATE, {\n vnode: newVNode,\n changes: [{ type: 'set', key: 'nodeValue', value: newVNode.props.nodeValue }],\n changeType: 'text',\n }));\n }\n return;\n }\n\n // ─── Diff Props ────────────────────────────────────────────────────────\n\n const propChanges = diffProps(oldVNode.props, newVNode.props);\n if (propChanges.length > 0) {\n operations.push(createDiffOp(UPDATE, {\n vnode: newVNode,\n changes: propChanges,\n changeType: 'props',\n }));\n }\n\n // ─── Diff Style ────────────────────────────────────────────────────────\n\n const styleChanges = diffStyle(\n oldVNode.props ? oldVNode.props.style : null,\n newVNode.props ? newVNode.props.style : null\n );\n if (styleChanges.length > 0) {\n operations.push(createDiffOp(UPDATE, {\n vnode: newVNode,\n changes: styleChanges,\n changeType: 'style',\n }));\n }\n\n // ─── Diff Event Handlers ────────────────────────────────────────────────\n\n const eventChanges = diffEventHandlers(\n oldVNode.props || {},\n newVNode.props || {}\n );\n if (eventChanges.length > 0) {\n operations.push(createDiffOp(UPDATE, {\n vnode: newVNode,\n changes: eventChanges,\n changeType: 'events',\n }));\n }\n\n // ─── Diff Ref ──────────────────────────────────────────────────────────\n\n const refChange = diffRef(oldVNode.ref, newVNode.ref);\n if (refChange) {\n operations.push(createDiffOp(UPDATE, {\n vnode: newVNode,\n changes: [refChange],\n changeType: 'ref',\n }));\n }\n\n // ─── Diff dangerouslySetInnerHTML ──────────────────────────────────────\n\n const htmlChange = diffDangerouslySetInnerHTML(\n oldVNode.props ? oldVNode.props.dangerouslySetInnerHTML : null,\n newVNode.props ? newVNode.props.dangerouslySetInnerHTML : null\n );\n if (htmlChange) {\n operations.push(createDiffOp(UPDATE, {\n vnode: newVNode,\n changes: [htmlChange],\n changeType: 'innerHTML',\n }));\n }\n\n // ─── Recurse into Children ──────────────────────────────────────────────\n\n if (oldVNode.type !== '#text' && newVNode.type !== '#text') {\n reconcileChildren(oldVNode, newVNode, operations, context);\n }\n}\n\n// ─── Key-Based Reconciliation Helpers ─────────────────────────────────────────\n\n/**\n * Build a map of keys to child indices.\n */\nfunction buildKeyMap(children) {\n const map = new Map();\n children.forEach((child, index) => {\n if (child && child.key !== null) {\n map.set(child.key, { child, index });\n }\n });\n return map;\n}\n\n/**\n * Normalize children from a vnode into a flat array.\n */\nfunction normalizeChildren(vnode) {\n if (!vnode) return [];\n if (!vnode.props || !vnode.props.children) return [];\n\n const children = vnode.props.children;\n if (Array.isArray(children)) {\n return children.filter((c) => c !== null && c !== undefined && typeof c !== 'boolean');\n }\n if (children !== null && children !== undefined && typeof children !== 'boolean') {\n return [children];\n }\n return [];\n}\n\n/**\n * Check if two vnodes are the same type.\n */\nfunction isSameType(oldVNode, newVNode) {\n if (!isValidElement(oldVNode) || !isValidElement(newVNode)) {\n return false;\n }\n\n if (oldVNode.type === newVNode.type) return true;\n\n if (oldVNode.type === REACT_FRAGMENT_TYPE && newVNode.type === REACT_FRAGMENT_TYPE) {\n return true;\n }\n\n return false;\n}\n\n/**\n * Compute the Longest Increasing Subsequence of an array.\n * Used to minimize DOM moves during child reconciliation.\n * @param {Array<number>} arr\n * @returns {Array<number>} Indices of LIS elements\n */\nfunction longestIncreasingSubsequence(arr) {\n if (arr.length === 0) return [];\n\n const dp = new Array(arr.length).fill(1);\n const prev = new Array(arr.length).fill(-1);\n\n for (let i = 1; i < arr.length; i++) {\n for (let j = 0; j < i; j++) {\n if (arr[j] < arr[i] && dp[j] + 1 > dp[i]) {\n dp[i] = dp[j] + 1;\n prev[i] = j;\n }\n }\n }\n\n // Find the index of the maximum value in dp\n let maxLen = 0;\n let maxIdx = 0;\n for (let i = 0; i < dp.length; i++) {\n if (dp[i] > maxLen) {\n maxLen = dp[i];\n maxIdx = i;\n }\n }\n\n // Backtrack to find the LIS\n const result = [];\n let idx = maxIdx;\n while (idx !== -1) {\n result.unshift(idx);\n idx = prev[idx];\n }\n\n return result;\n}\n\n// ─── Prop Diffing ─────────────────────────────────────────────────────────────\n\n/**\n * Diff props between old and new vnodes.\n */\nfunction diffProps(oldProps, newProps) {\n const changes = [];\n if (!oldProps) oldProps = {};\n if (!newProps) newProps = {};\n\n for (const key in newProps) {\n if (!newProps.hasOwnProperty(key)) continue;\n if (key === 'children' || key === 'style') continue;\n if (key.startsWith('on')) continue;\n if (key === 'dangerouslySetInnerHTML') continue;\n\n if (!oldProps.hasOwnProperty(key)) {\n changes.push({ type: 'set', key, value: newProps[key] });\n } else if (!Object.is(oldProps[key], newProps[key])) {\n changes.push({ type: 'set', key, value: newProps[key] });\n }\n }\n\n for (const key in oldProps) {\n if (!oldProps.hasOwnProperty(key)) continue;\n if (key === 'children' || key === 'style') continue;\n if (key.startsWith('on')) continue;\n if (key === 'dangerouslySetInnerHTML') continue;\n\n if (!newProps.hasOwnProperty(key)) {\n changes.push({ type: 'remove', key });\n }\n }\n\n return changes;\n}\n\n// ─── Style Diffing ────────────────────────────────────────────────────────────\n\n/**\n * Diff style objects.\n */\nfunction diffStyle(oldStyle, newStyle) {\n const changes = [];\n\n if (oldStyle === newStyle) return changes;\n\n if (typeof oldStyle === 'string' && typeof newStyle === 'string') {\n if (oldStyle !== newStyle) {\n changes.push({ type: 'replace', value: newStyle });\n }\n return changes;\n }\n\n const oldObj = typeof oldStyle === 'object' ? oldStyle : {};\n const newObj = typeof newStyle === 'object' ? newStyle : {};\n\n for (const prop in newObj) {\n if (!newObj.hasOwnProperty(prop)) continue;\n\n if (!oldObj.hasOwnProperty(prop)) {\n changes.push({ type: 'set', key: prop, value: newObj[prop] });\n } else if (!Object.is(oldObj[prop], newObj[prop])) {\n changes.push({ type: 'set', key: prop, value: newObj[prop] });\n }\n }\n\n for (const prop in oldObj) {\n if (!oldObj.hasOwnProperty(prop)) continue;\n if (!newObj.hasOwnProperty(prop)) {\n changes.push({ type: 'remove', key: prop });\n }\n }\n\n return changes;\n}\n\n// ─── Event Handler Diffing ────────────────────────────────────────────────────\n\nfunction diffEventHandlers(oldProps, newProps) {\n const changes = [];\n\n for (const key in newProps) {\n if (!newProps.hasOwnProperty(key)) continue;\n if (!key.startsWith('on')) continue;\n\n if (!oldProps.hasOwnProperty(key) || oldProps[key] !== newProps[key]) {\n changes.push({ type: 'set', key, value: newProps[key] });\n }\n }\n\n for (const key in oldProps) {\n if (!oldProps.hasOwnProperty(key)) continue;\n if (!key.startsWith('on')) continue;\n\n if (!newProps.hasOwnProperty(key)) {\n changes.push({ type: 'remove', key });\n }\n }\n\n return changes;\n}\n\n// ─── Ref Diffing ──────────────────────────────────────────────────────────────\n\nfunction diffRef(oldRef, newRef) {\n if (oldRef === newRef) return null;\n\n if (oldRef && !newRef) {\n return { type: 'remove', oldRef };\n }\n\n if (!oldRef && newRef) {\n return { type: 'set', newRef };\n }\n\n if (oldRef !== newRef) {\n return { type: 'replace', oldRef, newRef };\n }\n\n return null;\n}\n\n// ─── dangerouslySetInnerHTML Diffing ──────────────────────────────────────────\n\nfunction diffDangerouslySetInnerHTML(oldHtml, newHtml) {\n if (oldHtml === newHtml) return null;\n if (!oldHtml && !newHtml) return null;\n\n const oldStr = oldHtml ? oldHtml.__html : '';\n const newStr = newHtml ? newHtml.__html : '';\n\n if (oldStr === newStr) return null;\n\n return { type: 'set', key: 'dangerouslySetInnerHTML', value: newHtml };\n}\n\n// ─── ShouldComponentUpdate Optimization ────────────────────────────────────────\n\n/**\n * Create a memo component.\n */\nfunction memo(component, areEqual) {\n const memoComponent = function MemoComponent(props) {\n return component(props);\n };\n\n memoComponent._isMemo = true;\n memoComponent._compare = areEqual || shallowEqual;\n memoComponent.displayName = 'Memo(' + (component.displayName || component.name || 'Anonymous') + ')';\n\n return memoComponent;\n}\n\n/**\n * Shallow equality comparison.\n */\nfunction shallowEqual(objA, objB) {\n if (Object.is(objA, objB)) return true;\n\n if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n return false;\n }\n\n const keysA = Object.keys(objA);\n const keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) return false;\n\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.is(objA[keysA[i]], objB[keysA[i]])) return false;\n }\n\n return true;\n}\n\n// ─── Exports ──────────────────────────────────────────────────────────────────\n\nmodule.exports = {\n reconcile,\n reconcileChildren,\n reconcileElement,\n diffProps,\n diffStyle,\n diffEventHandlers,\n diffRef,\n diffDangerouslySetInnerHTML,\n isSameType,\n buildKeyMap,\n normalizeChildren,\n memo,\n shallowEqual,\n createFiber,\n createDiffOp,\n longestIncreasingSubsequence,\n shouldYield,\n INSERT,\n MOVE,\n REMOVE,\n UPDATE,\n REPLACE,\n SKIP,\n REORDER,\n RECONCILE_PRIORITY,\n};\n","/**\n * render - DOM Rendering Engine\n * ElementDrawing Framework - Converts virtual DOM to real DOM nodes with\n * attribute setting, style application, event delegation, ref assignment,\n * portal rendering, suspense, error boundaries, hydration, SVG/MathML\n * namespace support, and concurrent rendering hints.\n */\n\n'use strict';\n\nconst {\n REACT_FRAGMENT_TYPE, REACT_PORTAL_TYPE, REACT_SUSPENSE_TYPE,\n REACT_LAZY_TYPE, REACT_STRICT_MODE_TYPE, REACT_ERROR_BOUNDARY_TYPE,\n isValidElement,\n} = require('./createElement');\n\n// ─── Constants ────────────────────────────────────────────────────────────────\n\nconst TEXT_NODE_TYPE = '#text';\nconst COMMENT_NODE_TYPE = '#comment';\n\nconst SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\nconst MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n\nconst VOID_ELEMENTS = new Set([\n 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',\n 'link', 'meta', 'param', 'source', 'track', 'wbr',\n]);\n\nconst SVG_TAGS = new Set([\n 'svg', 'animate', 'animateMotion', 'animateTransform', 'circle', 'clipPath',\n 'defs', 'desc', 'ellipse', 'feBlend', 'feColorMatrix', 'feComponentTransfer',\n 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap',\n 'feDistantLight', 'feDropShadow', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG',\n 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology',\n 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile',\n 'feTurbulence', 'filter', 'foreignObject', 'g', 'image', 'line', 'linearGradient',\n 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline',\n 'radialGradient', 'rect', 'set', 'stop', 'switch', 'symbol', 'text', 'textPath',\n 'tspan', 'use', 'view',\n]);\n\nconst BOOLEAN_ATTRIBUTES = new Set([\n 'allowFullScreen', 'async', 'autofocus', 'autoPlay', 'checked', 'controls',\n 'default', 'disabled', 'enableRemotePlayback', 'formNoValidate', 'hidden',\n 'loop', 'multiple', 'muted', 'noModule', 'noValidate', 'open', 'playsInline',\n 'readOnly', 'required', 'reversed', 'scoped', 'seamless', 'selected',\n 'itemScope',\n]);\n\nconst PROPERTY_ATTRIBUTES = new Set([\n 'value', 'checked', 'selected', 'innerHTML', 'textContent',\n 'defaultValue', 'defaultChecked',\n]);\n\n// Event delegation map\nconst eventDelegationMap = new Map();\nlet rootContainer = null;\n\n// ─── DOM Creation ─────────────────────────────────────────────────────────────\n\n/**\n * Create a real DOM element from a virtual element type.\n * @param {string} type\n * @param {Object} props\n * @param {string|null} namespace\n * @returns {HTMLElement|SVGElement}\n */\nfunction createDOMElement(type, props, namespace) {\n let domNode;\n\n if (namespace === SVG_NAMESPACE || SVG_TAGS.has(type)) {\n domNode = document.createElementNS(SVG_NAMESPACE, type);\n } else if (namespace === MATH_NAMESPACE) {\n domNode = document.createElementNS(MATH_NAMESPACE, type);\n } else {\n domNode = document.createElement(type);\n }\n\n return domNode;\n}\n\n/**\n * Create a text node.\n * @param {string} text\n * @returns {Text}\n */\nfunction createTextNode(text) {\n return document.createTextNode(text);\n}\n\n/**\n * Create a comment node.\n * @param {string} text\n * @returns {Comment}\n */\nfunction createCommentNode(text) {\n return document.createComment(text);\n}\n\n/**\n * Create a document fragment.\n * @returns {DocumentFragment}\n */\nfunction createDocumentFragment() {\n return document.createDocumentFragment();\n}\n\n// ─── Attribute Setting ────────────────────────────────────────────────────────\n\n/**\n * Set an attribute on a DOM element with proper handling for different types.\n * @param {HTMLElement} domNode\n * @param {string} name\n * @param {*} value\n */\nfunction setAttribute(domNode, name, value) {\n if (value === null || value === undefined || value === false) {\n removeAttribute(domNode, name);\n return;\n }\n\n // Boolean attributes\n if (BOOLEAN_ATTRIBUTES.has(name)) {\n if (value === true) {\n domNode.setAttribute(name.toLowerCase(), '');\n domNode[name] = true;\n } else {\n removeAttribute(domNode, name);\n domNode[name] = false;\n }\n return;\n }\n\n // Property attributes\n if (PROPERTY_ATTRIBUTES.has(name)) {\n domNode[name] = value;\n return;\n }\n\n // className -> class\n if (name === 'className') {\n domNode.className = value;\n return;\n }\n\n // htmlFor -> for\n if (name === 'htmlFor') {\n domNode.setAttribute('for', value);\n return;\n }\n\n // tabIndex\n if (name === 'tabIndex') {\n domNode.tabIndex = value;\n return;\n }\n\n // Style object\n if (name === 'style') {\n applyStyle(domNode, value);\n return;\n }\n\n // Event handlers\n if (name.startsWith('on')) {\n setEventHandler(domNode, name, value);\n return;\n }\n\n // Data attributes\n if (name.startsWith('data-')) {\n domNode.setAttribute(name, value);\n return;\n }\n\n // ARIA attributes\n if (name.startsWith('aria-')) {\n domNode.setAttribute(name, value);\n return;\n }\n\n // Custom element attributes\n if (name.includes('-') && !(domNode instanceof SVGElement)) {\n domNode.setAttribute(name, value);\n return;\n }\n\n // Standard attributes\n if (name in domNode) {\n try {\n domNode[name] = value;\n } catch (e) {\n domNode.setAttribute(name, value);\n }\n } else {\n domNode.setAttribute(name, value);\n }\n}\n\n/**\n * Remove an attribute from a DOM element.\n * @param {HTMLElement} domNode\n * @param {string} name\n */\nfunction removeAttribute(domNode, name) {\n if (name === 'className') {\n domNode.className = '';\n return;\n }\n\n if (name === 'style') {\n domNode.removeAttribute('style');\n domNode.style.cssText = '';\n return;\n }\n\n if (name === 'htmlFor') {\n domNode.removeAttribute('for');\n return;\n }\n\n if (BOOLEAN_ATTRIBUTES.has(name)) {\n domNode.removeAttribute(name.toLowerCase());\n domNode[name] = false;\n return;\n }\n\n if (PROPERTY_ATTRIBUTES.has(name)) {\n if (name === 'value') domNode.value = '';\n else if (name === 'checked') domNode.checked = false;\n else if (name === 'selected') domNode.selected = false;\n return;\n }\n\n if (name.startsWith('on')) {\n removeEventHandler(domNode, name);\n return;\n }\n\n try {\n domNode.removeAttribute(name);\n if (name in domNode) domNode[name] = '';\n } catch (e) {\n // Some attributes can't be removed\n }\n}\n\n/**\n * Set a property directly on a DOM element.\n */\nfunction setProperty(domNode, name, value) {\n try {\n domNode[name] = value;\n } catch (e) {\n console.warn('[render] Failed to set property \"' + name + '\":', e);\n }\n}\n\n// ─── Style Application ────────────────────────────────────────────────────────\n\n/**\n * Apply inline styles to a DOM element.\n * @param {HTMLElement} domNode\n * @param {Object|string} style\n */\nfunction applyStyle(domNode, style) {\n if (!style) {\n domNode.removeAttribute('style');\n return;\n }\n\n if (typeof style === 'string') {\n domNode.style.cssText = style;\n return;\n }\n\n if (typeof style === 'object') {\n for (const prop in style) {\n if (style.hasOwnProperty(prop)) {\n const cssProp = prop.includes('-') ? prop : camelToKebab(prop);\n domNode.style.setProperty(cssProp, style[prop]);\n }\n }\n }\n}\n\n/**\n * Convert camelCase to kebab-case.\n */\nfunction camelToKebab(str) {\n return str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\n/**\n * Apply CSS classes to a DOM element.\n */\nfunction applyClassName(domNode, className) {\n if (!className) {\n domNode.removeAttribute('class');\n return;\n }\n domNode.className = className;\n}\n\n// ─── Event Handling ───────────────────────────────────────────────────────────\n\n/**\n * Set an event handler on a DOM element.\n */\nfunction setEventHandler(domNode, name, handler) {\n const eventType = name.slice(2).toLowerCase();\n const normalizedType = normalizeEventType(eventType);\n\n const handlerKey = '__ed_handler_' + normalizedType;\n const captureHandlerKey = '__ed_capture_' + normalizedType;\n\n const isCapture = name.endsWith('Capture');\n const key = isCapture ? captureHandlerKey : handlerKey;\n\n // Remove old handler if exists\n if (domNode[key]) {\n domNode.removeEventListener(normalizedType, domNode[key], isCapture);\n }\n\n // Set new handler\n if (typeof handler === 'function') {\n domNode[key] = handler;\n domNode.addEventListener(normalizedType, handler, isCapture);\n }\n}\n\n/**\n * Remove an event handler from a DOM element.\n */\nfunction removeEventHandler(domNode, name) {\n const eventType = name.slice(2).toLowerCase();\n const normalizedType = normalizeEventType(eventType);\n const isCapture = name.endsWith('Capture');\n const key = isCapture ? '__ed_capture_' + normalizedType : '__ed_handler_' + normalizedType;\n\n if (domNode[key]) {\n domNode.removeEventListener(normalizedType, domNode[key], isCapture);\n domNode[key] = null;\n }\n}\n\n/**\n * Normalize event type names.\n */\nfunction normalizeEventType(eventType) {\n const map = {\n 'doubleclick': 'dblclick',\n 'change': 'change',\n 'input': 'input',\n 'submit': 'submit',\n 'focusin': 'focusin',\n 'focusout': 'focusout',\n };\n return map[eventType] || eventType;\n}\n\n// ─── Event Delegation ─────────────────────────────────────────────────────────\n\n/**\n * Set up event delegation on the root container.\n * Captures events at the root and dispatches to the correct handler.\n * @param {HTMLElement} container\n */\nfunction setupEventDelegation(container) {\n const delegatedEvents = ['click', 'input', 'change', 'submit', 'keydown', 'keyup', 'focus', 'blur'];\n\n delegatedEvents.forEach((eventType) => {\n container.addEventListener(eventType, function delegatedHandler(event) {\n let target = event.target;\n\n // Walk up the DOM tree to find the handler\n while (target && target !== container) {\n const handlerKey = '__ed_handler_' + eventType;\n if (target[handlerKey]) {\n try {\n target[handlerKey](event);\n } catch (error) {\n console.error('[render] Delegated event handler error:', error);\n }\n break;\n }\n target = target.parentElement;\n }\n });\n });\n}\n\n// ─── Ref Assignment ───────────────────────────────────────────────────────────\n\n/**\n * Assign a DOM node to a ref.\n */\nfunction assignRef(ref, domNode) {\n if (!ref) return;\n\n if (typeof ref === 'function') {\n try {\n ref(domNode);\n } catch (error) {\n console.error('[render] Callback ref error:', error);\n }\n } else if (typeof ref === 'object' && ref._isRef) {\n ref.current = domNode;\n } else if (typeof ref === 'object' && ref !== null) {\n ref.current = domNode;\n }\n}\n\n/**\n * Clean up a ref when an element is removed.\n */\nfunction detachRef(ref) {\n if (!ref) return;\n\n if (typeof ref === 'function') {\n try {\n ref(null);\n } catch (error) {\n console.error('[render] Detach ref error:', error);\n }\n } else if (typeof ref === 'object') {\n ref.current = null;\n }\n}\n\n// ─── Core Render Function ─────────────────────────────────────────────────────\n\n/**\n * Render a virtual DOM element into a real DOM container.\n *\n * @param {Object} vnode - Virtual DOM element\n * @param {HTMLElement} container - Target DOM container\n * @param {Function} [callback] - Called after render completes\n * @returns {HTMLElement} The rendered DOM node\n */\nfunction render(vnode, container, callback) {\n if (!container) {\n throw new Error('[render] Target container is not a DOM element');\n }\n\n if (!(container instanceof HTMLElement) && !(container instanceof DocumentFragment)) {\n throw new Error('[render] Target container must be an HTMLElement or DocumentFragment');\n }\n\n rootContainer = container;\n\n // Set up event delegation on first render\n if (!eventDelegationMap.has(container)) {\n setupEventDelegation(container);\n eventDelegationMap.set(container, true);\n }\n\n // Handle null/undefined/boolean vnodes\n if (vnode === null || vnode === undefined || typeof vnode === 'boolean') {\n while (container.firstChild) {\n container.removeChild(container.firstChild);\n }\n if (typeof callback === 'function') callback();\n return container;\n }\n\n // Render the vnode to DOM\n const domNode = renderVNode(vnode, container, null);\n\n // Clear container and insert new DOM\n while (container.firstChild) {\n container.removeChild(container.firstChild);\n }\n container.appendChild(domNode);\n\n if (typeof callback === 'function') callback();\n\n return domNode;\n}\n\n/**\n * Render a virtual DOM node to a real DOM node.\n * @param {Object} vnode\n * @param {HTMLElement} container\n * @param {string|null} namespace\n * @returns {HTMLElement|Text}\n */\nfunction renderVNode(vnode, container, namespace) {\n // Handle primitive values\n if (typeof vnode === 'string' || typeof vnode === 'number') {\n return createTextNode(String(vnode));\n }\n\n // Handle null/undefined/boolean\n if (vnode === null || vnode === undefined || typeof vnode === 'boolean') {\n return createCommentNode('empty');\n }\n\n // Handle arrays\n if (Array.isArray(vnode)) {\n const fragment = createDocumentFragment();\n vnode.forEach((child) => {\n const childNode = renderVNode(child, fragment, namespace);\n if (childNode) fragment.appendChild(childNode);\n });\n return fragment;\n }\n\n // Handle invalid vnodes\n if (typeof vnode !== 'object') {\n console.warn('[render] Invalid vnode type:', typeof vnode);\n return createCommentNode('invalid');\n }\n\n // Text node\n if (vnode.type === TEXT_NODE_TYPE) {\n return createTextNode(vnode.props.nodeValue || '');\n }\n\n // Fragment\n if (vnode.type === REACT_FRAGMENT_TYPE) {\n return renderFragment(vnode, container, namespace);\n }\n\n // Portal\n if (vnode.$$typeof === Symbol.for('elementdrawing.portal')) {\n return renderPortal(vnode, namespace);\n }\n\n // Suspense\n if (vnode.type === REACT_SUSPENSE_TYPE) {\n return renderSuspense(vnode, container, namespace);\n }\n\n // StrictMode\n if (vnode.type === REACT_STRICT_MODE_TYPE) {\n return renderStrictMode(vnode, container, namespace);\n }\n\n // Error Boundary\n if (vnode.type === REACT_ERROR_BOUNDARY_TYPE) {\n return renderErrorBoundaryVNode(vnode, container, namespace);\n }\n\n // Lazy component\n if (vnode.$$typeof === Symbol.for('elementdrawing.lazy')) {\n return renderLazyComponent(vnode, container, namespace);\n }\n\n // Function component\n if (typeof vnode.type === 'function' && !vnode.type._isClassComponent) {\n return renderFunctionComponent(vnode, container, namespace);\n }\n\n // Class component\n if (typeof vnode.type === 'function' && vnode.type._isClassComponent) {\n return renderClassComponent(vnode, container, namespace);\n }\n\n // Host element (HTML/SVG)\n if (typeof vnode.type === 'string') {\n return renderHostElement(vnode, container, namespace);\n }\n\n console.warn('[render] Unknown vnode type:', vnode.type);\n return createCommentNode('unknown');\n}\n\n// ─── Special Renderers ────────────────────────────────────────────────────────\n\nfunction renderFragment(vnode, container, namespace) {\n const fragment = createDocumentFragment();\n const children = flattenChildrenFromVNode(vnode);\n\n children.forEach((child) => {\n const childNode = renderVNode(child, fragment, namespace);\n if (childNode) fragment.appendChild(childNode);\n });\n\n return fragment;\n}\n\nfunction renderPortal(vnode, namespace) {\n const { children, containerInfo } = vnode;\n if (!containerInfo) {\n console.warn('[render] Portal requires a container element');\n return createCommentNode('portal-no-container');\n }\n\n const childNodes = Array.isArray(children) ? children : [children];\n childNodes.forEach((child) => {\n const domNode = renderVNode(child, containerInfo, namespace);\n if (domNode) containerInfo.appendChild(domNode);\n });\n\n return createCommentNode('portal');\n}\n\nfunction renderSuspense(vnode, container, namespace) {\n try {\n const children = flattenChildrenFromVNode(vnode);\n const fragment = createDocumentFragment();\n\n children.forEach((child) => {\n const childNode = renderVNode(child, fragment, namespace);\n if (childNode) fragment.appendChild(childNode);\n });\n\n return fragment;\n } catch (error) {\n // If a child suspends, render the fallback\n if (vnode.props && vnode.props.fallback) {\n return renderVNode(vnode.props.fallback, container, namespace);\n }\n return createCommentNode('suspense-error');\n }\n}\n\nfunction renderStrictMode(vnode, container, namespace) {\n // StrictMode renders children normally but enables double-invoke\n const children = flattenChildrenFromVNode(vnode);\n const fragment = createDocumentFragment();\n\n children.forEach((child) => {\n const childNode = renderVNode(child, fragment, namespace);\n if (childNode) fragment.appendChild(childNode);\n });\n\n return fragment;\n}\n\nfunction renderErrorBoundaryVNode(vnode, container, namespace) {\n try {\n const children = flattenChildrenFromVNode(vnode);\n const fragment = createDocumentFragment();\n\n children.forEach((child) => {\n const childNode = renderVNode(child, fragment, namespace);\n if (childNode) fragment.appendChild(childNode);\n });\n\n return fragment;\n } catch (error) {\n if (vnode.props && vnode.props.fallback) {\n return renderVNode(vnode.props.fallback, container, namespace);\n }\n if (vnode.props && typeof vnode.props.onError === 'function') {\n vnode.props.onError(error);\n }\n return createCommentNode('error-boundary');\n }\n}\n\nfunction renderLazyComponent(vnode, container, namespace) {\n const payload = vnode._payload || vnode.type._payload;\n if (!payload) return createCommentNode('lazy-no-payload');\n\n if (payload._status === 0) {\n // Resolved\n const Component = payload._result;\n return renderVNode(createElement(Component, vnode.props), container, namespace);\n }\n\n if (payload._status === 1) {\n // Rejected\n throw payload._result;\n }\n\n // Pending - trigger init\n if (vnode.type._init) {\n vnode.type._init(payload);\n }\n\n return createCommentNode('lazy-pending');\n}\n\nfunction renderFunctionComponent(vnode, container, namespace) {\n try {\n const { type, props } = vnode;\n const renderedVNode = type(props);\n return renderVNode(renderedVNode, container, namespace);\n } catch (error) {\n console.error('[render] Function component error:', error);\n return renderErrorFallback(error, vnode);\n }\n}\n\nfunction renderClassComponent(vnode, container, namespace) {\n try {\n const { type, props } = vnode;\n const instance = new type(props);\n instance._vnode = vnode;\n\n if (vnode.ref) {\n assignRef(vnode.ref, instance);\n }\n\n const renderedVNode = instance.render();\n return renderVNode(renderedVNode, container, namespace);\n } catch (error) {\n console.error('[render] Class component error:', error);\n return renderErrorFallback(error, vnode);\n }\n}\n\nfunction renderHostElement(vnode, container, namespace) {\n const { type, props, ref } = vnode;\n\n // Determine namespace\n let currentNamespace = namespace;\n if (type === 'svg') {\n currentNamespace = SVG_NAMESPACE;\n } else if (type === 'math') {\n currentNamespace = MATH_NAMESPACE;\n }\n\n // Create DOM element\n const domNode = createDOMElement(type, props, currentNamespace);\n\n // Apply attributes\n for (const propName in props) {\n if (!props.hasOwnProperty(propName)) continue;\n if (propName === 'children') continue;\n if (propName === 'dangerouslySetInnerHTML') continue;\n\n setAttribute(domNode, propName, props[propName]);\n }\n\n // Handle dangerouslySetInnerHTML\n if (props.dangerouslySetInnerHTML && props.dangerouslySetInnerHTML.__html) {\n domNode.innerHTML = props.dangerouslySetInnerHTML.__html;\n } else if (!VOID_ELEMENTS.has(type)) {\n // Render children\n const children = flattenChildrenFromVNode(vnode);\n children.forEach((child) => {\n const childNode = renderVNode(child, domNode, currentNamespace);\n if (childNode) domNode.appendChild(childNode);\n });\n }\n\n // Assign ref\n if (ref) {\n assignRef(ref, domNode);\n }\n\n // Store vnode reference on DOM node for reconciliation\n domNode.__ed_vnode = vnode;\n\n return domNode;\n}\n\nfunction renderErrorFallback(error, vnode) {\n const fallback = vnode.props?.fallback;\n if (fallback) {\n return renderVNode(fallback, null, null);\n }\n return createCommentNode('error: ' + error.message);\n}\n\n// ─── Hydration Support ────────────────────────────────────────────────────────\n\n/**\n * Hydrate a virtual DOM tree onto existing DOM nodes.\n *\n * @param {Object} vnode\n * @param {HTMLElement} container\n * @param {Function} [callback]\n * @returns {HTMLElement}\n */\nfunction hydrate(vnode, container, callback) {\n if (!container) {\n throw new Error('[hydrate] Target container is not a DOM element');\n }\n\n const domNode = hydrateVNode(vnode, container, container.firstChild, null);\n\n if (typeof callback === 'function') callback();\n\n return domNode;\n}\n\n/**\n * Hydrate a single virtual DOM node.\n */\nfunction hydrateVNode(vnode, parent, existingNode, namespace) {\n if (!existingNode) {\n return renderVNode(vnode, parent, namespace);\n }\n\n // Handle text nodes\n if (existingNode.nodeType === 3) { // Node.TEXT_NODE\n if (typeof vnode === 'string' || typeof vnode === 'number') {\n const text = String(vnode);\n if (existingNode.textContent !== text) {\n existingNode.textContent = text;\n }\n return existingNode;\n }\n const newNode = renderVNode(vnode, parent, namespace);\n parent.replaceChild(newNode, existingNode);\n return newNode;\n }\n\n // Handle element nodes\n if (existingNode.nodeType === 1) { // Node.ELEMENT_NODE\n if (typeof vnode === 'object' && vnode.type && typeof vnode.type === 'string' &&\n vnode.type === existingNode.tagName.toLowerCase()) {\n // Same tag - update attributes\n for (const propName in vnode.props) {\n if (propName === 'children') continue;\n setAttribute(existingNode, propName, vnode.props[propName]);\n }\n\n // Hydrate children\n const children = flattenChildrenFromVNode(vnode);\n let existingChild = existingNode.firstChild;\n\n children.forEach((childVNode) => {\n existingChild = hydrateVNode(childVNode, existingNode, existingChild, namespace);\n if (existingChild) existingChild = existingChild.nextSibling;\n });\n\n // Remove extra DOM children\n while (existingChild) {\n const next = existingChild.nextSibling;\n existingNode.removeChild(existingChild);\n existingChild = next;\n }\n\n // Store vnode reference\n existingNode.__ed_vnode = vnode;\n\n // Assign ref\n if (vnode.ref) {\n assignRef(vnode.ref, existingNode);\n }\n\n return existingNode;\n }\n\n // Different tag - replace\n const newNode = renderVNode(vnode, parent, namespace);\n parent.replaceChild(newNode, existingNode);\n return newNode;\n }\n\n return renderVNode(vnode, parent, namespace);\n}\n\n// ─── Utility ──────────────────────────────────────────────────────────────────\n\nfunction flattenChildrenFromVNode(vnode) {\n if (!vnode || !vnode.props || !vnode.props.children) return [];\n const children = vnode.props.children;\n if (Array.isArray(children)) return children;\n return [children];\n}\n\n/**\n * Unmount a rendered tree from a container.\n * @param {HTMLElement} container\n */\nfunction unmountContainer(container) {\n if (!container) return;\n\n // Detach refs and clean up\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT);\n let node;\n while ((node = walker.nextNode())) {\n if (node.__ed_vnode && node.__ed_vnode.ref) {\n detachRef(node.__ed_vnode.ref);\n }\n delete node.__ed_vnode;\n }\n\n // Remove all children\n while (container.firstChild) {\n container.removeChild(container.firstChild);\n }\n\n eventDelegationMap.delete(container);\n}\n\n// ─── Exports ──────────────────────────────────────────────────────────────────\n\nmodule.exports = {\n render,\n hydrate,\n unmountContainer,\n createDOMElement,\n createTextNode,\n createCommentNode,\n createDocumentFragment,\n setAttribute,\n removeAttribute,\n setProperty,\n applyStyle,\n applyClassName,\n setEventHandler,\n removeEventHandler,\n setupEventDelegation,\n assignRef,\n detachRef,\n renderVNode,\n hydrateVNode,\n camelToKebab,\n normalizeEventType,\n VOID_ELEMENTS,\n SVG_TAGS,\n BOOLEAN_ATTRIBUTES,\n SVG_NAMESPACE,\n MATH_NAMESPACE,\n};\n","module.exports = require(\"core-js-pure/stable/instance/includes\");","'use strict';\nvar parent = require('../../stable/object/define-property');\n\nmodule.exports = parent;\n","'use strict';\nvar parent = require('../../stable/symbol');\n\nrequire('../../modules/esnext.function.metadata');\nrequire('../../modules/esnext.symbol.async-dispose');\nrequire('../../modules/esnext.symbol.dispose');\nrequire('../../modules/esnext.symbol.metadata');\n\nmodule.exports = parent;\n","'use strict';\nvar parent = require('../../stable/symbol/iterator');\n\nmodule.exports = parent;\n","'use strict';\nvar parent = require('../../stable/symbol/to-primitive');\n\nmodule.exports = parent;\n","'use strict';\nrequire('../../../modules/es.array.includes');\nvar getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');\n\nmodule.exports = getBuiltInPrototypeMethod('Array', 'includes');\n","'use strict';\nvar isPrototypeOf = require('../../internals/object-is-prototype-of');\nvar arrayMethod = require('../array/virtual/includes');\nvar stringMethod = require('../string/virtual/includes');\n\nvar ArrayPrototype = Array.prototype;\nvar StringPrototype = String.prototype;\n\nmodule.exports = function (it) {\n var own = it.includes;\n if (it === ArrayPrototype || (isPrototypeOf(ArrayPrototype, it) && own === ArrayPrototype.includes)) return arrayMethod;\n if (typeof it == 'string' || it === StringPrototype || (isPrototypeOf(StringPrototype, it) && own === StringPrototype.includes)) {\n return stringMethod;\n } return own;\n};\n","'use strict';\nrequire('../../modules/es.object.define-property');\nvar path = require('../../internals/path');\n\nvar Object = path.Object;\n\nvar $defineProperty = module.exports = function defineProperty(it, key, desc) {\n return Object.defineProperty(it, key, desc);\n};\n\nif (Object.defineProperty.sham) $defineProperty.sham = true;\n","'use strict';\nrequire('../../../modules/es.string.includes');\nvar getBuiltInPrototypeMethod = require('../../../internals/get-built-in-prototype-method');\n\nmodule.exports = getBuiltInPrototypeMethod('String', 'includes');\n","'use strict';\nrequire('../../modules/es.array.concat');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.symbol');\nrequire('../../modules/es.symbol.async-dispose');\nrequire('../../modules/es.symbol.async-iterator');\nrequire('../../modules/es.symbol.description');\nrequire('../../modules/es.symbol.dispose');\nrequire('../../modules/es.symbol.has-instance');\nrequire('../../modules/es.symbol.is-concat-spreadable');\nrequire('../../modules/es.symbol.iterator');\nrequire('../../modules/es.symbol.match');\nrequire('../../modules/es.symbol.match-all');\nrequire('../../modules/es.symbol.replace');\nrequire('../../modules/es.symbol.search');\nrequire('../../modules/es.symbol.species');\nrequire('../../modules/es.symbol.split');\nrequire('../../modules/es.symbol.to-primitive');\nrequire('../../modules/es.symbol.to-string-tag');\nrequire('../../modules/es.symbol.unscopables');\nrequire('../../modules/es.json.to-string-tag');\nrequire('../../modules/es.math.to-string-tag');\nrequire('../../modules/es.reflect.to-string-tag');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Symbol;\n","'use strict';\nrequire('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.string.iterator');\nrequire('../../modules/es.symbol.iterator');\nvar WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');\n\nmodule.exports = WrappedWellKnownSymbolModule.f('iterator');\n","'use strict';\nrequire('../../modules/es.date.to-primitive');\nrequire('../../modules/es.symbol.to-primitive');\nvar WrappedWellKnownSymbolModule = require('../../internals/well-known-symbol-wrapped');\n\nmodule.exports = WrappedWellKnownSymbolModule.f('toPrimitive');\n","'use strict';\nvar parent = require('../../actual/object/define-property');\n\nmodule.exports = parent;\n","'use strict';\nvar parent = require('../../actual/symbol');\nrequire('../../modules/esnext.symbol.is-registered-symbol');\nrequire('../../modules/esnext.symbol.is-well-known-symbol');\nrequire('../../modules/esnext.symbol.custom-matcher');\nrequire('../../modules/esnext.symbol.observable');\n// TODO: Remove from `core-js@4`\nrequire('../../modules/esnext.symbol.is-registered');\nrequire('../../modules/esnext.symbol.is-well-known');\nrequire('../../modules/esnext.symbol.matcher');\nrequire('../../modules/esnext.symbol.metadata-key');\nrequire('../../modules/esnext.symbol.pattern-match');\nrequire('../../modules/esnext.symbol.replace-all');\n\nmodule.exports = parent;\n","'use strict';\nvar parent = require('../../actual/symbol/iterator');\n\nmodule.exports = parent;\n","'use strict';\nvar parent = require('../../actual/symbol/to-primitive');\n\nmodule.exports = parent;\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar isPossiblePrototype = require('../internals/is-possible-prototype');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (isPossiblePrototype(argument)) return argument;\n throw new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","'use strict';\nmodule.exports = function () { /* empty */ };\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n if (length === 0) return !IS_INCLUDES && -1;\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE === 1;\n var IS_FILTER = TYPE === 2;\n var IS_SOME = TYPE === 3;\n var IS_EVERY = TYPE === 4;\n var IS_FIND_INDEX = TYPE === 6;\n var IS_FILTER_REJECT = TYPE === 7;\n var NO_HOLES = TYPE === 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var length = lengthOfArrayLike(self);\n var boundFunction = bind(callbackfn, that);\n var index = 0;\n var resIndex = 0;\n var target = IS_MAP ? arraySpeciesCreate($this, length) : IS_FILTER || IS_FILTER_REJECT ? arraySpeciesCreate($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) createProperty(target, index, result); // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: createProperty(target, resIndex++, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: createProperty(target, resIndex++, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/environment-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n // makes no sense without proper strict mode support\n if (this !== undefined) return true;\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty([], 'length', { writable: false }).length = 1;\n } catch (error) {\n return error instanceof TypeError;\n }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n throw new $TypeError('Cannot set read only .length');\n } return O.length = length;\n} : function (O, length) {\n return O.length = length;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? $Array : C;\n};\n","'use strict';\nvar arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n return { value: value, done: done };\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\n else object[key] = value;\n};\n","'use strict';\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (target, key, value, options) {\n if (options && options.enumerable) target[key] = value;\n else createNonEnumerableProperty(target, key, value);\n return target;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n globalThis[key] = value;\n } return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n if (it > MAX_SAFE_INTEGER) throw new $TypeError('Maximum allowed index exceeded');\n return it;\n};\n","'use strict';\n// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nvar navigator = globalThis.navigator;\nvar userAgent = navigator && navigator.userAgent;\n\nmodule.exports = userAgent ? String(userAgent) : '';\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\n\nvar process = globalThis.process;\nvar Deno = globalThis.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar apply = require('../internals/function-apply');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar isCallable = require('../internals/is-callable');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar isForced = require('../internals/is-forced');\nvar path = require('../internals/path');\nvar bind = require('../internals/function-bind-context');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\n// add debugging info\nrequire('../internals/shared-store');\n\nvar wrapConstructor = function (NativeConstructor) {\n var Wrapper = function (a, b, c) {\n if (this instanceof Wrapper) {\n switch (arguments.length) {\n case 0: return new NativeConstructor();\n case 1: return new NativeConstructor(a);\n case 2: return new NativeConstructor(a, b);\n } return new NativeConstructor(a, b, c);\n } return apply(NativeConstructor, this, arguments);\n };\n Wrapper.prototype = NativeConstructor.prototype;\n return Wrapper;\n};\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var PROTO = options.proto;\n\n var nativeSource = GLOBAL ? globalThis : STATIC ? globalThis[TARGET] : globalThis[TARGET] && globalThis[TARGET].prototype;\n\n var target = GLOBAL ? path : path[TARGET] || createNonEnumerableProperty(path, TARGET, {})[TARGET];\n var targetPrototype = target.prototype;\n\n var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;\n var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;\n\n for (key in source) {\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contains in native\n USE_NATIVE = !FORCED && nativeSource && hasOwn(nativeSource, key);\n\n targetProperty = target[key];\n\n if (USE_NATIVE) if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(nativeSource, key);\n nativeProperty = descriptor && descriptor.value;\n } else nativeProperty = nativeSource[key];\n\n // export native or implementation\n sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];\n\n if (!FORCED && !PROTO && typeof targetProperty == typeof sourceProperty) continue;\n\n // bind methods to global for calling from export context\n if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, globalThis);\n // wrap global constructors for prevent changes in this version\n else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);\n // make static versions for prototype methods\n else if (PROTO && isCallable(sourceProperty)) resultProperty = uncurryThis(sourceProperty);\n // default case\n else resultProperty = sourceProperty;\n\n // add a flag to not completely full polyfills\n if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(resultProperty, 'sham', true);\n }\n\n createNonEnumerableProperty(target, key, resultProperty);\n\n if (PROTO) {\n VIRTUAL_PROTOTYPE = TARGET + 'Prototype';\n if (!hasOwn(path, VIRTUAL_PROTOTYPE)) {\n createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});\n }\n // export virtual prototype methods\n createNonEnumerableProperty(path[VIRTUAL_PROTOTYPE], key, sourceProperty);\n // export real prototype methods\n if (options.real && targetPrototype && (FORCED || !targetPrototype[key])) {\n createNonEnumerableProperty(targetPrototype, key, sourceProperty);\n }\n }\n }\n};\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-function-prototype-bind, es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = function () { /* empty */ }.bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && function something() { /* empty */ }.name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar path = require('../internals/path');\n\nmodule.exports = function (CONSTRUCTOR, METHOD) {\n var Namespace = path[CONSTRUCTOR + 'Prototype'];\n var pureMethod = Namespace && Namespace[METHOD];\n if (pureMethod) return pureMethod;\n var NativeConstructor = globalThis[CONSTRUCTOR];\n var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n return NativePrototype && NativePrototype[METHOD];\n};\n","'use strict';\nvar path = require('../internals/path');\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (variable) {\n return isCallable(variable) ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(globalThis[namespace])\n : path[namespace] && path[namespace][method] || globalThis[namespace] && globalThis[namespace][method];\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n check(typeof this == 'object' && this) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = globalThis.TypeError;\nvar WeakMap = globalThis.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) === 'Array';\n};\n","'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.test(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, [], argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true\n : value === NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nmodule.exports = function (argument) {\n return isObject(argument) || argument === null;\n};\n","'use strict';\nmodule.exports = true;\n","'use strict';\nvar isObject = require('../internals/is-object');\nvar getInternalState = require('../internals/internal-state').get;\n\nmodule.exports = function isRawJSON(O) {\n if (!isObject(O)) return false;\n var state = getInternalState(O);\n return !!state && state.type === 'RawJSON';\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) === 'RegExp');\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND && KIND in IterablePrototype) return IterablePrototype[KIND];\n\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n }\n\n return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME === 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT === VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\n/* eslint-disable es/no-json -- safe */\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n var unsafeInt = '9007199254740993';\n // eslint-disable-next-line es/no-json-rawjson -- feature detection\n var raw = JSON.rawJSON(unsafeInt);\n // eslint-disable-next-line es/no-json-israwjson -- feature detection\n return !JSON.isRawJSON(raw) || JSON.stringify(raw) !== unsafeInt;\n});\n","'use strict';\nvar isRegExp = require('../internals/is-regexp');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw new $TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n // eslint-disable-next-line no-useless-assignment -- avoid memory leak\n activeXDocument = null;\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\n/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return arraySlice(windowNames);\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && classof(it) === 'Window'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar isObject = require('../internals/is-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n requireObjectCoercible(O);\n aPossiblePrototype(proto);\n if (!isObject(O)) return O;\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\n\nvar $SyntaxError = SyntaxError;\nvar $parseInt = parseInt;\nvar fromCharCode = String.fromCharCode;\nvar at = uncurryThis(''.charAt);\nvar slice = uncurryThis(''.slice);\nvar exec = uncurryThis(/./.exec);\n\nvar codePoints = {\n '\\\\\"': '\"',\n '\\\\\\\\': '\\\\',\n '\\\\/': '/',\n '\\\\b': '\\b',\n '\\\\f': '\\f',\n '\\\\n': '\\n',\n '\\\\r': '\\r',\n '\\\\t': '\\t'\n};\n\nvar IS_4_HEX_DIGITS = /^[\\da-f]{4}$/i;\n// eslint-disable-next-line regexp/no-control-character -- safe\nvar IS_C0_CONTROL_CODE = /^[\\u0000-\\u001F]$/;\n\nmodule.exports = function (source, i) {\n var unterminated = true;\n var value = '';\n while (i < source.length) {\n var chr = at(source, i);\n if (chr === '\\\\') {\n var twoChars = slice(source, i, i + 2);\n if (hasOwn(codePoints, twoChars)) {\n value += codePoints[twoChars];\n i += 2;\n } else if (twoChars === '\\\\u') {\n i += 2;\n var fourHexDigits = slice(source, i, i + 4);\n if (!exec(IS_4_HEX_DIGITS, fourHexDigits)) throw new $SyntaxError('Bad Unicode escape at: ' + i);\n value += fromCharCode($parseInt(fourHexDigits, 16));\n i += 4;\n } else throw new $SyntaxError('Unknown escape sequence: \"' + twoChars + '\"');\n } else if (chr === '\"') {\n unterminated = false;\n i++;\n break;\n } else {\n if (exec(IS_C0_CONTROL_CODE, chr)) throw new $SyntaxError('Bad control character in string literal at: ' + i);\n value += chr;\n i++;\n }\n }\n if (unterminated) throw new $SyntaxError('Unterminated string at: ' + i);\n return { value: value, end: i };\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineProperty = require('../internals/object-define-property').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/object-to-string');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC, SET_METHOD) {\n var target = STATIC ? it : it && it.prototype;\n if (target) {\n if (!hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n if (SET_METHOD && !TO_STRING_TAG_SUPPORT) {\n createNonEnumerableProperty(target, 'toString', toString);\n }\n }\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global-this');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n version: '3.49.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2013–2025 Denis Pushkarev (zloirock.ru), 2025–2026 CoreJS Company (core-js.io). All rights reserved.',\n license: 'https://github.com/zloirock/core-js/blob/v3.49.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\nvar store = require('../internals/shared-store');\n\nmodule.exports = function (key, value) {\n return store[key] || (store[key] = value || {});\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/environment-v8-version');\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\nvar call = require('../internals/function-call');\nvar getBuiltIn = require('../internals/get-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function () {\n var Symbol = getBuiltIn('Symbol');\n var SymbolPrototype = Symbol && Symbol.prototype;\n var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n // `Symbol.prototype[@@toPrimitive]` method\n // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n // eslint-disable-next-line no-unused-vars -- required for .length\n defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n return call(valueOf, this);\n }, { arity: 1 });\n }\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar Symbol = getBuiltIn('Symbol');\nvar keyFor = Symbol.keyFor;\nvar thisSymbolValue = uncurryThis(Symbol.prototype.valueOf);\n\n// `Symbol.isRegisteredSymbol` method\n// https://tc39.es/proposal-symbol-predicates/#sec-symbol-isregisteredsymbol\nmodule.exports = Symbol.isRegisteredSymbol || function isRegisteredSymbol(value) {\n try {\n return keyFor(thisSymbolValue(value)) !== undefined;\n } catch (error) {\n return false;\n }\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isSymbol = require('../internals/is-symbol');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar Symbol = getBuiltIn('Symbol');\nvar $isWellKnownSymbol = Symbol.isWellKnownSymbol;\nvar getOwnPropertyNames = getBuiltIn('Object', 'getOwnPropertyNames');\nvar thisSymbolValue = uncurryThis(Symbol.prototype.valueOf);\nvar WellKnownSymbolsStore = shared('wks');\n\nfor (var i = 0, symbolKeys = getOwnPropertyNames(Symbol), symbolKeysLength = symbolKeys.length; i < symbolKeysLength; i++) {\n // some old engines throws on access to some keys like `arguments` or `caller`\n try {\n var symbolKey = symbolKeys[i];\n if (isSymbol(Symbol[symbolKey])) wellKnownSymbol(symbolKey);\n } catch (error) { /* empty */ }\n}\n\n// `Symbol.isWellKnownSymbol` method\n// https://tc39.es/proposal-symbol-predicates/#sec-symbol-iswellknownsymbol\n// We should patch it for newly added well-known symbols. If it's not required, this module just will not be injected\nmodule.exports = function isWellKnownSymbol(value) {\n if ($isWellKnownSymbol && $isWellKnownSymbol(value)) return true;\n try {\n var symbol = thisSymbolValue(value);\n for (var j = 0, keys = getOwnPropertyNames(WellKnownSymbolsStore), keysLength = keys.length; j < keysLength; j++) {\n // eslint-disable-next-line eqeqeq -- polyfilled symbols case\n if (WellKnownSymbolsStore[keys[j]] == symbol) return true;\n }\n } catch (error) { /* empty */ }\n return false;\n};\n","'use strict';\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\n/* eslint-disable es/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n var len = toIntegerOrInfinity(argument);\n return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n// eslint-disable-next-line unicorn/no-immediate-mutation -- ES3 syntax limitation\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.1.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL &&\n !Symbol.sham &&\n typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = globalThis.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = globalThis.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar createProperty = require('../internals/create-property');\nvar setArrayLength = require('../internals/array-set-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/environment-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport('concat');\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = lengthOfArrayLike(E);\n doesNotExceedSafeInteger(n + len);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n doesNotExceedSafeInteger(n + 1);\n createProperty(A, n++, E);\n }\n }\n setArrayLength(A, n);\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar fails = require('../internals/fails');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// FF99+ bug\nvar BROKEN_ON_SPARSE = fails(function () {\n // eslint-disable-next-line es/no-array-prototype-includes -- detection\n return !Array(1).includes();\n});\n\n// Safari 26.4- bug\nvar BROKEN_ON_SPARSE_WITH_FROM_INDEX = fails(function () {\n // eslint-disable-next-line no-sparse-arrays, es/no-array-prototype-includes -- detection\n return [, 1].includes(undefined, 1);\n});\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE || BROKEN_ON_SPARSE_WITH_FROM_INDEX }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = null;\n return createIterResultObject(undefined, true);\n }\n switch (state.kind) {\n case 'keys': return createIterResultObject(index, false);\n case 'values': return createIterResultObject(target[index], false);\n } return createIterResultObject([index, target[index]], false);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isCallable = require('../internals/is-callable');\nvar isRawJSON = require('../internals/is-raw-json');\nvar isSymbol = require('../internals/is-symbol');\nvar classof = require('../internals/classof-raw');\nvar toString = require('../internals/to-string');\nvar arraySlice = require('../internals/array-slice');\nvar parseJSONString = require('../internals/parse-json-string');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar NATIVE_RAW_JSON = require('../internals/native-raw-json');\n\nvar $String = String;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar slice = uncurryThis(''.slice);\nvar push = uncurryThis([].push);\nvar numberToString = uncurryThis(1.1.toString);\n\nvar surrogates = /[\\uD800-\\uDFFF]/g;\nvar leadingSurrogates = /^[\\uD800-\\uDBFF]$/;\nvar trailingSurrogates = /^[\\uDC00-\\uDFFF]$/;\n\nvar MARK = uid();\nvar MARK_LENGTH = MARK.length;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n var symbol = getBuiltIn('Symbol')('stringify detection');\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) !== '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) !== '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) !== '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithProperSymbolsConversion = WRONG_SYMBOLS_CONVERSION ? function (it, replacer) {\n var args = arraySlice(arguments);\n var $replacer = getReplacerFunction(replacer);\n if (!isCallable($replacer) && (it === undefined || isSymbol(it))) return; // IE8 returns string on undefined\n args[1] = function (key, value) {\n // some old implementations (like WebKit) could pass numbers as keys\n if (isCallable($replacer)) value = call($replacer, this, $String(key), value);\n if (!isSymbol(value)) return value;\n };\n return apply($stringify, null, args);\n} : $stringify;\n\nvar fixIllFormedJSON = function (match, offset, string) {\n var prev = charAt(string, offset - 1);\n var next = charAt(string, offset + 1);\n if (\n (exec(leadingSurrogates, match) && !exec(trailingSurrogates, next)) ||\n (exec(trailingSurrogates, match) && !exec(leadingSurrogates, prev))\n ) {\n return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n } return match;\n};\n\nvar getReplacerFunction = function (replacer) {\n if (isCallable(replacer)) return replacer;\n if (!isArray(replacer)) return;\n var rawLength = replacer.length;\n var keys = [];\n for (var i = 0; i < rawLength; i++) {\n var element = replacer[i];\n if (typeof element == 'string') push(keys, element);\n else if (typeof element == 'number' || classof(element) === 'Number' || classof(element) === 'String') push(keys, toString(element));\n }\n var keysLength = keys.length;\n var root = true;\n return function (key, value) {\n if (root) {\n root = false;\n return value;\n }\n if (isArray(this)) return value;\n for (var j = 0; j < keysLength; j++) if (keys[j] === key) return value;\n };\n};\n\n// `JSON.stringify` method\n// https://tc39.es/ecma262/#sec-json.stringify\n// https://github.com/tc39/proposal-json-parse-with-source\nif ($stringify) $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE || !NATIVE_RAW_JSON }, {\n stringify: function stringify(text, replacer, space) {\n var replacerFunction = getReplacerFunction(replacer);\n var rawStrings = [];\n\n var json = stringifyWithProperSymbolsConversion(text, function (key, value) {\n // some old implementations (like WebKit) could pass numbers as keys\n var v = isCallable(replacerFunction) ? call(replacerFunction, this, $String(key), value) : value;\n return !NATIVE_RAW_JSON && isRawJSON(v) ? MARK + (push(rawStrings, v.rawJSON) - 1) : v;\n }, space);\n\n if (typeof json != 'string') return json;\n\n if (ILL_FORMED_UNICODE) json = replace(json, surrogates, fixIllFormedJSON);\n\n if (NATIVE_RAW_JSON) return json;\n\n var result = '';\n var length = json.length;\n\n for (var i = 0; i < length; i++) {\n var chr = charAt(json, i);\n if (chr === '\"') {\n var end = parseJSONString(json, ++i).end - 1;\n var string = slice(json, i, end);\n result += slice(string, 0, MARK_LENGTH) === MARK\n ? rawStrings[slice(string, MARK_LENGTH)]\n : '\"' + string + '\"';\n i = end;\n } else result += chr;\n }\n\n return result;\n }\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// JSON[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-json-@@tostringtag\nsetToStringTag(globalThis.JSON, 'JSON', true);\n","'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\n// eslint-disable-next-line es/no-object-defineproperty -- safe\n$({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, {\n defineProperty: defineProperty\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar fails = require('../internals/fails');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar toObject = require('../internals/to-object');\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~stringIndexOf(\n toString(requireObjectCoercible(this)),\n toString(notARegExp(searchString)),\n arguments.length > 1 ? arguments[1] : undefined\n );\n }\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return createIterResultObject(undefined, true);\n point = charAt(string, index);\n state.index += point.length;\n return createIterResultObject(point, false);\n});\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.asyncDispose` well-known symbol\n// https://github.com/tc39/proposal-async-explicit-resource-management\ndefineWellKnownSymbol('asyncDispose');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.asyncIterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.asynciterator\ndefineWellKnownSymbol('asyncIterator');\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = globalThis.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar RangeError = globalThis.RangeError;\nvar TypeError = globalThis.TypeError;\nvar QObject = globalThis.QObject;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar fallbackDefineProperty = function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n } return O;\n};\n\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a !== 7;\n}) ? fallbackDefineProperty : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (hasOwn(AllSymbols, key)) {\n // first definition - default non-enumerable; redefinition - preserve existing state\n if (!('enumerable' in Attributes) ? !hasOwn(O, key) || (hasOwn(O, HIDDEN) && O[HIDDEN][key]) : !Attributes.enumerable) {\n if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, nativeObjectCreate(null)));\n O[HIDDEN][key] = true;\n } else {\n if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPropertyKey(V);\n var enumerable = call(nativePropertyIsEnumerable, this, P);\n if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function (O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n push(result, AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (isPrototypeOf(SymbolPrototype, this)) throw new TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n var $this = this === undefined ? globalThis : this;\n if ($this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n if (hasOwn($this, HIDDEN) && hasOwn($this[HIDDEN], tag)) $this[HIDDEN][tag] = false;\n var descriptor = createPropertyDescriptor(1, value);\n try {\n setSymbolDescriptor($this, tag, descriptor);\n } catch (error) {\n if (!(error instanceof RangeError)) throw error;\n fallbackDefineProperty($this, tag, descriptor);\n }\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n SymbolPrototype = $Symbol[PROTOTYPE];\n\n defineBuiltIn(SymbolPrototype, 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n defineBuiltIn($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n definePropertiesModule.f = $defineProperties;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://tc39.es/ecma262/#sec-symbol.prototype.description\n defineBuiltInAccessor(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.dispose` well-known symbol\n// https://github.com/tc39/proposal-explicit-resource-management\ndefineWellKnownSymbol('dispose');\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');\n\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.for` method\n// https://tc39.es/ecma262/#sec-symbol.for\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n 'for': function (key) {\n var string = toString(key);\n if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = getBuiltIn('Symbol')(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n }\n});\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.hasInstance` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.hasinstance\ndefineWellKnownSymbol('hasInstance');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.isConcatSpreadable` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.isconcatspreadable\ndefineWellKnownSymbol('isConcatSpreadable');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.symbol.constructor');\nrequire('../modules/es.symbol.for');\nrequire('../modules/es.symbol.key-for');\nrequire('../modules/es.json.stringify');\nrequire('../modules/es.object.get-own-property-symbols');\n","'use strict';\nvar $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\nvar isSymbol = require('../internals/is-symbol');\nvar tryToString = require('../internals/try-to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');\n\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.keyFor` method\n// https://tc39.es/ecma262/#sec-symbol.keyfor\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw new TypeError(tryToString(sym) + ' is not a symbol');\n if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n }\n});\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.matchAll` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.matchall\ndefineWellKnownSymbol('matchAll');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.match` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.match\ndefineWellKnownSymbol('match');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.replace` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.replace\ndefineWellKnownSymbol('replace');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.search` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.search\ndefineWellKnownSymbol('search');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.species` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.species\ndefineWellKnownSymbol('species');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.split` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.split\ndefineWellKnownSymbol('split');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\n\n// `Symbol.toPrimitive` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.toprimitive\ndefineWellKnownSymbol('toPrimitive');\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n// `Symbol.toStringTag` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.tostringtag\ndefineWellKnownSymbol('toStringTag');\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag(getBuiltIn('Symbol'), 'Symbol');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.unscopables` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.unscopables\ndefineWellKnownSymbol('unscopables');\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar METADATA = wellKnownSymbol('metadata');\nvar FunctionPrototype = Function.prototype;\n\n// Function.prototype[@@metadata]\n// https://github.com/tc39/proposal-decorator-metadata\nif (FunctionPrototype[METADATA] === undefined) {\n defineProperty(FunctionPrototype, METADATA, {\n value: null\n });\n}\n","'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.symbol.async-dispose');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.customMatcher` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('customMatcher');\n","'use strict';\n// TODO: Remove from `core-js@4`\nrequire('../modules/es.symbol.dispose');\n","'use strict';\nvar $ = require('../internals/export');\nvar isRegisteredSymbol = require('../internals/symbol-is-registered');\n\n// `Symbol.isRegisteredSymbol` method\n// https://tc39.es/proposal-symbol-predicates/#sec-symbol-isregisteredsymbol\n$({ target: 'Symbol', stat: true }, {\n isRegisteredSymbol: isRegisteredSymbol\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isRegisteredSymbol = require('../internals/symbol-is-registered');\n\n// `Symbol.isRegistered` method\n// obsolete version of https://tc39.es/proposal-symbol-predicates/#sec-symbol-isregisteredsymbol\n$({ target: 'Symbol', stat: true, name: 'isRegisteredSymbol' }, {\n isRegistered: isRegisteredSymbol\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isWellKnownSymbol = require('../internals/symbol-is-well-known');\n\n// `Symbol.isWellKnownSymbol` method\n// https://tc39.es/proposal-symbol-predicates/#sec-symbol-iswellknownsymbol\n// We should patch it for newly added well-known symbols. If it's not required, this module just will not be injected\n$({ target: 'Symbol', stat: true, forced: true }, {\n isWellKnownSymbol: isWellKnownSymbol\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isWellKnownSymbol = require('../internals/symbol-is-well-known');\n\n// `Symbol.isWellKnown` method\n// obsolete version of https://tc39.es/proposal-symbol-predicates/#sec-symbol-iswellknownsymbol\n// We should patch it for newly added well-known symbols. If it's not required, this module just will not be injected\n$({ target: 'Symbol', stat: true, name: 'isWellKnownSymbol', forced: true }, {\n isWellKnown: isWellKnownSymbol\n});\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.matcher` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('matcher');\n","'use strict';\n// TODO: Remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.metadataKey` well-known symbol\n// https://github.com/tc39/proposal-decorator-metadata\ndefineWellKnownSymbol('metadataKey');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.metadata` well-known symbol\n// https://github.com/tc39/proposal-decorators\ndefineWellKnownSymbol('metadata');\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.observable` well-known symbol\n// https://github.com/tc39/proposal-observable\ndefineWellKnownSymbol('observable');\n","'use strict';\n// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.patternMatch` well-known symbol\n// https://github.com/tc39/proposal-pattern-matching\ndefineWellKnownSymbol('patternMatch');\n","'use strict';\n// TODO: remove from `core-js@4`\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\ndefineWellKnownSymbol('replaceAll');\n","'use strict';\nrequire('../modules/es.array.iterator');\nvar DOMIterables = require('../internals/dom-iterables');\nvar globalThis = require('../internals/global-this');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n setToStringTag(globalThis[COLLECTION_NAME], COLLECTION_NAME);\n Iterators[COLLECTION_NAME] = Iterators.Array;\n}\n","'use strict';\nvar parent = require('../../es/instance/includes');\n\nmodule.exports = parent;\n","'use strict';\nvar parent = require('../../es/object/define-property');\n\nmodule.exports = parent;\n","'use strict';\nvar parent = require('../../es/symbol');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n","'use strict';\nvar parent = require('../../es/symbol/iterator');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n","'use strict';\nvar parent = require('../../es/symbol/to-primitive');\n\nmodule.exports = parent;\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n return defineProperty.f(target, name, descriptor);\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n globalThis[key] = value;\n } return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nvar navigator = globalThis.navigator;\nvar userAgent = navigator && navigator.userAgent;\n\nmodule.exports = userAgent ? String(userAgent) : '';\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\n\nvar process = globalThis.process;\nvar Deno = globalThis.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = function () { /* empty */ }.bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && function something() { /* empty */ }.name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\n// eslint-disable-next-line es/no-function-prototype-bind -- safe\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n check(typeof this == 'object' && this) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = globalThis.TypeError;\nvar WeakMap = globalThis.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nmodule.exports = false;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar fails = require('../internals/fails');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 'd') -> /./d and it causes SyntaxError\nvar RegExp = globalThis.RegExp;\n\nvar FLAGS_GETTER_IS_CORRECT = !fails(function () {\n var INDICES_SUPPORT = true;\n try {\n RegExp('.', 'd');\n } catch (error) {\n INDICES_SUPPORT = false;\n }\n\n var O = {};\n // modern V8 bug\n var calls = '';\n var expected = INDICES_SUPPORT ? 'dgimsy' : 'gimsy';\n\n var addGetter = function (key, chr) {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(O, key, { get: function () {\n calls += chr;\n return true;\n } });\n };\n\n var pairs = {\n dotAll: 's',\n global: 'g',\n ignoreCase: 'i',\n multiline: 'm',\n sticky: 'y'\n };\n\n if (INDICES_SUPPORT) pairs.hasIndices = 'd';\n\n for (var key in pairs) addGetter(key, pairs[key]);\n\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n var result = Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags').get.call(O);\n\n return result !== expected || calls !== expected;\n});\n\nmodule.exports = { correct: FLAGS_GETTER_IS_CORRECT };\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.hasIndices) result += 'd';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.unicodeSets) result += 'v';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global-this');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n version: '3.49.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2013–2025 Denis Pushkarev (zloirock.ru), 2025–2026 CoreJS Company (core-js.io). All rights reserved.',\n license: 'https://github.com/zloirock/core-js/blob/v3.49.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\nvar store = require('../internals/shared-store');\n\nmodule.exports = function (key, value) {\n return store[key] || (store[key] = value || {});\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/environment-v8-version');\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.1.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL &&\n !Symbol.sham &&\n typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = globalThis.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = globalThis.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar regExpFlagsDetection = require('../internals/regexp-flags-detection');\nvar regExpFlagsGetterImplementation = require('../internals/regexp-flags');\n\n// `RegExp.prototype.flags` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nif (DESCRIPTORS && !regExpFlagsDetection.correct) {\n defineBuiltInAccessor(RegExp.prototype, 'flags', {\n configurable: true,\n get: regExpFlagsGetterImplementation\n });\n\n regExpFlagsDetection.correct = true;\n}\n","import _Symbol from \"core-js-pure/features/symbol/index.js\";\nimport _Symbol$iterator from \"core-js-pure/features/symbol/iterator.js\";\nfunction _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof _Symbol && \"symbol\" == typeof _Symbol$iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof _Symbol && o.constructor === _Symbol && o !== _Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _Object$defineProperty from \"core-js-pure/features/object/define-property.js\";\nimport toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? _Object$defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import _typeof from \"./typeof.js\";\nimport _Symbol$toPrimitive from \"core-js-pure/features/symbol/to-primitive.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[_Symbol$toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = function(module) {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: function() {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(6954);\n"],"names":["root","factory","exports","module","define","amd","this","runtime","require","createElement","render","Fragment","cloneElement","createPortal","createSuspense","createStrictMode","createErrorBoundary","Suspense","StrictMode","ErrorBoundary","lazy","isValidElement","isValidElementType","isFunctionComponent","isClassComponent","countChildren","mapChildren","forEachChild","onlyChild","mergeProps","hydrate","unmountContainer","renderApp","unmountApp","initRuntime","onRuntimeInit","isRuntimeInitialized","configureRuntime","getRuntimeConfig","getRuntimeStats","registerDevToolsHandler","sendDevToolsMessage","REACT_ELEMENT_TYPE","REACT_FRAGMENT_TYPE","REACT_PORTAL_TYPE","REACT_SUSPENSE_TYPE","REACT_LAZY_TYPE","REACT_STRICT_MODE_TYPE","REACT_ERROR_BOUNDARY_TYPE","hooks","useState","useEffect","useContext","useReducer","useCallback","useMemo","useRef","useLayoutEffect","useInsertionEffect","useIsomorphicLayoutEffect","useTransition","useDeferredValue","useDebouncedCallback","useThrottledCallback","useOnceCallback","useDeepCompareCallback","useDeepCompareMemo","useDeepCompareEffect","useMemoWith","useMemoTTL","useEffectOnce","useUpdateEffect","usePrevious","usePreviousWithInit","useMutationObserver","useResizeObserver","useAutoFocus","useContextSelector","useContextObserver","createContext","useMergedContext","composeContexts","createRef","useCallbackRef","forwardRef","isForwardRef","useMergedRefs","useMeasureRef","useInViewRef","useFocusRef","useScrollRef","batchedUpdates","batchDispatches","runWithPriority","startTransition","deepEqual","shallowEqual","areDepsEqual","areDepsDeepEqual","setCurrentComponent","resetHookIndex","cleanupComponent","flushAllEffects","postRenderProcess","registerDevTools","setHookValidation","validateHookOrder","setProfiling","getComponentProfile","setStrictMode","isInStrictMode","cancelEffect","getContextVersion","getPendingEffectCounts","PRIORITY","LAYOUT_PRIORITY","configurePersistence","createLoggerMiddleware","createValidationMiddleware","createTransformMiddleware","createThrottleMiddleware","createActionCreators","createAction","invalidateMemo","invalidateAllMemos","components","Button","Card","Modal","Input","Table","Navbar","Sidebar","Form","Tabs","Accordion","Alert","Avatar","Badge","Breadcrumb","Carousel","Checkbox","Dialog","Drawer","Dropdown","Menu","Pagination","Progress","Radio","Select","Slider","Spinner","Switch","Textarea","Toast","Tooltip","Typography","dom","events","utils","animation","http","router","store","validator","VERSION","defaultConfig","version","strictMode","profiling","concurrentMode","eventDelegation","hydration","devTools","errorBoundaries","suspense","theme","locale","debug","frameworkConfig","Object","assign","configure","config","undefined","componentRegistry","Map","registerComponent","name","component","trim","console","error","set","getRegisteredComponents","Array","from","keys","pluginRegistry","globalErrorHandler","getConfig","resetConfig","unregisterComponent","delete","getRegisteredComponent","get","usePlugin","plugin","options","install","has","warn","api","uninstallPlugin","entry","uninstall","isPluginInstalled","setErrorHandler","handler","handleError","source","handlerError","setDebugMode","enabled","log","isDebugMode","getFrameworkInfo","registeredComponents","installedPlugins","initialized","rafId","rafCallbacks","requestFrame","callback","id","wrapped","time","window","requestAnimationFrame","cancelFrame","cancelAnimationFrame","easing","linear","t","easeIn","easeOut","Math","pow","easeInOut","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","bounce","n1","d1","elastic","sin","PI","back","c1","expo","circ","sqrt","spring","stiffness","damping","omega","zeta","omegaD","exp","cos","tween","to","duration","easeFn","onUpdate","onComplete","startTime","isPlaying","currentValue","tick","now","elapsed","rawProgress","min","progress","play","pause","reset","getCurrentValue","cancelAllFrames","forEach","cb","clear","createTimeline","animations","add","anim","push","delay","performance","allComplete","localTime","fromTo","stagger","targets","map","target","i","value","mass","velocity","initialVelocity","lastTime","step","dt","displacement","abs","setVelocity","v","keyframe","frames","keyframes","sort","a","b","offset","interpolate","length","lower","upper","range","localProgress","easedProgress","scrollAnimate","el","onProgress","start","end","update","rect","getBoundingClientRect","viewportHeight","innerHeight","elementProgress","top","height","max","addEventListener","passive","removeEventListener","intersectionAnimate","IntersectionObserver","onEnter","observer","entries","isIntersecting","onExit","threshold","observe","disconnect","createQueue","queue","isRunning","runNext","shift","animFn","sequence","anims","reduce","promise","then","Promise","resolve","originalComplete","parallel","all","cssTransition","property","easingName","style","transition","cssAnimate","fill","e","animationName","cssAnimateStop","getViewport","width","innerWidth","document","documentElement","clientWidth","clientHeight","show","display","hide","animate","finished","prop","isArray","slideUp","offsetHeight","overflow","slideDown","scrollHeight","byId","context","getElementById","byClass","className","getElementsByClassName","byTag","tagName","getElementsByTagName","query","selector","querySelector","queryAll","querySelectorAll","attrs","key","cssText","startsWith","setAttribute","eventType","slice","toLowerCase","removeAttribute","prototype","call","arguments","child","appendChild","createTextNode","String","HTMLElement","DocumentFragment","createFragment","createDocumentFragment","text","append","parent","insertAdjacentHTML","prepend","insertBefore","firstChild","newNode","referenceNode","parentNode","remove","removeChild","replace","oldEl","newEl","replaceChild","clone","deep","cloneNode","empty","wrap","wrapper","unwrap","addClass","classes","classList","apply","removeClass","toggleClass","force","toggle","hasClass","contains","setStyle","getStyle","getComputedStyle","getPropertyValue","getAttribute","setData","dataset","getData","getWidth","offsetWidth","getHeight","getOffset","pageYOffset","left","pageXOffset","getPosition","offsetTop","offsetLeft","getScroll","scrollTop","scrollLeft","scrollWidth","getRect","isVisible","visibility","opacity","isInViewport","vp","bottom","right","fadeIn","fadeOut","slideToggle","on","event","off","createEvent","type","detail","CustomEvent","bubbles","cancelable","once","onceHandler","delegate","delegateHandler","closest","dispatchEvent","fireEvent","Event","getTarget","srcElement","getRelatedTarget","relatedTarget","offsetX","offsetY","preventDefault","returnValue","stopPropagation","cancelBubble","stopImmediatePropagation","isEnter","keyCode","isEscape","isTab","isArrow","getKeyCode","which","isModifier","modifier","ctrlKey","shiftKey","altKey","metaKey","isLeftClick","button","isRightClick","getButton","getCoordinates","pageX","pageY","clientX","clientY","getTouch","index","touches","getTouchDistance","dx","dy","isPinch","isSwipe","startTouch","endTouch","absDx","absDy","distance","direction","onScroll","throttleMs","lastCall","ticking","Date","onScrollEnd","timeoutId","unbind","clearTimeout","setTimeout","getScrollDirection","prevScrollTop","currentScrollTop","diff","onResize","debounceMs","debounceResize","ResizeObserver","emitter","listeners","idx","indexOf","splice","emit","args","listenerCounts","counts","removeAllListeners","baseURL","timeout","headers","Accept","withCredentials","responseType","maxRetries","retryDelay","retryBackoff","cache","deduplicate","async","applyResponseInterceptors","response","interceptors","result","interceptor","responseInterceptors","fulfilled","rejected","pendingRequests","HttpClient","requestInterceptors","useRequest","useResponse","ejectRequest","ejectResponse","createInterceptorManager","_authToken","_authHeader","_authPrefix","setAuthToken","token","header","prefix","clearAuthToken","_buildURL","url","params","fullURL","searchParams","URLSearchParams","qs","toString","_includesInstanceProperty","_buildHeaders","_request","self","attempt","execute","controller","AbortController","abort","signal","fetchConfig","method","credentials","body","FormData","JSON","stringify","fetch","ok","Error","status","statusText","retry","_parseResponse","json","blob","arrayBuffer","formData","request","applyRequestInterceptors","generateRequestKey","requestFn","finally","deduplicateRequest","post","data","put","patch","head","upload","reject","xhr","XMLHttpRequest","open","setRequestHeader","onprogress","lengthComputable","loaded","total","onload","parse","responseText","onerror","ontimeout","send","download","createHttpClient","createRoute","path","meta","redirect","beforeEnter","children","props","_regex","_paramNames","compilePath","paramNames","regexStr","_","paramName","endsWith","regex","RegExp","matchPath","pattern","exact","match","decodeURIComponent","matchedLength","isExact","matchRoute","routes","route","childMatch","parseQuery","split","pair","val","decoded","stringifyQuery","filter","k","encodeURIComponent","join","Router","currentRoute","currentParams","currentQuery","beforeEachGuards","afterEachGuards","_listeners","_mode","mode","_base","base","_transition","_namedRoutes","r","addRoute","_onPopState","bind","buildPath","routeConfig","removeRoute","findIndex","_navigate","go","history","forward","pushByName","action","fullPath","toRoute","fromRoute","guard","pushState","replaceState","location","hash","parsedPath","_parseFullPath","_notifyListeners","pathname","beforeEach","afterEach","loader","cachedComponent","default","isActive","currentPath","onRouteChange","stop","createRouter","Store","_state","state","deepClone","_getters","_mutations","_actions","_modules","_subscribers","_middleware","_watchers","_strict","strict","_history","_historyIndex","_maxHistory","maxHistory","_isCommitting","_persistence","persistence","getters","mutations","actions","modules","registerModule","middleware","m","use","_loadPersistedState","_saveSnapshot","obj","getTime","flags","WeakMap","getState","getGetter","getter","registerGetter","commit","payload","mutation","mw","beforeMutation","prevState","sub","afterMutation","_persistState","_notifyWatchers","registerMutation","dispatch","beforeAction","res","afterAction","catch","actionError","registerAction","subscribe","subscriber","watch","watchers","newState","oldVal","newVal","is","storage","serialized","serialize","setItem","getItem","saved","deserialize","snapshot","timestamp","restore","undo","redo","canUndo","canRedo","namespacedState","moduleContext","p","unregisterModule","getDevToolsInfo","createStore","isString","isObject","isDate","isNaN","isRegExp","isElement","SVGElement","isInteger","Number","values","fromEntries","unique","arr","Set","shuffle","j","floor","random","tmp","camelCase","str","c","toUpperCase","formatNumber","num","decimals","sep","parts","toFixed","sum","hexToRgb","hex","n","parseInt","g","rgbToHex","round","padStart","isNumber","isBoolean","isFunction","isNull","isUndefined","isPromise","isPlainObject","isNil","isFiniteNum","isFinite","deepMerge","shallowMerge","pick","hasOwnProperty","omit","keySet","defaultValue","current","isEmpty","isEqual","every","aKeys","bKeys","flattenObject","flatten","depth","flat","Infinity","chunk","size","groupBy","groups","item","sortBy","order","aVal","bVal","cmp","filterBy","findBy","find","countBy","partition","predicate","pass","fail","zip","arrays","len","unzip","difference","x","intersection","union","concat","sample","capitalize","charAt","kebabCase","snakeCase","pascalCase","truncate","suffix","padEnd","chars","re","repeat","template","escapeHtml","unescapeHtml","formatCurrency","symbol","clamp","randomInt","f","ceil","avg","percent","isBetween","lo","hi","lerp","d","debounce","fn","timer","debounced","ctx","cancel","flush","throttle","limit","memoize","resolver","memoized","called","curry","arity","curried","compose","fns","reduceRight","pipe","partial","preset","noop","identity","formatDate","date","format","pad","tokens","YYYY","getFullYear","MM","getMonth","DD","getDate","HH","getHours","mm","getMinutes","ss","getSeconds","parseDate","o","y","substr","mo","addDays","days","setDate","diffDays","isToday","toDateString","isWeekend","day","getDay","getWeek","UTC","setUTCDate","getUTCDate","getUTCDay","getUTCFullYear","getQuarter","hexToHsl","rn","gn","bn","h","s","l","hslToHex","color","lighten","amount","darken","alpha","isValidColor","test","opt","Option","parseUrl","URL","buildUrl","getQueryParam","href","setQueryParam","u","getHash","setHash","rules","required","minLength","maxLength","minVal","maxVal","email","numeric","integer","alphaNumeric","phone","creditCard","cleaned","alternate","custom","validatorFn","defaultMessages","getMessage","ruleName","customMessages","createFieldValidator","fieldRules","transform","allValues","errors","ruleConfig","rule","ruleParams","customMessage","message","ruleFn","createFormValidator","schema","fieldValidators","crossFieldValidators","fieldName","fieldConfig","crossField","fields","validateField","validate","valid","crossVal","validateAsync","promises","validateFirst","firstErrors","sanitizers","escape","normalize","stripHtml","toNumber","toDate","toBoolean","Boolean","maxLen","crossFieldRules","field1","field2","different","requiredIf","field","conditionField","greaterThan","and","validators","or","not","when","condition","asyncValidator","asyncFn","builder","msg","build","formSchema","coerce","ED","AccordionItem","title","icon","expandIcon","disabled","expanded","onToggle","itemKey","extra","showArrow","destroyInactive","forceRender","animated","headerClasses","contentClasses","defaultExpandIcon","viewBox","stroke","strokeLinecap","strokeLinejoin","strokeWidth","headerContent","onClick","handleToggle","onKeyDown","role","tabIndex","items","multiple","defaultActiveKey","activeKey","onChange","bordered","ghost","accordion","internalActiveKeys","isOpen","newKeys","sizeClasses","sm","md","lg","accordionClasses","wrapperClasses","content","childKey","displayName","Item","ALERT_VARIANTS","info","container","close","success","warning","danger","ALERT_ICONS","variant","closable","onClose","showIcon","description","banner","autoDismiss","onDismiss","rounded","outlined","currentType","variantStyle","containerClasses","iconElement","contentElement","actionElement","closeElement","progressBar","_objectSpread","position","VARIANTS","AVATAR_SIZES","xs","indicator","xl","SHAPE_CLASSES","circle","square","STATUS_COLORS","online","offline","away","busy","doNotDisturb","BG_COLORS","getColorFromName","charCodeAt","src","alt","shape","statusColor","onError","bgColor","textColor","borderColor","boxShadow","draggable","loading","fit","sizeConfig","shapeClass","statusIndicator","getInitials","AvatarGroup","maxCount","overlap","maxStyle","onMaxClick","childArray","displayChildren","remaining","groupClasses","overflowAvatar","styledChildren","overlapStyle","zIndex","Group","SIZES","SHAPES","BADGE_VARIANTS","primary","secondary","outline","BADGE_SIZES","DOT_SIZES","POSITION_CLASSES","count","overflowCount","dot","showZero","hidden","standalone","maxNumber","processing","displayCount","shouldShow","badgeClasses","badgeStyle","backgroundColor","marginTop","marginRight","badgeContent","badgeElement","BreadcrumbItem","active","separator","dropdownItems","onDropdownClick","itemClasses","dropdownElement","label","separatorIcon","maxItems","renderItem","separatorElement","allItems","isLast","displayItems","overflowItems","isOverflow","breadcrumbElements","rendered","renderBreadcrumbItem","BUTTON_VARIANTS","link","BUTTON_SIZES","ICON_SIZES","loadingText","iconRight","ripple","fullWidth","htmlType","onMouseEnter","onMouseLeave","onFocus","onBlur","autoFocus","ariaLabel","ariaDisabled","block","isDanger","isDisabled","iconSizeClass","baseClasses","spinnerElement","xmlns","cx","cy","iconRightElement","rippleContainer","buttonChildren","buttonProps","rel","CARD_SHADOWS","none","CardHeader","subtitle","CardBody","padding","CardFooter","align","alignClass","center","between","shadow","hoverable","clickable","cover","horizontal","small","large","coverElement","loadingOverlay","cardProps","Header","Body","Footer","SHADOWS","CarouselSlide","autoplay","autoplayInterval","dots","arrows","lazyLoad","effect","thumbnails","keyboard","loop","currentIndex","pauseOnHover","showIndicator","indicatorPosition","prevIcon","nextIcon","dotIcon","onSlideClick","fade","speed","currentEffect","slides","thumbnail","handlePrev","newIndex","handleNext","defaultPrevIcon","defaultNextIcon","arrowPrev","arrowNext","dotsElement","thumbnailElement","slide","slidesContainer","Slide","CHECKBOX_SIZES","box","CHECKBOX_COLORS","blue","checked","hover","green","red","yellow","purple","gray","defaultChecked","indeterminate","classNameLabel","wrapperClassName","colorConfig","isChecked","boxClasses","checkIcon","labelContent","labelClasses","ref","CheckboxGroup","directionClasses","vertical","optionElements","option","_e$target$checked","_e$target","handleChange","optionValue","newValue","COLORS","DIALOG_TYPES","confirm","iconBg","alert","prompt","visible","okText","cancelText","onOk","onCancel","confirmLoading","showCancel","closeOnBackdrop","closeOnEscape","backdrop","footer","inputProps","inputValue","onInputChange","okButtonProps","cancelButtonProps","focusTrap","afterClose","maskClosable","centered","dialogType","titleElement","promptInput","cancelButton","okButtonClass","okButton","footerElement","currentTarget","focusable","first","last","activeElement","focus","maxWidth","TYPES","DRAWER_POSITIONS","defaultSize","resizeClass","DRAWER_SIZES","full","overlay","overlayOpacity","closeOnOverlay","headerStyle","bodyStyle","footerStyle","resizable","nested","destroyOnClose","placement","mask","afterOpenChange","widthProp","pos","drawerWidth","drawerHeight","isHorizontal","drawerClasses","drawerStyle","headerElement","bodyElement","resizeHandle","overlayElement","handleOverlayClick","POSITIONS","DropdownItem","shortcut","divided","selected","shortcutElement","labelElement","descriptionElement","contentArea","trigger","menuClassName","menuStyle","defaultOpen","onOpenChange","onSelect","searchable","searchPlaceholder","onSearch","searchValue","emptyText","maxHeight","arrow","closeOnSelect","closeOnOutsideClick","renderMenu","placementClasses","searchElement","placeholder","menuItems","handleItemClick","menuContent","overflowY","triggerEvents","onContextMenu","menuEl","_focusable$nextIdx","currentIdx","FormItem","labelFor","labelAlign","labelWidth","helpText","layout","colon","tooltip","noStyle","htmlFor","flexShrink","messageElement","extraElement","FormGroup","collapsible","collapsed","defaultCollapsed","requiredMark","onSubmit","onValuesChange","initialValues","validateMessages","showReset","resetText","submitText","onReset","formClasses","INPUT_SIZES","VALIDATION_STATES","VALIDATION_ICONS","validationState","prefixIcon","suffixIcon","clearable","readonly","floatingLabel","helperText","errorMessage","successMessage","warningMessage","showCount","allowClear","onClear","onInput","onKeyUp","onKeyPress","inputClassName","inputStyle","autoComplete","rows","sizeProp","borderRadius","currentState","sizeClass","stateClass","hasPrefix","hasSuffix","clearButton","prefixElement","suffixElement","charCount","inputElement","readOnly","floatingLabelElement","STATES","MenuItem","indent","compact","level","paddingLeft","MenuGroup","MenuDivider","SubMenu","selectedKey","expandedKeys","onExpand","inlineCollapsed","selectable","defaultSelectedKey","defaultOpenKeys","menuClasses","renderItems","divider","group","Divider","MODAL_SIZES","ANIMATIONS","enter","leave","zoom","slideLeft","slideRight","ModalHeader","ModalBody","scrollable","ModalFooter","backdropClassName","portal","portalTarget","maskStyle","backdropClasses","modalClasses","modalContent","_userName$charAt","brand","brandHref","brandIcon","links","sticky","fixed","transparent","colored","dark","search","notifications","onNotificationClick","userMenu","userName","userAvatar","userMenuItems","onUserMenuClick","mobileMenu","mobileOpen","onMobileToggle","onMobileClose","rightContent","leftContent","centerContent","textClass","navClasses","brandElement","linkElements","cidx","notificationElement","userMenuElement","hamburgerElement","mobileMenuOverlay","mobileMenuPanel","_link$onClick","margin","pageSize","onPageSizeChange","showQuickJumper","showSizeChanger","showTotal","pageSizeOptions","simple","siblingCount","boundaryCount","hideOnSinglePage","showPrevNextJumpers","showFirstLast","showTitle","itemRender","jumpPrevIcon","jumpNextIcon","totalPages","btn","select","jumper","firstButton","prevButton","pageButtons","generatePages","startPages","endPages","siblingsStart","siblingsEnd","page","pageButton","nextButton","lastButton","sizeChanger","totalDisplay","PROGRESS_COLORS","cyan","orange","SIZE_CONFIGS","barHeight","circleSize","circleStroke","fontSize","ProgressBar","showLabel","striped","trailColor","steps","clampedPercent","stepWidth","isFilled","barClasses","fillClasses","backgroundImage","backgroundSize","ProgressCircle","gapDegree","gapPosition","isDashboard","effectiveGap","radius","circumference","strokeDashoffset","rotation","dashArray","statusIcon","strokeDasharray","Bar","Circle","RADIO_SIZES","inner","RADIO_COLORS","buttonStyle","buttonClasses","circleClasses","innerDot","RadioGroup","optionType","isButtonStyle","SELECT_SIZES","optionClasses","OptionGroup","tags","dropdownClassName","dropdownStyle","controlledOpen","onDropdownVisibleChange","remoteSearch","creatable","onCreateOption","virtual","maxTagCount","maxTagTextLength","labelKey","valueKey","groupByKey","renderOption","renderValue","notFoundContent","filterOption","menuItemSelectedIcon","dropdownRender","isMultiple","currentError","selectedOptions","selectedLabel","triggerClasses","arrowIcon","loadingIcon","clearIcon","searchInput","tagElements","optVal","maxTagElement","displayValue","filteredOptions","grouped","some","createOption","dropdownContent","renderOptions","flatMap","groupLabel","groupOptions","optLabel","SidebarItem","badge","badgeColor","nestedItems","mini","hasChildren","badgeColorClasses","tooltipElement","nestedElement","responsive","miniWidth","floating","onItemClick","breakPoint","effectiveWidth","isDark","sidebarClasses","minWidth","SLIDER_SIZES","trackHeight","handleSize","markFont","marks","tooltipVisible","tooltipPlacement","included","reverse","logScale","onAfterChange","startPoint","trackStyle","handleStyle","railStyle","dotStyle","activeDotStyle","ariaLabelForHandle","denormalizeValue","ratio","getStepValue","normalizeValue","isRange","leftPercent","rightPercent","renderTooltip","positionClass","markElements","mark","markVal","markPercent","isInRange","dotElements","dotVal","dotPercent","renderHandle","handlePercent","onMouseDown","handleMouseDown","handleIndex","parentElement","handleMove","rawVal","steppedVal","newValues","handleUp","trackElement","railElement","sliderClasses","sliderStyle","dist0","dist1","SPINNER_SIZES","main","border","bar","SPINNER_COLORS","white","CircleSpinner","sConfig","cConfig","DotSpinner","BarSpinner","_sConfig$bar","_sConfig$bar$split$fi","fullscreen","labelPosition","customSvg","spinning","tip","renderSpinner","spinnerContent","Dot","SWITCH_SIZES","translate","SWITCH_COLORS","pink","checkedIcon","uncheckedIcon","checkedChildren","uncheckedChildren","customWidth","customHeight","beforeChange","colorClass","switchWidth","switchHeight","translateX","trackClasses","handleClasses","loadingSpinner","checkedIconElement","uncheckedIconElement","checkedText","paddingRight","uncheckedText","handleClick","switchElement","columns","selectedRowKeys","onSelectionChange","onRowClick","onRowExpand","expandedRowKeys","expandable","expandedRowRender","sortField","sortOrder","onSort","pagination","currentPage","onPageChange","showPagination","emptyIcon","rowKey","fixedHeader","showHeader","scrollX","rowClassName","onFilter","filters","cellPadding","isAllSelected","sortIcon","column","sortable","checkboxCell","expandCell","row","isExpanded","headerRow","handleSelectAll","col","newOrder","handleSort","emptyState","colSpan","paginationElement","prev","tableClasses","overflowX","renderRow","rowIndex","isSelected","rowClasses","mainRow","newSelected","handleSelectRow","colIdx","cellValue","ellipsis","TabPane","tab","tabKey","onEdit","addable","onAdd","hideAdd","tabBarExtraContent","tabBarGutter","tabBarStyle","inkBar","tabPosition","destroyInactiveTabPane","renderTabBar","currentVariant","currentActiveKey","tabItems","childPanes","allTabs","_child$props","_child$props2","_child$props3","_child$props4","_child$props5","_child$props6","variantClasses","line","nav","card","pill","currentStyle","addButton","inkBarElement","navElement","renderTab","tabClasses","closeBtn","activePane","TEXTAREA_SIZES","minRows","maxRows","autoResize","textareaClassName","textareaStyle","resize","spellCheck","cols","textareaClasses","both","handleAutoResize","minH","maxH","textareaElement","TOAST_TYPES","iconColor","bg","progressColor","TOAST_POSITIONS","ToastItem","autoClose","toastType","toastClasses","progressBarElement","ToastContainer","toasts","stacked","maxToasts","visibleToasts","toast","toastId","toastStore","Container","POSITION_STYLES","THEME_CLASSES","light","delayShow","delayHide","htmlContent","tooltipClassName","tooltipStyle","followCursor","destroyTooltipOnHide","onVisibleChange","mouseEnterDelay","mouseLeaveDelay","clickToHide","themeConfig","tooltipContent","tooltipClasses","arrowClasses","arrowElement","marginBottom","marginLeft","dangerouslySetInnerHTML","__html","THEMES","HEADING_SIZES","h1","h2","h3","h4","h5","h6","TEXT_COLORS","muted","inherit","Heading","weight","underline","headingUnderline","italic","tag","headingClasses","Text","strong","strikethrough","isDelete","code","copyable","onCopy","editable","customTag","textClasses","copyButton","navigator","clipboard","writeText","Tag","Paragraph","paragraphClasses","Title","batchEffects","useComposedCallback","setCallbackProfiling","getCallbackProfile","useMemoLRU","setMemoProfiling","getMemoProfile","processPendingPrevUpdates","usePriorityLayoutEffect","hookCallOrder","validationEnabled","devToolsCallback","useStateModule","useEffectModule","useContextModule","useReducerModule","useCallbackModule","useMemoModule","useRefModule","useLayoutEffectModule","cleanupComponentState","cleanupComponentEffects","cleanupContextSubscriptions","cleanupReducerState","cleanupMemoCache","cleanupRefs","cleanupLayoutEffects","flushLayoutEffects","_componentId","currentOrder","_prevHookOrder","prevOrder","recordHookCall","hookName","callbacks","memos","effectCounts","currentlyRenderingComponent","hookIndex","callbackProfiles","profilingEnabled","prevDeps","nextDeps","deepEqualVal","keysA","keysB","deps","validateDeps","_hooks","currentHookIndex","resolvedDeps","hook","memoizedCallback","createStableCallback","_updateCount","_callCount","_lastCalledAt","_createdAt","callCount","updateCount","lastCalledAt","initialCallback","hookIdx","stableCallback","_component$_hooks","currentCallback","_handleError","defineProperty","getCallCount","_component$_hooks2","getLastCalledAt","_component$_hooks3","getCurrentCallback","_component$_hooks4","isSameRef","other","debouncedCallback","interval","lastExecTime","throttledCallback","contextIdCounter","contextVersions","contextId","Symbol","for","subscribersKey","versionKey","_id","_valueKey","_subscribersKey","_versionKey","_defaultValue","_isContext","_displayName","Provider","Consumer","_getValue","_contextProvider","_parentComponent","_getVersion","_subscribe","_subscribeWithSelector","lastSelectedValue","oldValue","newSelectedValue","prevSelected","_notifySubscribers","providerComponent","subs","prevValue","newVersion","incrementContextVersion","_context","_unsubscribe","_lastValue","_version","unsubscribe","_scheduleReRender","_lastSelectedValue","oldSelected","selectedValue","contexts","compute","findNearestProvider","getAllContextValues","EFFECT_TYPES","PASSIVE","LAYOUT","INSERTION","effectQueue","layoutEffectQueue","insertionEffectQueue","isFlushingEffects","isFlushingLayoutEffects","isFlushingInsertionEffects","isStrictMode","deepEqualValue","executeEffect","cleanup","create","runCleanup","executeEffectStrictMode","flushPassiveEffects","_hasRunBefore","flushInsertionEffects","activeEffectGroup","useEffectImpl","effectType","_shouldRun","_isMounted","_effectId","effectIdCounter","_isFirstRender","isFirst","prevFlushingState","removed","passiveIdx","layoutIdx","insertionIdx","insertion","getComponentEffects","HIGHEST","HIGH","NORMAL","LOW","LOWEST","executeLayoutEffect","runLayoutCleanup","_priority","_executedAt","priority","node","MutationObserver","shouldFocus","sortedEffects","hasPendingLayoutEffects","getPendingLayoutEffectCount","getPendingLayoutEffectsByPriority","memoCache","memoProfiles","memoProfilingEnabled","LRUMemoCache","constructor","capacity","hits","misses","firstKey","next","getStats","hitRate","_onInvalidate","_computeCount","_valueChangedCount","initialValue","_lastComputedAt","_lruCache","computeCount","valueChangedCount","lastComputedAt","areEqual","depsChanged","ttlMs","expired","depKey","cached","lru","useMemoOnInvalidate","prevHookIdx","indices","isBatchingDispatches","pendingDispatches","scheduleUpdateCallback","startBatchDispatches","endBatchDispatches","dispatches","reducer","processedAction","applyMiddlewareChain","_actionHistory","nextState","_maxHistorySize","flushPendingDispatches","initialArg","init","initialState","persisted","_isDispatching","trackHistory","maxHistorySize","_undoStack","_redoStack","_optimisticState","_isOptimistic","targetHook","addMiddleware","batch","resetState","getHistory","_component$_hooks5","pop","_component$_hooks6","_component$_hooks7","_component$_hooks8","optimistic","optimisticState","asyncAction","_component$_hooks9","realState","setScheduleUpdateCallback","transformer","actionType","intervalMs","lastDispatch","actionMap","creators","payloadCreator","refRegistry","refLifecycle","enumerable","configurable","writable","_isDOMRef","_cleanup","_prevValues","lastNode","callbackRef","_isCallbackRef","previousValue","_pendingPrevUpdates","initPrev","ForwardedComponent","restProps","_isForwardRef","refs","mergedRef","_isRef","_isMergedRef","dimensionsRef","observerRef","contentRect","inViewRef","focusRef","scrolledRef","scrollIntoView","behavior","getRefLifecycle","isBatchingUpdates","pendingStateUpdates","stateSubscribers","IMMEDIATE","TRANSITION","IDLE","currentUpdatePriority","setCurrentPriority","updateIdCounter","startBatchUpdates","endBatchUpdates","updates","stateQueue","updateFnOrValue","_areEqual","_debug","_updateHistory","notifySubscribers","persistState","flushPendingUpdates","isTransitionActive","prevPriority","subscribeToState","componentSubs","_component$_hooks$hoo","persistenceConfig","writeFn","timerKey","_persistenceTimer","resolvedInitialState","persistedValue","loadPersistedState","_pendingUpdates","_queue","setState","lane","createStateUpdate","resetValue","getCurrent","isMounted","withPriority","asTransition","isPending","_pendingCount","timeoutMs","_deferredUpdatePending","deferredValue","_timeoutId","getCurrentComponent","isTransitionInProgress","getCurrentPriority","INSERT","MOVE","REMOVE","UPDATE","REPLACE","SKIP","REORDER","isCommitting","commitQueue","pendingLayoutEffects","pendingPassiveEffects","pendingInsertionEffects","pendingRefCleanups","pendingRefAssignments","errorRecoveryStack","snapshotBeforeMutations","commitStats","totalCommits","totalOperations","totalInsertions","totalDeletions","totalUpdates","totalReplacements","totalMoves","lastCommitTime","lastCommitDuration","commitWork","operations","batchCommit","commitStart","op","captureSnapshot","deletions","processDeletions","insertions","processInsertions","processUpdates","moves","processMoves","replacements","processReplacements","flushPendingInsertionEffects","flushPendingLayoutEffects","processRefCleanups","processRefAssignments","schedulePassiveEffects","handleErrorDuringCommit","vnode","parentVNode","domNode","createDOMNodeFromVNode","parentDOMNode","findParentDOMNode","childNodes","queueLayoutEffects","insertChildren","childDOMNode","findDOMNodeForVNode","queuePassiveEffects","cleanupChildVNodes","__ed_vnode","changes","changeType","change","innerHTML","applyPropChanges","setProperty","removeProperty","applyStyleChanges","isCapture","handlerKey","applyEventChanges","oldRef","newRef","applyRefChanges","nodeType","textContent","applyTextChanges","applyInnerHTMLChanges","fromIndex","toIndex","oldVNode","newVNode","oldDOMNode","newDOMNode","phase","effects","__ed_errorBoundary","boundary","recoveryError","walker","createTreeWalker","NodeFilter","SHOW_ELEMENT","nextNode","SHOW_TEXT","nodeValue","batchCommitWork","batchedOperations","originalCommitWork","collectOps","ops","opts","getSnapshot","getCommitStats","resetCommitStats","COMMIT_PRIORITY","REACT_PROVIDER_TYPE","REACT_CONSUMER_TYPE","RESERVED_PROPS","__self","__source","element","$$typeof","extractKey","parentKey","keyString","processRef","processProps","cleanedProps","propName","propValue","processStyleProp","processClassName","defaultProps","defaultProp","processed","cssProp","isUnitlessProperty","flattenChildren","normalizeChildren","normalized","createTextElement","assignKey","_owner","normalizedChildren","propTypes","seenKeys","hasIndexKey","validateChildKeys","_store","process","env","newProps","mergedProps","existingHandler","newHandler","containerInfo","implementation","lazyComponent","_payload","_status","_result","_init","thenable","_isClassComponent","isHostElement","isSuspenseElement","isStrictModeElement","isErrorBoundaryElement","createElementWithRenderProp","renderFn","isChildrenArray","createElementModule","renderModule","reconcileModule","commitModule","runtimeConfig","isInitialized","initCallbacks","__edHandled","__ED_DEVTOOLS__","devToolsHandlers","createDOMElement","applyStyle","applyClassName","setEventHandler","removeEventHandler","assignRef","detachRef","renderVNode","hydrateVNode","reconcile","reconcileChildren","reconcileElement","diffProps","diffStyle","diffEventHandlers","diffRef","memo","isSameType","createFiber","longestIncreasingSubsequence","prevVNode","fallback","createSuspenseWrapper","__ED_DEVTOOLS_BRIDGE__","RECONCILE_PRIORITY","createDiffOp","_isDiffOp","shouldYield","aborted","oldChildren","newChildren","newKeyMap","buildKeyMap","matchedPairs","removeIndices","insertNodes","oldIndex","oldChild","newChild","beforeIndex","old","new","keyedPairs","lis","lisSet","needsMove","stats","nodesCompared","_shouldComponentUpdate","_isMemo","_compare","_isPureComponent","propChanges","styleChanges","eventChanges","refChange","htmlChange","diffDangerouslySetInnerHTML","dp","maxIdx","unshift","oldProps","oldStyle","newStyle","oldObj","newObj","oldHtml","newHtml","objA","objB","parentDOM","oldParentVNode","newParentVNode","operationsGenerated","timeElapsed","memoComponent","parentFiber","sibling","effectTag","SVG_NAMESPACE","MATH_NAMESPACE","VOID_ELEMENTS","SVG_TAGS","BOOLEAN_ATTRIBUTES","PROPERTY_ATTRIBUTES","eventDelegationMap","rootContainer","namespace","createElementNS","createCommentNode","createComment","camelToKebab","normalizedType","normalizeEventType","captureHandlerKey","doubleclick","input","submit","focusin","focusout","setupEventDelegation","fragment","childNode","flattenChildrenFromVNode","renderFragment","renderPortal","renderSuspense","renderStrictMode","renderErrorBoundaryVNode","Component","renderLazyComponent","instance","_vnode","renderErrorFallback","renderClassComponent","currentNamespace","renderHostElement","renderFunctionComponent","_vnode$props","existingNode","existingChild","childVNode","nextSibling","__webpack_require__","getBuiltInPrototypeMethod","isPrototypeOf","arrayMethod","stringMethod","ArrayPrototype","StringPrototype","it","own","includes","$defineProperty","desc","sham","WrappedWellKnownSymbolModule","isCallable","tryToString","$TypeError","TypeError","argument","isPossiblePrototype","$String","toIndexedObject","toAbsoluteIndex","lengthOfArrayLike","createMethod","IS_INCLUDES","$this","O","IndexedObject","toObject","arraySpeciesCreate","createProperty","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","callbackfn","that","boundFunction","resIndex","filterReject","fails","wellKnownSymbol","V8_VERSION","SPECIES","METHOD_NAME","array","foo","DESCRIPTORS","getOwnPropertyDescriptor","SILENT_ON_NON_WRITABLE_LENGTH_SET","uncurryThis","isConstructor","$Array","originalArray","C","arraySpeciesConstructor","stringSlice","TO_STRING_TAG_SUPPORT","classofRaw","TO_STRING_TAG","$Object","CORRECT_ARGUMENTS","tryGet","callee","MATCH","regexp","error1","error2","F","getPrototypeOf","done","definePropertyModule","createPropertyDescriptor","object","bitmap","descriptor","createNonEnumerableProperty","globalThis","EXISTS","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","userAgent","Deno","versions","v8","isForced","hasOwn","wrapConstructor","NativeConstructor","Wrapper","FORCED","USE_NATIVE","VIRTUAL_PROTOTYPE","sourceProperty","targetProperty","nativeProperty","resultProperty","TARGET","GLOBAL","global","STATIC","stat","PROTO","proto","nativeSource","targetPrototype","forced","dontCallGetSet","real","exec","NATIVE_BIND","FunctionPrototype","Function","Reflect","aCallable","getDescriptor","PROPER","CONFIGURABLE","uncurryThisWithBind","CONSTRUCTOR","METHOD","Namespace","pureMethod","NativePrototype","aFunction","variable","isNullOrUndefined","V","P","func","check","getBuiltIn","classof","propertyIsEnumerable","functionToString","inspectSource","NATIVE_WEAK_MAP","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","metadata","facade","STATE","enforce","getterFor","documentAll","construct","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","replacement","feature","detection","POLYFILL","NATIVE","string","getInternalState","USE_SYMBOL_AS_UID","$Symbol","IteratorPrototype","setToStringTag","Iterators","returnThis","IteratorConstructor","NAME","ENUMERABLE_NEXT","$","IS_PURE","FunctionName","createIteratorConstructor","setPrototypeOf","defineBuiltIn","IteratorsCore","PROPER_FUNCTION_NAME","CONFIGURABLE_FUNCTION_NAME","BUGGY_SAFARI_ITERATORS","ITERATOR","KEYS","VALUES","ENTRIES","Iterable","DEFAULT","IS_SET","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","PrototypeOfArrayIteratorPrototype","arrayIterator","toLength","trunc","unsafeInt","raw","rawJSON","isRawJSON","activeXDocument","anObject","definePropertiesModule","enumBugKeys","html","documentCreateElement","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","LT","NullProtoObjectViaActiveX","write","temp","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","JS","domain","contentWindow","Properties","V8_PROTOTYPE_DEFINE_BUG","objectKeys","defineProperties","IE8_DOM_DEFINE","toPropertyKey","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","Attributes","propertyIsEnumerableModule","$getOwnPropertyNames","arraySlice","windowNames","getOwnPropertyNames","getWindowNames","internalObjectKeys","getOwnPropertySymbols","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","names","$propertyIsEnumerable","NASHORN_BUG","uncurryThisAccessor","requireObjectCoercible","aPossiblePrototype","setter","CORRECT_SETTER","__proto__","pref","valueOf","$SyntaxError","SyntaxError","$parseInt","fromCharCode","at","codePoints","IS_4_HEX_DIGITS","IS_C0_CONTROL_CODE","unterminated","chr","twoChars","fourHexDigits","TAG","SET_METHOD","uid","defineGlobalProperty","SHARED","copyright","license","toIntegerOrInfinity","CONVERT_TO_STRING","second","S","codeAt","SymbolPrototype","TO_PRIMITIVE","hint","keyFor","thisSymbolValue","isRegisteredSymbol","isSymbol","$isWellKnownSymbol","isWellKnownSymbol","WellKnownSymbolsStore","symbolKeys","symbolKeysLength","symbolKey","keysLength","NATIVE_SYMBOL","number","getMethod","ordinaryToPrimitive","exoticToPrim","toPrimitive","postfix","iterator","wrappedWellKnownSymbolModule","createWellKnownSymbol","withoutSetter","doesNotExceedSafeInteger","setArrayLength","arrayMethodHasSpeciesSupport","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","isConcatSpreadable","spreadable","arg","E","A","$includes","addToUnscopables","BROKEN_ON_SPARSE","BROKEN_ON_SPARSE_WITH_FROM_INDEX","InternalStateModule","defineIterator","createIterResultObject","ARRAY_ITERATOR","setInternalState","iterated","kind","Arguments","parseJSONString","NATIVE_RAW_JSON","$stringify","numberToString","surrogates","leadingSurrogates","trailingSurrogates","MARK","MARK_LENGTH","WRONG_SYMBOLS_CONVERSION","ILL_FORMED_UNICODE","stringifyWithProperSymbolsConversion","replacer","$replacer","getReplacerFunction","fixIllFormedJSON","rawLength","space","replacerFunction","rawStrings","getOwnPropertySymbolsModule","$getOwnPropertySymbols","notARegExp","correctIsRegExpLogic","stringIndexOf","searchString","STRING_ITERATOR","point","defineWellKnownSymbol","$toString","nativeObjectCreate","getOwnPropertyNamesModule","getOwnPropertyNamesExternal","getOwnPropertyDescriptorModule","defineBuiltInAccessor","defineSymbolToPrimitive","$forEach","HIDDEN","SYMBOL","RangeError","QObject","nativeGetOwnPropertyDescriptor","nativeDefineProperty","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","USE_SETTER","findChild","fallbackDefineProperty","ObjectPrototypeDescriptor","setSymbolDescriptor","$defineProperties","properties","IS_OBJECT_PROTOTYPE","unsafe","useSetter","useSimple","NATIVE_SYMBOL_REGISTRY","StringToSymbolRegistry","SymbolToStringRegistry","sym","METADATA","isRegistered","isWellKnown","DOMIterables","COLLECTION_NAME","makeBuiltIn","enforceInternalState","CONFIGURABLE_LENGTH","TEMPLATE","FLAGS_GETTER_IS_CORRECT","INDICES_SUPPORT","calls","expected","addGetter","pairs","dotAll","ignoreCase","multiline","hasIndices","correct","unicode","unicodeSets","regExpFlagsDetection","regExpFlagsGetterImplementation","_typeof","_defineProperty","to_primitive","define_property","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","__esModule","definition","hmd","toStringTag","__webpack_exports__"],"sourceRoot":""}
|