@dooboostore/dom-render 1.0.107 → 1.0.108
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/dist/cjs/DomRender.js +0 -5
- package/dist/cjs/DomRender.js.map +1 -1
- package/dist/cjs/DomRenderProxy.js +3 -6
- package/dist/cjs/DomRenderProxy.js.map +1 -1
- package/dist/cjs/bundle-entry.js +56 -0
- package/dist/cjs/bundle-entry.js.map +7 -0
- package/dist/cjs/components/ComponentRouterBase.js +0 -4
- package/dist/cjs/components/ComponentRouterBase.js.map +1 -1
- package/dist/cjs/components/ComponentSet.js +0 -5
- package/dist/cjs/components/ComponentSet.js.map +1 -1
- package/dist/cjs/components/appender/Appender.js +0 -6
- package/dist/cjs/components/appender/Appender.js.map +1 -1
- package/dist/cjs/components/checkbox/CheckBox.js +4 -7
- package/dist/cjs/components/checkbox/CheckBox.js.map +1 -1
- package/dist/cjs/components/choose/Choose.js +1 -11
- package/dist/cjs/components/choose/Choose.js.map +1 -1
- package/dist/cjs/components/details/Details.js +0 -11
- package/dist/cjs/components/details/Details.js.map +1 -1
- package/dist/cjs/components/forOf/ForOf.js +0 -6
- package/dist/cjs/components/forOf/ForOf.js.map +1 -1
- package/dist/cjs/components/if/If.js +1 -3
- package/dist/cjs/components/if/If.js.map +1 -1
- package/dist/cjs/components/input/Input.js +0 -8
- package/dist/cjs/components/input/Input.js.map +1 -1
- package/dist/cjs/components/promise/PromiseSwitch.js +1 -20
- package/dist/cjs/components/promise/PromiseSwitch.js.map +1 -1
- package/dist/cjs/components/radio/Radio.js +4 -7
- package/dist/cjs/components/radio/Radio.js.map +1 -1
- package/dist/cjs/components/router/RouterOutlet.js +1 -5
- package/dist/cjs/components/router/RouterOutlet.js.map +1 -1
- package/dist/cjs/components/this/This.js +1 -5
- package/dist/cjs/components/this/This.js.map +1 -1
- package/dist/cjs/components/timer/Timer.js +0 -7
- package/dist/cjs/components/timer/Timer.js.map +1 -1
- package/dist/cjs/events/EventManager.js +56 -58
- package/dist/cjs/events/EventManager.js.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/iterators/Range.js +1 -9
- package/dist/cjs/iterators/Range.js.map +1 -1
- package/dist/cjs/messenger/Messenger.js +5 -8
- package/dist/cjs/messenger/Messenger.js.map +1 -1
- package/dist/cjs/operators/Appender.js +3 -5
- package/dist/cjs/operators/Appender.js.map +1 -1
- package/dist/cjs/rawsets/RawSet.js +53 -55
- package/dist/cjs/rawsets/RawSet.js.map +1 -1
- package/dist/cjs/routers/Router.js +9 -13
- package/dist/cjs/routers/Router.js.map +1 -1
- package/dist/cjs/validators/MultipleValidator.js +0 -3
- package/dist/cjs/validators/MultipleValidator.js.map +1 -1
- package/dist/cjs/validators/NotRegExpTestValidator.js +0 -3
- package/dist/cjs/validators/NotRegExpTestValidator.js.map +1 -1
- package/dist/cjs/validators/RegExpTestValidator.js +0 -3
- package/dist/cjs/validators/RegExpTestValidator.js.map +1 -1
- package/dist/cjs/validators/Validator.js +0 -7
- package/dist/cjs/validators/Validator.js.map +1 -1
- package/dist/cjs/validators/ValidatorArray.js +2 -4
- package/dist/cjs/validators/ValidatorArray.js.map +1 -1
- package/dist/esm/DomRender.js +0 -6
- package/dist/esm/DomRender.js.map +1 -1
- package/dist/esm/DomRenderProxy.js +3 -7
- package/dist/esm/DomRenderProxy.js.map +1 -1
- package/dist/esm/bundle-entry.js +36 -0
- package/dist/esm/bundle-entry.js.map +7 -0
- package/dist/esm/components/ComponentRouterBase.js +0 -5
- package/dist/esm/components/ComponentRouterBase.js.map +1 -1
- package/dist/esm/components/ComponentSet.js +0 -6
- package/dist/esm/components/ComponentSet.js.map +1 -1
- package/dist/esm/components/appender/Appender.js +0 -7
- package/dist/esm/components/appender/Appender.js.map +1 -1
- package/dist/esm/components/checkbox/CheckBox.js +4 -8
- package/dist/esm/components/checkbox/CheckBox.js.map +1 -1
- package/dist/esm/components/choose/Choose.js +1 -12
- package/dist/esm/components/choose/Choose.js.map +1 -1
- package/dist/esm/components/details/Details.js +0 -12
- package/dist/esm/components/details/Details.js.map +1 -1
- package/dist/esm/components/forOf/ForOf.js +0 -7
- package/dist/esm/components/forOf/ForOf.js.map +1 -1
- package/dist/esm/components/if/If.js +1 -4
- package/dist/esm/components/if/If.js.map +1 -1
- package/dist/esm/components/input/Input.js +0 -9
- package/dist/esm/components/input/Input.js.map +1 -1
- package/dist/esm/components/promise/PromiseSwitch.js +1 -21
- package/dist/esm/components/promise/PromiseSwitch.js.map +1 -1
- package/dist/esm/components/radio/Radio.js +4 -8
- package/dist/esm/components/radio/Radio.js.map +1 -1
- package/dist/esm/components/router/RouterOutlet.js +1 -6
- package/dist/esm/components/router/RouterOutlet.js.map +1 -1
- package/dist/esm/components/this/This.js +1 -6
- package/dist/esm/components/this/This.js.map +1 -1
- package/dist/esm/components/timer/Timer.js +0 -8
- package/dist/esm/components/timer/Timer.js.map +1 -1
- package/dist/esm/events/EventManager.js +56 -59
- package/dist/esm/events/EventManager.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/iterators/Range.js +1 -10
- package/dist/esm/iterators/Range.js.map +1 -1
- package/dist/esm/messenger/Messenger.js +5 -9
- package/dist/esm/messenger/Messenger.js.map +1 -1
- package/dist/esm/operators/Appender.js +3 -6
- package/dist/esm/operators/Appender.js.map +1 -1
- package/dist/esm/rawsets/RawSet.js +53 -56
- package/dist/esm/rawsets/RawSet.js.map +1 -1
- package/dist/esm/routers/Router.js +9 -14
- package/dist/esm/routers/Router.js.map +1 -1
- package/dist/esm/validators/MultipleValidator.js +0 -4
- package/dist/esm/validators/MultipleValidator.js.map +1 -1
- package/dist/esm/validators/NotRegExpTestValidator.js +0 -4
- package/dist/esm/validators/NotRegExpTestValidator.js.map +1 -1
- package/dist/esm/validators/RegExpTestValidator.js +0 -4
- package/dist/esm/validators/RegExpTestValidator.js.map +1 -1
- package/dist/esm/validators/Validator.js +0 -8
- package/dist/esm/validators/Validator.js.map +1 -1
- package/dist/esm/validators/ValidatorArray.js +2 -5
- package/dist/esm/validators/ValidatorArray.js.map +1 -1
- package/dist/esm-bundle/dooboostore-dom-render.esm.js +10408 -3
- package/dist/esm-bundle/dooboostore-dom-render.esm.js.map +4 -4
- package/dist/types/bundle-entry.d.ts +15 -0
- package/dist/types/bundle-entry.d.ts.map +1 -0
- package/dist/types/index.d.ts +103 -0
- package/dist/umd-bundle/dooboostore-dom-render.umd.js +10413 -6
- package/dist/umd-bundle/dooboostore-dom-render.umd.js.map +4 -4
- package/package.json +26 -14
- package/src/DomRender.ts +173 -0
- package/src/DomRenderProxy.ts +671 -0
- package/src/bundle-entry.ts +18 -0
- package/src/components/ComponentBase.ts +682 -0
- package/src/components/ComponentRouterBase.ts +44 -0
- package/src/components/ComponentSet.ts +26 -0
- package/src/components/a/A.ts +81 -0
- package/src/components/a/index.ts +1 -0
- package/src/components/appender/Appender.ts +86 -0
- package/src/components/appender/index.ts +1 -0
- package/src/components/checkbox/CheckBox.ts +137 -0
- package/src/components/checkbox/index.ts +1 -0
- package/src/components/choose/Choose.ts +111 -0
- package/src/components/choose/index.ts +1 -0
- package/src/components/details/Details.ts +236 -0
- package/src/components/details/index.ts +1 -0
- package/src/components/dialog/Dialog.ts +84 -0
- package/src/components/dialog/dialog.html +10 -0
- package/src/components/dialog/example/ImageEditorDialog.ts +115 -0
- package/src/components/dialog/example/imageEditorDialog.css +179 -0
- package/src/components/dialog/example/imageEditorDialog.html +48 -0
- package/src/components/forOf/ForOf.ts +41 -0
- package/src/components/forOf/index.ts +1 -0
- package/src/components/if/If.ts +63 -0
- package/src/components/if/index.ts +1 -0
- package/src/components/index.ts +49 -0
- package/src/components/input/Input.ts +125 -0
- package/src/components/input/index.ts +1 -0
- package/src/components/promise/PromiseSwitch.ts +232 -0
- package/src/components/promise/index.ts +1 -0
- package/src/components/radio/Radio.ts +129 -0
- package/src/components/radio/index.ts +1 -0
- package/src/components/router/Route.ts +91 -0
- package/src/components/router/RouterOutlet.ts +73 -0
- package/{dist/esm/components/router/index.d.ts → src/components/router/index.ts} +0 -1
- package/src/components/select/Select.ts +580 -0
- package/src/components/select/index.ts +1 -0
- package/src/components/this/This.ts +62 -0
- package/src/components/this/index.ts +1 -0
- package/src/components/timer/Timer.ts +119 -0
- package/src/components/timer/index.ts +1 -0
- package/src/configs/DomRenderConfig.ts +30 -0
- package/{dist/esm/configs/TargetAttr.d.ts → src/configs/TargetAttr.ts} +3 -3
- package/{dist/esm/configs/TargetElement.d.ts → src/configs/TargetElement.ts} +7 -7
- package/{dist/esm/configs/index.d.ts → src/configs/index.ts} +0 -1
- package/src/decorators/DomRenderNoProxy.ts +30 -0
- package/{dist/esm/decorators/index.d.ts → src/decorators/index.ts} +0 -1
- package/src/events/EventManager.ts +729 -0
- package/src/events/index.ts +1 -0
- package/src/index.ts +17 -0
- package/src/iterators/Range.ts +73 -0
- package/src/iterators/index.ts +1 -0
- package/{dist/esm/lifecycle/OnBeforeReturnGet.d.ts → src/lifecycle/OnBeforeReturnGet.ts} +0 -1
- package/src/lifecycle/OnBeforeReturnSet.ts +6 -0
- package/{dist/esm/lifecycle/OnChangeAttrRender.d.ts → src/lifecycle/OnChangeAttrRender.ts} +7 -4
- package/src/lifecycle/OnChildRenderedByProperty.ts +9 -0
- package/src/lifecycle/OnCreateRender.ts +6 -0
- package/src/lifecycle/OnCreateRenderData.ts +11 -0
- package/src/lifecycle/OnCreateRendered.ts +11 -0
- package/src/lifecycle/OnCreatedThisChild.ts +10 -0
- package/src/lifecycle/OnDestroyRender.ts +11 -0
- package/src/lifecycle/OnInitRender.ts +9 -0
- package/src/lifecycle/OnProxyDomRender.ts +7 -0
- package/src/lifecycle/dr-this/OnDrThisBind.ts +6 -0
- package/src/lifecycle/dr-this/OnDrThisUnBind.ts +6 -0
- package/{dist/esm/lifecycle/dr-this/index.d.ts → src/lifecycle/dr-this/index.ts} +0 -1
- package/{dist/esm/lifecycle/index.d.ts → src/lifecycle/index.ts} +0 -1
- package/src/messenger/DefaultMessenger.ts +5 -0
- package/src/messenger/Messenger.ts +222 -0
- package/{dist/esm/messenger/index.d.ts → src/messenger/index.ts} +0 -1
- package/src/operators/Appender.ts +104 -0
- package/src/operators/Dr.ts +47 -0
- package/src/operators/DrAppender.ts +64 -0
- package/src/operators/DrFor.ts +52 -0
- package/src/operators/DrForOf.ts +116 -0
- package/src/operators/DrForm.ts +72 -0
- package/src/operators/DrIf.ts +69 -0
- package/src/operators/DrInnerHTML.ts +41 -0
- package/src/operators/DrInnerText.ts +40 -0
- package/src/operators/DrPre.ts +14 -0
- package/src/operators/DrRepeat.ts +64 -0
- package/src/operators/DrStripElement.ts +49 -0
- package/src/operators/DrTargetAttr.ts +36 -0
- package/src/operators/DrTargetElement.ts +119 -0
- package/src/operators/DrTargetElementIsElement.ts +76 -0
- package/src/operators/DrThis.ts +107 -0
- package/src/operators/DrThisProperty.ts +91 -0
- package/src/operators/OperatorExecuter.ts +67 -0
- package/src/operators/OperatorExecuterAttrRequire.ts +24 -0
- package/{dist/esm/operators/index.d.ts → src/operators/index.ts} +0 -1
- package/src/rawsets/AttrInitCallBack.ts +1 -0
- package/{dist/esm/rawsets/Attrs.d.ts → src/rawsets/Attrs.ts} +1 -2
- package/{dist/esm/rawsets/CreatorMetaData.d.ts → src/rawsets/CreatorMetaData.ts} +7 -8
- package/src/rawsets/DestroyOptionType.ts +4 -0
- package/src/rawsets/ElementInitCallBack.ts +4 -0
- package/src/rawsets/RawSet.ts +1582 -0
- package/src/rawsets/RawSetOperatorType.ts +3 -0
- package/src/rawsets/RawSetType.ts +7 -0
- package/{dist/esm/rawsets/Render.d.ts → src/rawsets/Render.ts} +9 -11
- package/{dist/esm/rawsets/index.d.ts → src/rawsets/index.ts} +0 -1
- package/src/routers/HashRouter.ts +106 -0
- package/src/routers/PathRouter.ts +93 -0
- package/src/routers/Router.ts +215 -0
- package/{dist/esm/routers/index.d.ts → src/routers/index.ts} +0 -1
- package/src/types/Types.ts +32 -0
- package/src/types/index.ts +2 -0
- package/src/types/type.ts +24 -0
- package/src/validators/AllCheckedValidatorArray.ts +12 -0
- package/src/validators/AllUnCheckedValidatorArray.ts +12 -0
- package/src/validators/CheckedValidator.ts +11 -0
- package/src/validators/CountEqualsCheckedValidatorArray.ts +12 -0
- package/src/validators/CountEqualsUnCheckedValidatorArray.ts +12 -0
- package/src/validators/CountGreaterThanCheckedValidatorArray.ts +12 -0
- package/src/validators/CountGreaterThanEqualsCheckedValidatorArray.ts +12 -0
- package/src/validators/CountGreaterThanEqualsUnCheckedValidatorArray.ts +12 -0
- package/src/validators/CountGreaterThanUnCheckedValidatorArray.ts +12 -0
- package/src/validators/CountLessThanCheckedValidatorArray.ts +12 -0
- package/src/validators/CountLessThanEqualsCheckedValidatorArray.ts +12 -0
- package/src/validators/CountLessThanEqualsUnCheckedValidatorArray.ts +12 -0
- package/src/validators/CountLessThanUnCheckedValidatorArray.ts +12 -0
- package/src/validators/CountUnCheckedValidatorArray.ts +12 -0
- package/src/validators/EmptyValidator.ts +12 -0
- package/src/validators/ExcludeCheckedValidatorArray.ts +16 -0
- package/src/validators/FormValidator.ts +19 -0
- package/src/validators/IncludeCheckedValidatorArray.ts +16 -0
- package/src/validators/MultipleValidator.ts +29 -0
- package/src/validators/NonPassValidator.ts +11 -0
- package/src/validators/NotEmptyValidator.ts +13 -0
- package/src/validators/NotRegExpTestValidator.ts +20 -0
- package/src/validators/PassValidator.ts +11 -0
- package/src/validators/RegExpTestValidator.ts +21 -0
- package/src/validators/RequiredValidator.ts +13 -0
- package/src/validators/UnCheckedValidator.ts +11 -0
- package/src/validators/ValidMultipleValidator.ts +14 -0
- package/src/validators/ValidValidator.ts +11 -0
- package/src/validators/ValidValidatorArray.ts +12 -0
- package/src/validators/Validator.ts +245 -0
- package/src/validators/ValidatorArray.ts +83 -0
- package/src/validators/ValueEqualsValidator.ts +11 -0
- package/src/validators/ValueNotEqualsValidator.ts +11 -0
- package/{dist/esm/validators/index.d.ts → src/validators/index.ts} +0 -1
- package/tsconfig.json +24 -0
- package/types.d.ts +2825 -0
- package/dist/cjs/DomRender.d.js +0 -16
- package/dist/cjs/DomRender.d.js.map +0 -7
- package/dist/cjs/DomRenderProxy.d.js +0 -17
- package/dist/cjs/DomRenderProxy.d.js.map +0 -7
- package/dist/cjs/components/ComponentBase.d.js +0 -17
- package/dist/cjs/components/ComponentBase.d.js.map +0 -7
- package/dist/cjs/components/ComponentRouterBase.d.js +0 -16
- package/dist/cjs/components/ComponentRouterBase.d.js.map +0 -7
- package/dist/cjs/components/ComponentSet.d.js +0 -16
- package/dist/cjs/components/ComponentSet.d.js.map +0 -7
- package/dist/cjs/components/a/A.d.js +0 -24
- package/dist/cjs/components/a/A.d.js.map +0 -7
- package/dist/cjs/components/a/index.d.js +0 -18
- package/dist/cjs/components/a/index.d.js.map +0 -7
- package/dist/cjs/components/appender/Appender.d.js +0 -24
- package/dist/cjs/components/appender/Appender.d.js.map +0 -7
- package/dist/cjs/components/appender/index.d.js +0 -18
- package/dist/cjs/components/appender/index.d.js.map +0 -7
- package/dist/cjs/components/checkbox/CheckBox.d.js +0 -24
- package/dist/cjs/components/checkbox/CheckBox.d.js.map +0 -7
- package/dist/cjs/components/checkbox/index.d.js +0 -18
- package/dist/cjs/components/checkbox/index.d.js.map +0 -7
- package/dist/cjs/components/choose/Choose.d.js +0 -24
- package/dist/cjs/components/choose/Choose.d.js.map +0 -7
- package/dist/cjs/components/choose/index.d.js +0 -18
- package/dist/cjs/components/choose/index.d.js.map +0 -7
- package/dist/cjs/components/details/Details.d.js +0 -24
- package/dist/cjs/components/details/Details.d.js.map +0 -7
- package/dist/cjs/components/details/index.d.js +0 -18
- package/dist/cjs/components/details/index.d.js.map +0 -7
- package/dist/cjs/components/forOf/ForOf.d.js +0 -24
- package/dist/cjs/components/forOf/ForOf.d.js.map +0 -7
- package/dist/cjs/components/forOf/index.d.js +0 -18
- package/dist/cjs/components/forOf/index.d.js.map +0 -7
- package/dist/cjs/components/if/If.d.js +0 -24
- package/dist/cjs/components/if/If.d.js.map +0 -7
- package/dist/cjs/components/if/index.d.js +0 -18
- package/dist/cjs/components/if/index.d.js.map +0 -7
- package/dist/cjs/components/index.d.js +0 -34
- package/dist/cjs/components/index.d.js.map +0 -7
- package/dist/cjs/components/input/Input.d.js +0 -24
- package/dist/cjs/components/input/Input.d.js.map +0 -7
- package/dist/cjs/components/input/index.d.js +0 -18
- package/dist/cjs/components/input/index.d.js.map +0 -7
- package/dist/cjs/components/promise/PromiseSwitch.d.js +0 -24
- package/dist/cjs/components/promise/PromiseSwitch.d.js.map +0 -7
- package/dist/cjs/components/promise/index.d.js +0 -18
- package/dist/cjs/components/promise/index.d.js.map +0 -7
- package/dist/cjs/components/radio/Radio.d.js +0 -24
- package/dist/cjs/components/radio/Radio.d.js.map +0 -7
- package/dist/cjs/components/radio/index.d.js +0 -18
- package/dist/cjs/components/radio/index.d.js.map +0 -7
- package/dist/cjs/components/router/Route.d.js +0 -24
- package/dist/cjs/components/router/Route.d.js.map +0 -7
- package/dist/cjs/components/router/RouterOutlet.d.js +0 -24
- package/dist/cjs/components/router/RouterOutlet.d.js.map +0 -7
- package/dist/cjs/components/router/index.d.js +0 -19
- package/dist/cjs/components/router/index.d.js.map +0 -7
- package/dist/cjs/components/select/Select.d.js +0 -24
- package/dist/cjs/components/select/Select.d.js.map +0 -7
- package/dist/cjs/components/select/index.d.js +0 -18
- package/dist/cjs/components/select/index.d.js.map +0 -7
- package/dist/cjs/components/this/This.d.js +0 -24
- package/dist/cjs/components/this/This.d.js.map +0 -7
- package/dist/cjs/components/this/index.d.js +0 -18
- package/dist/cjs/components/this/index.d.js.map +0 -7
- package/dist/cjs/components/timer/Timer.d.js +0 -24
- package/dist/cjs/components/timer/Timer.d.js.map +0 -7
- package/dist/cjs/components/timer/index.d.js +0 -18
- package/dist/cjs/components/timer/index.d.js.map +0 -7
- package/dist/cjs/configs/DomRenderConfig.d.js +0 -16
- package/dist/cjs/configs/DomRenderConfig.d.js.map +0 -7
- package/dist/cjs/configs/TargetAttr.d.js +0 -16
- package/dist/cjs/configs/TargetAttr.d.js.map +0 -7
- package/dist/cjs/configs/TargetElement.d.js +0 -16
- package/dist/cjs/configs/TargetElement.d.js.map +0 -7
- package/dist/cjs/decorators/DomRenderNoProxy.d.js +0 -17
- package/dist/cjs/decorators/DomRenderNoProxy.d.js.map +0 -7
- package/dist/cjs/events/EventManager.d.js +0 -16
- package/dist/cjs/events/EventManager.d.js.map +0 -7
- package/dist/cjs/index.d.ts +0 -3
- package/dist/cjs/iterators/Range.d.js +0 -16
- package/dist/cjs/iterators/Range.d.js.map +0 -7
- package/dist/cjs/lifecycle/OnBeforeReturnSet.d.js +0 -16
- package/dist/cjs/lifecycle/OnBeforeReturnSet.d.js.map +0 -7
- package/dist/cjs/lifecycle/OnChangeAttrRender.d.js +0 -16
- package/dist/cjs/lifecycle/OnChangeAttrRender.d.js.map +0 -7
- package/dist/cjs/lifecycle/OnChildRenderedByProperty.d.js +0 -16
- package/dist/cjs/lifecycle/OnChildRenderedByProperty.d.js.map +0 -7
- package/dist/cjs/lifecycle/OnCreateRender.d.js +0 -16
- package/dist/cjs/lifecycle/OnCreateRender.d.js.map +0 -7
- package/dist/cjs/lifecycle/OnCreateRenderData.d.js +0 -16
- package/dist/cjs/lifecycle/OnCreateRenderData.d.js.map +0 -7
- package/dist/cjs/lifecycle/OnCreatedThisChild.d.js +0 -16
- package/dist/cjs/lifecycle/OnCreatedThisChild.d.js.map +0 -7
- package/dist/cjs/lifecycle/OnDestroyRender.d.js +0 -16
- package/dist/cjs/lifecycle/OnDestroyRender.d.js.map +0 -7
- package/dist/cjs/lifecycle/OnInitRender.d.js +0 -16
- package/dist/cjs/lifecycle/OnInitRender.d.js.map +0 -7
- package/dist/cjs/lifecycle/OnProxyDomRender.d.js +0 -16
- package/dist/cjs/lifecycle/OnProxyDomRender.d.js.map +0 -7
- package/dist/cjs/lifecycle/dr-this/OnDrThisBind.d.js +0 -16
- package/dist/cjs/lifecycle/dr-this/OnDrThisBind.d.js.map +0 -7
- package/dist/cjs/lifecycle/dr-this/OnDrThisUnBind.d.js +0 -16
- package/dist/cjs/lifecycle/dr-this/OnDrThisUnBind.d.js.map +0 -7
- package/dist/cjs/managers/RenderManager.d.ts +0 -2
- package/dist/cjs/managers/RenderManager.d.ts.map +0 -1
- package/dist/cjs/managers/RenderManager.js +0 -1
- package/dist/cjs/managers/RenderManager.js.map +0 -7
- package/dist/cjs/managers/index.d.ts +0 -2
- package/dist/cjs/managers/index.d.ts.map +0 -1
- package/dist/cjs/managers/index.js +0 -18
- package/dist/cjs/managers/index.js.map +0 -7
- package/dist/cjs/messenger/DefaultMessenger.d.js +0 -16
- package/dist/cjs/messenger/DefaultMessenger.d.js.map +0 -7
- package/dist/cjs/messenger/Messenger.d.js +0 -16
- package/dist/cjs/messenger/Messenger.d.js.map +0 -7
- package/dist/cjs/operators/Appender.d.js +0 -16
- package/dist/cjs/operators/Appender.d.js.map +0 -7
- package/dist/cjs/operators/Dr.d.js +0 -16
- package/dist/cjs/operators/Dr.d.js.map +0 -7
- package/dist/cjs/operators/DrAppender.d.js +0 -16
- package/dist/cjs/operators/DrAppender.d.js.map +0 -7
- package/dist/cjs/operators/DrFor.d.js +0 -16
- package/dist/cjs/operators/DrFor.d.js.map +0 -7
- package/dist/cjs/operators/DrForOf.d.js +0 -16
- package/dist/cjs/operators/DrForOf.d.js.map +0 -7
- package/dist/cjs/operators/DrForm.d.js +0 -16
- package/dist/cjs/operators/DrForm.d.js.map +0 -7
- package/dist/cjs/operators/DrIf.d.js +0 -16
- package/dist/cjs/operators/DrIf.d.js.map +0 -7
- package/dist/cjs/operators/DrInnerHTML.d.js +0 -16
- package/dist/cjs/operators/DrInnerHTML.d.js.map +0 -7
- package/dist/cjs/operators/DrInnerText.d.js +0 -16
- package/dist/cjs/operators/DrInnerText.d.js.map +0 -7
- package/dist/cjs/operators/DrPre.d.js +0 -16
- package/dist/cjs/operators/DrPre.d.js.map +0 -7
- package/dist/cjs/operators/DrRepeat.d.js +0 -16
- package/dist/cjs/operators/DrRepeat.d.js.map +0 -7
- package/dist/cjs/operators/DrStripElement.d.js +0 -16
- package/dist/cjs/operators/DrStripElement.d.js.map +0 -7
- package/dist/cjs/operators/DrTargetAttr.d.js +0 -16
- package/dist/cjs/operators/DrTargetAttr.d.js.map +0 -7
- package/dist/cjs/operators/DrTargetElement.d.js +0 -16
- package/dist/cjs/operators/DrTargetElement.d.js.map +0 -7
- package/dist/cjs/operators/DrTargetElementIsElement.d.js +0 -16
- package/dist/cjs/operators/DrTargetElementIsElement.d.js.map +0 -7
- package/dist/cjs/operators/DrThis.d.js +0 -16
- package/dist/cjs/operators/DrThis.d.js.map +0 -7
- package/dist/cjs/operators/DrThisProperty.d.js +0 -16
- package/dist/cjs/operators/DrThisProperty.d.js.map +0 -7
- package/dist/cjs/operators/OperatorExecuter.d.js +0 -16
- package/dist/cjs/operators/OperatorExecuter.d.js.map +0 -7
- package/dist/cjs/operators/OperatorExecuterAttrRequire.d.js +0 -16
- package/dist/cjs/operators/OperatorExecuterAttrRequire.d.js.map +0 -7
- package/dist/cjs/package.json +0 -3
- package/dist/cjs/rawsets/AttrInitCallBack.d.js +0 -16
- package/dist/cjs/rawsets/AttrInitCallBack.d.js.map +0 -7
- package/dist/cjs/rawsets/Attrs.d.js +0 -16
- package/dist/cjs/rawsets/Attrs.d.js.map +0 -7
- package/dist/cjs/rawsets/CreatorMetaData.d.js +0 -16
- package/dist/cjs/rawsets/CreatorMetaData.d.js.map +0 -7
- package/dist/cjs/rawsets/DestroyOptionType.d.js +0 -16
- package/dist/cjs/rawsets/DestroyOptionType.d.js.map +0 -7
- package/dist/cjs/rawsets/ElementInitCallBack.d.js +0 -16
- package/dist/cjs/rawsets/ElementInitCallBack.d.js.map +0 -7
- package/dist/cjs/rawsets/RawSet.d.js +0 -16
- package/dist/cjs/rawsets/RawSet.d.js.map +0 -7
- package/dist/cjs/rawsets/RawSetOperatorType.d.js +0 -16
- package/dist/cjs/rawsets/RawSetOperatorType.d.js.map +0 -7
- package/dist/cjs/rawsets/RawSetType.d.js +0 -16
- package/dist/cjs/rawsets/RawSetType.d.js.map +0 -7
- package/dist/cjs/rawsets/Render.d.js +0 -16
- package/dist/cjs/rawsets/Render.d.js.map +0 -7
- package/dist/cjs/routers/HashRouter.d.js +0 -16
- package/dist/cjs/routers/HashRouter.d.js.map +0 -7
- package/dist/cjs/routers/PathRouter.d.js +0 -16
- package/dist/cjs/routers/PathRouter.d.js.map +0 -7
- package/dist/cjs/routers/Router.d.js +0 -17
- package/dist/cjs/routers/Router.d.js.map +0 -7
- package/dist/cjs/types/Types.d.js +0 -16
- package/dist/cjs/types/Types.d.js.map +0 -7
- package/dist/cjs/validators/NonPassValidator.d.js +0 -16
- package/dist/cjs/validators/NonPassValidator.d.js.map +0 -7
- package/dist/cjs/validators/Validator.d.js +0 -16
- package/dist/cjs/validators/Validator.d.js.map +0 -7
- package/dist/cjs/validators/ValidatorArray.d.js +0 -16
- package/dist/cjs/validators/ValidatorArray.d.js.map +0 -7
- package/dist/esm/DomRender.d.js +0 -1
- package/dist/esm/DomRender.d.js.map +0 -7
- package/dist/esm/DomRender.d.ts +0 -39
- package/dist/esm/DomRender.d.ts.map +0 -1
- package/dist/esm/DomRenderProxy.d.js +0 -2
- package/dist/esm/DomRenderProxy.d.js.map +0 -7
- package/dist/esm/DomRenderProxy.d.ts +0 -41
- package/dist/esm/DomRenderProxy.d.ts.map +0 -1
- package/dist/esm/components/ComponentBase.d.js +0 -2
- package/dist/esm/components/ComponentBase.d.js.map +0 -7
- package/dist/esm/components/ComponentBase.d.ts +0 -131
- package/dist/esm/components/ComponentBase.d.ts.map +0 -1
- package/dist/esm/components/ComponentRouterBase.d.js +0 -1
- package/dist/esm/components/ComponentRouterBase.d.js.map +0 -7
- package/dist/esm/components/ComponentRouterBase.d.ts +0 -13
- package/dist/esm/components/ComponentRouterBase.d.ts.map +0 -1
- package/dist/esm/components/ComponentSet.d.js +0 -1
- package/dist/esm/components/ComponentSet.d.js.map +0 -7
- package/dist/esm/components/ComponentSet.d.ts +0 -22
- package/dist/esm/components/ComponentSet.d.ts.map +0 -1
- package/dist/esm/components/a/A.d.js +0 -5
- package/dist/esm/components/a/A.d.js.map +0 -7
- package/dist/esm/components/a/A.d.ts +0 -40
- package/dist/esm/components/a/A.d.ts.map +0 -1
- package/dist/esm/components/a/index.d.js +0 -2
- package/dist/esm/components/a/index.d.js.map +0 -7
- package/dist/esm/components/a/index.d.ts +0 -2
- package/dist/esm/components/a/index.d.ts.map +0 -1
- package/dist/esm/components/appender/Appender.d.js +0 -5
- package/dist/esm/components/appender/Appender.d.js.map +0 -7
- package/dist/esm/components/appender/Appender.d.ts +0 -23
- package/dist/esm/components/appender/Appender.d.ts.map +0 -1
- package/dist/esm/components/appender/index.d.js +0 -2
- package/dist/esm/components/appender/index.d.js.map +0 -7
- package/dist/esm/components/appender/index.d.ts +0 -2
- package/dist/esm/components/appender/index.d.ts.map +0 -1
- package/dist/esm/components/checkbox/CheckBox.d.js +0 -5
- package/dist/esm/components/checkbox/CheckBox.d.js.map +0 -7
- package/dist/esm/components/checkbox/CheckBox.d.ts +0 -47
- package/dist/esm/components/checkbox/CheckBox.d.ts.map +0 -1
- package/dist/esm/components/checkbox/index.d.js +0 -2
- package/dist/esm/components/checkbox/index.d.js.map +0 -7
- package/dist/esm/components/checkbox/index.d.ts +0 -2
- package/dist/esm/components/checkbox/index.d.ts.map +0 -1
- package/dist/esm/components/choose/Choose.d.js +0 -5
- package/dist/esm/components/choose/Choose.d.js.map +0 -7
- package/dist/esm/components/choose/Choose.d.ts +0 -39
- package/dist/esm/components/choose/Choose.d.ts.map +0 -1
- package/dist/esm/components/choose/index.d.js +0 -2
- package/dist/esm/components/choose/index.d.js.map +0 -7
- package/dist/esm/components/choose/index.d.ts +0 -2
- package/dist/esm/components/choose/index.d.ts.map +0 -1
- package/dist/esm/components/details/Details.d.js +0 -5
- package/dist/esm/components/details/Details.d.js.map +0 -7
- package/dist/esm/components/details/Details.d.ts +0 -57
- package/dist/esm/components/details/Details.d.ts.map +0 -1
- package/dist/esm/components/details/index.d.js +0 -2
- package/dist/esm/components/details/index.d.js.map +0 -7
- package/dist/esm/components/details/index.d.ts +0 -2
- package/dist/esm/components/details/index.d.ts.map +0 -1
- package/dist/esm/components/dialog/Dialog.d.ts +0 -1
- package/dist/esm/components/dialog/Dialog.d.ts.map +0 -1
- package/dist/esm/components/dialog/example/ImageEditorDialog.d.ts +0 -1
- package/dist/esm/components/dialog/example/ImageEditorDialog.d.ts.map +0 -1
- package/dist/esm/components/forOf/ForOf.d.js +0 -5
- package/dist/esm/components/forOf/ForOf.d.js.map +0 -7
- package/dist/esm/components/forOf/ForOf.d.ts +0 -18
- package/dist/esm/components/forOf/ForOf.d.ts.map +0 -1
- package/dist/esm/components/forOf/index.d.js +0 -2
- package/dist/esm/components/forOf/index.d.js.map +0 -7
- package/dist/esm/components/forOf/index.d.ts +0 -2
- package/dist/esm/components/forOf/index.d.ts.map +0 -1
- package/dist/esm/components/if/If.d.js +0 -5
- package/dist/esm/components/if/If.d.js.map +0 -7
- package/dist/esm/components/if/If.d.ts +0 -21
- package/dist/esm/components/if/If.d.ts.map +0 -1
- package/dist/esm/components/if/index.d.js +0 -2
- package/dist/esm/components/if/index.d.js.map +0 -7
- package/dist/esm/components/if/index.d.ts +0 -2
- package/dist/esm/components/if/index.d.ts.map +0 -1
- package/dist/esm/components/index.d.js +0 -18
- package/dist/esm/components/index.d.js.map +0 -7
- package/dist/esm/components/index.d.ts +0 -58
- package/dist/esm/components/index.d.ts.map +0 -1
- package/dist/esm/components/input/Input.d.js +0 -5
- package/dist/esm/components/input/Input.d.js.map +0 -7
- package/dist/esm/components/input/Input.d.ts +0 -34
- package/dist/esm/components/input/Input.d.ts.map +0 -1
- package/dist/esm/components/input/index.d.js +0 -2
- package/dist/esm/components/input/index.d.js.map +0 -7
- package/dist/esm/components/input/index.d.ts +0 -2
- package/dist/esm/components/input/index.d.ts.map +0 -1
- package/dist/esm/components/promise/PromiseSwitch.d.js +0 -5
- package/dist/esm/components/promise/PromiseSwitch.d.js.map +0 -7
- package/dist/esm/components/promise/PromiseSwitch.d.ts +0 -56
- package/dist/esm/components/promise/PromiseSwitch.d.ts.map +0 -1
- package/dist/esm/components/promise/index.d.js +0 -2
- package/dist/esm/components/promise/index.d.js.map +0 -7
- package/dist/esm/components/promise/index.d.ts +0 -2
- package/dist/esm/components/promise/index.d.ts.map +0 -1
- package/dist/esm/components/radio/Radio.d.js +0 -5
- package/dist/esm/components/radio/Radio.d.js.map +0 -7
- package/dist/esm/components/radio/Radio.d.ts +0 -45
- package/dist/esm/components/radio/Radio.d.ts.map +0 -1
- package/dist/esm/components/radio/index.d.js +0 -2
- package/dist/esm/components/radio/index.d.js.map +0 -7
- package/dist/esm/components/radio/index.d.ts +0 -2
- package/dist/esm/components/radio/index.d.ts.map +0 -1
- package/dist/esm/components/router/Route.d.js +0 -5
- package/dist/esm/components/router/Route.d.js.map +0 -7
- package/dist/esm/components/router/Route.d.ts +0 -36
- package/dist/esm/components/router/Route.d.ts.map +0 -1
- package/dist/esm/components/router/RouterOutlet.d.js +0 -5
- package/dist/esm/components/router/RouterOutlet.d.js.map +0 -7
- package/dist/esm/components/router/RouterOutlet.d.ts +0 -34
- package/dist/esm/components/router/RouterOutlet.d.ts.map +0 -1
- package/dist/esm/components/router/index.d.js +0 -3
- package/dist/esm/components/router/index.d.js.map +0 -7
- package/dist/esm/components/router/index.d.ts.map +0 -1
- package/dist/esm/components/select/Select.d.js +0 -5
- package/dist/esm/components/select/Select.d.js.map +0 -7
- package/dist/esm/components/select/Select.d.ts +0 -154
- package/dist/esm/components/select/Select.d.ts.map +0 -1
- package/dist/esm/components/select/index.d.js +0 -2
- package/dist/esm/components/select/index.d.js.map +0 -7
- package/dist/esm/components/select/index.d.ts +0 -2
- package/dist/esm/components/select/index.d.ts.map +0 -1
- package/dist/esm/components/this/This.d.js +0 -5
- package/dist/esm/components/this/This.d.js.map +0 -7
- package/dist/esm/components/this/This.d.ts +0 -31
- package/dist/esm/components/this/This.d.ts.map +0 -1
- package/dist/esm/components/this/index.d.js +0 -2
- package/dist/esm/components/this/index.d.js.map +0 -7
- package/dist/esm/components/this/index.d.ts +0 -2
- package/dist/esm/components/this/index.d.ts.map +0 -1
- package/dist/esm/components/timer/Timer.d.js +0 -5
- package/dist/esm/components/timer/Timer.d.js.map +0 -7
- package/dist/esm/components/timer/Timer.d.ts +0 -26
- package/dist/esm/components/timer/Timer.d.ts.map +0 -1
- package/dist/esm/components/timer/index.d.js +0 -2
- package/dist/esm/components/timer/index.d.js.map +0 -7
- package/dist/esm/components/timer/index.d.ts +0 -2
- package/dist/esm/components/timer/index.d.ts.map +0 -1
- package/dist/esm/configs/DomRenderConfig.d.js +0 -1
- package/dist/esm/configs/DomRenderConfig.d.js.map +0 -7
- package/dist/esm/configs/DomRenderConfig.d.ts +0 -39
- package/dist/esm/configs/DomRenderConfig.d.ts.map +0 -1
- package/dist/esm/configs/TargetAttr.d.js +0 -1
- package/dist/esm/configs/TargetAttr.d.js.map +0 -7
- package/dist/esm/configs/TargetAttr.d.ts.map +0 -1
- package/dist/esm/configs/TargetElement.d.js +0 -1
- package/dist/esm/configs/TargetElement.d.js.map +0 -7
- package/dist/esm/configs/TargetElement.d.ts.map +0 -1
- package/dist/esm/configs/index.d.ts.map +0 -1
- package/dist/esm/decorators/DomRenderNoProxy.d.js +0 -2
- package/dist/esm/decorators/DomRenderNoProxy.d.js.map +0 -7
- package/dist/esm/decorators/DomRenderNoProxy.d.ts +0 -5
- package/dist/esm/decorators/DomRenderNoProxy.d.ts.map +0 -1
- package/dist/esm/decorators/index.d.ts.map +0 -1
- package/dist/esm/events/EventManager.d.js +0 -1
- package/dist/esm/events/EventManager.d.js.map +0 -7
- package/dist/esm/events/EventManager.d.ts +0 -80
- package/dist/esm/events/EventManager.d.ts.map +0 -1
- package/dist/esm/events/index.d.ts +0 -2
- package/dist/esm/events/index.d.ts.map +0 -1
- package/dist/esm/index.d.ts +0 -3
- package/dist/esm/index.d.ts.map +0 -1
- package/dist/esm/iterators/Range.d.js +0 -1
- package/dist/esm/iterators/Range.d.js.map +0 -7
- package/dist/esm/iterators/Range.d.ts +0 -24
- package/dist/esm/iterators/Range.d.ts.map +0 -1
- package/dist/esm/iterators/index.d.ts +0 -2
- package/dist/esm/iterators/index.d.ts.map +0 -1
- package/dist/esm/lifecycle/OnBeforeReturnGet.d.ts.map +0 -1
- package/dist/esm/lifecycle/OnBeforeReturnSet.d.js +0 -1
- package/dist/esm/lifecycle/OnBeforeReturnSet.d.js.map +0 -7
- package/dist/esm/lifecycle/OnBeforeReturnSet.d.ts +0 -5
- package/dist/esm/lifecycle/OnBeforeReturnSet.d.ts.map +0 -1
- package/dist/esm/lifecycle/OnChangeAttrRender.d.js +0 -1
- package/dist/esm/lifecycle/OnChangeAttrRender.d.js.map +0 -7
- package/dist/esm/lifecycle/OnChangeAttrRender.d.ts.map +0 -1
- package/dist/esm/lifecycle/OnChildRenderedByProperty.d.js +0 -1
- package/dist/esm/lifecycle/OnChildRenderedByProperty.d.js.map +0 -7
- package/dist/esm/lifecycle/OnChildRenderedByProperty.d.ts +0 -5
- package/dist/esm/lifecycle/OnChildRenderedByProperty.d.ts.map +0 -1
- package/dist/esm/lifecycle/OnCreateRender.d.js +0 -1
- package/dist/esm/lifecycle/OnCreateRender.d.js.map +0 -7
- package/dist/esm/lifecycle/OnCreateRender.d.ts +0 -5
- package/dist/esm/lifecycle/OnCreateRender.d.ts.map +0 -1
- package/dist/esm/lifecycle/OnCreateRenderData.d.js +0 -1
- package/dist/esm/lifecycle/OnCreateRenderData.d.js.map +0 -7
- package/dist/esm/lifecycle/OnCreateRenderData.d.ts +0 -10
- package/dist/esm/lifecycle/OnCreateRenderData.d.ts.map +0 -1
- package/dist/esm/lifecycle/OnCreateRendered.d.ts +0 -8
- package/dist/esm/lifecycle/OnCreateRendered.d.ts.map +0 -1
- package/dist/esm/lifecycle/OnCreatedThisChild.d.js +0 -1
- package/dist/esm/lifecycle/OnCreatedThisChild.d.js.map +0 -7
- package/dist/esm/lifecycle/OnCreatedThisChild.d.ts +0 -6
- package/dist/esm/lifecycle/OnCreatedThisChild.d.ts.map +0 -1
- package/dist/esm/lifecycle/OnDestroyRender.d.js +0 -1
- package/dist/esm/lifecycle/OnDestroyRender.d.js.map +0 -7
- package/dist/esm/lifecycle/OnDestroyRender.d.ts +0 -9
- package/dist/esm/lifecycle/OnDestroyRender.d.ts.map +0 -1
- package/dist/esm/lifecycle/OnInitRender.d.js +0 -1
- package/dist/esm/lifecycle/OnInitRender.d.js.map +0 -7
- package/dist/esm/lifecycle/OnInitRender.d.ts +0 -6
- package/dist/esm/lifecycle/OnInitRender.d.ts.map +0 -1
- package/dist/esm/lifecycle/OnProxyDomRender.d.js +0 -1
- package/dist/esm/lifecycle/OnProxyDomRender.d.js.map +0 -7
- package/dist/esm/lifecycle/OnProxyDomRender.d.ts +0 -6
- package/dist/esm/lifecycle/OnProxyDomRender.d.ts.map +0 -1
- package/dist/esm/lifecycle/dr-this/OnDrThisBind.d.js +0 -1
- package/dist/esm/lifecycle/dr-this/OnDrThisBind.d.js.map +0 -7
- package/dist/esm/lifecycle/dr-this/OnDrThisBind.d.ts +0 -5
- package/dist/esm/lifecycle/dr-this/OnDrThisBind.d.ts.map +0 -1
- package/dist/esm/lifecycle/dr-this/OnDrThisUnBind.d.js +0 -1
- package/dist/esm/lifecycle/dr-this/OnDrThisUnBind.d.js.map +0 -7
- package/dist/esm/lifecycle/dr-this/OnDrThisUnBind.d.ts +0 -5
- package/dist/esm/lifecycle/dr-this/OnDrThisUnBind.d.ts.map +0 -1
- package/dist/esm/lifecycle/dr-this/index.d.ts.map +0 -1
- package/dist/esm/lifecycle/index.d.ts.map +0 -1
- package/dist/esm/managers/RenderManager.d.ts +0 -2
- package/dist/esm/managers/RenderManager.d.ts.map +0 -1
- package/dist/esm/managers/RenderManager.js +0 -1
- package/dist/esm/managers/RenderManager.js.map +0 -7
- package/dist/esm/managers/index.d.ts +0 -2
- package/dist/esm/managers/index.d.ts.map +0 -1
- package/dist/esm/managers/index.js +0 -2
- package/dist/esm/managers/index.js.map +0 -7
- package/dist/esm/messenger/DefaultMessenger.d.js +0 -1
- package/dist/esm/messenger/DefaultMessenger.d.js.map +0 -7
- package/dist/esm/messenger/DefaultMessenger.d.ts +0 -4
- package/dist/esm/messenger/DefaultMessenger.d.ts.map +0 -1
- package/dist/esm/messenger/Messenger.d.js +0 -1
- package/dist/esm/messenger/Messenger.d.js.map +0 -7
- package/dist/esm/messenger/Messenger.d.ts +0 -79
- package/dist/esm/messenger/Messenger.d.ts.map +0 -1
- package/dist/esm/messenger/index.d.ts.map +0 -1
- package/dist/esm/operators/Appender.d.js +0 -1
- package/dist/esm/operators/Appender.d.js.map +0 -7
- package/dist/esm/operators/Appender.d.ts +0 -15
- package/dist/esm/operators/Appender.d.ts.map +0 -1
- package/dist/esm/operators/Dr.d.js +0 -1
- package/dist/esm/operators/Dr.d.js.map +0 -7
- package/dist/esm/operators/Dr.d.ts +0 -9
- package/dist/esm/operators/Dr.d.ts.map +0 -1
- package/dist/esm/operators/DrAppender.d.js +0 -1
- package/dist/esm/operators/DrAppender.d.js.map +0 -7
- package/dist/esm/operators/DrAppender.d.ts +0 -9
- package/dist/esm/operators/DrAppender.d.ts.map +0 -1
- package/dist/esm/operators/DrFor.d.js +0 -1
- package/dist/esm/operators/DrFor.d.js.map +0 -7
- package/dist/esm/operators/DrFor.d.ts +0 -9
- package/dist/esm/operators/DrFor.d.ts.map +0 -1
- package/dist/esm/operators/DrForOf.d.js +0 -1
- package/dist/esm/operators/DrForOf.d.js.map +0 -7
- package/dist/esm/operators/DrForOf.d.ts +0 -9
- package/dist/esm/operators/DrForOf.d.ts.map +0 -1
- package/dist/esm/operators/DrForm.d.js +0 -1
- package/dist/esm/operators/DrForm.d.js.map +0 -7
- package/dist/esm/operators/DrForm.d.ts +0 -9
- package/dist/esm/operators/DrForm.d.ts.map +0 -1
- package/dist/esm/operators/DrIf.d.js +0 -1
- package/dist/esm/operators/DrIf.d.js.map +0 -7
- package/dist/esm/operators/DrIf.d.ts +0 -9
- package/dist/esm/operators/DrIf.d.ts.map +0 -1
- package/dist/esm/operators/DrInnerHTML.d.js +0 -1
- package/dist/esm/operators/DrInnerHTML.d.js.map +0 -7
- package/dist/esm/operators/DrInnerHTML.d.ts +0 -9
- package/dist/esm/operators/DrInnerHTML.d.ts.map +0 -1
- package/dist/esm/operators/DrInnerText.d.js +0 -1
- package/dist/esm/operators/DrInnerText.d.js.map +0 -7
- package/dist/esm/operators/DrInnerText.d.ts +0 -9
- package/dist/esm/operators/DrInnerText.d.ts.map +0 -1
- package/dist/esm/operators/DrPre.d.js +0 -1
- package/dist/esm/operators/DrPre.d.js.map +0 -7
- package/dist/esm/operators/DrPre.d.ts +0 -8
- package/dist/esm/operators/DrPre.d.ts.map +0 -1
- package/dist/esm/operators/DrRepeat.d.js +0 -1
- package/dist/esm/operators/DrRepeat.d.js.map +0 -7
- package/dist/esm/operators/DrRepeat.d.ts +0 -9
- package/dist/esm/operators/DrRepeat.d.ts.map +0 -1
- package/dist/esm/operators/DrStripElement.d.js +0 -1
- package/dist/esm/operators/DrStripElement.d.js.map +0 -7
- package/dist/esm/operators/DrStripElement.d.ts +0 -9
- package/dist/esm/operators/DrStripElement.d.ts.map +0 -1
- package/dist/esm/operators/DrTargetAttr.d.js +0 -1
- package/dist/esm/operators/DrTargetAttr.d.js.map +0 -7
- package/dist/esm/operators/DrTargetAttr.d.ts +0 -8
- package/dist/esm/operators/DrTargetAttr.d.ts.map +0 -1
- package/dist/esm/operators/DrTargetElement.d.js +0 -1
- package/dist/esm/operators/DrTargetElement.d.js.map +0 -7
- package/dist/esm/operators/DrTargetElement.d.ts +0 -13
- package/dist/esm/operators/DrTargetElement.d.ts.map +0 -1
- package/dist/esm/operators/DrTargetElementIsElement.d.js +0 -1
- package/dist/esm/operators/DrTargetElementIsElement.d.js.map +0 -7
- package/dist/esm/operators/DrTargetElementIsElement.d.ts +0 -8
- package/dist/esm/operators/DrTargetElementIsElement.d.ts.map +0 -1
- package/dist/esm/operators/DrThis.d.js +0 -1
- package/dist/esm/operators/DrThis.d.js.map +0 -7
- package/dist/esm/operators/DrThis.d.ts +0 -7
- package/dist/esm/operators/DrThis.d.ts.map +0 -1
- package/dist/esm/operators/DrThisProperty.d.js +0 -1
- package/dist/esm/operators/DrThisProperty.d.js.map +0 -7
- package/dist/esm/operators/DrThisProperty.d.ts +0 -11
- package/dist/esm/operators/DrThisProperty.d.ts.map +0 -1
- package/dist/esm/operators/OperatorExecuter.d.js +0 -1
- package/dist/esm/operators/OperatorExecuter.d.js.map +0 -7
- package/dist/esm/operators/OperatorExecuter.d.ts +0 -50
- package/dist/esm/operators/OperatorExecuter.d.ts.map +0 -1
- package/dist/esm/operators/OperatorExecuterAttrRequire.d.js +0 -1
- package/dist/esm/operators/OperatorExecuterAttrRequire.d.js.map +0 -7
- package/dist/esm/operators/OperatorExecuterAttrRequire.d.ts +0 -9
- package/dist/esm/operators/OperatorExecuterAttrRequire.d.ts.map +0 -1
- package/dist/esm/operators/index.d.ts.map +0 -1
- package/dist/esm/rawsets/AttrInitCallBack.d.js +0 -1
- package/dist/esm/rawsets/AttrInitCallBack.d.js.map +0 -7
- package/dist/esm/rawsets/AttrInitCallBack.d.ts +0 -6
- package/dist/esm/rawsets/AttrInitCallBack.d.ts.map +0 -1
- package/dist/esm/rawsets/Attrs.d.js +0 -1
- package/dist/esm/rawsets/Attrs.d.js.map +0 -7
- package/dist/esm/rawsets/Attrs.d.ts.map +0 -1
- package/dist/esm/rawsets/CreatorMetaData.d.js +0 -1
- package/dist/esm/rawsets/CreatorMetaData.d.js.map +0 -7
- package/dist/esm/rawsets/CreatorMetaData.d.ts.map +0 -1
- package/dist/esm/rawsets/DestroyOptionType.d.js +0 -1
- package/dist/esm/rawsets/DestroyOptionType.d.js.map +0 -7
- package/dist/esm/rawsets/DestroyOptionType.d.ts +0 -5
- package/dist/esm/rawsets/DestroyOptionType.d.ts.map +0 -1
- package/dist/esm/rawsets/ElementInitCallBack.d.js +0 -1
- package/dist/esm/rawsets/ElementInitCallBack.d.js.map +0 -7
- package/dist/esm/rawsets/ElementInitCallBack.d.ts +0 -9
- package/dist/esm/rawsets/ElementInitCallBack.d.ts.map +0 -1
- package/dist/esm/rawsets/RawSet.d.js +0 -1
- package/dist/esm/rawsets/RawSet.d.js.map +0 -7
- package/dist/esm/rawsets/RawSet.d.ts +0 -180
- package/dist/esm/rawsets/RawSet.d.ts.map +0 -1
- package/dist/esm/rawsets/RawSetOperatorType.d.js +0 -1
- package/dist/esm/rawsets/RawSetOperatorType.d.js.map +0 -7
- package/dist/esm/rawsets/RawSetOperatorType.d.ts +0 -4
- package/dist/esm/rawsets/RawSetOperatorType.d.ts.map +0 -1
- package/dist/esm/rawsets/RawSetType.d.js +0 -1
- package/dist/esm/rawsets/RawSetType.d.js.map +0 -7
- package/dist/esm/rawsets/RawSetType.d.ts +0 -8
- package/dist/esm/rawsets/RawSetType.d.ts.map +0 -1
- package/dist/esm/rawsets/Render.d.js +0 -1
- package/dist/esm/rawsets/Render.d.js.map +0 -7
- package/dist/esm/rawsets/Render.d.ts.map +0 -1
- package/dist/esm/rawsets/index.d.ts.map +0 -1
- package/dist/esm/routers/HashRouter.d.js +0 -1
- package/dist/esm/routers/HashRouter.d.js.map +0 -7
- package/dist/esm/routers/HashRouter.d.ts +0 -25
- package/dist/esm/routers/HashRouter.d.ts.map +0 -1
- package/dist/esm/routers/PathRouter.d.js +0 -1
- package/dist/esm/routers/PathRouter.d.js.map +0 -7
- package/dist/esm/routers/PathRouter.d.ts +0 -24
- package/dist/esm/routers/PathRouter.d.ts.map +0 -1
- package/dist/esm/routers/Router.d.js +0 -2
- package/dist/esm/routers/Router.d.js.map +0 -7
- package/dist/esm/routers/Router.d.ts +0 -83
- package/dist/esm/routers/Router.d.ts.map +0 -1
- package/dist/esm/routers/index.d.ts.map +0 -1
- package/dist/esm/types/Types.d.js +0 -1
- package/dist/esm/types/Types.d.js.map +0 -7
- package/dist/esm/types/Types.d.ts +0 -12
- package/dist/esm/types/Types.d.ts.map +0 -1
- package/dist/esm/types/index.d.ts +0 -2
- package/dist/esm/types/index.d.ts.map +0 -1
- package/dist/esm/types/type.d.ts +0 -25
- package/dist/esm/types/type.d.ts.map +0 -1
- package/dist/esm/validators/AllCheckedValidatorArray.d.ts +0 -7
- package/dist/esm/validators/AllCheckedValidatorArray.d.ts.map +0 -1
- package/dist/esm/validators/AllUnCheckedValidatorArray.d.ts +0 -7
- package/dist/esm/validators/AllUnCheckedValidatorArray.d.ts.map +0 -1
- package/dist/esm/validators/CheckedValidator.d.ts +0 -6
- package/dist/esm/validators/CheckedValidator.d.ts.map +0 -1
- package/dist/esm/validators/CountEqualsCheckedValidatorArray.d.ts +0 -8
- package/dist/esm/validators/CountEqualsCheckedValidatorArray.d.ts.map +0 -1
- package/dist/esm/validators/CountEqualsUnCheckedValidatorArray.d.ts +0 -8
- package/dist/esm/validators/CountEqualsUnCheckedValidatorArray.d.ts.map +0 -1
- package/dist/esm/validators/CountGreaterThanCheckedValidatorArray.d.ts +0 -8
- package/dist/esm/validators/CountGreaterThanCheckedValidatorArray.d.ts.map +0 -1
- package/dist/esm/validators/CountGreaterThanEqualsCheckedValidatorArray.d.ts +0 -8
- package/dist/esm/validators/CountGreaterThanEqualsCheckedValidatorArray.d.ts.map +0 -1
- package/dist/esm/validators/CountGreaterThanEqualsUnCheckedValidatorArray.d.ts +0 -8
- package/dist/esm/validators/CountGreaterThanEqualsUnCheckedValidatorArray.d.ts.map +0 -1
- package/dist/esm/validators/CountGreaterThanUnCheckedValidatorArray.d.ts +0 -8
- package/dist/esm/validators/CountGreaterThanUnCheckedValidatorArray.d.ts.map +0 -1
- package/dist/esm/validators/CountLessThanCheckedValidatorArray.d.ts +0 -8
- package/dist/esm/validators/CountLessThanCheckedValidatorArray.d.ts.map +0 -1
- package/dist/esm/validators/CountLessThanEqualsCheckedValidatorArray.d.ts +0 -8
- package/dist/esm/validators/CountLessThanEqualsCheckedValidatorArray.d.ts.map +0 -1
- package/dist/esm/validators/CountLessThanEqualsUnCheckedValidatorArray.d.ts +0 -8
- package/dist/esm/validators/CountLessThanEqualsUnCheckedValidatorArray.d.ts.map +0 -1
- package/dist/esm/validators/CountLessThanUnCheckedValidatorArray.d.ts +0 -8
- package/dist/esm/validators/CountLessThanUnCheckedValidatorArray.d.ts.map +0 -1
- package/dist/esm/validators/CountUnCheckedValidatorArray.d.ts +0 -8
- package/dist/esm/validators/CountUnCheckedValidatorArray.d.ts.map +0 -1
- package/dist/esm/validators/EmptyValidator.d.ts +0 -6
- package/dist/esm/validators/EmptyValidator.d.ts.map +0 -1
- package/dist/esm/validators/ExcludeCheckedValidatorArray.d.ts +0 -9
- package/dist/esm/validators/ExcludeCheckedValidatorArray.d.ts.map +0 -1
- package/dist/esm/validators/FormValidator.d.ts +0 -8
- package/dist/esm/validators/FormValidator.d.ts.map +0 -1
- package/dist/esm/validators/IncludeCheckedValidatorArray.d.ts +0 -9
- package/dist/esm/validators/IncludeCheckedValidatorArray.d.ts.map +0 -1
- package/dist/esm/validators/MultipleValidator.d.ts +0 -9
- package/dist/esm/validators/MultipleValidator.d.ts.map +0 -1
- package/dist/esm/validators/NonPassValidator.d.js +0 -1
- package/dist/esm/validators/NonPassValidator.d.js.map +0 -7
- package/dist/esm/validators/NonPassValidator.d.ts +0 -6
- package/dist/esm/validators/NonPassValidator.d.ts.map +0 -1
- package/dist/esm/validators/NotEmptyValidator.d.ts +0 -6
- package/dist/esm/validators/NotEmptyValidator.d.ts.map +0 -1
- package/dist/esm/validators/NotRegExpTestValidator.d.ts +0 -7
- package/dist/esm/validators/NotRegExpTestValidator.d.ts.map +0 -1
- package/dist/esm/validators/PassValidator.d.ts +0 -6
- package/dist/esm/validators/PassValidator.d.ts.map +0 -1
- package/dist/esm/validators/RegExpTestValidator.d.ts +0 -7
- package/dist/esm/validators/RegExpTestValidator.d.ts.map +0 -1
- package/dist/esm/validators/RequiredValidator.d.ts +0 -6
- package/dist/esm/validators/RequiredValidator.d.ts.map +0 -1
- package/dist/esm/validators/UnCheckedValidator.d.ts +0 -6
- package/dist/esm/validators/UnCheckedValidator.d.ts.map +0 -1
- package/dist/esm/validators/ValidMultipleValidator.d.ts +0 -10
- package/dist/esm/validators/ValidMultipleValidator.d.ts.map +0 -1
- package/dist/esm/validators/ValidValidator.d.ts +0 -7
- package/dist/esm/validators/ValidValidator.d.ts.map +0 -1
- package/dist/esm/validators/ValidValidatorArray.d.ts +0 -8
- package/dist/esm/validators/ValidValidatorArray.d.ts.map +0 -1
- package/dist/esm/validators/Validator.d.js +0 -1
- package/dist/esm/validators/Validator.d.js.map +0 -7
- package/dist/esm/validators/Validator.d.ts +0 -58
- package/dist/esm/validators/Validator.d.ts.map +0 -1
- package/dist/esm/validators/ValidatorArray.d.js +0 -1
- package/dist/esm/validators/ValidatorArray.d.js.map +0 -7
- package/dist/esm/validators/ValidatorArray.d.ts +0 -18
- package/dist/esm/validators/ValidatorArray.d.ts.map +0 -1
- package/dist/esm/validators/ValueEqualsValidator.d.ts +0 -7
- package/dist/esm/validators/ValueEqualsValidator.d.ts.map +0 -1
- package/dist/esm/validators/ValueNotEqualsValidator.d.ts +0 -7
- package/dist/esm/validators/ValueNotEqualsValidator.d.ts.map +0 -1
- package/dist/esm/validators/index.d.ts.map +0 -1
- /package/dist/{cjs → types}/DomRender.d.ts +0 -0
- /package/dist/{cjs → types}/DomRender.d.ts.map +0 -0
- /package/dist/{cjs → types}/DomRenderProxy.d.ts +0 -0
- /package/dist/{cjs → types}/DomRenderProxy.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/ComponentBase.d.ts +0 -0
- /package/dist/{cjs → types}/components/ComponentBase.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/ComponentRouterBase.d.ts +0 -0
- /package/dist/{cjs → types}/components/ComponentRouterBase.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/ComponentSet.d.ts +0 -0
- /package/dist/{cjs → types}/components/ComponentSet.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/a/A.d.ts +0 -0
- /package/dist/{cjs → types}/components/a/A.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/a/index.d.ts +0 -0
- /package/dist/{cjs → types}/components/a/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/appender/Appender.d.ts +0 -0
- /package/dist/{cjs → types}/components/appender/Appender.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/appender/index.d.ts +0 -0
- /package/dist/{cjs → types}/components/appender/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/checkbox/CheckBox.d.ts +0 -0
- /package/dist/{cjs → types}/components/checkbox/CheckBox.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/checkbox/index.d.ts +0 -0
- /package/dist/{cjs → types}/components/checkbox/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/choose/Choose.d.ts +0 -0
- /package/dist/{cjs → types}/components/choose/Choose.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/choose/index.d.ts +0 -0
- /package/dist/{cjs → types}/components/choose/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/details/Details.d.ts +0 -0
- /package/dist/{cjs → types}/components/details/Details.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/details/index.d.ts +0 -0
- /package/dist/{cjs → types}/components/details/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/dialog/Dialog.d.ts +0 -0
- /package/dist/{cjs → types}/components/dialog/Dialog.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/dialog/example/ImageEditorDialog.d.ts +0 -0
- /package/dist/{cjs → types}/components/dialog/example/ImageEditorDialog.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/forOf/ForOf.d.ts +0 -0
- /package/dist/{cjs → types}/components/forOf/ForOf.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/forOf/index.d.ts +0 -0
- /package/dist/{cjs → types}/components/forOf/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/if/If.d.ts +0 -0
- /package/dist/{cjs → types}/components/if/If.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/if/index.d.ts +0 -0
- /package/dist/{cjs → types}/components/if/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/index.d.ts +0 -0
- /package/dist/{cjs → types}/components/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/input/Input.d.ts +0 -0
- /package/dist/{cjs → types}/components/input/Input.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/input/index.d.ts +0 -0
- /package/dist/{cjs → types}/components/input/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/promise/PromiseSwitch.d.ts +0 -0
- /package/dist/{cjs → types}/components/promise/PromiseSwitch.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/promise/index.d.ts +0 -0
- /package/dist/{cjs → types}/components/promise/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/radio/Radio.d.ts +0 -0
- /package/dist/{cjs → types}/components/radio/Radio.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/radio/index.d.ts +0 -0
- /package/dist/{cjs → types}/components/radio/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/router/Route.d.ts +0 -0
- /package/dist/{cjs → types}/components/router/Route.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/router/RouterOutlet.d.ts +0 -0
- /package/dist/{cjs → types}/components/router/RouterOutlet.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/router/index.d.ts +0 -0
- /package/dist/{cjs → types}/components/router/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/select/Select.d.ts +0 -0
- /package/dist/{cjs → types}/components/select/Select.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/select/index.d.ts +0 -0
- /package/dist/{cjs → types}/components/select/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/this/This.d.ts +0 -0
- /package/dist/{cjs → types}/components/this/This.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/this/index.d.ts +0 -0
- /package/dist/{cjs → types}/components/this/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/timer/Timer.d.ts +0 -0
- /package/dist/{cjs → types}/components/timer/Timer.d.ts.map +0 -0
- /package/dist/{cjs → types}/components/timer/index.d.ts +0 -0
- /package/dist/{cjs → types}/components/timer/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/configs/DomRenderConfig.d.ts +0 -0
- /package/dist/{cjs → types}/configs/DomRenderConfig.d.ts.map +0 -0
- /package/dist/{cjs → types}/configs/TargetAttr.d.ts +0 -0
- /package/dist/{cjs → types}/configs/TargetAttr.d.ts.map +0 -0
- /package/dist/{cjs → types}/configs/TargetElement.d.ts +0 -0
- /package/dist/{cjs → types}/configs/TargetElement.d.ts.map +0 -0
- /package/dist/{cjs → types}/configs/index.d.ts +0 -0
- /package/dist/{cjs → types}/configs/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/decorators/DomRenderNoProxy.d.ts +0 -0
- /package/dist/{cjs → types}/decorators/DomRenderNoProxy.d.ts.map +0 -0
- /package/dist/{cjs → types}/decorators/index.d.ts +0 -0
- /package/dist/{cjs → types}/decorators/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/events/EventManager.d.ts +0 -0
- /package/dist/{cjs → types}/events/EventManager.d.ts.map +0 -0
- /package/dist/{cjs → types}/events/index.d.ts +0 -0
- /package/dist/{cjs → types}/events/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/iterators/Range.d.ts +0 -0
- /package/dist/{cjs → types}/iterators/Range.d.ts.map +0 -0
- /package/dist/{cjs → types}/iterators/index.d.ts +0 -0
- /package/dist/{cjs → types}/iterators/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/lifecycle/OnBeforeReturnGet.d.ts +0 -0
- /package/dist/{cjs → types}/lifecycle/OnBeforeReturnGet.d.ts.map +0 -0
- /package/dist/{cjs → types}/lifecycle/OnBeforeReturnSet.d.ts +0 -0
- /package/dist/{cjs → types}/lifecycle/OnBeforeReturnSet.d.ts.map +0 -0
- /package/dist/{cjs → types}/lifecycle/OnChangeAttrRender.d.ts +0 -0
- /package/dist/{cjs → types}/lifecycle/OnChangeAttrRender.d.ts.map +0 -0
- /package/dist/{cjs → types}/lifecycle/OnChildRenderedByProperty.d.ts +0 -0
- /package/dist/{cjs → types}/lifecycle/OnChildRenderedByProperty.d.ts.map +0 -0
- /package/dist/{cjs → types}/lifecycle/OnCreateRender.d.ts +0 -0
- /package/dist/{cjs → types}/lifecycle/OnCreateRender.d.ts.map +0 -0
- /package/dist/{cjs → types}/lifecycle/OnCreateRenderData.d.ts +0 -0
- /package/dist/{cjs → types}/lifecycle/OnCreateRenderData.d.ts.map +0 -0
- /package/dist/{cjs → types}/lifecycle/OnCreateRendered.d.ts +0 -0
- /package/dist/{cjs → types}/lifecycle/OnCreateRendered.d.ts.map +0 -0
- /package/dist/{cjs → types}/lifecycle/OnCreatedThisChild.d.ts +0 -0
- /package/dist/{cjs → types}/lifecycle/OnCreatedThisChild.d.ts.map +0 -0
- /package/dist/{cjs → types}/lifecycle/OnDestroyRender.d.ts +0 -0
- /package/dist/{cjs → types}/lifecycle/OnDestroyRender.d.ts.map +0 -0
- /package/dist/{cjs → types}/lifecycle/OnInitRender.d.ts +0 -0
- /package/dist/{cjs → types}/lifecycle/OnInitRender.d.ts.map +0 -0
- /package/dist/{cjs → types}/lifecycle/OnProxyDomRender.d.ts +0 -0
- /package/dist/{cjs → types}/lifecycle/OnProxyDomRender.d.ts.map +0 -0
- /package/dist/{cjs → types}/lifecycle/dr-this/OnDrThisBind.d.ts +0 -0
- /package/dist/{cjs → types}/lifecycle/dr-this/OnDrThisBind.d.ts.map +0 -0
- /package/dist/{cjs → types}/lifecycle/dr-this/OnDrThisUnBind.d.ts +0 -0
- /package/dist/{cjs → types}/lifecycle/dr-this/OnDrThisUnBind.d.ts.map +0 -0
- /package/dist/{cjs → types}/lifecycle/dr-this/index.d.ts +0 -0
- /package/dist/{cjs → types}/lifecycle/dr-this/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/lifecycle/index.d.ts +0 -0
- /package/dist/{cjs → types}/lifecycle/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/messenger/DefaultMessenger.d.ts +0 -0
- /package/dist/{cjs → types}/messenger/DefaultMessenger.d.ts.map +0 -0
- /package/dist/{cjs → types}/messenger/Messenger.d.ts +0 -0
- /package/dist/{cjs → types}/messenger/Messenger.d.ts.map +0 -0
- /package/dist/{cjs → types}/messenger/index.d.ts +0 -0
- /package/dist/{cjs → types}/messenger/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/operators/Appender.d.ts +0 -0
- /package/dist/{cjs → types}/operators/Appender.d.ts.map +0 -0
- /package/dist/{cjs → types}/operators/Dr.d.ts +0 -0
- /package/dist/{cjs → types}/operators/Dr.d.ts.map +0 -0
- /package/dist/{cjs → types}/operators/DrAppender.d.ts +0 -0
- /package/dist/{cjs → types}/operators/DrAppender.d.ts.map +0 -0
- /package/dist/{cjs → types}/operators/DrFor.d.ts +0 -0
- /package/dist/{cjs → types}/operators/DrFor.d.ts.map +0 -0
- /package/dist/{cjs → types}/operators/DrForOf.d.ts +0 -0
- /package/dist/{cjs → types}/operators/DrForOf.d.ts.map +0 -0
- /package/dist/{cjs → types}/operators/DrForm.d.ts +0 -0
- /package/dist/{cjs → types}/operators/DrForm.d.ts.map +0 -0
- /package/dist/{cjs → types}/operators/DrIf.d.ts +0 -0
- /package/dist/{cjs → types}/operators/DrIf.d.ts.map +0 -0
- /package/dist/{cjs → types}/operators/DrInnerHTML.d.ts +0 -0
- /package/dist/{cjs → types}/operators/DrInnerHTML.d.ts.map +0 -0
- /package/dist/{cjs → types}/operators/DrInnerText.d.ts +0 -0
- /package/dist/{cjs → types}/operators/DrInnerText.d.ts.map +0 -0
- /package/dist/{cjs → types}/operators/DrPre.d.ts +0 -0
- /package/dist/{cjs → types}/operators/DrPre.d.ts.map +0 -0
- /package/dist/{cjs → types}/operators/DrRepeat.d.ts +0 -0
- /package/dist/{cjs → types}/operators/DrRepeat.d.ts.map +0 -0
- /package/dist/{cjs → types}/operators/DrStripElement.d.ts +0 -0
- /package/dist/{cjs → types}/operators/DrStripElement.d.ts.map +0 -0
- /package/dist/{cjs → types}/operators/DrTargetAttr.d.ts +0 -0
- /package/dist/{cjs → types}/operators/DrTargetAttr.d.ts.map +0 -0
- /package/dist/{cjs → types}/operators/DrTargetElement.d.ts +0 -0
- /package/dist/{cjs → types}/operators/DrTargetElement.d.ts.map +0 -0
- /package/dist/{cjs → types}/operators/DrTargetElementIsElement.d.ts +0 -0
- /package/dist/{cjs → types}/operators/DrTargetElementIsElement.d.ts.map +0 -0
- /package/dist/{cjs → types}/operators/DrThis.d.ts +0 -0
- /package/dist/{cjs → types}/operators/DrThis.d.ts.map +0 -0
- /package/dist/{cjs → types}/operators/DrThisProperty.d.ts +0 -0
- /package/dist/{cjs → types}/operators/DrThisProperty.d.ts.map +0 -0
- /package/dist/{cjs → types}/operators/OperatorExecuter.d.ts +0 -0
- /package/dist/{cjs → types}/operators/OperatorExecuter.d.ts.map +0 -0
- /package/dist/{cjs → types}/operators/OperatorExecuterAttrRequire.d.ts +0 -0
- /package/dist/{cjs → types}/operators/OperatorExecuterAttrRequire.d.ts.map +0 -0
- /package/dist/{cjs → types}/operators/index.d.ts +0 -0
- /package/dist/{cjs → types}/operators/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/rawsets/AttrInitCallBack.d.ts +0 -0
- /package/dist/{cjs → types}/rawsets/AttrInitCallBack.d.ts.map +0 -0
- /package/dist/{cjs → types}/rawsets/Attrs.d.ts +0 -0
- /package/dist/{cjs → types}/rawsets/Attrs.d.ts.map +0 -0
- /package/dist/{cjs → types}/rawsets/CreatorMetaData.d.ts +0 -0
- /package/dist/{cjs → types}/rawsets/CreatorMetaData.d.ts.map +0 -0
- /package/dist/{cjs → types}/rawsets/DestroyOptionType.d.ts +0 -0
- /package/dist/{cjs → types}/rawsets/DestroyOptionType.d.ts.map +0 -0
- /package/dist/{cjs → types}/rawsets/ElementInitCallBack.d.ts +0 -0
- /package/dist/{cjs → types}/rawsets/ElementInitCallBack.d.ts.map +0 -0
- /package/dist/{cjs → types}/rawsets/RawSet.d.ts +0 -0
- /package/dist/{cjs → types}/rawsets/RawSet.d.ts.map +0 -0
- /package/dist/{cjs → types}/rawsets/RawSetOperatorType.d.ts +0 -0
- /package/dist/{cjs → types}/rawsets/RawSetOperatorType.d.ts.map +0 -0
- /package/dist/{cjs → types}/rawsets/RawSetType.d.ts +0 -0
- /package/dist/{cjs → types}/rawsets/RawSetType.d.ts.map +0 -0
- /package/dist/{cjs → types}/rawsets/Render.d.ts +0 -0
- /package/dist/{cjs → types}/rawsets/Render.d.ts.map +0 -0
- /package/dist/{cjs → types}/rawsets/index.d.ts +0 -0
- /package/dist/{cjs → types}/rawsets/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/routers/HashRouter.d.ts +0 -0
- /package/dist/{cjs → types}/routers/HashRouter.d.ts.map +0 -0
- /package/dist/{cjs → types}/routers/PathRouter.d.ts +0 -0
- /package/dist/{cjs → types}/routers/PathRouter.d.ts.map +0 -0
- /package/dist/{cjs → types}/routers/Router.d.ts +0 -0
- /package/dist/{cjs → types}/routers/Router.d.ts.map +0 -0
- /package/dist/{cjs → types}/routers/index.d.ts +0 -0
- /package/dist/{cjs → types}/routers/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/types/Types.d.ts +0 -0
- /package/dist/{cjs → types}/types/Types.d.ts.map +0 -0
- /package/dist/{cjs → types}/types/index.d.ts +0 -0
- /package/dist/{cjs → types}/types/index.d.ts.map +0 -0
- /package/dist/{cjs → types}/types/type.d.ts +0 -0
- /package/dist/{cjs → types}/types/type.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/AllCheckedValidatorArray.d.ts +0 -0
- /package/dist/{cjs → types}/validators/AllCheckedValidatorArray.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/AllUnCheckedValidatorArray.d.ts +0 -0
- /package/dist/{cjs → types}/validators/AllUnCheckedValidatorArray.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/CheckedValidator.d.ts +0 -0
- /package/dist/{cjs → types}/validators/CheckedValidator.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/CountEqualsCheckedValidatorArray.d.ts +0 -0
- /package/dist/{cjs → types}/validators/CountEqualsCheckedValidatorArray.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/CountEqualsUnCheckedValidatorArray.d.ts +0 -0
- /package/dist/{cjs → types}/validators/CountEqualsUnCheckedValidatorArray.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/CountGreaterThanCheckedValidatorArray.d.ts +0 -0
- /package/dist/{cjs → types}/validators/CountGreaterThanCheckedValidatorArray.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/CountGreaterThanEqualsCheckedValidatorArray.d.ts +0 -0
- /package/dist/{cjs → types}/validators/CountGreaterThanEqualsCheckedValidatorArray.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/CountGreaterThanEqualsUnCheckedValidatorArray.d.ts +0 -0
- /package/dist/{cjs → types}/validators/CountGreaterThanEqualsUnCheckedValidatorArray.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/CountGreaterThanUnCheckedValidatorArray.d.ts +0 -0
- /package/dist/{cjs → types}/validators/CountGreaterThanUnCheckedValidatorArray.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/CountLessThanCheckedValidatorArray.d.ts +0 -0
- /package/dist/{cjs → types}/validators/CountLessThanCheckedValidatorArray.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/CountLessThanEqualsCheckedValidatorArray.d.ts +0 -0
- /package/dist/{cjs → types}/validators/CountLessThanEqualsCheckedValidatorArray.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/CountLessThanEqualsUnCheckedValidatorArray.d.ts +0 -0
- /package/dist/{cjs → types}/validators/CountLessThanEqualsUnCheckedValidatorArray.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/CountLessThanUnCheckedValidatorArray.d.ts +0 -0
- /package/dist/{cjs → types}/validators/CountLessThanUnCheckedValidatorArray.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/CountUnCheckedValidatorArray.d.ts +0 -0
- /package/dist/{cjs → types}/validators/CountUnCheckedValidatorArray.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/EmptyValidator.d.ts +0 -0
- /package/dist/{cjs → types}/validators/EmptyValidator.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/ExcludeCheckedValidatorArray.d.ts +0 -0
- /package/dist/{cjs → types}/validators/ExcludeCheckedValidatorArray.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/FormValidator.d.ts +0 -0
- /package/dist/{cjs → types}/validators/FormValidator.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/IncludeCheckedValidatorArray.d.ts +0 -0
- /package/dist/{cjs → types}/validators/IncludeCheckedValidatorArray.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/MultipleValidator.d.ts +0 -0
- /package/dist/{cjs → types}/validators/MultipleValidator.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/NonPassValidator.d.ts +0 -0
- /package/dist/{cjs → types}/validators/NonPassValidator.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/NotEmptyValidator.d.ts +0 -0
- /package/dist/{cjs → types}/validators/NotEmptyValidator.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/NotRegExpTestValidator.d.ts +0 -0
- /package/dist/{cjs → types}/validators/NotRegExpTestValidator.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/PassValidator.d.ts +0 -0
- /package/dist/{cjs → types}/validators/PassValidator.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/RegExpTestValidator.d.ts +0 -0
- /package/dist/{cjs → types}/validators/RegExpTestValidator.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/RequiredValidator.d.ts +0 -0
- /package/dist/{cjs → types}/validators/RequiredValidator.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/UnCheckedValidator.d.ts +0 -0
- /package/dist/{cjs → types}/validators/UnCheckedValidator.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/ValidMultipleValidator.d.ts +0 -0
- /package/dist/{cjs → types}/validators/ValidMultipleValidator.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/ValidValidator.d.ts +0 -0
- /package/dist/{cjs → types}/validators/ValidValidator.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/ValidValidatorArray.d.ts +0 -0
- /package/dist/{cjs → types}/validators/ValidValidatorArray.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/Validator.d.ts +0 -0
- /package/dist/{cjs → types}/validators/Validator.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/ValidatorArray.d.ts +0 -0
- /package/dist/{cjs → types}/validators/ValidatorArray.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/ValueEqualsValidator.d.ts +0 -0
- /package/dist/{cjs → types}/validators/ValueEqualsValidator.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/ValueNotEqualsValidator.d.ts +0 -0
- /package/dist/{cjs → types}/validators/ValueNotEqualsValidator.d.ts.map +0 -0
- /package/dist/{cjs → types}/validators/index.d.ts +0 -0
- /package/dist/{cjs → types}/validators/index.d.ts.map +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["// export { DomRender, type DomRenderRunConfig, type CreateComponentParam } from './DomRender';\n// export { DomRenderProxy, getDomRenderConfig, getDomRenderOriginObject, getDomRenderProxy, isWrapProxyDomRenderProxy } from './DomRenderProxy';\n//\n// export * from './configs';\n// export * from './decorators';\n// export * from './events';\n// export * from './iterators';\n// export * from './lifecycle';\n// export * from './managers';\n// export * from './messenger';\n// export { Appender as AppenderArray, Dr, DrAppender, DrFor, DrForOf, DrForm, DrIf, DrInnerHTML, DrInnerText, DrPre, DrRepeat, DrStripElement, DrTargetAttr, DrTargetElement, DrTargetElementIsElement, DrThis, DrThisProperty, OperatorExecuter, OperatorExecuterAttrRequire } from './operators';\n// export * from './rawsets';\n// export * from './routers';\n// export * from './types';\n// export * from './validators';\n// export * from './components';\nexport default {}"],
|
|
5
|
-
"mappings": ";AAgBA,IAAO,cAAQ,CAAC;",
|
|
6
|
-
"names": []
|
|
3
|
+
"sources": ["../../../core/src/valid/ValidUtils.ts", "../../../core/src/random/RandomUtils.ts", "../../../core/src/string/StringUtils.ts", "../../../core/src/types.ts", "../../../core/src/object/ObjectUtils.ts", "../../../core-web/src/script/ScriptUtils.ts", "../../../core/src/promise/Promises.ts", "../../../core-web/src/element/ElementUtils.ts", "../../src/iterators/Range.ts", "../../src/events/EventManager.ts", "../../src/operators/OperatorExecuter.ts", "../../src/operators/DrPre.ts", "../../src/operators/OperatorExecuterAttrRequire.ts", "../../src/operators/Dr.ts", "../../src/operators/DrIf.ts", "../../src/types/Types.ts", "../../src/components/ComponentSet.ts", "../../src/lifecycle/dr-this/OnDrThisUnBind.ts", "../../src/lifecycle/dr-this/OnDrThisBind.ts", "../../src/operators/DrThis.ts", "../../src/validators/Validator.ts", "../../src/validators/NonPassValidator.ts", "../../src/validators/ValidatorArray.ts", "../../src/operators/DrForm.ts", "../../src/operators/DrInnerText.ts", "../../src/operators/DrInnerHTML.ts", "../../src/operators/DrFor.ts", "../../src/operators/DrForOf.ts", "../../src/operators/DrAppender.ts", "../../src/operators/DrRepeat.ts", "../../src/operators/DrTargetElement.ts", "../../src/operators/DrTargetAttr.ts", "../../src/operators/DrStripElement.ts", "../../src/rawsets/DestroyOptionType.ts", "../../src/rawsets/RawSetType.ts", "../../src/operators/DrThisProperty.ts", "../../src/rawsets/RawSetOperatorType.ts", "../../../core/src/parser/css/CssParser.ts", "../../src/lifecycle/OnCreateRenderData.ts", "../../src/lifecycle/OnCreateRender.ts", "../../src/lifecycle/OnChangeAttrRender.ts", "../../src/lifecycle/OnInitRender.ts", "../../src/lifecycle/OnCreatedThisChild.ts", "../../src/lifecycle/OnDestroyRender.ts", "../../src/operators/DrTargetElementIsElement.ts", "../../src/rawsets/RawSet.ts", "../../src/decorators/DomRenderNoProxy.ts", "../../../core/src/message/Subscriber..ts", "../../../core/src/message/Observable.ts", "../../../core-web/src/document/DocumentUtils.ts", "../../src/lifecycle/OnBeforeReturnSet.ts", "../../src/lifecycle/OnChildRenderedByProperty.ts", "../../src/lifecycle/OnProxyDomRender.ts", "../../src/DomRenderProxy.ts", "../../../core/src/entity/Point2D.ts", "../../../core/src/entity/Vector.ts", "../../../core/src/entity/Point3D.ts", "../../../core/src/entity/object/obj/Obj.ts", "../../../core/src/math/MathUtil.ts", "../../../core/src/entity/SizeType.ts", "../../../core/src/entity/Rect.ts", "../../../core/src/convert/ConvertUtils.ts", "../../../core/src/message/Subject.ts", "../../../core/src/message/BehaviorSubject.ts", "../../../core/src/expression/Expression.ts", "../../src/routers/Router.ts", "../../src/routers/PathRouter.ts", "../../../core-web/src/location/LocationUtils.ts", "../../src/routers/HashRouter.ts", "../../src/messenger/Messenger.ts", "../../src/messenger/DefaultMessenger.ts", "../../../core/src/reflect/ReflectUtils.ts", "../../../core/src/message/operators/debounceTime.ts", "../../src/components/ComponentBase.ts", "../../src/components/ComponentRouterBase.ts", "../../src/components/a/A.ts", "../../src/components/appender/Appender.ts", "../../src/components/checkbox/CheckBox.ts", "../../src/components/choose/Choose.ts", "../../../core-web/src/valid/ValidUtils.ts", "../../../core-web/src/event/EventUtils.ts", "../../src/components/details/Details.ts", "../../src/components/forOf/ForOf.ts", "../../src/components/if/If.ts", "../../../core/src/message/operators/map.ts", "../../../core/src/message/operators/distinctUntilChanged.ts", "../../src/components/input/Input.ts", "../../src/components/promise/PromiseSwitch.ts", "../../src/components/radio/Radio.ts", "../../src/components/router/Route.ts", "../../src/components/router/RouterOutlet.ts", "../../../core-web/src/window/WindowUtils.ts", "../../src/components/select/Select.ts", "../../src/components/this/This.ts", "../../src/components/timer/Timer.ts", "../../src/components/index.ts", "../../src/DomRender.ts", "../../src/lifecycle/OnCreateRendered.ts", "../../src/operators/Appender.ts", "../../src/validators/AllCheckedValidatorArray.ts", "../../src/validators/AllUnCheckedValidatorArray.ts", "../../src/validators/CheckedValidator.ts", "../../src/validators/CountEqualsCheckedValidatorArray.ts", "../../src/validators/CountEqualsUnCheckedValidatorArray.ts", "../../src/validators/CountGreaterThanCheckedValidatorArray.ts", "../../src/validators/CountGreaterThanEqualsCheckedValidatorArray.ts", "../../src/validators/CountGreaterThanEqualsUnCheckedValidatorArray.ts", "../../src/validators/CountGreaterThanUnCheckedValidatorArray.ts", "../../src/validators/CountLessThanCheckedValidatorArray.ts", "../../src/validators/CountLessThanEqualsCheckedValidatorArray.ts", "../../src/validators/CountLessThanEqualsUnCheckedValidatorArray.ts", "../../src/validators/CountLessThanUnCheckedValidatorArray.ts", "../../src/validators/CountUnCheckedValidatorArray.ts", "../../src/validators/EmptyValidator.ts", "../../src/validators/ExcludeCheckedValidatorArray.ts", "../../src/validators/FormValidator.ts", "../../src/validators/IncludeCheckedValidatorArray.ts", "../../src/validators/MultipleValidator.ts", "../../src/validators/NotEmptyValidator.ts", "../../src/validators/NotRegExpTestValidator.ts", "../../src/validators/PassValidator.ts", "../../src/validators/RegExpTestValidator.ts", "../../src/validators/RequiredValidator.ts", "../../src/validators/UnCheckedValidator.ts", "../../src/validators/ValidMultipleValidator.ts", "../../src/validators/ValidValidator.ts", "../../src/validators/ValidValidatorArray.ts"],
|
|
4
|
+
"sourcesContent": ["import { ConstructorType, FilterFalsy, FilterNullish, NonNullable, Nullable, Nullish, NullOrUndefined } from '../types';\n\nexport namespace ValidUtils {\n\n export const isArrowFunction = (fn: any): fn is Function => {\n // 1. \uD568\uC218\uAC00 \uC544\uB2C8\uBA74 false\n if (typeof fn !== 'function') {\n return false;\n }\n // 2. prototype \uC18D\uC131\uC774 \uC5C6\uC73C\uBA74 \uD654\uC0B4\uD45C \uD568\uC218 (\uB610\uB294 prototype\uC774 \uC5C6\uB294 \uB2E4\uB978 callable)\n // 3. \uD074\uB798\uC2A4\uB294 'class' \uD0A4\uC6CC\uB4DC\uB85C \uC2DC\uC791\uD558\uBBC0\uB85C \uC81C\uC678\n return typeof fn.prototype === 'undefined' && !fn.toString().startsWith('class');\n }\n\n export const isPlainObject = (obj: any): boolean => {\n return obj !== null && typeof obj === 'object' && obj.constructor === Object;\n }\n\n const isConstructorLike = (fn: any): boolean => {\n // 1. \uD568\uC218\uC5EC\uC57C \uD558\uACE0,\n // 2. prototype \uC18D\uC131\uC744 \uAC00\uC838\uC57C \uD568\n return typeof fn === 'function' && typeof fn.prototype !== 'undefined';\n }\n\n\n export const isFrozen = (obj: any): boolean => {\n return Object.isFrozen(obj);\n }\n export const isSealed= (obj: any): boolean => {\n return Object.isSealed(obj)\n }\n export const isFrozenOrSealed = (obj: any): boolean => {\n return ValidUtils.isFrozen(obj) || ValidUtils.isSealed(obj);\n }\n export const isFrozenAndSealed = (obj: any): boolean => {\n return ValidUtils.isFrozen(obj) && ValidUtils.isSealed(obj);\n }\n export const isNotFrozen = (obj: any): boolean => {\n return !Object.isFrozen(obj);\n }\n export const isNotSealed = (obj: any): boolean => {\n return !Object.isSealed(obj)\n }\n export const isNotFrozenOrSealed = (obj: any): boolean => {\n return !ValidUtils.isFrozen(obj) && !ValidUtils.isSealed(obj);\n }\n export const isNotFrozenAndSealed = (obj: any): boolean => {\n return !ValidUtils.isFrozen(obj) || !ValidUtils.isSealed(obj);\n }\n\n export const isNullOrUndefined = (data: unknown): data is (null | undefined) => {\n return data == null || undefined === data;\n}\n\n export const isConstructor = (obj: ConstructorType<any> | ((e: any) => void)): obj is ConstructorType<any> => {\n // \uD568\uC218\uC774\uBA74\uC11C prototype \uC18D\uC131\uC774 \uC788\uACE0 prototype\uC774 \uAC1D\uCCB4\uC778\uC9C0 \uD655\uC778\n return typeof obj === 'function'\n && obj.prototype !== undefined\n && obj.prototype.constructor === obj\n // && Object.getOwnPropertyNames(obj.prototype).length > 1; // constructor \uC678\uC5D0 \uB2E4\uB978 \uC18D\uC131\uC774 \uC788\uB294\uC9C0 \uD655\uC778\n }\n export const isFunction = (obj: ConstructorType<any> | ((e: any) => void)): obj is ((e: any) => void) => {\n return typeof obj === 'function' && !isConstructor(obj);\n }\n export const isNullish = <T = any>(data: T | null | undefined): data is null | undefined => {\n return ValidUtils.isNotNullish(data);\n }\n export const isNotNullish = <T>(data: T | null | undefined): data is NonNullable<T> => {\n if ((Array.isArray(data) || ValidUtils.isString(data))) {\n return data.length > 0;\n }\n\n if (data instanceof Set || data instanceof Map) {\n return data.size > 0;\n }\n\n if (typeof data === 'object' && data !== null) {\n return Object.keys(data).length > 0;\n }\n\n return data !== null && data !== undefined;\n }\n\n export const isNotNullUndefined = <T>(data: T | null | undefined): data is NonNullable<T> => {\n return data !== null && data !== undefined;\n }\n\n export const isNull = (data: any): data is null => {\n return data === null;\n }\n\n export const isUndefined = (data: any): data is undefined => {\n return data === undefined;\n }\n\n export const isArray = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Array]'\n }\n }\n\n export const isStringNumber = (value: string | number): boolean => {\n if (typeof value === 'number') {\n return !isNaN(value);\n }\n return typeof value === 'string' && value.trim() !== '' && !isNaN(Number(value));\n }\n\n export const isNumber = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Number]'\n }\n }\n\n export const isIterator = <T>(object_o: any): object_o is Iterable<T> => {\n return object_o != null && typeof object_o[Symbol.iterator] === 'function';\n };\n\n export const isString = (object_o: any): object_o is string => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object String]'\n }\n }\n\n // export const isFunction = (object_o: any): boolean => {\n // if (ValidUtils.isNullOrUndefined(object_o)) {\n // return false\n // } else {\n // return Object.prototype.toString.call(object_o).trim() === '[object Function]'\n // }\n // // if (typeof object_o === 'function') {\n // // return true;\n // // }else {\n // // return false;\n // // }\n // }\n\n export const isObject = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Object]'\n }\n }\n\n export const isMap = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return false\n } else {\n return Object.prototype.toString.call(object_o).trim() === '[object Map]'\n }\n }\n\n\n export const isEmpty = (object_o: any): boolean => {\n if (ValidUtils.isNullOrUndefined(object_o)) {\n return true;\n } else if (ValidUtils.isArray(object_o)) {\n return object_o.length === 0;\n } else if (ValidUtils.isString(object_o)) {\n return object_o.trim().length === 0;\n } else if (ValidUtils.isMap(object_o)) {\n return object_o.size === 0;\n } else if (ValidUtils.isObject(object_o)) {\n return Object.keys(object_o).length === 0;\n } else {\n return false;\n }\n };\n\n\n export const isSet = <T = any>(data: any): data is Set<T> => {\n return data instanceof Set;\n };\n\n export const isNullishFiltered = <T>(value: unknown): value is FilterNullish<T> => {\n if (Array.isArray(value)) {\n return value.every(it => it !== undefined && it !== null);\n }\n return value !== undefined && value !== null;\n };\n\n export const isFalsyFiltered = <T>(value: unknown): value is FilterFalsy<T> => {\n if (Array.isArray(value)) {\n return value.every(it => {\n return it;\n });\n }\n return !!value;\n };\n\n export const includeValue = (obj: object, value: any): boolean => {\n return Object.values(obj).includes(value);\n };\n export const includeKey = (obj: object, key: string): boolean => {\n return Object.keys(obj).includes(key);\n };\n\n /** \uC885\uC131\uC774 \uC788\uB294\uC9C0 \uD655\uC778\uD558\uB294 \uD568\uC218 */\n export const lastConsonantLetter = (value: string): boolean => {\n const lastLetter = value.charCodeAt(value.length - 1);\n return (lastLetter - 0xac00) % 28 > 0;\n };\n\n export const inRange = (value: number, min: number, max: number) => {\n return min <= value && value <= max;\n };\n\n export const isBase64 = (inputString: string) => {\n // data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAA\n // const isValidBase64 = /^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\n // return isValidBase64.test(base64String);\n\n let base64Data = inputString;\n\n // Data URL \uC811\uB450\uC0AC \uC81C\uAC70 (\uC608: \"data:image/png;base64,\")\n const parts = inputString.split(';base64,');\n if (parts.length > 1) {\n base64Data = parts[1];\n } else {\n // \"data:\"\uB9CC \uC788\uACE0 \";base64,\"\uAC00 \uC5C6\uB294 \uACBD\uC6B0\uB3C4 \uACE0\uB824 (\uC5C4\uBC00\uD788\uB294 base64\uAC00 \uC544\uB2D0 \uC218 \uC788\uC74C)\n if (inputString.startsWith('data:')) {\n // \uC774 \uACBD\uC6B0\uB294 \uC720\uD6A8\uD55C base64\uB85C \uAC04\uC8FC\uD560\uC9C0 \uC815\uCC45\uC5D0 \uB530\uB77C \uB2E4\uB984\n // \uC5EC\uAE30\uC11C\uB294 \uC77C\uB2E8 base64 \uBD80\uBD84\uC774 \uC5C6\uB2E4\uACE0 \uAC00\uC815\uD558\uACE0 false \uCC98\uB9AC\n // return false;\n // \uB610\uB294 \uC811\uB450\uC0AC\uB9CC \uC81C\uAC70\uD558\uACE0 \uB0A8\uC740 \uBD80\uBD84\uC744 \uD14C\uC2A4\uD2B8\uD560 \uC218\uB3C4 \uC788\uC74C\n const commaIndex = inputString.indexOf(',');\n if (commaIndex > -1) {\n base64Data = inputString.substring(commaIndex + 1);\n } else {\n // \uC21C\uC218 base64\uAC00 \uC544\uB2D0 \uAC00\uB2A5\uC131 \uB192\uC74C\n // return false;\n }\n }\n }\n\n\n // Base64 \uC720\uD6A8\uC131 \uAC80\uC0AC \uC815\uADDC\uC2DD\n // - \uBB38\uC790\uC5F4 \uAE38\uC774\uB294 4\uC758 \uBC30\uC218\uC5EC\uC57C \uD568 (\uD328\uB529 \uC81C\uC678)\n // - \uD328\uB529 '='\uB294 \uCD5C\uB300 2\uAC1C\uAE4C\uC9C0 \uBB38\uC790\uC5F4 \uB05D\uC5D0\uB9CC \uC62C \uC218 \uC788\uC74C\n // - \uD328\uB529\uC774 1\uAC1C\uC77C \uACBD\uC6B0, \uADF8 \uC55E \uBB38\uC790\uB294 [A-Za-z0-9+/]\n // - \uD328\uB529\uC774 2\uAC1C\uC77C \uACBD\uC6B0, \uADF8 \uC55E \uB450 \uBB38\uC790\uB294 [A-Za-z0-9+/]\n // \uC870\uAE08 \uB354 \uC5C4\uACA9\uD558\uACE0 \uD6A8\uC728\uC801\uC778 \uC815\uADDC\uC2DD:\n const base64Regex = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\n\n // \uCD94\uAC00\uC801\uC73C\uB85C, \uC2E4\uC81C base64 \uBB38\uC790\uC5F4\uC740 \uD328\uB529\uC744 \uC81C\uC678\uD55C \uAE38\uC774\uAC00 4\uC758 \uBC30\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4.\n // \uC815\uADDC\uC2DD\uB9CC\uC73C\uB85C\uB294 \uC774 \uBD80\uBD84\uC744 \uC644\uBCBD\uD788 \uCEE4\uBC84\uD558\uAE30 \uC5B4\uB824\uC6B8 \uC218 \uC788\uC5B4, \uAE38\uC774 \uCCB4\uD06C\uB97C \uCD94\uAC00\uD558\uB294 \uAC83\uC774 \uC88B\uC2B5\uB2C8\uB2E4.\n // \uD558\uC9C0\uB9CC \uD604\uC7AC \uC81C\uACF5\uB41C \uC815\uADDC\uC2DD\uC740 \uC774 \uBD80\uBD84\uC744 \uC5B4\uB290 \uC815\uB3C4 \uACE0\uB824\uD558\uACE0 \uC788\uC2B5\uB2C8\uB2E4.\n // (([A-Za-z0-9+/]{4})* \uBD80\uBD84\uACFC \uD328\uB529 \uBD80\uBD84)\n\n if (base64Data === '' || base64Data.length % 4 !== 0) {\n // \uBE48 \uBB38\uC790\uC5F4\uC774\uAC70\uB098, \uAE38\uC774\uAC00 4\uC758 \uBC30\uC218\uAC00 \uC544\uB2C8\uBA74 (\uC77C\uBC18\uC801\uC73C\uB85C) \uC720\uD6A8\uD55C base64\uAC00 \uC544\uB2D8.\n // (\uB2E8, \uC77C\uBD80 \uB77C\uC774\uBE0C\uB7EC\uB9AC\uB294 \uD328\uB529\uC774 \uC5C6\uB294 base64\uB3C4 \uD5C8\uC6A9\uD558\uBBC0\uB85C, \uC5C4\uACA9\uD55C \uAE30\uC900\uC5D0 \uB530\uB77C \uB2E4\uB984)\n // \uD604\uC7AC \uC815\uADDC\uC2DD\uC740 \uD328\uB529\uC774 \uC62C\uBC14\uB974\uAC8C \uC801\uC6A9\uB41C \uACBD\uC6B0 \uAE38\uC774\uAC00 4\uC758 \uBC30\uC218\uAC00 \uC544\uB2CC \uACBD\uC6B0\uB3C4 \uD1B5\uACFC\uC2DC\uD0AC \uC218 \uC788\uC74C\n // \uC608: \"QQ\" (\uAE38\uC774 2) -> false, \"QQQ\" (\uAE38\uC774 3) -> false\n // \"QQ==\" (\uAE38\uC774 4) -> true, \"QQQ=\" (\uAE38\uC774 4) -> true\n // \"QQQ\"\uB294 `base64Regex.test(\"QQQ\")`\uB294 false\uC774\uC9C0\uB9CC, `Buffer.from(\"QQQ\", \"base64\").toString(\"base64\")`\uB294 \"QQ==\"\uB97C \uBC18\uD658.\n // \uC5C4\uBC00\uD558\uAC8C\uB294 \uB514\uCF54\uB529 \uC2DC\uB3C4 \uD6C4 \uB2E4\uC2DC \uC778\uCF54\uB529\uD574\uC11C \uC6D0\uBCF8\uACFC \uAC19\uC740\uC9C0 \uBE44\uAD50\uD558\uB294 \uAC83\uC774 \uAC00\uC7A5 \uD655\uC2E4\uD558\uC9C0\uB9CC, \uC131\uB2A5 \uC774\uC288\uAC00 \uC788\uC744 \uC218 \uC788\uC74C.\n }\n\n\n return base64Regex.test(base64Data);\n }\n}\n", "import { ValidUtils } from '../valid/ValidUtils';\n\nexport namespace RandomUtils {\n // export const readonly d = ''\n\n // export const getUniqueNumbers = (max: number, length: number) => {\n // max = Math.max(max, 0);\n // length = Math.max(Math.min(max, length), 0);\n // const array: number[] = [];\n // while (array.length < length) {\n // const num = Math.floor(Math.random() * max);\n // if (!array.includes(num)) array.push(num);\n // }\n // return array;\n // };\n\n export const uniqueInts = (min: number, max: number, count: number) => {\n const result: number[] = [];\n if (count > max - min) {\n throw new Error('Count is greater than the range of unique integers');\n }\n while (result.length < count) {\n const randomInt = RandomUtils.int(min, max);\n if (!result.includes(randomInt)) {\n result.push(randomInt);\n }\n }\n return result;\n }\n\n\n export const chance = (percentage: number): boolean => {\n if (percentage < 0 || percentage > 1) {\n throw new Error('Percentage must be between 0 and 1');\n }\n return Math.random() < percentage;\n };\n // max\uB294 \uD3EC\uD568\uD558\uC9C0 \uC54A\uC74C\n export const int = (min?: number, max?: number) => {\n return Math.floor(RandomUtils.float(min, max));\n }\n\n // ex) 0,5 0~<5 <5\uB294 \uD3EC\uD568\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. \uC18C\uC218\uC810\uD3EC\uD568\n export const float = (min?: number, max?: number) => {\n if (ValidUtils.isNullOrUndefined(min)) {\n return Math.random();\n } else if (!ValidUtils.isNullOrUndefined(min) && ValidUtils.isNullOrUndefined(max)) {\n return Math.random() * (min || 0);\n } else {\n return Math.random() * ((max || 0) - (min || 0)) + (min || 0);\n }\n };\n\n export const uuid = (format: string = 'xxxx-xxxx-xxxx-xxxx'): string => {\n return format.replace(/[xy]/g, function(c) {\n const r = Math.random() * 16 | 0;\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n };\n\n\n export const uuid4 = (): string => {\n // // return uuid of form xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\n let uuid = '';\n let ii;\n for (ii = 0; ii < 32; ii += 1) {\n switch (ii) {\n case 8:\n case 20:\n uuid += '-';\n uuid += ((Math.random() * 16) | 0).toString(16);\n break;\n case 12:\n uuid += '-';\n uuid += '4';\n break;\n case 16:\n uuid += '-';\n uuid += ((Math.random() * 4) | 8).toString(16);\n break;\n default:\n uuid += ((Math.random() * 16) | 0).toString(16);\n }\n }\n return uuid;\n };\n\n export const hex = (): string => {\n const letters = '0123456789ABCDEF'.split('');\n let hex = '';\n for (let i = 0; i < 6; i++) {\n hex += letters[Math.floor(Math.random() * 16)];\n }\n return hex;\n };\n\n\n export const rgb = (): string => {\n const letters = '0123456789ABCDEF'.split('');\n let color = '#';\n for (let i = 0; i < 6; i++) {\n color += letters[Math.floor(Math.random() * 16)];\n }\n return color;\n };\n\n export const rgba = (): string => {\n const letters = '0123456789ABCDEF'.split('');\n let color = '#';\n for (let i = 0; i < 8; i++) {\n color += letters[Math.floor(Math.random() * 16)];\n }\n return color;\n };\n // (Math.random().toString(36)+'00000000000000000').slice(2, 10) + Date.now()\n\n export const alphabet = (len: number): string => {\n const letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');\n let color = '';\n for (let i = 0; i < len; i++) {\n color += letters[Math.floor(Math.random() * letters.length)];\n }\n return color;\n };\n}\n", "import { Dictionary } from '../types';\nimport { ValidUtils } from '../valid/ValidUtils';\n\nexport namespace StringUtils {\n export const deleteEnter = (data: string) => {\n return data.replace(/\\r?\\n/g, '')\n }\n\n export const pickEmoji = (data: string) => {\n return data.match(/[\\p{Emoji}]/gu) ?? [];\n }\n\n\n export const regexExec = (regex: RegExp, text: string) => {\n let varExec = regex.exec(text)\n const usingVars: any[] = [];\n while (varExec) {\n usingVars.push(varExec)\n varExec = regex.exec(varExec.input)\n }\n return usingVars;\n }\n\n export const regexExecArrayReplace = (origin: string, regexpExecArrayOrRegex: RegExpExecArray[] | RegExp, replace: string | ((data: RegExpExecArray) => string)) => {\n // console.log('------origin', origin ,regexpExecArrayOrRegex, replace)\n const regexpExecArrays = Array.isArray(regexpExecArrayOrRegex) ? regexpExecArrayOrRegex : StringUtils.regexExec(regexpExecArrayOrRegex, origin);\n regexpExecArrays.reverse().forEach(it => {\n const r = typeof replace === 'string' ? replace : replace(it);\n origin = origin.substr(0, it.index) + origin.substr(it.index).replace(it[0], r);\n })\n // console.log('------origin2', origin)\n return origin;\n }\n\n export const escapeSpecialCharacterRegExp = (data: string) => {\n return data.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n }\n\n export const trim = (data: string) => data.trim();\n\n export const rsubString = (data_s: string, blen_n: number): string =>\n data_s.substring(data_s.length - blen_n, data_s.length);\n\n export const lsubString = (data_s: string, alen_n: number): string => data_s.substring(0, alen_n);\n\n export const lpad = (fill_s: string, len_n: number, full_s: string): string => {\n while (len_n > full_s.length) {\n full_s = fill_s + full_s;\n }\n return StringUtils.rsubString(full_s, len_n);\n };\n export const rpad = (fill_s: string, len_n: number, full_s: string): string => {\n while (len_n > full_s.length) {\n full_s += fill_s;\n }\n return StringUtils.lsubString(full_s, len_n);\n };\n\n export const lappend = (count_n: number, input_s: string): string => {\n let s = '';\n let i = 0;\n while (i++ < count_n) {\n s += input_s;\n }\n return s;\n };\n\n\n export const unescape = (html: string): string => {\n if (!html) return '';\n\n const htmlEntity: Dictionary<string> = {\n quot: '\"',\n amp: '&',\n apos: \"'\",\n lt: '<',\n gt: '>',\n nbsp: '\\u00A0',\n iexcl: '\u00A1',\n cent: '\u00A2',\n pound: '\u00A3',\n curren: '\u00A4',\n yen: '\u00A5',\n brvbar: '\u00A6',\n sect: '\u00A7',\n uml: '\u00A8',\n copy: '\u00A9',\n ordf: '\u00AA',\n laquo: '\u00AB',\n not: '\u00AC',\n shy: '\\u00AD',\n reg: '\u00AE',\n macr: '\u00AF',\n deg: '\u00B0',\n plusmn: '\u00B1',\n sup2: '\u00B2',\n sup3: '\u00B3',\n acute: '\u00B4',\n micro: '\u00B5',\n para: '\u00B6',\n middot: '\u00B7',\n cedil: '\u00B8',\n sup1: '\u00B9',\n ordm: '\u00BA',\n raquo: '\u00BB',\n frac14: '\u00BC',\n frac12: '\u00BD',\n frac34: '\u00BE',\n iquest: '\u00BF',\n '#x27': \"'\"\n };\n\n return html.replace(/&((?:(?:[a-z0-9]+|#[0-9]{1,6}|#x[0-9a-fA-F]{1,6});?)+);/gi, (match, entity) => {\n const entities: string[] = entity.toLowerCase().split(';');\n return entities.map(it => (it in htmlEntity ? htmlEntity[it] : match)).join('');\n });\n };\n\n export const executeExpression = (formatString: string, object: Record<string, string | number>) => {\n return formatString.replace(/\\${([^{}]*)}/g, (matched, piece) => String(object[piece] ?? matched));\n };\n\n export const ellipsis = (text: string, length: number) => {\n if (text.length > length) return `${text.slice(0, length)}...`;\n return text;\n };\n\n // type Postposition =\n /**\n * Appends a postposition to the given text based on the provided options.\n * @param {string} text - The text to append the postposition to.\n * @param {object} options - The options for postposition.\n * @param {string} options.vowel - The postposition to append if the text ends with a vowel(\uBAA8\uC74C).\n * @param {string} options.consonant - The postposition to append if the text ends with a consonant(\uC790\uC74C).\n * @returns {string} - The text with the appropriate postposition appended.\n */\n export const appendPostposition = (text: string, { vowel, consonant }: {\n vowel: string;\n consonant: string;\n }): string => {\n return `${text}${ValidUtils.lastConsonantLetter(text) ? consonant : vowel}`;\n };\n}\n", "export type WithRequiredProperty<Type, Key extends keyof Type> = Type & {\n [Property in Key]-?: Type[Property];\n};\nexport type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;\nexport type KeysWithValsOfType<T, V> = keyof { [P in keyof T as T[P] extends V ? P : never]: P };\nexport type PropType<T> = {\n [P in keyof T]: T[P];\n};\nexport type ArrayElementType<T> = T extends (infer U)[] ? U : never;\nexport type PickMix<T, M, K extends keyof T> = {\n [P in K]: T[P] & M;\n};\nexport type PickArrayElementMix<T, M, K extends keyof T> = {\n [P in K]: (ArrayElementType<T[P]> & M)[];\n};\nexport type ChangeArrayElement<T, M> = T extends (infer U)[] ? M[] : never;\nexport type ChangeArrayElementMix<T, M> = T extends (infer U)[] ? (U & M)[] : never;\nexport type ChangePickArrayElementMix<T, M, K extends keyof T> = Omit<T, K> & PickArrayElementMix<T, M, K>;\n\nexport interface ConstructorType<T> {\n new (...args: any[]): T;\n}\nexport type Method = (...args: any[]) => any;\nexport type GenericClassDecorator<T> = (target: T) => void;\n// declare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void;\n// export type ReflectField = PropertyDecorator\n// export type ReflectMethod = MethodDecorator\nexport type MethodParameter = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;\n\ntype Reverse<TupleType extends any[], ReversedTupleType extends any[] = []> = {\n 0: ReversedTupleType;\n 1: TupleType extends [infer Head, ...infer Tail] ? Reverse<Tail, [Head, ...ReversedTupleType]> : never;\n}[TupleType extends [] ? 0 : 1];\n\n//\ntype UnionToIntersection<U> = (U extends unknown ? (arg: U) => 0 : never) extends (arg: infer I) => 0 ? I : never;\n\n/**\n * LastInUnion<1 | 2> = 2.\n */\ntype LastInUnion<U> =\n UnionToIntersection<U extends unknown ? (x: U) => 0 : never> extends (x: infer L) => 0 ? L : never;\n\n/**\n * UnionToTuple<1 | 2> = [1, 2].\n */\nexport type UnionToTuple<U, Last = LastInUnion<U>> = [U] extends [never]\n ? []\n : [...UnionToTuple<Exclude<U, Last>>, Last];\n\nexport type FilterUndefined<T extends unknown[]> = T extends []\n ? []\n : T extends [infer H, ...infer R]\n ? H extends undefined\n ? FilterUndefined<R>\n : [H, ...FilterUndefined<R>]\n : T;\n\nexport type FilterNever<T extends unknown[]> = T extends []\n ? []\n : T extends [infer H, ...infer R]\n ? H extends never\n ? FilterUndefined<R>\n : [H, ...FilterUndefined<R>]\n : T;\n\nexport type Mutable<T> = {\n -readonly [P in keyof T]: T[P];\n};\nexport type ExtractNotNullish<T> = T extends null | undefined ? never : T;\nexport type FilterNullish<T> = T extends [infer E, ...infer Rest]\n ? [ExtractNotNullish<E>, ...FilterNullish<Rest>]\n : T extends (infer E)[]\n ? ExtractNotNullish<E>[]\n : ExtractNotNullish<T>;\n\nexport type ExtractNotFalsy<T> = T extends false ? never : T;\nexport type FilterFalsy<T> = T extends [infer E, ...infer Rest]\n ? [ExtractNotFalsy<E>, ...FilterFalsy<Rest>]\n : T extends (infer E)[]\n ? ExtractNotFalsy<E>[]\n : ExtractNotFalsy<T>;\nexport type FieldType<T, F> = Record<keyof T, F>;\nexport type FieldUnionType<T, F> = {\n [P in keyof T]: T[P] | F;\n};\n\n\n\nexport type Dictionary<T = any> = Record<string | number, T>;\ntype GetKeys<T> = T extends unknown[]\n ? T extends [] // special case empty tuple => no keys\n ? never\n : '0' extends keyof T // any tuple with at least one element\n ? Exclude<keyof T, keyof []>\n : number // other array\n : keyof T; // not an array\nexport type Stringify<T> = T extends string | number ? `${T}` : never;\nexport type FlattenObjectKeys<T extends Dictionary | any[]> =\n Stringify<GetKeys<T>> extends infer StringKey extends string | number\n ? [StringKey] extends [never]\n ? never\n : StringKey extends keyof T\n ? T[StringKey] extends Dictionary | any[]\n ?\n | StringKey\n | `${StringKey}.${FlattenObjectKeys<T[StringKey]>}`\n | `${StringKey}[${keyof T[StringKey] & number}]`\n | `${StringKey}[${keyof T[StringKey] & number}].${FlattenObjectKeys<T[StringKey][number]>}`\n : StringKey\n : never\n : never;\n\ntype GetType<T, K> = K extends keyof T ? T[K] : K extends `${number}` ? (T extends any[] ? T[number] : never) : never;\nexport type FlattenObjectType<T, Path = Stringify<keyof T>> =\n Stringify<keyof T> extends infer StringKey extends string | number\n ? [StringKey] extends [never]\n ? never\n : Path extends `${infer FirstKey}[${infer Index}].${infer Rest}`\n ? FlattenObjectType<GetType<GetType<T, FirstKey>, Index>, Rest>\n : Path extends `${infer FirstKey}.${infer Rest}`\n ? FlattenObjectType<GetType<T, FirstKey>, Rest>\n : Path extends `${infer FirstKey}[${infer Rest}]`\n ? FlattenObjectType<GetType<T, FirstKey>, Rest>\n : GetType<T, Path>\n : never;\n\nexport type FlattenObject<T extends Dictionary> = {\n [FlattenKey in FlattenObjectKeys<T>]: FlattenObjectType<T, FlattenKey>;\n};\n\nexport type FilterTuple<T extends any[]> = '0' extends keyof T ? never : T;\n\nexport type MaybeArray<T> = T | T[];\nexport type With<T extends MaybeArray<Dictionary>, V extends Dictionary> = T extends (infer U)[] ? Array<U & V> : T & V;\n\nexport type Nullable<T> = T | null;\nexport type Nullish<T> = Nullable<T> | undefined;\nexport type NullableObject<T> = {\n [P in keyof T]: Nullable<T[P]>;\n};\nexport type NullableProperty<T, K extends keyof T> = {\n [P in K]: Nullable<T[P]>;\n};\nexport type NullOrUndefined<T> = null | undefined;\nexport type NotNullOrUndefined<T> = T extends null | undefined ? never : T;\nexport type NonNullable<T> = T extends null | undefined ? never : T;\nexport type NonNullableObject<T> = {\n [P in keyof T]-?: NonNullable<T[P]>;\n};\nexport type NonNullableProperty<T, K extends keyof T> = {\n [P in K]-?: NonNullable<T[P]>;\n};\n\nexport type GroupBy<T extends Dictionary, K extends keyof T> = {\n [P in T[K]]: T[];\n};\n\nexport type InferPromise<T> = T extends Promise<infer U> ? U : never;\n\nexport type JoinKeys<T> = {\n [K in keyof T]: K extends string ? `${K}` | `${K}-${JoinKeys<T[K]>}` : never;\n}[keyof T];\n\nexport type FilteredFirstKeys<T, FIRST extends string> = {\n [K in keyof T as K extends `${FIRST}${string}` ? K : never]: T[K];\n};\nexport type ExcludeFilteredFirstKeys<T, FIRST extends string> = {\n [K in keyof T as K extends `${FIRST}${string}` ? never : K]: T[K];\n};\n\nexport type GetDotPath<T, P extends string> = P extends `${infer K}.${infer R}`\n ? K extends keyof T\n ? GetDotPath<T[K], R>\n : never\n : P extends keyof T\n ? T[P]\n : P extends string\n ? T\n : never;\n\nexport type FlatJoinKey<T, J = '.'> = {\n [P in keyof T as T[P] extends object\n ? // @ts-ignore\n `${P}${J}${keyof FlatJoinDotKey<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinDotKey<T> = {\n [P in keyof T as T[P] extends object\n ? // @ts-ignore\n `${P}.${keyof FlatJoinDotKey<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinDotKeyType<T> = keyof FlatJoinDotKey<T>;\nexport type FlatJoinKeyType<T, J> = keyof FlatJoinKey<T, J>;\nexport type FlatJoinDotKeyFieldType<T, D> = FieldType<FlatJoinDotKey<T>,D>;\nexport type FlatJoinDotKeyTypePartial<T, D> = Partial<FieldType<FlatJoinDotKey<T>,D>>;\nexport type FlatJoinDotKeyExcludeStartWithUnderBar<T> = {\n [P in keyof T as T[P] extends any\n ? // @ts-ignore\n P extends `_${string}`\n ? never\n : // @ts-ignore\n `${P}.${keyof FlatJoinDotKeyExcludeStartWithUnderBar<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinSlashKey<T> = {\n [P in keyof T as T[P] extends object\n ? // @ts-ignore\n `${P}/${keyof FlatJoinDotKey<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\nexport type FlatJoinSlashKeyExcludeStartWithUnderBar<T> = {\n [P in keyof T as T[P] extends any\n ? // @ts-ignore\n P extends `_${string}`\n ? never\n : // @ts-ignore\n `${P}/${keyof FlatJoinSlashKeyExcludeStartWithUnderBar<T[P]>}` | `${P}`\n : // @ts-ignore\n `${P}`]: unknown;\n};\n\n\n// https://amit08255.medium.com/the-most-mind-blowing-thing-ive-learned-in-typescript-930926ce848a\nexport type ParseRoute<T extends string> = T extends `/${infer Segment}/${infer Rest}`\n ? Segment extends `:${infer Param}`\n ? { [K in Param]: string } & ParseRoute<`/${Rest}`>\n : ParseRoute<`/${Rest}`>\n : T extends `/:${infer Param}`\n ? { [K in Param]: string }\n : {}\n// type UserRoute = ParseRoute<'/users/:id/posts/:postId'>\n// type UserRoute = { id: string; postId: string }\n// const user:UserRoute = { id: '1', postId: '2' };\n\n\nexport type ParsePath<T extends string> = T extends `/${infer Segment}/${infer Rest}`\n ? [Segment, ...ParsePath<`/${Rest}`>]\n : T extends `/${infer Segment}`\n ? [Segment]\n : []\n// type ApiRoute = ParsePath<\"/api/users/123\"> // [\"api\", \"users\", \"123\"]\n// type InvalidRoute = ParsePath<\"missing-slash\"> // []\n\n\n\nexport type StringValue<T> = {\n [K in keyof T]: T[K] extends object ? StringValue<T[K]> : string;\n};\n\n\n// index\nexport interface ConstructorType<T> {\n new (...args: any[]): T;\n}\n\n// infer\uC640 \uC870\uAC74\uBD80 \uD0C0\uC785\uC73C\uB85C \uD749\uB0B4\uB0B4\uAE30\n// \uAC00\uB054 \"\uC0C1\uC704 \uD0C0\uC785\"\uC73C\uB85C \uC81C\uC57D\uC744 \uB450\uACE0 \uC2F6\uC744 \uB54C\uB294 \uC870\uAC74\uBD80 \uD0C0\uC785\uC744 \uC501\uB2C8\uB2E4:\n// let fn: Super<HttpResponseError<any>>;\n// fn \uC740 HttpResponseError<any> \uC758 \uC0C1\uC704 \uD0C0\uC785 \uD30C\uB77C\uBBF8\uD130\uB3C4 \uBC1B\uC744 \uC218 \uC788\uC74C\n// type Super<T> = T extends HttpResponseError<infer U> ? HttpResponseError<any> : never;\nexport type Super<T> = (arg: T) => void;\n\n// export type GenericClassDecorator<T> = (target: T) => void;\n// export type MethodParameter = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;\n// export type ExtractNotFalsy<T> = T extends false ? never : T;\n// export type FilterFalsy<T> = T extends [infer E, ...infer Rest]\n// ? [ExtractNotFalsy<E>, ...FilterFalsy<Rest>]\n// : T extends (infer E)[]\n// ? ExtractNotFalsy<E>[]\n// : ExtractNotFalsy<T>;\n//\n// export type Mutable<T> = {\n// -readonly [P in keyof T]: T[P];\n// };\n// NonNullable\nexport type MethodOnlyFieldPostFix<T, S extends string> = {\n [key in keyof T as `${string & key}${S}`]: T[key] extends (...args: any[]) => any ? T[key] : never;\n};\nexport type MethodOnlyFieldPerFix<T, S extends string> = {\n [key in keyof T as `${S}${string & key}`]: T[key] extends (...args: any[]) => any ? T[key] : never;\n};\n// export const isDefined = <T>(value: T | undefined | null): value is T => value !== undefined && value !== null;\n// export const isDefined = <T>(value: T | undefined | null): value is NonNullable<T> => value !== undefined && value !== null;\nexport const isDefined = <T>(value: T | undefined | null): value is T => value !== undefined && value !== null;\n/*\ndeclare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void;\ndeclare type PropertyDecorator = (target: Object, propertyKey: string | symbol) => void;\ndeclare type MethodDecorator = <T>(target: Object, propertyKey: string | symbol, descriptor: TypedPropertyDescriptor<T>) => TypedPropertyDescriptor<T> | void;\ndeclare type ParameterDecorator = (target: Object, propertyKey: string | symbol, parameterIndex: number) => void;\n */\n\ndeclare global {\n namespace Reflect {\n function metadata(metadataKey: any, target: Object, propertyKey?: string | symbol): any;\n function getMetadata(metadataKey: any, target: Object, propertyKey?: string | symbol): any;\n function defineMetadata(metadataKey: any, value: any, target: Object, propertyKey?: string | symbol): void;\n function getOwnMetadata(metadataKey: any, target: Object, propertyKey?: string | symbol): any;\n function getMetadataKeys(target: Object): any[];\n }\n}\nexport {};\n", "import { ValidUtils } from '../valid/ValidUtils';\nimport type { ConstructorType } from '../types';\nimport { isDefined } from '../types';\n\nexport namespace ObjectUtils {\n\n export const constructorName = (target: any): string | undefined => {\n if (target && target.constructor && target.constructor.name) {\n return target.constructor.name;\n } else if (target && target.name) {\n return target.name;\n }\n\n }\n export const deepCopy = <T = any>(obj: T): T => {\n if (obj instanceof Map) {\n return new Map<any, any>(JSON.parse(JSON.stringify(Array.from(obj.entries())))) as T;\n } else if (obj instanceof Set) {\n return new Set<any>(JSON.parse(JSON.stringify(Array.from(obj.values())))) as T;\n } else if (ValidUtils.isNullOrUndefined(obj)) {\n return obj;\n }\n\n return JSON.parse(JSON.stringify(obj));\n };\n export const allProtoTypeName = (target?: any, filter?: (pathString: string, pathValue: any) => boolean): string[] => {\n let data: string[] = [];\n if (target) {\n const proto = Object.getPrototypeOf(target);\n if (proto && (data = Object.keys(proto) || []).length > 0) {\n data = data.concat(ObjectUtils.allProtoTypeName(proto, filter));\n }\n }\n let result = data.filter(it => it !== 'constructor');\n\n if (filter && target) {\n const proto = Object.getPrototypeOf(target);\n result = result.filter(key => filter(key, proto?.[key]));\n }\n\n return result;\n };\n\n export const uniqueKeys = (obj: (object[]) | object) => {\n const allKeys = Array.from(new Set((Array.isArray(obj) ? obj : [obj]).flatMap(item => Object.keys(item))));\n return allKeys;\n };\n\n export const ownPropertyNames = (target?: any): string[] => {\n const data: string[] = [];\n if (target) {\n if (!target.prototype) {\n const a = Object.getPrototypeOf(target);\n data.push(...Object.getOwnPropertyNames(a));\n } else {\n data.push(...Object.getOwnPropertyNames(Object.getPrototypeOf(target)));\n }\n }\n return data.filter(it => it !== 'constructor');\n };\n\n export const protoTypeName = (target?: any): string[] => {\n let data: string[] = [];\n if (target) {\n const proto = Object.getPrototypeOf(target);\n data = Object.keys(proto) || [];\n }\n return data.filter(it => it !== 'constructor');\n };\n\n export const protoTypes = (target?: any): Function[] => {\n const data: Function[] = [];\n if (target) {\n const proto = Object.getPrototypeOf(target);\n (Object.keys(proto) || []).filter(it => it !== 'constructor').forEach(it => {\n data.push(proto[it]);\n });\n }\n return data;\n };\n\n export const seal = <T>(target: T): T => {\n return Object.seal(target);\n };\n\n /*\n Object.prototype.isPrototypeOf()\n isPrototypeOf() 메소드는 해당 객체가 다른 객체의 프로토타입 체인에 속한 객체인지 확인하기 위해 사용됩니다.\n */\n export const isPrototypeOfTarget = (start: ConstructorType<any> | Function | null | undefined, target: any | null | undefined): boolean => {\n if (start && target) {\n return Object.prototype.isPrototypeOf.call(start.prototype, target);\n } else {\n return false;\n }\n };\n\n export const prototypeOfDepth = (target: any, dest: ConstructorType<any> | Function | null | undefined): object[] => {\n let object: any = target;\n const r: any[] = [];\n if (dest) {\n do {\n object = Object.getPrototypeOf(object);\n if (object?.constructor === dest) {\n break;\n }\n r.push(object);\n } while (object);\n }\n return r;\n };\n\n export const allProtoType = (start: ConstructorType<any> | Function): (ConstructorType<any> | Function)[] => {\n const depth = (target: ConstructorType<any> | Function, bowl: (ConstructorType<any> | Function)[] = []) => {\n if (target.prototype) {\n bowl.push(target);\n depth(Object.getPrototypeOf(target), bowl);\n }\n return bowl;\n };\n const d = depth(start);\n return d;\n // const protos: (ConstructorType<any> | Function)[] = []\n // while (start) {\n // protos.push(start);\n // start = Object.getPrototypeOf(start)\n // }\n // return protos;\n };\n\n export const prototypeOf = (start: any) => {\n return Object.getPrototypeOf(start);\n };\n\n export const prototypeKeyMap = (target: any): Map<Function, string> => {\n const data = new Map<Function, string>();\n if (target) {\n const proto = Object.getPrototypeOf(target);\n (Object.keys(proto) || []).filter(it => it !== 'constructor').forEach(it => {\n data.set(proto[it], it);\n });\n }\n return data;\n };\n\n export const prototypeName = (target: any, fnc: Function): string | undefined => {\n return ObjectUtils.prototypeKeyMap(target).get(fnc);\n };\n\n\n export const pickRandomKey = <T>(target: T): keyof T => {\n\n const keys = Object.keys(target as any) as Array<keyof T>;\n return keys[Math.floor(Math.random() * keys.length)];\n };\n\n export const pickRandomValue = <T>(target: T): T[keyof T] => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n return target[keys[Math.floor(Math.random() * keys.length)]];\n };\n\n export const pickRandomKeyValue = <T>(target: T): { key: keyof T, value: T[keyof T] } => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n const key = keys[Math.floor(Math.random() * keys.length)];\n return { key, value: target[key] };\n };\n\n export const keyValues = <T>(target: T): { key: keyof T, value: T[keyof T] }[] => {\n const keys = Object.keys(target as any) as Array<keyof T>;\n return keys.map(key => ({ key, value: target[key] }));\n };\n\n export const entries = <T>(target: T): [keyof T, T[keyof T]][] => {\n return Object.entries(target as any) as [keyof T, T[keyof T]][];\n }\n\n export const values = <T>(target: T): (T[keyof T])[] => {\n return Object.values(target as any);\n }\n\n export const keys = <T>(target: T): (keyof T)[] => {\n return Object.keys(target as any) as (keyof T)[];\n }\n\n export const keyLength = <T>(target: T): number => {\n return ObjectUtils.keys(target).length;\n };\n\n\n export const toDeleteUndefinedAndNull = <T>(target: T, config?: { deep?: boolean }): T => {\n const cleanValue = (value: any): any => {\n if (Array.isArray(value)) {\n return value.filter(item => item !== undefined && item !== null).map(cleanValue);\n } else if (value && typeof value === 'object') {\n if (config?.deep) {\n return Object.fromEntries(Object.entries(value).filter(([_, v]) => v !== undefined && v !== null).map(([k, v]) => [k, cleanValue(v)])\n );\n } else {\n return Object.fromEntries(\n Object.entries(value).filter(([_, v]) => v !== undefined && v !== null)\n );\n }\n }\n return value;\n };\n\n return cleanValue(target) as T;\n };\n\n\n export namespace Path {\n export const isFunctionScript = (script: string): boolean => {\n return script.trim().startsWith('function');\n }\n\n export const isArrowFunctionScript = (script: string): boolean => {\n return /^\\s*\\([^)]*\\)\\s*=>/.test(script);\n }\n\n export const toOptionalChainPath = (path: string): string => {\n if (!path) {\n return '';\n }\n // Add this check for object literals\n if (path.trim().startsWith('{') && path.trim().endsWith('}')) {\n return path;\n }\n if (isFunctionScript(path) || isArrowFunctionScript(path)) {\n return path;\n }\n \n // Check for ternary operator pattern (? :)\n if (path.includes(' ? ') && path.includes(' : ')) {\n // Handle ternary operator - only convert property access parts, not the ternary operator itself\n const parts = path.split(/(\\s+\\?\\s+|\\s+:\\s+)/);\n const result = parts.map((part, index) => {\n // Only process the first part (before ?) for optional chaining\n if (index === 0) {\n const tokens = part.match(/[^?.[\\]]+|\\[[^\\]]*\\]/g);\n if (tokens && tokens.length > 1) {\n return tokens.join('?.');\n }\n }\n return part;\n });\n return result.join('');\n }\n \n // Handle function calls by processing the entire path with regex replacement\n if (path.includes('(')) {\n // Replace function calls with a placeholder, process the path, then restore function calls\n const functionCallMatches: Array<{original: string, processed: string, placeholder: string}> = [];\n let tempPath = path;\n let counter = 0;\n \n // Find and process function calls with their arguments\n const functionCallRegex = /(\\w+)\\(([^()]*(?:\\([^()]*\\)[^()]*)*)\\)/g;\n let match;\n \n while ((match = functionCallRegex.exec(path)) !== null) {\n const fullMatch = match[0];\n const funcName = match[1];\n const funcArgs = match[2];\n const placeholder = `__FUNC_CALL_${counter}__`;\n \n // Process function arguments recursively\n const processedArgs = funcArgs ? toOptionalChainPath(funcArgs) : '';\n const processedFuncCall = `${funcName}?.(${processedArgs})`;\n \n functionCallMatches.push({\n original: fullMatch,\n processed: processedFuncCall,\n placeholder: placeholder\n });\n \n tempPath = tempPath.replace(fullMatch, placeholder);\n counter++;\n }\n \n // Process the path without function calls\n const tokens = tempPath.match(/[^?.[\\]]+|\\[[^\\]]*\\]/g);\n let processedPath = '';\n if (tokens && tokens.length > 1) {\n processedPath = tokens.join('?.');\n } else {\n processedPath = tempPath;\n }\n \n // Restore function calls\n for (const funcMatch of functionCallMatches) {\n processedPath = processedPath.replace(funcMatch.placeholder, funcMatch.processed);\n }\n \n return processedPath;\n }\n \n // Tokenize the path by '.', '[', ']', and '?' to handle property access and existing optional chaining.\n const tokens = path.match(/[^?.[\\]]+|\\[[^\\]]*\\]/g);\n if (!tokens) {\n return path; // Return original path if no tokens are found (e.g., path is just '.')\n }\n // Join tokens with '?.', effectively creating the optional chain path.\n return tokens.join('?.');\n };\n\n export const removeOptionalChainOperator = (path: string): string => {\n if (!path) {\n return '';\n }\n // Replace all optional chaining operators with standard ones.\n return path.replace(/\\?\\./g, '.').replace(/\\.\\[/g, '[');\n };\n\n const parsePath = (path: string): (string | number)[] => {\n const result: (string | number)[] = [];\n const regex = /\\.([^.\\[]+)|\\[(\\d+)\\]|\\[(['\"])(.*?)\\3\\]/g;\n let match;\n let lastIndex = 0;\n\n const firstMatch = path.match(regex);\n if (firstMatch && (firstMatch?.index??0) > 0) {\n result.push(path.substring(0, firstMatch.index));\n lastIndex = firstMatch.index as number;\n } else if (!firstMatch && path.length > 0) {\n result.push(path);\n return result;\n }\n\n while ((match = regex.exec(path)) !== null) {\n if (match.index > lastIndex) {\n const segment = path.substring(lastIndex, match.index);\n if (segment.startsWith('.')) {\n result.push(segment.substring(1));\n } else {\n result.push(segment);\n }\n }\n\n if (match[1]) {\n result.push(match[1]);\n } else if (match[2]) {\n result.push(parseInt(match[2], 10));\n } else if (match[4]) {\n result.push(match[4]);\n }\n lastIndex = regex.lastIndex;\n }\n\n if (lastIndex < path.length) {\n const remaining = path.substring(lastIndex);\n if (remaining.startsWith('.')) {\n result.push(remaining.substring(1));\n } else {\n result.push(remaining);\n }\n }\n\n return result;\n };\n\n export const to = <T = any>(obj: any) => {\n const destination: T = {} as any;\n Object.entries(obj).forEach(([path, value]) => {\n Path.set(destination, path, value);\n });\n return destination;\n };\n\n export const set = (obj: any, path: string, value: any) => {\n const pathParts = parsePath(path);\n let current = obj;\n\n for (let i = 0; i < pathParts.length; i++) {\n const part = pathParts[i];\n const isLastPart = i === pathParts.length - 1;\n\n if (isLastPart) {\n current[part] = value;\n } else {\n // Ensure current[part] is of the correct type for the next part\n const nextPart = pathParts[i + 1];\n\n if (typeof nextPart === 'number') { // Next part is an array index\n if (!Array.isArray(current[part])) {\n current[part] = [];\n }\n // Fill holes if current[part] is an array and nextPart is a skipped index\n if (Array.isArray(current[part])) {\n while (current[part].length <= nextPart) {\n current[part].push({}); // Fill with empty objects\n }\n }\n } else { // Next part is a string (object property)\n if (typeof current[part] !== 'object' || current[part] === null) {\n current[part] = {};\n }\n }\n current = current[part];\n }\n }\n };\n\n export const get = (obj: any, path: string, defaultValue?: any): any => {\n const pathParts = parsePath(path);\n let current = obj;\n\n for (let i = 0; i < pathParts.length; i++) {\n const part = pathParts[i];\n\n if (current === null || current === undefined) {\n return defaultValue;\n }\n\n // Check if the current object has the property/index\n if (typeof current === 'object' && current !== null && part in current) {\n current = current[part];\n } else {\n // Property/index not found\n return defaultValue;\n }\n }\n\n return current;\n };\n\n export const deletePath = (obj: any, path: string): boolean => {\n const pathParts = parsePath(path);\n if (pathParts.length === 0) {\n return false;\n }\n\n let current = obj;\n\n // Navigate to the parent of the target property\n for (let i = 0; i < pathParts.length - 1; i++) {\n const part = pathParts[i];\n\n if (current === null || current === undefined) {\n return false;\n }\n\n if (typeof current === 'object' && current !== null && part in current) {\n current = current[part];\n } else {\n return false;\n }\n }\n\n // Delete the final property\n const finalPart = pathParts[pathParts.length - 1];\n if (current !== null && typeof current === 'object' && finalPart in current) {\n if (Array.isArray(current) && typeof finalPart === 'number') {\n current.splice(finalPart, 1);\n } else {\n delete current[finalPart];\n }\n return true;\n }\n\n return false;\n };\n\n export const availablePath = (obj: any, filter?: (pathString: string, pathValue: any) => boolean): string[] => {\n const paths: string[] = [];\n\n const formatKey = (key: string | number): string => {\n if (typeof key === 'number') {\n return '[' + key + ']'; // Array index\n }\n // Check if the key is a valid JavaScript identifier.\n // If not, it needs to be quoted.\n // A valid identifier starts with a letter, _, or $, followed by letters, digits, _, or $.\n // This regex checks for characters that are NOT valid in an identifier.\n if (!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(key)) {\n // If it's not a valid identifier, quote it.\n // Use single quotes without escaping for test compatibility\n return \"['\" + key + \"']\";\n }\n return key;\n };\n\n const traverse = (current: any, currentPath: string, visited: Set<any>) => {\n if (current === null || typeof current !== 'object') {\n return;\n }\n\n // Detect circular references\n if (visited.has(current)) {\n return;\n }\n visited.add(current);\n\n if (Array.isArray(current)) {\n current.forEach((item: any, index: number) => {\n const formattedIndex = formatKey(index); // This will be [index]\n const newPath = currentPath ? `${currentPath}${formattedIndex}` : formattedIndex;\n \n // Apply filter if provided\n if (!filter || filter(newPath, item)) {\n paths.push(newPath);\n }\n \n traverse(item, newPath, visited);\n });\n } else {\n Object.keys(current).forEach(key => {\n const formattedKey = formatKey(key);\n let newPath: string;\n\n // If the key needs brackets (special characters), don't add a dot before brackets\n if (formattedKey.startsWith('[')) {\n newPath = currentPath ? `${currentPath}${formattedKey}` : formattedKey;\n } else {\n newPath = currentPath ? `${currentPath}.${formattedKey}` : formattedKey;\n }\n\n // Apply filter if provided\n if (!filter || filter(newPath, current[key])) {\n paths.push(newPath);\n }\n \n traverse(current[key], newPath, visited);\n });\n }\n };\n\n traverse(obj, '', new Set());\n return paths;\n };\n\n /**\n * 스크립트에서 사용되는 변수 경로들을 감지합니다.\n * 프록시를 사용하여 스크립트 실행 중 접근되는 모든 속성 경로를 추적합니다.\n * \n * @param script 분석할 JavaScript 스크립트 문자열\n * @param options 감지 옵션\n * @param options.excludeThis true일 경우 'this' 키워드를 결과에서 제외\n * @returns 스크립트에서 사용된 변수 경로들의 Set\n */\n export const detectPathFromScript = (script: string, options?: { excludeThis?: boolean }): Set<string> => {\n const usingVars = new Set<string>();\n\n class GetDetectProxy implements ProxyHandler<any> {\n public usingVars = usingVars;\n\n constructor(public prefix?: string) {}\n\n set(target: any, p: string | symbol, value: any, receiver: any): boolean {\n return true;\n }\n\n get(target: any, p: string | symbol, receiver: any): any {\n // Symbol 속성들은 무시 (toString, valueOf 등)\n if (typeof p === 'symbol') {\n return this.createSafeProxy(this.prefix);\n }\n\n let items: string | undefined;\n const propStr = String(p);\n \n // 숫자 인덱스 처리\n if (!isNaN(Number(propStr))) {\n items = this.prefix ? `${this.prefix}[${propStr}]` : propStr;\n } \n // 일반 속성 처리\n else {\n items = this.prefix ? `${this.prefix}.${propStr}` : propStr;\n }\n \n // 유효한 변수 경로만 추가\n if (items) {\n this.usingVars.add(items);\n }\n \n return this.createSafeProxy(items);\n }\n\n apply(target: any, thisArg: any, argArray?: any): any {\n // 함수 호출 시에도 안전한 프록시 반환 (체이닝 가능)\n return this.createSafeProxy(this.prefix);\n }\n\n\n\n private createSafeProxy(prefix?: string): any {\n const dummyFunction = () => {};\n const handler = new GetDetectProxy(prefix);\n \n return new Proxy(dummyFunction, {\n get: (target, prop, receiver) => {\n if (prop === Symbol.toPrimitive) {\n return () => '';\n }\n if (prop === 'valueOf') {\n return () => handler.createSafeProxy(prefix);\n }\n if (prop === 'toString') {\n return () => '';\n }\n return handler.get(target, prop, receiver);\n },\n set: handler.set.bind(handler),\n apply: handler.apply.bind(handler)\n });\n }\n }\n\n // 전역 변수들을 안전하게 처리하기 위한 컨텍스트 생성\n const globalContext = {\n window: new Proxy(() => {}, new GetDetectProxy('window')),\n document: new Proxy(() => {}, new GetDetectProxy('document')),\n console: new Proxy(() => {}, new GetDetectProxy('console')),\n // this는 destUser 자체가 됨\n };\n\n const destUser = new Proxy(() => {}, new GetDetectProxy('this'));\n\n try {\n // 전역 컨텍스트와 함께 실행\n const func = new Function('window', 'document', 'console', `\"use strict\"; ${script}; `);\n func.call(destUser, globalContext.window, globalContext.document, globalContext.console);\n } catch (e) {\n console.error('detectPathFromScript error:', e);\n }\n\n // excludeThis 옵션이 true면 'this'로 시작하는 경로에서 'this' 제거\n if (options?.excludeThis) {\n const filteredVars = new Set<string>();\n usingVars.forEach(path => {\n if (path === 'this') {\n // 'this' 자체는 제외\n return;\n } else if (path.startsWith('this.')) {\n // 'this.'로 시작하는 경우 'this.' 부분 제거\n filteredVars.add(path.substring(5));\n } else {\n // 그 외는 그대로 추가\n filteredVars.add(path);\n }\n });\n return filteredVars;\n }\n \n return usingVars;\n };\n }\n\n export const toDeleteKey = (obj: any, keys: (null | string)[]) => {\n const target = { ...obj };\n ObjectUtils.deleteKey(target, keys);\n return target;\n }\n export const deleteKey = (obj: any, keys: (null | string)[]) => {\n keys.filter(it => isDefined(it)).forEach(it => {\n delete obj[it];\n })\n }\n\n export namespace Script {\n /**\n * JavaScript 스크립트를 실행하고 결과를 반환합니다.\n * \n * @param script 실행할 스크립트 문자열 또는 {bodyScript, returnScript} 객체\n * @param thisTarget 스크립트 실행 시 this로 바인딩될 객체\n * @returns 스크립트 실행 결과\n */\n export const evaluateReturn = <T = any>(script: string | { bodyScript: string, returnScript: string }, thisTarget: any = {}): T => {\n let bodyScript = '';\n let returnScript = '';\n if (typeof script === 'object') {\n bodyScript = script.bodyScript;\n returnScript = script.returnScript;\n } else {\n returnScript = script;\n }\n return evaluate(`${bodyScript}; return ${returnScript} `, thisTarget) as T;\n };\n\n /**\n * JavaScript 스크립트를 안전하게 실행합니다.\n * \n * @param script 실행할 스크립트 문자열\n * @param thisTarget 스크립트 실행 시 this로 바인딩될 객체\n * @returns 스크립트 실행 결과 또는 undefined (에러 시)\n */\n // @ts-ignore\n export const evaluate = <T = any>(script: string, thisTarget: any = {}): T | undefined => {\n try {\n return Function(`\"use strict\"; ${script} `).bind(thisTarget)() as T;\n } catch (e) {\n console.error('eval error', e);\n console.error(script);\n return undefined;\n }\n };\n }\n\n}", "\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\n\nexport class ScriptUtils {\n\n /**\n * @deprecated Use ObjectUtils.Script.evalReturn instead\n */\n public static evaluateReturn<T = any>(script: string | { bodyScript: string, returnScript: string }, thisTarget: any = {}): T {\n return ObjectUtils.Script.evaluateReturn(script, thisTarget);\n }\n\n /**\n * @deprecated Use ObjectUtils.Script.eval instead\n */\n public static evaluate<T = any>(script: string, thisTarget: any = {}): T | undefined {\n return ObjectUtils.Script.evaluate(script, thisTarget); // Changed from eval to runScript\n }\n\n /**\n * @deprecated Use ObjectUtils.Script.eval instead\n */\n // public static getVariablePaths(script: string): Set<string> {\n // const usingVars = new Set<string>();\n //\n // class GetDetectProxy implements ProxyHandler<any> {\n // public usingVars = usingVars;\n //\n // constructor(public prefix?: string) {}\n //\n // set(target: any, p: string | symbol, value: any, receiver: any): boolean {\n // return true;\n // }\n //\n // get(target: any, p: string | symbol, receiver: any): any {\n // let items;\n // if (typeof p === 'string' && isNaN(Number(p))) {\n // items = this.prefix ? this.prefix + '.' + p : p;\n // this.usingVars.add(items);\n // } else if (typeof p === 'string' && !isNaN(Number(p))) {\n // items = this.prefix ? this.prefix + '[' + p + ']' : p;\n // this.usingVars.add(items);\n // }\n // return new Proxy(() => {}, new GetDetectProxy(items));\n // }\n // }\n //\n // const destUser = new Proxy(() => {}, new GetDetectProxy());\n //\n // try {\n // // \uB3D9\uC801\uC73C\uB85C \uD568\uC218 \uC0DD\uC131 \uD6C4 bind\n // // const boundFunc = new Function(\"return this.value\").bind(obj);\n // // console.log(boundFunc()); // 42\n //\n // // eslint-disable-next-line no-new-func,no-unused-expressions\n // Function(`\"use strict\"; ${script}; `).bind(destUser)();\n // } catch (e) {\n // console.error(e);\n // }\n // console.log('-------usingV', usingVars)\n // return usingVars;\n // }\n\n\n\n public static loadElement(\n document: Document,\n name: string,\n option: { attribute?: { [key: string]: string }; body?: string; created: (tag: HTMLElement) => void }\n ) {\n return new Promise((resolve, reject) => {\n const tag = document.createElement(name);\n if (option?.body) {\n tag.innerHTML = option.body;\n } else {\n tag.onload = resolve;\n }\n tag.onerror = reject;\n if (option?.attribute) {\n for (const [key, value] of Object.entries(option.attribute)) {\n tag.setAttribute(key, value);\n }\n }\n option.created(tag);\n if (option?.body && tag.parentNode) {\n resolve(tag);\n }\n // document.head.append(tag);\n });\n }\n\n public static loadStyleSheet(document: Document, href: string, attribute: { [key: string]: string } = {}) {\n // const tag = document.createElement('link');\n // tag.type = 'text/css';\n // tag.setAttribute('rel', 'stylesheet');\n // tag.href = href;\n // for (const [key, value] of Object.entries(attribute)) {\n // tag.setAttribute(key, value);\n // }\n // target.append(tag)\n attribute.type = 'text/css';\n attribute.rel = 'stylesheet';\n attribute.href = href;\n return ScriptUtils.loadElement(document, 'link', {\n attribute,\n created: e => {\n document.head.append(e);\n }\n });\n }\n\n public static loadScript(document: Document, src: string, attribute: { [key: string]: string } = {}) {\n attribute.type = attribute?.type ?? 'text/javascript';\n attribute.src = src;\n return ScriptUtils.loadElement(document, 'script', { attribute, created: e => document.head.append(e) });\n }\n public static loadScriptBody(document: Document, body: string, attribute: { [key: string]: string } = {}) {\n attribute.type = attribute?.type ?? 'text/javascript';\n return ScriptUtils.loadElement(document, 'script', { body, attribute, created: e => document.head.append(e) });\n }\n}\n", "import { Subscription } from '../message/Subscription';\nimport { ConstructorType } from '../types';\nimport { ValidUtils } from '../valid/ValidUtils';\n\nexport namespace Promises {\n export const filterCatch = async (promise: Promise<any>, has: ConstructorType<any> | ((e: any) => boolean) | ((ConstructorType<any> | ((e: any) => void))[])) => {\n try {\n await promise;\n return undefined;\n } catch (e) {\n const targetHas = Array.isArray(has) ? has : [has]\n for (let ha of targetHas) {\n if (ValidUtils.isConstructor(ha)) {\n if (e instanceof ha) {\n return e;\n }\n } else {\n if ((ha as Function)(e)) {\n return e;\n }\n }\n }\n throw e;\n }\n return undefined;\n }\n export const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));\n export const sleepReject = (ms: number) => new Promise((resolve, reject) => setTimeout(reject, ms));\n export const settle = async <T, E = unknown>(promise: Promise<T>): Promise<Promises.SettledResult<T, E>> => {\n return Promise.allSettled([promise]).then(results => results[0]);\n };\n export const settles = async <T, E = unknown>(...promises: Promise<T>[]): Promise<Promises.SettledResult<T, E>[]> => {\n return Promise.allSettled(promises);\n };\n export type SettledResult<T, E = unknown> =\n | PromiseFulfilledResult<T>\n | (Omit<PromiseRejectedResult, 'reason'> & { reason: E });\n\n export type LoopConfig = { age: number };\n export type ObservableLoop<T> = {\n subscribe: (callback: {\n then?: (data: T, config: LoopConfig & {duration: number}) => void,\n catch?: (e: any, config: LoopConfig & {duration: number}) => void,\n delayThen?: (config: LoopConfig & { duration: number, isCatch: boolean, data?: T }) => void,\n }) => Subscription;\n }\n export const loop = <T>(config: {\n factory: (config: LoopConfig) => Promise<T>,\n delay?: number,\n loopDelay?: number\n }\n ): ObservableLoop<T> => {\n\n return {\n subscribe: (callback) => {\n\n let stop = false;\n let age = 0;\n const loopExecute = async () => {\n const start = Date.now();\n let end = start;\n age++;\n const executeConfig = {age: age};\n let t: T;\n let isCatch = false;\n try {\n t = await config.factory(executeConfig);\n end = Date.now();\n callback.then?.(t, {...executeConfig, duration: end - start});\n } catch (e) {\n isCatch = true;\n end = Date.now();\n callback.catch?.(e, {...executeConfig, duration: end - start});\n }\n await sleep(config.loopDelay ?? 0);\n // @ts-ignore\n callback.delayThen?.({...executeConfig, duration: end - start, isCatch: isCatch, data: t});\n if (!stop)\n return loopExecute();\n };\n\n setTimeout(() => {\n loopExecute();\n }, config.delay ?? 0);\n\n return {\n get closed() {\n return stop;\n },\n unsubscribe: () => {\n stop = true;\n }\n }\n\n\n }\n }\n }\n export const delayExecute = <T>(value: (() => T) | (() => Promise<T>), delay = 0): Promise<T> => {\n return new Promise<T>(resolve => {\n setTimeout(async () => {\n const t = await value();\n resolve(t);\n }, delay);\n });\n };\n\n export const transaction = <T, B = unknown, A = unknown>(\n promise: Promise<T> | (() => Promise<T>),\n config?: {\n delay?: number;\n before?: () => B;\n after?: () => A;\n then?: (it: T, data: { before?: B }) => void;\n catch?: (e: any, data: { before?: B; after?: A }) => void;\n disabledCatchThrow?: boolean;\n finally?: (data: { before?: B; after?: A; data?: T }) => void;\n }\n ) => {\n const p = typeof promise === 'function' ? promise() : promise;\n let after: A | undefined;\n let before: B | undefined;\n let promiseData: T | undefined;\n new Promise<T>((resolve, reject) => {\n const execute = () => {\n before = config?.before?.();\n p.then(data => {\n resolve(data);\n });\n after = config?.after?.();\n };\n setTimeout(() => {\n execute();\n }, config?.delay ?? 0);\n // if (config?.delay) {\n // } else {\n // setTimeout(() => {\n // execute();\n // },1000);\n // }\n })\n .then(data => {\n promiseData = data;\n config?.then?.(data, {before: before});\n })\n .catch(e => {\n config?.catch?.(e, {before: before, after: after});\n if (!config?.disabledCatchThrow) {\n throw e;\n }\n })\n .finally(() => {\n config?.finally?.({before: before, after: after, data: promiseData});\n });\n };\n\n export const withResolvers = <T>() => {\n let resolve!: (value: T | PromiseLike<T>) => void;\n let reject!: (reason?: any) => void;\n\n const promise = new Promise<T>((res, rej) => {\n resolve = res;\n reject = rej;\n });\n\n return {promise, resolve, reject};\n }\n\n\n export namespace Result {\n export type FulfilledType<T> = PromiseFulfilledResult<T>;\n export type RejectType<E = unknown> = Omit<PromiseRejectedResult, 'reason'> & { reason: E };\n export type PendingType = { status: 'pending' };\n export type Type<T, E = unknown> = FulfilledType<T> | RejectType<E> | PendingType;\n\n export type FulfilledState<T> = FulfilledType<T> & { isFulfilled: true; isRejected: false; isPending: false };\n export type RejectState<E = unknown> = RejectType<E> & { isFulfilled: false; isRejected: true; isPending: false };\n export type PendingState = PendingType & { isFulfilled: false; isRejected: false; isPending: true };\n export type UndefinedResultState = { status?: undefined; isFulfilled: false; isRejected: false; isPending: false };\n\n export type State<T, E = unknown> = FulfilledState<T> | RejectState<E> | PendingState;\n export type StateFactory<T, E = unknown> = State<T, E> & { factory: () => StateFactory<T, E> };\n export type PromiseState<T, E = unknown> = State<T, E> & Promise<T>;\n export type PromiseStateFactory<T, E = unknown> = PromiseState<T, E> & { factory: () => PromiseStateFactory<T, E> };\n\n\n export async function awaitWrap<T, E = unknown>(promise: Promise<T>): Promise<State<T, E>>;\n export async function awaitWrap<T, E = unknown>(promise: () => Promise<T>): Promise<StateFactory<T, E>>;\n export async function awaitWrap<T, E = unknown>(promise: Promise<T> | (() => Promise<T>)): Promise<State<T, E> | StateFactory<T, E>> {\n const data = typeof promise === 'function' ? wrap<T, E>(promise) : wrap<T, E>(promise);\n // try {\n\n try {\n await data;\n } catch (e) {\n }\n\n const rData = {\n status: (data as any).status,\n isFulfilled: (data as any).isFulfilled,\n isRejected: (data as any).isRejected,\n isPending: (data as any).isPending,\n value: (data as any).value,\n reason: (data as any).reason,\n } as any;\n if (typeof promise === 'function') {\n rData.factory = () => {\n return awaitWrap(promise);\n }\n return rData;\n } else {\n return rData;\n }\n }\n\n export function wrap<T, E = unknown>(promise: Promise<T>): PromiseState<T, E>;\n export function wrap<T, E = unknown>(promise: () => Promise<T>): PromiseStateFactory<T, E>;\n export function wrap<T, E = unknown>(promise: Promise<T> | (() => Promise<T>)): (PromiseState<T, E>) | PromiseStateFactory<T, E> {\n const promiseResult = (typeof promise === 'function' ? promise() : promise) as State<T, E> & Promise<T>;\n if (typeof promise === 'function') {\n const p = promiseResult as unknown as PromiseStateFactory<T, E> & Promise<T>;\n p.factory = () => {\n return wrap(promise);\n }\n }\n if (promiseResult.status === undefined) {\n const p = promiseResult as unknown as PendingState & Promise<T>;\n p.status = 'pending';\n p.isPending = true;\n p.isFulfilled = false;\n p.isRejected = false;\n p.then(\n result => {\n console.log('result??', result)\n const p = promiseResult as unknown as FulfilledState<T>;\n p.status = 'fulfilled';\n p.isFulfilled = true;\n p.isRejected = false;\n p.isPending = false;\n p.value = result;\n },\n reason => {\n console.log('rejet??', reason)\n const p = promiseResult as unknown as RejectState<E>;\n p.status = 'rejected';\n p.isFulfilled = false;\n p.isRejected = true;\n p.isPending = false;\n p.reason = reason;\n }\n );\n }\n return promiseResult;\n }\n }\n}\n", "import { Promises } from '@dooboostore/core/promise/Promises';\n\nexport namespace ElementUtils {\n export type Attr = {name: string, value: any}\n\n export type LoadImageCallbackType = { onload: (img: HTMLImageElement) => void, onerror: OnErrorEventHandler };\n export type LoadAudioCallbackType = { onload: (img: HTMLAudioElement) => void, onerror: (e: ErrorEvent) => void };\n\n\n export function loadImage(src: string): Promise<HTMLImageElement>;\n export function loadImage(src: string, callback: LoadImageCallbackType): void;\n export function loadImage(src: string, callback?: LoadImageCallbackType): Promise<HTMLImageElement> | void {\n let targetCallback: (img: HTMLImageElement) => void;\n let promise: Promise<HTMLImageElement> | undefined = undefined;\n if (callback) {\n targetCallback = callback.onload;\n } else {\n const r = Promises.withResolvers<HTMLImageElement>();\n promise = r.promise;\n targetCallback = r.resolve;\n }\n const img = new Image();\n // img.crossOrigin = 'Anonymous';\n img.onload = () => {\n targetCallback(img);\n };\n if (callback && callback.onerror) {\n img.onerror = callback.onerror;\n }\n img.src = src;\n return promise;\n }\n\n export function loadAudio(src: string): Promise<HTMLAudioElement>;\n export function loadAudio(src: string, callback: LoadAudioCallbackType): void;\n export function loadAudio(src: string, callback?: LoadAudioCallbackType): Promise<HTMLAudioElement> | void {\n let targetCallback: (audio: HTMLAudioElement) => void;\n let error: (e: any) => void;\n let promise: Promise<HTMLAudioElement> | undefined = undefined;\n if (callback) {\n targetCallback = callback.onload;\n error = callback.onerror;\n } else {\n const r = Promises.withResolvers<HTMLAudioElement>();\n promise = r.promise;\n error = r.reject;\n targetCallback = r.resolve;\n }\n const audio = new Audio('path/to/audio1.mp3');\n audio.addEventListener('canplay', () => {\n targetCallback?.(audio);\n });\n audio.addEventListener('error', (e) => {\n callback?.onerror(e);\n });\n audio.load();\n return promise;\n }\n\n export const toInnerHTML = (documentFragment: DocumentFragment, config: { document: Document }) => {\n // if (documentFragment) {\n const tempDiv = config.document.createElement('div');\n tempDiv.appendChild(documentFragment.cloneNode(true));\n console.log('DocumentFragment innerHTML:', tempDiv.innerHTML);\n return tempDiv.innerHTML;\n // }\n }\n\n\n/*\n 17 // originalDiv \uC790\uCCB4\uC640 \uC18D\uC131\uB9CC \uBCF5\uC0AC\uD558\uACE0, childSpan\uC740 \uBCF5\uC0AC\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\n 18 const shallowCopy = originalDiv.cloneNode(false);\n 19 shallowCopy.id = 'shallowCopyDiv'; // ID \uBCC0\uACBD (\uC911\uBCF5 \uBC29\uC9C0)\n 20 console.log('\\n--- \uC595\uC740 \uBCF5\uC0AC\uBCF8 ---');\n 21 console.log(shallowCopy.outerHTML);\n 22 // \uC608\uC0C1 \uCD9C\uB825: <div id=\"shallowCopyDiv\" data-custom=\"\uC6D0\uBCF8 \uB370\uC774\uD130\"></div>\n 23\n 24 // 2. \uAE4A\uC740 \uBCF5\uC0AC (deep: true)\n 25 // originalDiv\uC640 \uADF8 \uC790\uC2DD\uC778 childSpan\uAE4C\uC9C0 \uBAA8\uB450 \uBCF5\uC0AC\uD569\uB2C8\uB2E4.\n 26 const deepCopy = originalDiv.cloneNode(true);\n 27 deepCopy.id = 'deepCopyDiv'; // ID \uBCC0\uACBD (\uC911\uBCF5 \uBC29\uC9C0)\n 28 console.log('\\n--- \uAE4A\uC740 \uBCF5\uC0AC\uBCF8 ---');\n 29 console.log(deepCopy.outerHTML);\n */\n\n export const replaceWith = (targetElement: Element, replaceElement: Element) => {\n targetElement.replaceWith(replaceElement);\n\n }\n export const nodeList = (documentFragment: DocumentFragment) => {\n return Array.from(documentFragment.childNodes)\n }\n\n export const cloneNodeList = (documentFragment: DocumentFragment) => {\n return Array.from(documentFragment.childNodes).map(node => node.cloneNode(true));\n }\n\n export const querySelector = (e: Element | {start: Element, end: Element}, selector: string) => {\n const elements = ElementUtils.querySelectorAll(e,selector);\n if (elements.length > 0 ) {\n return elements[0];\n } else {\n return null;\n }\n }\n\n export const querySelectorAll = (e: Element | {start: Node, end: Node}, selector: string) => {\n if (e instanceof Element) {\n return Array.from(e.querySelectorAll(selector));\n } else {\n const startNode = e.start;\n const endNode = e.end;\n if (startNode && endNode && startNode.parentNode === endNode.parentNode) {\n const elements: Element[] = [];\n let currentNode: Node | null = startNode.nextSibling;\n while (currentNode && currentNode !== endNode) {\n if (currentNode.nodeType === Node.ELEMENT_NODE) {\n const currentElement = currentNode as Element;\n if (currentElement.matches(selector)) {\n elements.push(currentElement);\n }\n elements.push(...Array.from(currentElement.querySelectorAll(selector)));\n }\n currentNode = currentNode.nextSibling;\n }\n return elements;\n }\n }\n return [];\n }\n\n\nexport const selectorElements = (selector: string, element: Element|Document = document): Element[] => {\n return Array.prototype.slice.call(element.querySelectorAll(selector));\n }\n\nexport const selectorNodes = (selector: string, element: Element|Document = document) => {\n return element.querySelectorAll(selector);\n }\n\nexport const removeAttribute = (result: Element, attrs: string[]) => {\n attrs.forEach(it => {\n result.removeAttribute(it)\n });\n }\n\nexport const setAttribute = (result: Element, attrs: string[]) => {\n attrs.forEach(it => {\n result.setAttribute(it, '')\n });\n }\n\nexport const setAttributeAttr = (result: Element, attrs: Attr[]) => {\n attrs.forEach(it => {\n result.setAttribute(it.name, it.value)\n });\n }\n\nexport const getAttributeToObject = (input: Element): any => {\n const attribute = {} as any;\n input.getAttributeNames().forEach(ait => {\n attribute[ait] = input.getAttribute(ait);\n });\n return attribute;\n }\n\nexport const getStyleToObject = (input: HTMLElement): any => {\n const style = {} as any;\n for (let i = 0; i < input.style.length; i++) {\n const key = input.style[i];\n style[key] = (input.style as any)[key];\n }\n return style;\n }\n}", "// within rangeResult.ts\n// @ts-ignore\nexport class RangeResult implements IteratorResult<number> {\n done: boolean;\n value: number;\n\n constructor(value: number | undefined, done: boolean) {\n this.done = done;\n this.value = value ?? 0;\n }\n}\n\nexport class RangeIterator implements Iterator<number> {\n private _first: number;\n private _current: number;\n private _last: number\n private _step: number\n constructor(first: number, last: number, step: number) {\n this._current = this._first = first;\n this._last = last;\n this._step = step;\n }\n\n next(value?: any): IteratorResult<number> {\n let r: RangeResult;\n if (this._first < this._last && this._current < this._last) {\n r = new RangeResult(this._current, false);\n this._current += this._step\n } else if (this._first < this._last && this._current === this._last) {\n r = new RangeResult(this._current, false);\n this._current += this._step\n } else if (this._first > this._last && this._current > this._last) {\n r = new RangeResult(this._current, false);\n this._current -= this._step\n } else if (this._first > this._last && this._current === this._last) {\n r = new RangeResult(this._current, false);\n this._current -= this._step\n } else if (this._current === this._last) {\n r = new RangeResult(this._current, false);\n this._current -= this._step\n } else {\n r = new RangeResult(undefined, true);\n }\n return r;\n }\n}\n\nexport class Range implements Iterable<number> {\n public readonly isRange = true;\n\n constructor(public first: number, public last: number, public step: number = 1) {\n }\n\n [Symbol.iterator](): Iterator<number> {\n return new RangeIterator(this.first, this.last, this.step);\n }\n\n map<U>(callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any): U[] {\n return Array.from(this).map(callbackfn)\n }\n\n public static range(first: number | string, last?: number, step: number = 1): Range {\n if (typeof first === 'number' && last === undefined) {\n return new Range(0, first, step);\n } else if (typeof first === 'string') {\n const [_first, _last = '0'] = first.split('..');\n const [__last, _step = '1'] = _last.split(',');\n return new Range(Number(_first.trim()), Number(__last.trim()), Number(_step.trim()));\n } else {\n return new Range(first, last ?? 0, step);\n }\n }\n}\n", "import { DomRenderConfig } from '../configs/DomRenderConfig';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { ElementUtils } from '@dooboostore/core-web/element/ElementUtils';\nimport { Range } from '../iterators/Range';\nimport { DomRenderFinalProxy } from '../types/Types';\nimport { getDomRenderConfig } from '../DomRenderProxy';\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\n\ntype HandlerInfo = {\n element: HTMLElement;\n attr: string;\n type: 'link' | 'event' | 'event-param';\n priority: number;\n property?: string; // for link type\n};\n\nexport class EventManager {\n public static readonly attrPrefix = 'dr-';\n public readonly eventNames = [\n 'click', 'mousedown', 'mouseup', 'dblclick', 'mouseover', 'mouseout', 'mousemove', 'mouseenter', 'mouseleave', 'contextmenu',\n 'keyup', 'keydown', 'keypress', 'toggle',\n 'change', 'input', 'submit', 'resize', 'focus', 'blur',\n 'close', 'cancel'\n ];\n\n private readonly delegatableEventMap: { [key: string]: string } = {\n mouseleave: 'mouseout',\n mouseenter: 'mouseover',\n focus: 'focusin',\n blur: 'focusout',\n };\n private readonly directAttachEvents = new Set(['close']);\n\n public static ownerVariablePathAttrName = EventManager.attrPrefix + 'owner-variable-path';\n\n public static readonly eventParam = EventManager.attrPrefix + 'event';\n public static readonly onInitAttrName = EventManager.attrPrefix + 'on-init';\n public static readonly valueAttrName = EventManager.attrPrefix + 'value';\n public static readonly checkedAttrName = EventManager.attrPrefix + 'checked';\n public static readonly selectedAttrName = EventManager.attrPrefix + 'selected';\n public static readonly readonlyAttrName = EventManager.attrPrefix + 'readonly';\n public static readonly disabledAttrName = EventManager.attrPrefix + 'disabled';\n public static readonly hiddenAttrName = EventManager.attrPrefix + 'hidden';\n public static readonly requiredAttrName = EventManager.attrPrefix + 'required';\n public static readonly openAttrName = EventManager.attrPrefix + 'open';\n\n // link\uB294 \uC4F0\uC9C0 \uC54A\uB294\uAC78 \uCD94\uCC9C\uD55C\uB2E4 \uB77C\uC774\uD504 \uC0AC\uC774\uD074 \uAF2C\uC778\uB2E4 \uB2E4\uB978 \uD504\uB808\uC784\uC6CC\uD06C\uC5D0\uC11C\uB3C4 \uC591\uBC29\uD5A5\uC740 \uC9C0\uC591 \uD55C\uB2E4\n public static linkAttrs = [\n {name: EventManager.attrPrefix + 'value-link', property: 'value', event: 'input'},\n {name: EventManager.attrPrefix + 'hidden-link', property: 'value', event: 'input'},\n {name: EventManager.attrPrefix + 'required-link', property: 'value', event: 'input'},\n {name: EventManager.attrPrefix + 'checked-link', property: 'checked', event: 'change'},\n {name: EventManager.attrPrefix + 'open-link', property: 'open', event: 'toggle'},\n ]\n // @ts-ignore \uD569\uC131\uC774\uBCA4\uD2B8(Synthetic) \uCC98\uB9AC\uD558\uBA74\uC11C \uC758\uBBF8\uAC00 \uC5C6\uC5B4\uC84C\uB2E4\n public static readonly linkTargetMapAttrName = EventManager.attrPrefix + 'link-variables';\n\n public static readonly onRenderedInitAttrName = EventManager.attrPrefix + 'on-rendered-init';\n\n public static readonly attrAttrName = EventManager.attrPrefix + 'attr';\n public static readonly normalAttrMapAttrName = EventManager.attrPrefix + 'normal-attr-map';\n public static readonly styleAttrName = EventManager.attrPrefix + 'style';\n public static readonly classAttrName = EventManager.attrPrefix + 'class';\n\n public static readonly VALUE_VARNAME = '$value';\n public static readonly SCRIPTS_VARNAME = '$scripts';\n public static readonly FAG_VARNAME = '$fag';\n public static readonly RAWSET_VARNAME = '$rawSet';\n public static readonly RENDER_VARNAME = '$render';\n public static readonly NEAR_THIS_VARNAME = '$nearThis';\n public static readonly PARENT_THIS_VARNAME = '$parentThis';\n public static readonly ROOT_OBJECT_VARNAME = '$rootObject';\n public static readonly SCRIPT_UTILS_VARNAME = '$scriptUtils';\n public static readonly RANGE_VARNAME = '$range';\n public static readonly ROUTER_VARNAME = '$router';\n public static readonly INNER_HTML_VARNAME = '$innerHTML';\n public static readonly ELEMENT_VARNAME = '$element';\n public static readonly TARGET_VARNAME = '$target';\n public static readonly EVENT_VARNAME = '$event';\n public static readonly COMPONENT_VARNAME = '$component';\n public static readonly INNERHTML_VARNAME = '$innerHTML';\n public static readonly ATTRIBUTE_VARNAME = '$attribute';\n public static readonly CREATOR_META_DATA_VARNAME = '$creatorMetaData';\n public static readonly PARENT_THIS_PATH_VARNAME = '$parentPath';\n public static readonly CURRENT_THIS_VARNAME = '$currentThis';\n public static readonly CURRENT_THIS_PATH_VARNAME = '$currentThisPath';\n public static readonly NEAR_THIS_PATH_VARNAME = '$nearThisPath';\n public static readonly VARNAMES = [EventManager.SCRIPTS_VARNAME, EventManager.FAG_VARNAME, EventManager.RAWSET_VARNAME, EventManager.RANGE_VARNAME, EventManager.ROUTER_VARNAME, EventManager.ELEMENT_VARNAME, EventManager.TARGET_VARNAME, EventManager.EVENT_VARNAME, EventManager.COMPONENT_VARNAME, EventManager.INNERHTML_VARNAME, EventManager.ATTRIBUTE_VARNAME, EventManager.ATTRIBUTE_VARNAME, EventManager.CREATOR_META_DATA_VARNAME, EventManager.PARENT_THIS_PATH_VARNAME, EventManager.PARENT_THIS_VARNAME];\n\n public static readonly WINDOW_EVENT_POPSTATE = 'popstate';\n public static readonly WINDOW_EVENT_RESIZE = 'resize';\n public static readonly WINDOW_EVENTS = [EventManager.WINDOW_EVENT_POPSTATE, EventManager.WINDOW_EVENT_RESIZE];\n public static readonly attrNames = [\n EventManager.valueAttrName,\n EventManager.checkedAttrName,\n EventManager.selectedAttrName,\n EventManager.readonlyAttrName,\n EventManager.disabledAttrName,\n EventManager.hiddenAttrName,\n EventManager.requiredAttrName,\n EventManager.openAttrName,\n EventManager.attrAttrName,\n EventManager.normalAttrMapAttrName,\n EventManager.styleAttrName,\n EventManager.classAttrName,\n EventManager.attrPrefix + 'window-event-' + EventManager.WINDOW_EVENT_POPSTATE,\n EventManager.attrPrefix + 'window-event-' + EventManager.WINDOW_EVENT_RESIZE,\n EventManager.onInitAttrName,\n ...EventManager.linkAttrs.map(it => it.name),\n this.eventParam\n ];\n readonly bindScript = `\n const ${EventManager.VALUE_VARNAME} = this.__render.value;\n const ${EventManager.SCRIPTS_VARNAME} = this.__render.scripts;\n const ${EventManager.RANGE_VARNAME} = this.__render.range;\n const ${EventManager.ROUTER_VARNAME} = this.__render.router;\n const ${EventManager.ATTRIBUTE_VARNAME} = this.__render.attribute;\n const ${EventManager.ELEMENT_VARNAME} = this.__render.element;\n const ${EventManager.COMPONENT_VARNAME} = this.__render.element.component;\n const ${EventManager.TARGET_VARNAME} = this.__render.target;\n const ${EventManager.EVENT_VARNAME} = this.__render.event;\n `;\n\n constructor(private window: Window) {\n this.eventNames.forEach(it => {\n EventManager.attrNames.push(EventManager.attrPrefix + 'event-' + it);\n });\n EventManager.attrNames.push(EventManager.onRenderedInitAttrName);\n\n if (typeof window !== 'undefined') {\n EventManager.WINDOW_EVENTS.forEach(eventName => {\n window?.addEventListener(eventName, (event) => {\n const targetAttr = `dr-window-event-${eventName}`;\n document.querySelectorAll(`[${targetAttr}]`).forEach(it => {\n const script = it.getAttribute(targetAttr);\n if (script) {\n const obj = this.findComponentInstance(it as HTMLElement);\n const config = getDomRenderConfig(obj);\n ScriptUtils.evaluate(`${this.bindScript} ${script} `, this.createExecutionContext(event, it as HTMLElement, obj, config));\n }\n });\n });\n });\n\n const rootElement = this.window.document;\n const listeningEvents = new Set<string>();\n this.eventNames.forEach(eventName => {\n if (this.directAttachEvents.has(eventName)) {\n return;\n }\n const delegatedEventName = this.delegatableEventMap[eventName] || eventName;\n\n if (listeningEvents.has(delegatedEventName)) {\n return;\n }\n listeningEvents.add(delegatedEventName);\n rootElement.addEventListener(delegatedEventName, this.handleEvent.bind(this), true);\n });\n }\n }\n\n private handleEvent(event: Event) {\n const handlers = this.collectHandlers(event);\n // console.log('handlers', handlers, event);\n for (const handler of handlers) {\n if (event.cancelBubble) {\n break;\n }\n\n const componentInstance = this.findComponentInstance(handler.element);\n if (!componentInstance) {\n continue;\n }\n // console.log('executeHandler', event,handler,componentInstance)\n this.executeHandler(event, handler, componentInstance);\n }\n }\n\n private collectHandlers(event: Event): HandlerInfo[] {\n const handlers: HandlerInfo[] = [];\n const root = this.window.document;\n if (!root) return handlers;\n\n const initialTarget = event.target as Node;\n let currentTarget: HTMLElement | null = (initialTarget.nodeType === 1)\n ? (initialTarget as HTMLElement)\n : initialTarget.parentElement;\n const collectedElements = new Set<HTMLElement>();\n\n const eventMap: { [key: string]: string } = {\n mouseout: 'mouseleave',\n mouseover: 'mouseenter',\n focusout: 'blur',\n focusin: 'focus'\n };\n const mappedEventName = eventMap[event.type] || event.type;\n\n while (currentTarget) {\n if (collectedElements.has(currentTarget)) {\n break;\n }\n\n // Priority 1: Link attributes\n const matchingLinkAttr = EventManager.linkAttrs.find(la => la.event === mappedEventName && currentTarget?.hasAttribute(la.name));\n if (matchingLinkAttr) {\n handlers.push({\n element: currentTarget,\n attr: matchingLinkAttr.name,\n type: 'link',\n priority: 1,\n property: matchingLinkAttr.property\n });\n }\n\n // Priority 2: dr-event-* attributes\n const eventAttr = `${EventManager.attrPrefix}event-${mappedEventName}`;\n if (currentTarget.hasAttribute(eventAttr)) {\n handlers.push({\n element: currentTarget,\n attr: eventAttr,\n type: 'event',\n priority: 2\n });\n }\n\n // Priority 3: dr-event with params\n const eventParamAttr = EventManager.eventParam;\n if (currentTarget.hasAttribute(eventParamAttr)) {\n const bindEvents = currentTarget.getAttribute(`${eventParamAttr}:bind`);\n if (bindEvents && bindEvents.split(',').map(s => s.trim()).includes(mappedEventName)) {\n handlers.push({\n element: currentTarget,\n attr: eventParamAttr,\n type: 'event-param',\n priority: 3\n });\n }\n }\n\n collectedElements.add(currentTarget);\n\n if (currentTarget === root.documentElement) {\n break;\n }\n\n currentTarget = currentTarget.parentElement;\n }\n\n return handlers.sort((a, b) => a.priority - b.priority);\n }\n\n private findComponentInstance(element: HTMLElement | null): any {\n let current = element;\n const root = this.window.document;\n while (current) {\n if ((current as any).obj) {\n return (current as any).obj;\n }\n if (current === root.documentElement) {\n break;\n }\n current = current.parentElement;\n }\n return this.window;\n }\n\n private createExecutionContext(event: Event, element: HTMLElement, componentInstance: any, config: DomRenderConfig | undefined, extraVars = {}) {\n // console.log('---------->', config?.eventVariables)\n return Object.assign(componentInstance, {\n __render: Object.freeze({\n event,\n element,\n target: event.target,\n attribute: ElementUtils.getAttributeToObject(element),\n router: config?.router,\n range: Range.range,\n scripts: EventManager.setBindProperty(config?.scripts, componentInstance),\n ...config?.eventVariables,\n ...extraVars\n })\n });\n }\n\n private executeHandler(event: Event, handler: HandlerInfo, componentInstance: any) {\n const {element, type, attr} = handler;\n const config = getDomRenderConfig(componentInstance);\n\n switch (type) {\n case 'link':\n const varName = element.getAttribute(attr);\n if (!varName || !handler.property) return;\n\n if (attr.includes('leave') || attr.includes('enter') || attr.includes('focus') || attr.includes('blur')) {\n const relatedTarget = (event as MouseEvent).relatedTarget as Node;\n if (relatedTarget && element.contains(relatedTarget)) {\n return;\n }\n }\n\n const ownerVariablePath = element.getAttribute(EventManager.ownerVariablePathAttrName);\n let bindObj = componentInstance;\n if (ownerVariablePath) {\n bindObj = ScriptUtils.evaluateReturn(ownerVariablePath, componentInstance);\n }\n\n const mapScript = element.getAttribute(`${attr}:map`);\n let value = (element as any)[handler.property];\n\n if (mapScript) {\n const context = this.createExecutionContext(event, element, bindObj, config, {value});\n value = ScriptUtils.evaluate(`return ${mapScript}`, context);\n }\n\n if (typeof this.getValue(componentInstance, varName, bindObj) === 'function') {\n this.getValue(componentInstance, varName, bindObj)(value, event);\n } else {\n this.setValue(componentInstance, varName, value);\n }\n break;\n\n case 'event':\n const script = element.getAttribute(attr);\n if (!script) return;\n\n if (attr.endsWith('mouseleave') || attr.endsWith('mouseenter') || attr.endsWith('blur') || attr.endsWith('focus')) {\n const relatedTarget = (event as MouseEvent).relatedTarget as Node;\n if (relatedTarget && element.contains(relatedTarget)) {\n return;\n }\n }\n\n const context = this.createExecutionContext(event, element, componentInstance, config);\n const filterScript = element.getAttribute(`${attr}:filter`);\n let filter = true;\n // \uAC1C\uBC1C\uC790\uAC00 \uC0AC\uC6A9\uC911\uC5D0 \uBB38\uC81C\uAC00 \uBC1C\uC0DD\uB420(\uB514\uBC84\uAE45) \uBC84\uADF8\uB97C \uC720\uBC1C\uD560\uC218\uC788\uB294 \uAE30\uB2A5 \uD750\uB984\uC81C\uC5B4\uAC00 \uC548\uB420\uC218\uC788\uC5B4 \uAE30\uB2A5\uC744 \uC81C\uAC70\uD55C\uB2E4.\n // if (filterScript) {\n // filter = ScriptUtils.eval<boolean>(`${this.getBindScript(config)} return ${filterScript}`, context) ?? false;\n // }\n\n if (filter) {\n ScriptUtils.evaluate(`${this.getBindScript(config)} ${script}`, context);\n }\n\n // \uAC1C\uBC1C\uC790\uAC00 \uC0AC\uC6A9\uC911\uC5D0 \uBB38\uC81C\uAC00 \uBC1C\uC0DD\uB420(\uB514\uBC84\uAE45) \uBC84\uADF8\uB97C \uC720\uBC1C\uD560\uC218\uC788\uB294 \uAE30\uB2A5 \uD750\uB984\uC81C\uC5B4\uAC00 \uC548\uB420\uC218\uC788\uC5B4 \uAE30\uB2A5\uC744 \uC81C\uAC70\uD55C\uB2E4.\n // const hasDispatch = element.hasAttribute(`${attr}:dispatch`);\n // if (hasDispatch) {\n // element.dispatchEvent(new Event(event.type));\n // }\n break;\n\n case 'event-param':\n const paramScript = element.getAttribute(attr);\n if (!paramScript) return;\n\n if (attr.endsWith('mouseleave') || attr.endsWith('mouseenter') || attr.endsWith('blur') || attr.endsWith('focus')) {\n const relatedTarget = (event as MouseEvent).relatedTarget as Node;\n if (relatedTarget && element.contains(relatedTarget)) {\n return;\n }\n }\n\n const attributes = ElementUtils.getAttributeToObject(element);\n const params = {} as any;\n const prefix = attr + ':';\n Object.entries(attributes).filter(([k, v]) => k.startsWith(prefix)).forEach(([k, v]) => {\n params[k.slice(prefix.length)] = v;\n });\n\n const paramContext = this.createExecutionContext(event, element, componentInstance, config, {params});\n ScriptUtils.evaluate(`${this.getBindScript(config)} ${paramScript}`, paramContext);\n break;\n }\n }\n\n public findAttrElements(fragment: DocumentFragment | Element, config?: DomRenderConfig): Set<Element> {\n const elements = new Set<Element>();\n const addAttributes = config?.applyEvents?.map(it => it.attrName) ?? [];\n addAttributes.concat([...EventManager.attrNames]).forEach(attrName => {\n fragment?.querySelectorAll(`[${attrName}]`).forEach(it => {\n elements.add(it);\n });\n });\n return elements;\n }\n\n public applyEvent(obj: any, childNodes: Set<ChildNode> | Set<Element>, config?: DomRenderConfig) {\n childNodes.forEach(node => {\n if (node.nodeType === 1) {\n (node as any).obj = obj;\n }\n });\n\n this.procAttr<HTMLInputElement>(childNodes, EventManager.valueAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.value !== data) {\n it.value = data;\n }\n }\n });\n this.procAttr<HTMLInputElement>(childNodes, EventManager.checkedAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.checked!== data) {\n it.checked = data;\n }\n }\n });\n this.procAttr<HTMLOptionElement>(childNodes, EventManager.selectedAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.selected!== data) {\n it.selected = data;\n }\n }\n });\n this.procAttr<HTMLInputElement>(childNodes, EventManager.readonlyAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.readOnly!== data) {\n it.readOnly = data;\n }\n }\n });\n this.procAttr<HTMLInputElement>(childNodes, EventManager.disabledAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.disabled!== data) {\n it.disabled = data;\n }\n }\n });\n this.procAttr<HTMLElement>(childNodes, EventManager.hiddenAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.hidden!== data) {\n it.hidden = data;\n }\n }\n });\n this.procAttr<HTMLInputElement>(childNodes, EventManager.requiredAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.required!== data) {\n it.required = data;\n }\n }\n });\n this.procAttr<HTMLDialogElement>(childNodes, EventManager.openAttrName, (it, attribute) => {\n const script = attribute;\n if (script) {\n const data = ScriptUtils.evaluateReturn(script, obj);\n if (it.open!== data) {\n it.open = data;\n }\n }\n });\n\n this.procAttr(childNodes, EventManager.normalAttrMapAttrName, (it, attribute) => {\n const map = new Map<string, string>(JSON.parse(attribute));\n map.forEach((v, k) => {\n const data = ScriptUtils.evaluate(`const $element = this.element; return ${v} `, Object.assign(obj, {\n __render: Object.freeze({\n element: it,\n attribute: ElementUtils.getAttributeToObject(it)\n })\n }));\n if (data === null) {\n it.removeAttribute(k);\n } else {\n it.setAttribute(k, data);\n }\n });\n });\n\n EventManager.WINDOW_EVENTS.forEach(it => {\n this.procAttr<HTMLInputElement>(childNodes, EventManager.attrPrefix + 'window-event-' + it, (it, attribute) => {\n (it as any).obj = obj;\n });\n });\n\n EventManager.linkAttrs.forEach(linkInfo => {\n this.procAttr<HTMLElement>(childNodes, linkInfo.name, (it, varName) => {\n\n // console.log('ink??????????')\n if (varName) {\n const ownerVariablePathName = it.getAttribute(EventManager.ownerVariablePathAttrName);\n const mapScript = it.getAttribute(`${linkInfo.name}:map`);\n let bindObj = obj;\n if (ownerVariablePathName) {\n bindObj = ScriptUtils.evaluateReturn(ownerVariablePathName, obj);\n }\n const getValue = this.getValue(obj, varName, bindObj);\n if (typeof getValue === 'function' && getValue) {\n let setValue = (it as any)[linkInfo.property];\n if (mapScript) {\n setValue = ScriptUtils.evaluate(`${this.getBindScript(config)} return ${mapScript}`, Object.assign(bindObj, {__render: Object.freeze({element: it, target: bindObj, range: Range.range, value: setValue, scripts: EventManager.setBindProperty(config?.scripts, obj), ...config?.eventVariables})}));\n }\n getValue(setValue);\n } else if (getValue) {\n let setValue = getValue;\n if (mapScript) {\n setValue = ScriptUtils.evaluate(`${this.getBindScript(config)} return ${mapScript}`, Object.assign(bindObj, {__render: Object.freeze({element: it, target: bindObj, range: Range.range, value: setValue, scripts: EventManager.setBindProperty(config?.scripts, obj), ...config?.eventVariables})}));\n }\n if (setValue === null) {\n it.removeAttribute(linkInfo.property);\n } else {\n (it as any)[linkInfo.property] = setValue;\n }\n } else if (getValue === undefined) {\n this.setValue(obj, varName, (it as any)[linkInfo.property]);\n }\n }\n });\n });\n\n this.directAttachEvents.forEach(eventName => {\n const attr = `${EventManager.attrPrefix}event-${eventName}`;\n this.procAttr<HTMLElement>(childNodes, attr, (element, script) => {\n const handler = (event: Event) => {\n const componentInstance = this.findComponentInstance(element);\n if (!componentInstance) return;\n\n const context = this.createExecutionContext(event, element, componentInstance, config);\n const filterScript = element.getAttribute(`${attr}:filter`);\n let filter = true;\n if (filterScript) {\n filter = ScriptUtils.evaluate<boolean>(`${this.getBindScript(config)} return ${filterScript}`, context) ?? false;\n }\n if (filter) {\n ScriptUtils.evaluate(`${this.getBindScript(config)} ${script}`, context);\n }\n };\n element.addEventListener(eventName, handler);\n // TODO: Add logic to remove this listener when the element is destroyed.\n });\n });\n\n this.procAttr<HTMLElement>(childNodes, EventManager.onInitAttrName, (it, attribute) => {\n let script = attribute;\n if (script) {\n script = 'return ' + script;\n }\n if (script) {\n ScriptUtils.evaluate(`${this.getBindScript(config)}; ${script} `, Object.assign(obj, {\n __render: Object.freeze({\n element: it,\n attribute: ElementUtils.getAttributeToObject(it),\n ...config?.eventVariables\n })\n }));\n }\n });\n\n this.onRenderedEvent(obj, childNodes, config);\n this.changeVar(obj, childNodes, undefined, config);\n const elements = Array.from(childNodes).filter(it => it.nodeType === 1).map(it => it as Element);\n elements.forEach(it => {\n config?.applyEvents?.filter(ta => it.getAttribute(ta.attrName) !== null).forEach(ta => ta.callBack(it, it.getAttribute(ta.attrName)!, obj));\n });\n }\n\n public onRenderedEvent(obj: any, childNodes: Set<ChildNode> | Set<Element> | Node[], config?: DomRenderConfig) {\n this.procAttr<HTMLInputElement>(childNodes, EventManager.onRenderedInitAttrName, (it, attribute) => {\n if (!it.isConnected) {\n return;\n }\n let script = attribute;\n if (script) {\n script = 'return ' + script;\n }\n if (script) {\n ScriptUtils.evaluate(`${this.getBindScript(config)}; ${script} `, Object.assign(obj, {\n __render: Object.freeze({\n element: it,\n attribute: ElementUtils.getAttributeToObject(it),\n ...config?.eventVariables\n })\n }));\n }\n });\n }\n\n public changeVar(obj: any, elements: Set<Element> | Set<ChildNode>, varName?: string, config?: DomRenderConfig) {\n // console.log('changeVar', obj, elements, varName)\n this.procAttr(elements, EventManager.styleAttrName, (it, attribute) => {\n let script = attribute;\n if (script) {\n script = 'return ' + script;\n }\n if (EventManager.isUsingThisVar(script, varName) || varName === undefined) {\n const data = ScriptUtils.evaluate(`const $element = this.__render.element; ${script} `, Object.assign(obj, {\n __render: Object.freeze({\n element: it,\n attribute: ElementUtils.getAttributeToObject(it)\n })\n }));\n if (typeof data === 'string') {\n it.setAttribute('style', data);\n } else if (Array.isArray(data)) {\n it.setAttribute('style', data.join(';'));\n } else {\n for (const [key, value] of Object.entries(data)) {\n if (it instanceof HTMLElement) {\n (it.style as any)[key] = String(value);\n }\n }\n }\n }\n });\n\n this.procAttr(elements, EventManager.classAttrName, (it, attribute) => {\n let script = attribute;\n if (script) {\n script = 'return ' + script;\n }\n if (EventManager.isUsingThisVar(script, varName) || varName === undefined) {\n const data = ScriptUtils.evaluate(`const $element = this.element; ${script} `, Object.assign(obj, {\n __render: Object.freeze({\n element: it,\n attribute: ElementUtils.getAttributeToObject(it)\n })\n }));\n\n if (typeof data === 'string') {\n it.setAttribute('class', data);\n } else if (Array.isArray(data)) {\n it.setAttribute('class', data.join(' '));\n } else {\n for (const [key, value] of Object.entries(data)) {\n if (it instanceof HTMLElement) {\n if (value) {\n it.classList.add(key);\n } else {\n it.classList.remove(key);\n }\n }\n }\n }\n }\n });\n }\n\n public procAttr<T extends Element = Element>(elements: Set<Element> | Set<ChildNode> | Node[] = new Set(), attrName: string, callBack: (h: T, value: string, attributes: any) => void) {\n const sets = new Set<Element>();\n elements.forEach(it => {\n if (!it) {\n return;\n }\n if (it.nodeType === 1) {\n const e = it as Element;\n sets.add(e);\n e.querySelectorAll<T>(`[${attrName}]`).forEach(it => {\n sets.add(it);\n });\n }\n });\n sets.forEach(it => {\n const attr = it.getAttribute(attrName);\n const attrs = ElementUtils.getAttributeToObject(it);\n if (attr) {\n callBack(it as T, attr, attrs);\n }\n });\n }\n\n public getValue<T = any>(obj: any, name: string, bindObj?: any): T {\n let r = ScriptUtils.evaluateReturn(name, obj);\n if (typeof r === 'function') {\n r = r.bind(bindObj ?? obj);\n }\n return r;\n }\n\n public setValue(obj: any, name: string, value?: any) {\n name = name.replaceAll('this.', 'this.this.');\n ScriptUtils.evaluate(`${name} = this.value;`, {\n this: obj,\n value: value\n });\n }\n\n public static isUsingThisVar(raws: string | null | undefined, varName: string | null | undefined): boolean {\n if (varName && raws) {\n if (varName.startsWith('this.')) {\n varName = varName.replace(/this\\./, '');\n }\n // TODO: \uD6D4.. \uAF2D\uD544\uC694\uD55C\uAC00..? \uD2B8\uB9AC\uAC70\uB420\uB54C \uC2A4\uD06C\uB9BD\uD2B8\uBCC0\uC218 \uAE4C\uC9C0 \uAC10\uC9C0\uD574\uC57C\uB420\uAE4C?\n EventManager.VARNAMES.forEach(it => {\n // raws = raws!.replace(RegExp(it.replace('$', '\\\\$'), 'g'), `this?.___${it}`);\n raws = raws!.replace(RegExp(it.replace('$', '\\\\$'), 'g'), `this.___${it}`);\n });\n const variablePaths = ObjectUtils.Path.detectPathFromScript(raws ?? '', {excludeThis: true});\n return variablePaths.has(varName);\n }\n return false;\n }\n\n public static setBindProperty(scripts: { [p: string]: any } | undefined, obj: any): { [p: string]: any } | undefined {\n if (scripts) {\n const newScripts = Object.assign({}, scripts);\n for (const [key, value] of Object.entries(newScripts)) {\n if (typeof value === 'function') {\n newScripts[key] = value.bind(obj);\n }\n }\n return newScripts;\n }\n }\n\n getBindScript(config?: DomRenderConfig) {\n if (config?.eventVariables) {\n const bindScript = Object.entries(config.eventVariables).filter(([key, value]) => !this.bindScript.includes(`const ${key}`)).map(([key, value]) => {\n return `const ${key} = this.__render.${key};`;\n }).join(';');\n return this.bindScript + '' + bindScript;\n } else {\n return this.bindScript;\n }\n }\n}\n\n", "import { AttrInitCallBack } from '../rawsets/AttrInitCallBack';\nimport { ElementInitCallBack } from '../rawsets/ElementInitCallBack';\nimport { ComponentSet } from '../components/ComponentSet';\nimport { RawSet } from '../rawsets/RawSet';\nimport { Render } from '../rawsets/Render';\nimport { Attrs } from '../rawsets/Attrs';\nimport { DomRenderConfig } from '../configs/DomRenderConfig';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\n\nexport interface OperatorAround {\n beforeAttr?: (value: string | null | undefined, opratorExecutor: OperatorExecuter) => string | null | undefined,\n before?: (data: any, opratorExecutor: OperatorExecuter) => any,\n after?: (data: any, opratorExecutor: OperatorExecuter) => void,\n}\n\nexport enum ExecuteState {\n EXECUTE,\n NO_EXECUTE,\n STOP\n}\n\nexport type AfterCallBack = {\n onAttrInitCallBacks: AttrInitCallBack[],\n onElementInitCallBacks: ElementInitCallBack[],\n onThisComponentSetCallBacks: ComponentSet[]\n}\nexport type ReturnContainer = { raws: RawSet[], fag: DocumentFragment };\n\nexport type ElementSource = { element: Element, attrs: Attrs, attr?: string | null, attrName?: string | undefined };\n\nexport type Source = { config: DomRenderConfig, operatorAround?: OperatorAround, obj: any };\n\nexport abstract class OperatorExecuter<T = any> {\n constructor(public rawSet: RawSet,\n public render: Render,\n public returnContainer: ReturnContainer,\n public elementSource: ElementSource,\n public source: Source,\n public afterCallBack: AfterCallBack,\n public startingExecute = true) {\n };\n\n async start(): Promise<ExecuteState> {\n let attrValue = this.elementSource.attr;\n // console.log('OperatorExecuter ', attrValue, this);\n if (this.source.operatorAround?.beforeAttr) {\n attrValue = this.source.operatorAround.beforeAttr(attrValue, this) ?? '';\n }\n\n let r = attrValue;\n if (r && this.startingExecute) {\n const optionalPath = ObjectUtils.Path.toOptionalChainPath(attrValue);\n r = ScriptUtils.evaluate(` ${this.render.bindScript}; return ${optionalPath}`, Object.assign(this.source.obj, {__render: this.render}));\n }\n if (this.source.operatorAround?.before) {\n r = this.source.operatorAround?.before(r, this);\n }\n\n const state = await this.execute(r as unknown as T)\n\n this.source.operatorAround?.after?.(r, this);\n return state;\n };\n\n abstract execute(value: T): Promise<ExecuteState>;\n}\n", "import {AfterCallBack, ElementSource, ExecuteState, OperatorExecuter, ReturnContainer, Source} from './OperatorExecuter';\nimport {RawSet} from '../rawsets/RawSet';\nimport {Render} from '../rawsets/Render';\n\nexport class DrPre extends OperatorExecuter<null> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack);\n }\n\n async execute(value: null): Promise<ExecuteState> {\n return (value != null) ? ExecuteState.EXECUTE : ExecuteState.NO_EXECUTE;\n }\n}\n", "import {RawSet} from '../rawsets/RawSet';\nimport {Render} from '../rawsets/Render';\nimport {AfterCallBack, ElementSource, ExecuteState, OperatorExecuter, ReturnContainer, Source} from './OperatorExecuter';\n\nexport abstract class OperatorExecuterAttrRequire<T> extends OperatorExecuter<T> {\n constructor(rawSet: RawSet,\n render: Render,\n returnContainer: ReturnContainer,\n elementSource: ElementSource,\n source: Source,\n afterCallBack: AfterCallBack,\n startingExecute = true) {\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, startingExecute);\n };\n\n async execute(data: T): Promise<ExecuteState> {\n if (!this.elementSource.attr) {\n return ExecuteState.NO_EXECUTE;\n }\n return await this.executeAttrRequire(data);\n }\n\n protected abstract executeAttrRequire(attr: T): Promise<ExecuteState>;\n}\n", "import {OperatorExecuterAttrRequire} from './OperatorExecuterAttrRequire';\nimport {ScriptUtils} from '@dooboostore/core-web/script/ScriptUtils';\nimport {RawSet} from '../rawsets/RawSet';\nimport {Render} from '../rawsets/Render';\nimport {AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source} from './OperatorExecuter';\n\nexport class Dr extends OperatorExecuterAttrRequire<null> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack);\n }\n\n async executeAttrRequire(data: null): Promise<ExecuteState> {\n const itRandom = RawSet.drItOtherEncoding(this.elementSource.element);\n const vars = RawSet.drVarEncoding(this.elementSource.element, this.elementSource.attrs.drVarOption ?? '');\n const newTemp = this.source.config.window.document.createElement('temp');\n ScriptUtils.evaluate(`\n ${this.render.bindScript}\n const n = $element.cloneNode(true);\n var destIt = ${this.elementSource.attrs.drItOption};\n if (destIt !== undefined) {\n n.getAttributeNames().forEach(it => n.setAttribute(it, n.getAttribute(it).replace(/\\\\#it\\\\#/g, destIt)))\n // console.log('----', n.innerHTML);\n n.innerHTML = n.innerHTML.replace(/\\\\#it\\\\#/g, destIt);\n // console.log('----', n.innerHTML);\n }\n if (this.__render.drStripOption === 'true') {\n Array.from(n.childNodes).forEach(it => this.__fag.append(it));\n } else {\n this.__render.fag.append(n);\n }`, Object.assign(this.source.obj, {\n __render: Object.freeze({\n fag: newTemp,\n drStripOption: this.elementSource.attrs.drStripOption,\n ...this.render\n } as Render)\n }));\n RawSet.drVarDecoding(newTemp, vars);\n RawSet.drItOtherDecoding(newTemp, itRandom);\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content)\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config)\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n return ExecuteState.EXECUTE;\n }\n}\n", "import { OperatorExecuterAttrRequire } from './OperatorExecuterAttrRequire';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { RawSet } from '../rawsets/RawSet';\nimport { Render } from '../rawsets/Render';\nimport { AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source } from './OperatorExecuter';\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\n\nexport class DrIf extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n const itRandom = RawSet.drItOtherEncoding(this.elementSource.element, 'DrIf');\n const vars = RawSet.drVarEncoding(this.elementSource.element, this.elementSource.attrs.drVarOption ?? '');\n const newTemp = this.source.config.window.document.createElement('temp');\n // Object.entries(this.__render.drAttr).filter(([k,v]) => k !== 'drIf' && v).forEach(([k, v]) => n.setAttribute(this.__render.drAttrsOriginName[k], v)); <-- \uC774\uBD80\uBD84\uC740 \uB2E4\uB978 attr\uC5D0\uB3C4 \uC801\uC6A9\uC744 \uD560\uC9C0\uB9D0\uC9C0 \uC0DD\uAC01\uD574\uC57C\uB428 \uC5D8\uB9AC\uBA3C\uD2B8 \uC874\uC7AC\uC720\uBB34\uC5D0 \uB530\uB77C\uC11C \uC801\uC6A9\uC744 \uD560\uC9C0\uB9D0\uC9C0 \uACB0\uC815\uD574\uC57C\uB428\n const keepgoing = ScriptUtils.evaluate(`\n ${this.render.bindScript}\n ${this.elementSource.attrs.drBeforeOption ?? ''}\n if ($rawSet.data === (${ObjectUtils.Path.toOptionalChainPath(attr)})) {\n return false;\n }\n $rawSet.data = ${ObjectUtils.Path.toOptionalChainPath(attr)};\n if($rawSet.data) {\n const n = $element.cloneNode(true);\n Object.entries(this.__render.drAttr).filter(([k,v]) => k !== 'drIf' && v).forEach(([k, v]) => n.setAttribute(this.__render.drAttrsOriginName[k], v));\n var destIt = ${this.elementSource.attrs.drItOption};\n if (destIt !== undefined) {\n // \uC5EC\uAE30\uAC00 ..\uC544\uC8FC \uD5DB\uAC08\uB9AC\uB294\uB370...\n Array.from(n.getAttributeNames()).forEach(it => n.setAttribute(it, n.getAttribute(it).replace(/\\\\#DrIFIt\\\\#/g, destIt)))\n n.innerHTML = n.innerHTML.replace(/\\\\#DrIFIt\\\\#/g, destIt);\n }\n if (this.__render.drStripOption === 'true') {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n }\n ${this.elementSource.attrs.drAfterOption ?? ''};\n return true;\n `, Object.assign(this.source.obj,\n {\n __render: Object.freeze({\n fag: newTemp,\n drAttr: this.elementSource.attrs,\n drAttrsOriginName: RawSet.drAttrsOriginName,\n drStripOption: this.elementSource.attrs.drStripOption,\n ...this.render\n } as Render)\n }\n ));\n // TODO: \uBB50\uC9C0?? \uC9C0\uC6CC\uC57C\uB418\uB294\uAC70 \uC544\uB2CC\uAC00?\n if (keepgoing === false) {\n return ExecuteState.STOP;\n }\n RawSet.drVarDecoding(newTemp, vars);\n RawSet.drItOtherDecoding(newTemp, itRandom);\n // const bypass = (newTemp.innerHTML ?? '').trim().length <= 0;\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content);\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config);\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n return ExecuteState.EXECUTE;\n }\n}\n", "export class Shield {\n [name: string]: any\n}\nexport class DomRenderFinalProxy<T extends object> implements ProxyHandler<T> {\n set(target: T, p: string | symbol, value: any, receiver: any): boolean {\n (target as any)[p] = value;\n return true;\n }\n\n get(target: T, p: string | symbol, receiver: any): any {\n return (target as any)[p];\n }\n\n public static final<T = any> (obj: T): T {\n (obj as any)._DomRender_isFinal = true;\n return obj;\n }\n\n public static isFinal<T = any> (obj: T) {\n return '_DomRender_isFinal' in (obj as any);\n }\n\n public static unFinal<T = any> (obj: T): T {\n delete (obj as any)._DomRender_isFinal;\n return obj;\n }\n\n has(target: T, p: string | symbol): boolean {\n return p === '_DomRender_isFinal' || p in target;\n }\n}\n\n", "import { DomRenderFinalProxy } from '../types/Types';\n\nexport type ComponentSetConfig = {objPath?: string | null, beforeComponentSet?: ComponentSet};\nexport class ComponentSet<T = any> {\n private _config: ComponentSetConfig;\n private _template?: string;\n private _styles?: string[] | string;\n constructor(public obj: T, source: {template?: string, styles?: (string[]) | string}, config?: ComponentSetConfig) {\n this._template = source.template;\n this._styles = source.styles;\n this._config = DomRenderFinalProxy.final(Object.assign({objPath: 'obj'} as ComponentSetConfig, config))\n }\n get template() {\n return this._template;\n }\n get styles() {\n return this._styles;\n }\n get config() {\n return this._config;\n }\n public setTemplateStyle(set: {template?: string, styles?: string | (string[])}) {\n this._template = set.template;\n this._styles = set.styles;\n }\n}\n", "export interface OnDrThisUnBind {\n onDrThisUnBind(): void;\n}\nexport const isOnDrThisUnBind = (obj: any): obj is OnDrThisUnBind => {\n return typeof obj?.onDrThisUnBind === 'function';\n}", "export interface OnDrThisBind {\n onDrThisBind(): void;\n}\nexport const isOnDrThisBind = (obj: any): obj is OnDrThisBind => {\n return typeof obj?.onDrThisBind === 'function';\n}", "import { OperatorExecuterAttrRequire } from './OperatorExecuterAttrRequire';\nimport { RawSet } from '../rawsets/RawSet';\nimport { ComponentSet } from '../components/ComponentSet';\nimport { ExecuteState } from './OperatorExecuter';\nimport { isOnDrThisUnBind } from '../lifecycle/dr-this/OnDrThisUnBind';\nimport { isOnDrThisBind } from '../lifecycle/dr-this/OnDrThisBind';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { Render } from '../rawsets/Render';\n\nexport class DrThis extends OperatorExecuterAttrRequire<string> {\n async executeAttrRequire(attr: any): Promise<ExecuteState> {\n // const e = this.elementSource;\n // console.log('drThis!!!!!!!!!!!!!', this.elementSource.attrs.drDetectIfOption, this.elementSource.attrs.drIfOption);\n const optionIf = this.elementSource.attrs.drDetectIfOption ?? this.elementSource.attrs.drIfOption;\n const ok = ScriptUtils.evaluate(`\n ${this.render.bindScript}\n try {\n const ok = ${this.elementSource.attrs.drThis};\n const option = ${optionIf};\n if (option!==null) {\n return !!(ok && option); \n }\n // console.log('vv', ${this.elementSource.attrs.drThis}, ${this.elementSource.attrs.drIfOption}, '${this.elementSource.attrs.drIfOption}');\n return !!ok;\n } catch(e) {\n return false;\n }\n `, Object.assign(this.source.obj,\n {\n __render: Object.freeze({\n drAttr: this.elementSource.attrs,\n drAttrsOriginName: RawSet.drAttrsOriginName,\n ...this.render\n } as Render)\n }\n ));\n // console.log('----zxvxcv-----!!!aa!', ok);\n // if (!ok) {\n // this.elementSource.element.remove();\n // return ExecuteState.STOP;\n // }\n\n // console.log('----zxvxcv-----!!!!', attr);\n if (attr && this.elementSource.attrs.drThis && ok) {\n let thisPath = this.elementSource.attrs.drThis;\n // let optionIf = this.elementSource.attrs.drIfOption;\n // console.log('drThis!!!!!!!!!!!!!, ', optionIf)\n if (attr instanceof ComponentSet) {\n // console.log('drThis!!!!!!!!!!->', attr)\n // if (this.rawSet.data) {\n // const destroyOptions = this.elementSource.attrs.drDestroyOption?.split(',') ?? [];\n // debugger;\n // RawSet.destroy((this.rawSet.data as ComponentSet).obj, [], this.source.config, destroyOptions);\n // }\n if (attr.config?.beforeComponentSet?.obj !== attr.obj) {\n if (isOnDrThisUnBind(attr.config.beforeComponentSet?.obj)) {\n attr.config.beforeComponentSet?.obj?.onDrThisUnBind?.();\n }\n }\n // this.rawSet.dataSet ??= {};\n // this.rawSet.dataSet.data = attr;\n if (attr.config?.beforeComponentSet?.obj !== attr.obj) {\n if (isOnDrThisBind(attr.obj)) {\n attr.obj?.onDrThisBind?.();\n }\n }\n // \uC911\uC694: componentSet \uC758 objPath\uB97C \uBCF4\uACE0 \uD310\uB2E8\uD558\uB294 \uC911\uC694\uD55C\uBD80\uBD84\n thisPath = `${this.elementSource.attrs.drThis}${attr.config.objPath ? ('.' + attr.config.objPath) : ''}`;\n // const zthisPath = `${this.elementSource.attrs.drThis}${attr.config.objPath ? ('?.' + attr.config.objPath) : ''}`;\n // console.log('thisPaththisPaththisPath',thisPath)\n this.setThisPath(thisPath);\n const componentBody = await RawSet.drThisCreate(this.rawSet, this.elementSource.element, thisPath, this.elementSource.attrs.drVarOption ?? '', this.elementSource.attrs.drStripOption, this.source.obj, this.source.config, attr);\n if (componentBody) {\n this.returnContainer.fag.append(componentBody)\n this.afterCallBack.onThisComponentSetCallBacks.push(attr);\n }\n\n } else {\n this.setThisPath(thisPath);\n const fragment = await RawSet.drThisCreate(this.rawSet, this.elementSource.element, this.elementSource.attrs.drThis, this.elementSource.attrs.drVarOption ?? '', this.elementSource.attrs.drStripOption, this.source.obj, this.source.config);\n if (fragment) {\n this.returnContainer.fag.append(fragment)\n }\n }\n\n\n // console.log('!!!!!!!!!zzz', Array.from(this.returnContainer.fag.childNodes), this.elementSource.element);\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config)\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n } else {\n this.elementSource.element.remove();\n }\n return ExecuteState.EXECUTE;\n }\n\n\n setThisPath(thisPath: string) {\n\n // if (this.rawSet.point.start instanceof HTMLMetaElement && this.rawSet.point.end instanceof HTMLMetaElement) {\n\n if (this.rawSet.point.start instanceof this.source.config.window.HTMLMetaElement && this.rawSet.point.end instanceof this.source.config.window.HTMLMetaElement) {\n this.rawSet.point.start.setAttribute('this-path', thisPath)\n this.rawSet.point.end.setAttribute('this-path', thisPath)\n }\n }\n}\n", "\nexport type Valid<T = any, E = Element> = (value?: T, target?: E, event?: Event) => boolean;\nexport type ValidAction<T = any, E = Element> = (valid: boolean, value?: T, target?: E, event?: Event) => void;\n// export interface Valid<T = any, E = Element> {\n// valid(value?: T, target?: E, event?: Event): boolean;\n// }\nexport abstract class Validator<T = any, E = Element> {\n private _target?: E;\n private _event?: Event;\n private _autoValid!: boolean;\n private _autoValidAction!: boolean;\n private _validAction?: ValidAction<T, E>;\n constructor(protected _value?: T, target?: E, event?: Event, autoValid = true, autoValidAction = true) {\n this.setTarget(target);\n this.setEvent(event);\n this.setAutoValid(autoValid)\n this.setAutoValidAction(autoValidAction)\n }\n\n getValidAction(): ValidAction<T, E> | undefined {\n return this._validAction;\n }\n\n setValidAction(value: ValidAction<T, E>) {\n this._validAction = value;\n return this;\n }\n\n getAutoValid() {\n return this._autoValid;\n }\n\n setAutoValid(autoValid: boolean) {\n this._autoValid = autoValid;\n return this;\n }\n\n getAutoValidAction() {\n return this._autoValidAction;\n }\n\n setAutoValidAction(autoValid: boolean) {\n this._autoValidAction = autoValid;\n return this;\n }\n\n getEvent() {\n return this._event;\n }\n\n setEvent(event: Event | undefined) {\n if (event) {\n this._event = this.domRenderFinal(event);\n }\n return this;\n }\n\n getTarget() {\n return this._target;\n }\n\n targetFocus() {\n (this._target as any)?.focus?.();\n }\n\n targetReset() {\n (this._target as any)?.reset?.();\n }\n\n targetDispatchEvent(event: Event) {\n return (this._target as any)?.dispatchEvent(event);\n }\n\n setTarget(target: E | undefined) {\n if (target) {\n this._target = this.domRenderFinal(target);\n }\n return this;\n }\n\n private domRenderFinal(obj: any) {\n (obj as any)._DomRender_isFinal = true;\n return obj\n }\n\n get value(): T | undefined {\n if (this._value === undefined || this._value === null) {\n this._value = (this.getTarget() as any)?.value;\n }\n return this._value;\n }\n\n set value(value: T | undefined) {\n // console.log('---?set?', value, this)\n this._value = value;\n this.tickValue(value);\n }\n\n protected tickValue(value: T | undefined) {\n this.changeValue(value);\n const target = this.getTarget() as any;\n if (target && target?.value !== undefined && target?.value !== null) {\n try {\n target.value = this._value;\n } catch (e) {\n console.error('set value function is blocked ')\n }\n }\n if (this.getAutoValidAction()) {\n this.validAction();\n } else if (this.getAutoValid()) {\n this.valid();\n }\n }\n\n set(value?:T, target?: E, event?: Event) {\n this.setTarget(target);\n this.setEvent(event)\n this.value = value;\n }\n\n changeValue(value: T | undefined) {\n }\n\n get checked(): boolean {\n return (this.getTarget() as any)?.checked ?? false;\n }\n\n set checked(checked: boolean) {\n const target = this.getTarget() as any;\n if (target) {\n target.checked = checked;\n }\n }\n\n get selectedIndex(): number {\n return (this.getTarget() as any)?.selectedIndex ?? -1;\n }\n\n set selectedIndex(selectedIndex: number) {\n const target = this.getTarget() as any;\n if (target) {\n target.selectedIndex = selectedIndex;\n }\n }\n\n public querySelector(selector: string) {\n return (this.getTarget() as unknown as Element)?.querySelector(selector);\n }\n\n public querySelectorALL(selector: string) {\n return (this.getTarget() as unknown as Element)?.querySelectorAll(selector);\n }\n\n public validAction() {\n const valid = this.valid();\n this.getValidAction()?.(valid, this.value, this.getTarget(), this.getEvent());\n return valid;\n }\n\n // public childValidAction() {\n // const valid = this.childValids();\n // this.getValidAction()?.(valid, this.value, this.getTarget(), this.getEvent());\n // return valid;\n // }\n\n public abstract valid(): boolean;\n\n public inValid(): boolean {\n return !this.valid();\n };\n\n public allValid() {\n return this.valid() && this.childInValid();\n }\n\n public allValidAction() {\n return this.validAction() && this.childInValidAction();\n }\n\n public allInValid() {\n return !this.allValid();\n }\n\n public allInValidAction() {\n return !this.allValidAction();\n }\n\n public childValid(): boolean {\n return !this.childInValid();\n }\n\n public childValue(): {[key: string]: any } {\n const data = {} as any;\n this.childValidators().filter(([k, v]) => {\n data[k] = v.value;\n });\n return data;\n }\n\n public childValidAction(): boolean {\n return !this.childInValidAction();\n }\n\n public childInValid(): boolean {\n const inValid = this.childValidators().filter(([k, v]) => !v.valid());\n return inValid.length > 0;\n }\n\n public childInValidValidator(): [string, Validator<any, Element>][] {\n const inValid = this.childValidators().filter(([k, v]) => !v.valid());\n return inValid;\n }\n\n public childInValidAction(): boolean {\n const inValid = this.childValidators().filter(([k, v]) => !v.validAction());\n return inValid.length > 0;\n }\n\n public childValidator(name: string): Validator | undefined {\n return Object.entries(this).find(([k, v]) => ( k === name && (v instanceof Validator)))?.[1];\n }\n\n public childValidators(): [string, Validator][] {\n return Object.entries(this).filter(([k, v]) => (v instanceof Validator));\n }\n\n public childValidValidator(): [string, Validator][] {\n return this.childValidators().filter(it => it[1].valid());\n }\n\n public syncValue() {\n this.value = (this.getTarget() as any)?.value;\n }\n\n public allSyncValue() {\n this.childValidators().forEach(([k, e]) => {\n e.syncValue();\n })\n }\n\n public get length() {\n return (this.value as any)?.length ?? 0;\n }\n}", "import {Validator} from './Validator';\n\nexport class NonPassValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return false;\n }\n}\n", "import {Validator} from './Validator';\nimport {NonPassValidator} from './NonPassValidator';\n\nexport type MakeValidator<T = any, E = Element> = (value: T, target: E, event?: Event) => Validator<T, E>;\n\nexport abstract class ValidatorArray<T = any, E = Element> extends Validator<Validator<T, E>[], E> {\n private _makeValidatorFactory: MakeValidator<T, E> = (value: T, target: E, event?: Event): Validator<T, E> => {\n return new NonPassValidator(value, target, event);\n }\n\n constructor(value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n getMakeValidatorFactory(): MakeValidator<T, E> {\n return this._makeValidatorFactory;\n }\n\n setMakeValidatorFactory(value: MakeValidator<T, E>) {\n this._makeValidatorFactory = value;\n return this;\n }\n\n setArrayValue(target: E, value: T, event?: Event) {\n this.value?.filter(it => {\n if (it.getTarget()) {\n return it.getTarget() === target;\n } else {\n return false;\n }\n }).forEach(it => {\n it.set(value, target, event);\n });\n this.tickValue(this.value)\n }\n\n addValidator(value: T, target: E, event?: Event) {\n if (!this.value) {\n this.value = [];\n }\n if (value instanceof Validator) {\n this.value?.push(value)\n } else {\n this.value?.push(this.makeValidator(value, target, event))\n }\n this.tickValue(this.value)\n }\n\n allChecked(checked: boolean) {\n this.checked = checked;\n this.value?.forEach(it => {\n it.checked = checked;\n })\n }\n\n getValidators() {\n return this._value;\n }\n\n getValidator(e: E) {\n return this.value?.filter(it => it.getTarget() === e)[0]\n }\n\n getValidatorByValue(value: T) {\n const validatorByValue = this.getValidatorByValues(value)[0];\n return validatorByValue;\n }\n\n getValidatorByValues(value: T) {\n return this.value?.filter(it => it.value === value) ?? [];\n }\n\n removeElement(e: E) {\n const value = this.value;\n if (value) {\n this.value = value.filter(it => it.getTarget() !== e);\n }\n }\n\n makeValidator(value: T, target: E, event?: Event): Validator<T, E> {\n return this._makeValidatorFactory(value, target, event);\n };\n}\n", "import {ScriptUtils} from '@dooboostore/core-web/script/ScriptUtils';\nimport {RawSet} from '../rawsets/RawSet';\nimport {Validator} from '../validators/Validator';\nimport {EventManager} from '../events/EventManager';\nimport {ValidatorArray} from '../validators/ValidatorArray';\nimport {Render} from '../rawsets/Render';\nimport {OperatorExecuterAttrRequire} from './OperatorExecuterAttrRequire';\nimport {AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source} from './OperatorExecuter';\n\nexport class DrForm extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n RawSet.drFormOtherMoveAttr(this.elementSource.element, 'name', 'temp-name', this.source.config);\n const data = ScriptUtils.evaluateReturn(`${attr}`, this.source.obj);\n\n const childs = Array.from(this.elementSource.element.querySelectorAll('[name]'));\n\n const fromName = ScriptUtils.evaluateReturn(this.elementSource.element.getAttribute(`${RawSet.DR_FORM_NAME}:name`) ?? '', this.source.obj);\n const thisName = fromName ?? this.elementSource.element.getAttribute('name');\n // // \uC790\uAE30\uC790\uC2E0\uC774 Input \uB300\uC0C1\uC77C\uB54C\n if (childs.length <= 0 && thisName) {\n childs.push(this.elementSource.element);\n } else {\n if (data instanceof Validator) {\n data.setTarget(this.elementSource.element);\n }\n }\n childs.forEach(it => {\n const eventName = it.getAttribute(`${RawSet.DR_FORM_NAME}:event`) ?? 'change'\n const validatorName = it.getAttribute(`${RawSet.DR_FORM_NAME}:validator`);\n const attrEventName = EventManager.attrPrefix + 'event-' + eventName;\n let varpath = ScriptUtils.evaluateReturn(this.elementSource.element.getAttribute(`${RawSet.DR_FORM_NAME}:name`) ?? '', this.source.obj) ?? it.getAttribute('name');\n if (varpath != null) {\n if (validatorName) {\n ScriptUtils.evaluate(`\n ${this.render.bindScript}\n const validator = typeof ${validatorName} ==='function' ? new ${validatorName}() : ${validatorName};\n ${attr}['${varpath}'] = validator;\n `,\n Object.assign(this.source.obj, {\n __render: Object.freeze({\n drStripOption: this.elementSource.attrs.drStripOption,\n ...this.render\n } as Render)\n }\n ));\n }\n varpath = `${attr}['${varpath}']`;\n const data = ScriptUtils.evaluateReturn(`${varpath}`, this.source.obj);\n if (data instanceof ValidatorArray) {\n it.setAttribute(attrEventName, `${varpath}.setArrayValue($target, $target.value, $event); ${it.getAttribute(attrEventName) ?? ''};`);\n data.addValidator((it as any).value, it);\n } else if (data instanceof Validator) {\n // varpath += (varpath ? '.value' : 'value');\n // varpath = drAttr.drForm + '.' + varpath;\n // it.setAttribute(attrEventName, `${varpath} = $target.value; ${target}=$target; ${event}=$event;`);\n it.setAttribute(attrEventName, `${varpath}.set($target.value, $target, $event); ${it.getAttribute(attrEventName) ?? ''};`);\n data.setTarget(it);\n data.value = (it as any).value;\n } else {\n it.setAttribute(attrEventName, `${varpath} = $target.value;`);\n }\n }\n })\n RawSet.drFormOtherMoveAttr(this.elementSource.element, 'temp-name', 'name', this.source.config);\n this.returnContainer.raws.push(...RawSet.checkPointCreates(this.elementSource.element, this.source.obj, this.source.config));\n return ExecuteState.EXECUTE;\n }\n}\n", "import {OperatorExecuterAttrRequire} from './OperatorExecuterAttrRequire';\nimport {ScriptUtils} from '@dooboostore/core-web/script/ScriptUtils';\nimport {RawSet} from '../rawsets/RawSet';\nimport {Render} from '../rawsets/Render';\nimport {AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source} from './OperatorExecuter';\n\nexport class DrInnerText extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n const newTemp = this.source.config.window.document.createElement('temp');\n ScriptUtils.evaluate(` \n ${this.render.bindScript}\n const n = $element.cloneNode(true); \n ${this.elementSource.attrs.drBeforeOption ?? ''}\n n.innerText = ${attr};\n if (this.__render.drStripOption === 'true') {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n ${this.elementSource.attrs.drAfterOption ?? ''}\n `, Object.assign(this.source.obj, {\n __render: Object.freeze({\n drStripOption: this.elementSource.attrs.drStripOption,\n fag: newTemp,\n ...this.render\n } as Render)\n }));\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content);\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config);\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n return ExecuteState.EXECUTE;\n }\n}\n", "import {OperatorExecuterAttrRequire} from './OperatorExecuterAttrRequire';\nimport {ScriptUtils} from '@dooboostore/core-web/script/ScriptUtils';\nimport {RawSet} from '../rawsets/RawSet';\nimport {Render} from '../rawsets/Render';\nimport {AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source} from './OperatorExecuter';\n\nexport class DrInnerHTML extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n const newTemp = this.source.config.window.document.createElement('temp');\n ScriptUtils.evaluate(`\n ${this.render.bindScript}\n const n = $element.cloneNode(true);\n ${this.elementSource.attrs.drBeforeOption ?? ''}\n n.innerHTML = ${attr};\n if (this.__render.drStripOption === 'true') {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n ${this.elementSource.attrs.drAfterOption ?? ''}\n `, Object.assign(this.source.obj, {\n __render: Object.freeze({\n drStripOption: this.elementSource.attrs.drStripOption,\n fag: newTemp,\n ...this.render\n // eslint-disable-next-line no-use-before-define\n } as Render)\n }));\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content);\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config);\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n return ExecuteState.EXECUTE;\n }\n}\n", "import { OperatorExecuterAttrRequire} from './OperatorExecuterAttrRequire';\nimport {ScriptUtils} from '@dooboostore/core-web/script/ScriptUtils';\nimport {RawSet} from '../rawsets/RawSet';\nimport {Render} from '../rawsets/Render';\nimport {AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source} from './OperatorExecuter';\n\nexport class DrFor extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n const itRandom = RawSet.drItOtherEncoding(this.elementSource.element);\n const vars = RawSet.drVarEncoding(this.elementSource.element, this.elementSource.attrs.drVarOption ?? '');\n const newTemp = this.source.config.window.document.createElement('temp');\n // console.log('-----asdad',attr , this.elementSource.attrs.drItOption);\n ScriptUtils.evaluate(`\n ${this.render.bindScript}\n ${this.elementSource.attrs.drBeforeOption ?? ''}\n for(${attr}) {\n const n = this.__render.element.cloneNode(true);\n var destIt = ${this.elementSource.attrs.drItOption};\n if (destIt !== undefined) {\n n.getAttributeNames().forEach(it => n.setAttribute(it, n.getAttribute(it).replace(/\\\\#it\\\\#/g, destIt).replace(/\\\\#nearForIt\\\\#/g, destIt).replace(/\\\\#nearForIndex\\\\#/g, destIt))) \n n.innerHTML = n.innerHTML.replace(/\\\\#it\\\\#/g, destIt).replace(/\\\\#index\\\\#/g, destIt);\n }\n if (this.__render.drStripOption === 'true') {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n }\n ${this.elementSource.attrs.drAfterOption ?? ''}\n `, Object.assign(this.source.obj, {\n __render: Object.freeze({\n fag: newTemp,\n drStripOption: this.elementSource.attrs.drStripOption,\n ...this.render\n })\n }));\n RawSet.drVarDecoding(newTemp, vars);\n RawSet.drItOtherDecoding(newTemp, itRandom);\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content)\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config)\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n this.returnContainer.raws.push(...rr)\n return ExecuteState.EXECUTE;\n }\n}\n", "import { OperatorExecuterAttrRequire } from './OperatorExecuterAttrRequire';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { RawSet } from '../rawsets/RawSet';\nimport { Render } from '../rawsets/Render';\nimport { AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source } from './OperatorExecuter';\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\n\nexport class DrForOf extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n // console.log('\uD0C0\uC9C0\uB3C4\uC54A\uB0D0?')\n const itRandom = RawSet.drItOtherEncoding(this.elementSource.element, 'DrForOf');\n const vars = RawSet.drVarEncoding(this.elementSource.element, this.elementSource.attrs.drVarOption ?? '');\n const newTemp = this.source.config.window.document.createElement('temp');\n // console.log('----!', this.elementSource.attrs)\n // ScriptUtils.evalReturn()\n ScriptUtils.evaluate(`\n ${this.render.bindScript}\n ${this.elementSource.attrs.drBeforeOption ?? ''}\n var i = -1; \n const forOf = ${ObjectUtils.Path.toOptionalChainPath(attr)};\n const forOfStr = \\`${attr}\\`.trim();\n // console.log('forOf---',forOf);\n if (forOf) {\n for(const it of forOf) {\n i++;\n var destIt = it;\n if (/\\\\[(.*,?)\\\\],/g.test(forOfStr)) {\n if (typeof it === 'string') {\n destIt = it;\n } else {\n destIt = forOfStr.substring(1, forOfStr.length-1).split(',')[i];\n }\n } else if (forOf.isRange) {\n destIt = it;\n } else {\n destIt = forOfStr + '[' + i +']'\n }\n const n = this.__render.element.cloneNode(true);\n // console.log('zzzzzzzzzzz', n.getAttribute('${RawSet.DR_DETECT_ATTR_OPTIONNAME}'));\n Object.entries(this.__render.drAttr).filter(([k,v]) => k !== 'drForOf' && k !== 'drNextOption' && v).forEach(([k, v]) => n.setAttribute(this.__render.drAttrsOriginName[k], v));\n // console.log('---------'+destIt,n, Array.from(n.getAttributeNames()).map(it=>({name:it,attr: n.getAttribute(it)})));\n // console.log('---------destItdestIt',destIt);\n n.getAttributeNames().forEach(it => n.setAttribute(it, n.getAttribute(it).replace(/\\\\#it\\\\#/g, destIt).replace(/\\\\#nearForOfIt\\\\#/g, destIt).replace(/\\\\#it\\\\#/g, destIt).replace(/\\\\#nearForOfIndex\\\\#/g, i)))\n const drOptionAttr = n.getAttribute('${RawSet.DR_DETECT_ATTR_OPTIONNAME}');\n if (drOptionAttr) {\n const drOptionAttrResult = $scriptUtils.evaluateReturn(drOptionAttr, this);\n Array.from(Object.entries(drOptionAttrResult??{})).forEach(([k,v])=>{\n if (v === null) {\n n.removeAttribute(k);\n } else {\n n.setAttribute(k,v);\n }\n })\n }\n \n const drOptionFilter = n.getAttribute('${RawSet.DR_DETECT_FILTER_OPTIONNAME}');\n if (drOptionFilter) {\n const drOptionFilterResult = $scriptUtils.evaluateReturn(drOptionFilter, this);\n // console.log('---drforof----', drOptionFilter, drOptionFilterResult)\n if (!drOptionFilterResult) {\n continue;\n }\n }\n\n n.innerHTML = n.innerHTML.replace(/\\\\#it\\\\#/g, destIt).replace(/\\\\#index\\\\#/g, i);\n // console.log('!@@@@', n.innerHTML);\n // DR_THIS_OPTIONNAME \uB294 \uC81C\uAC70\uD55C\uB2E4 \uAF2C\uC778\uB2E4. strip \uD560\uB54C \uB9C9 \uAF2C\uC5EC\uBC84\uB9B0\uB2E4.\n // const drOptionThis = n.getAttribute('${RawSet.DR_THIS_OPTIONNAME}');\n // if (drOptionThis) {\n // n.setAttribute('${RawSet.DR_THIS_NAME}', drOptionThis)\n // }\n if (this.__render.drStripOption === 'true') {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n \n }\n \n if('${this.elementSource.attrs.drNextOption}' !== 'null') {\n const n = this.__render.element.cloneNode(true);\n Object.entries(this.__render.drAttr).filter(([k,v]) => k !== 'drForOf' && k !== 'drNextOption' && v).forEach(([k, v]) => n.setAttribute(this.__render.drAttrsOriginName[k], v));\n const [name, idx] = '${this.elementSource.attrs.drNextOption}'.split(',');\n n.setAttribute('${RawSet.DR_FOR_OF_NAME}', name + '[' + idx + ']');\n n.setAttribute('${RawSet.DR_NEXT_OPTIONNAME}', name + ',' + (Number(idx) + 1));\n this.__render.fag.append(n);\n }\n }\n ${this.elementSource.attrs.drAfterOption ?? ''}\n `, Object.assign(this.source.obj, {\n __render: Object.freeze({\n drStripOption: this.elementSource.attrs.drStripOption,\n drAttr: this.elementSource.attrs,\n drAttrsOriginName: RawSet.drAttrsOriginName,\n fag: newTemp,\n ...this.render\n // eslint-disable-next-line no-use-before-define\n } as Render)\n }));\n RawSet.drVarDecoding(newTemp, vars);\n RawSet.drItOtherDecoding(newTemp, itRandom);\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content)\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config);\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n // const rrr = rr.flatMap(it => it.render(obj, config));// .flat();\n this.returnContainer.raws.push(...rr)\n return ExecuteState.EXECUTE;\n }\n}\n", "import {OperatorExecuterAttrRequire} from './OperatorExecuterAttrRequire';\nimport {ScriptUtils} from '@dooboostore/core-web/script/ScriptUtils';\nimport {RawSet} from '../rawsets/RawSet';\nimport {Render} from '../rawsets/Render';\nimport {AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source} from './OperatorExecuter';\n\nexport class DrAppender extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n const itRandom = RawSet.drItOtherEncoding(this.elementSource.element);\n const vars = RawSet.drVarEncoding(this.elementSource.element, this.elementSource.attrs.drVarOption ?? '');\n const newTemp = this.source.config.window.document.createElement('temp');\n ScriptUtils.evaluate(`\n try{\n ${this.render.bindScript}\n ${this.elementSource.attrs.drBeforeOption ?? ''}\n const ifWrap = document.createElement('div');\n // ifWrap.setAttribute('${RawSet.DR_STRIP_OPTIONNAME}', 'true');\n // ifWrap.setAttribute('${RawSet.DR_IF_NAME}', '${this.elementSource.attrs.drAppender} && ${this.elementSource.attrs.drAppender}.length > 0');\n const n = this.__render.element.cloneNode(true);\n Object.entries(this.__render.drAttr).filter(([k,v]) => k !== 'drAppender' && v).forEach(([k, v]) => n.setAttribute(this.__render.drAttrsOriginName[k], v));\n const length = ${this.elementSource.attrs.drAppender}.length;\n if (length > 0) {\n n.setAttribute('${RawSet.DR_FOR_OF_NAME}', '${this.elementSource.attrs.drAppender}[' + (length-1) + ']');\n n.setAttribute('${RawSet.DR_NEXT_OPTIONNAME}', '${this.elementSource.attrs.drAppender},' + length);\n } else {\n n.setAttribute('${RawSet.DR_FOR_OF_NAME}', '${this.elementSource.attrs.drAppender}[0]');\n n.setAttribute('${RawSet.DR_NEXT_OPTIONNAME}', '${this.elementSource.attrs.drAppender},' + 1);\n }\n // console.log('appender--->', Array.from(n.getAttributeNames()).map(it=>({name:it,attr: n.getAttribute(it)})));\n // const drOptionThis = n.getAttribute('${RawSet.DR_THIS_OPTIONNAME}');\n // if (drOptionThis) {\n // }\n // ifWrap.append(n);\n // this.__render.fag.append(ifWrap);\n this.__render.fag.append(n);\n ${this.elementSource.attrs.drAfterOption ?? ''}\n }catch(e){}\n `, Object.assign(this.source.obj, {\n __render: Object.freeze({\n drStripOption: this.elementSource.attrs.drStripOption,\n drAttr: this.elementSource.attrs,\n drAttrsOriginName: RawSet.drAttrsOriginName,\n fag: newTemp,\n ...this.render\n // eslint-disable-next-line no-use-before-define\n } as Render)\n }));\n RawSet.drVarDecoding(newTemp, vars);\n RawSet.drItOtherDecoding(newTemp, itRandom);\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content)\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config);\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n // const rrr = rr.flatMap(it => it.render(obj, config));// .flat();\n this.returnContainer.raws.push(...rr)\n return ExecuteState.EXECUTE;\n }\n}\n", "import {OperatorExecuterAttrRequire} from './OperatorExecuterAttrRequire';\nimport {ScriptUtils} from '@dooboostore/core-web/script/ScriptUtils';\nimport {RawSet} from '../rawsets/RawSet';\nimport {EventManager} from '../events/EventManager';\nimport {Render} from '../rawsets/Render';\nimport {AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source} from './OperatorExecuter';\n\nexport class DrRepeat extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n const itRandom = RawSet.drItOtherEncoding(this.elementSource.element);\n const vars = RawSet.drVarEncoding(this.elementSource.element, this.elementSource.attrs.drVarOption ?? '');\n const newTemp = this.source.config.window.document.createElement('temp');\n ScriptUtils.evaluate(`\n ${this.render.bindScript}\n ${this.elementSource.attrs.drBeforeOption ?? ''}\n var i = 0; \n const repeat = ${attr};\n const repeatStr = \\`${attr}\\`;\n let range = repeat;\n if (typeof repeat === 'number') {\n range = ${EventManager.RANGE_VARNAME}(repeat);\n } \n for(const it of range) {\n var destIt = it;\n if (range.isRange) {\n destIt = it;\n } else {\n destIt = repeatStr + '[' + i +']'\n }\n const n = this.__render.element.cloneNode(true);\n n.getAttributeNames().forEach(it => n.setAttribute(it, n.getAttribute(it).replace(/\\\\#it\\\\#/g, destIt).replace(/\\\\#nearRangeIt\\\\#/g, destIt).replace(/\\\\#nearRangeIndex\\\\#/g, destIt)))\n n.innerHTML = n.innerHTML.replace(/\\\\#it\\\\#/g, destIt).replace(/\\\\#index\\\\#/g, destIt);\n \n if (this.__render.drStripOption === 'true') {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n i++;\n }\n ${this.elementSource.attrs.drAfterOption ?? ''}\n `, Object.assign(this.source.obj, {\n __render: Object.freeze({\n fag: newTemp,\n drStripOption: this.elementSource.attrs.drStripOption,\n ...this.render\n })\n }));\n RawSet.drVarDecoding(newTemp, vars);\n RawSet.drItOtherDecoding(newTemp, itRandom);\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content)\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config)\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n this.returnContainer.raws.push(...rr)\n return ExecuteState.EXECUTE;\n }\n}\n", "import { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { RawSet } from '../rawsets/RawSet';\nimport { CreatorMetaData } from '../rawsets/CreatorMetaData';\nimport {\n AfterCallBack,\n ElementSource,\n ExecuteState,\n OperatorExecuter,\n ReturnContainer,\n Source\n} from './OperatorExecuter';\nimport { Render } from '../rawsets/Render';\n\ndeclare global {\n interface Window {\n HTMLMetaElement: typeof HTMLMetaElement;\n }\n}\n\n// \uC5EC\uAE30\uC11C \uC0AC\uC6A9\uC790\uAC00 \uB4F1\uB85D\uD55C TargetElement\uAC00 \uB4E4\uC5B4\uAC04\uB2E4.\nexport class DrTargetElement extends OperatorExecuter<void> {\n constructor(\n rawSet: RawSet,\n render: Render,\n returnContainer: ReturnContainer,\n elementSource: ElementSource,\n source: Source,\n afterCallBack: AfterCallBack\n ) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async execute(): Promise<ExecuteState> {\n const targetElement = this.source.config?.targetElements?.find(\n it => it.name.toLowerCase() === this.elementSource.element.tagName.toLowerCase()\n );\n if (targetElement) {\n if (\n this.rawSet.point.start instanceof this.source.config.window.HTMLMetaElement &&\n this.rawSet.point.end instanceof this.source.config.window.HTMLMetaElement\n ) {\n this.rawSet.point.start.setAttribute('this-path', `this.__domrender_components.${this.rawSet.uuid}`);\n this.rawSet.point.end.setAttribute('this-path', `this.__domrender_components.${this.rawSet.uuid}`);\n }\n\n const documentFragment = await targetElement.callBack(\n this.elementSource.element,\n this.source.obj,\n this.rawSet,\n this.elementSource.attrs,\n this.source.config\n );\n if (documentFragment) {\n const detectAction = this.elementSource.element.getAttribute(RawSet.DR_DETECT_NAME);\n // const dictionaryKey = this.elementSource.element.getAttribute(RawSet.DR_DICTIONARY_OPTIONKEYNAME);\n // console.log('dictionaryKey', dictionaryKey);\n // const render = (documentFragment as any).render;\n this.rawSet.dataSet.fragment = documentFragment;\n // if (documentFragment) {\n // const tempDiv = this.source.config.window.document.createElement('div');\n // tempDiv.appendChild(documentFragment.cloneNode(true));\n // console.log('DocumentFragment innerHTML:', tempDiv.innerHTML);\n // }\n\n // this.rawSet.dataSet??={};\n // this.rawSet.dataSet.data = render.component;\n if (detectAction && this.rawSet.dataSet.render) {\n // TODO: \uC5C6\uC5B4\uC838\uC57C\uB420\uB4EF?\n this.rawSet.detect = {\n action: () => {\n const script = `var $component = this.__render.component; var $element = this.__render.element; var $innerHTML = this.__render.innerHTML; var $attribute = this.__render.attribute; ${detectAction} `;\n ScriptUtils.evaluate(\n script,\n Object.assign(this.source.obj, {\n __render: this.rawSet.dataSet.render\n })\n );\n }\n };\n }\n // fag.append(documentFragment)\n\n // console.log('----------1', ElementUtils.toInnerHTML(documentFragment, {document: this.source.config.window.document}));\n // await Promises.sleep(1000)\n let targetFragment = documentFragment;\n if (targetElement.noStrip) {\n // documentFragment.firstElementChild.classList.add(`${this.rawSet.uuid}___DrTargetElement`)\n const fragment = this.source.config.window.document.createDocumentFragment();\n Array.from(documentFragment.firstElementChild?.childNodes || []).forEach(child => {\n // fragment.appendChild(child.cloneNode(true));\n fragment.appendChild(child);\n });\n // fragment.append(documentFragment.firstElementChild);\n targetFragment = fragment;\n }\n // console.log('----------2', ElementUtils.toInnerHTML(targetFragment, {document: this.source.config.window.document}));\n const rr = RawSet.checkPointCreates(targetFragment, this.source.obj, this.source.config);\n if (targetElement.noStrip) {\n Array.from(targetFragment.childNodes || []).forEach(child => {\n documentFragment.firstElementChild?.appendChild(child);\n });\n }\n this.elementSource.element.parentNode?.replaceChild(documentFragment, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n this.afterCallBack.onElementInitCallBacks.push({\n name: targetElement.name.toLowerCase(),\n obj: this.source.obj,\n targetElement,\n creatorMetaData: targetElement.__creatorMetaData as CreatorMetaData\n });\n // console.log('sssssssssssssss', this.source.obj);\n targetElement?.complete?.(this.elementSource.element, this.source.obj, this.rawSet);\n }\n return ExecuteState.EXECUTE;\n }\n return ExecuteState.NO_EXECUTE;\n }\n}\n", "import {RawSet} from '../rawsets/RawSet';\nimport {TargetAttr} from '../configs/TargetAttr';\nimport {AfterCallBack, ElementSource, ExecuteState, OperatorExecuter, ReturnContainer, Source} from './OperatorExecuter';\nimport {Render} from '../rawsets/Render';\n\nexport class DrTargetAttr extends OperatorExecuter<void> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async execute(): Promise<ExecuteState> {\n const attributeNames = this.elementSource.element.getAttributeNames();\n const targetAttr: TargetAttr | undefined = this.source.config?.targetAttrs?.find(it => attributeNames.includes(it.name));\n if (targetAttr) {\n const attrName = targetAttr.name;\n const attrValue = this.rawSet.getAttributeAndDelete(this.elementSource.element, attrName)\n if (attrValue && attrName && (!this.elementSource.attrs.drForOf && !this.elementSource.attrs.drFor && !this.elementSource.attrs.drRepeat)) {\n const documentFragment = targetAttr.callBack(this.elementSource.element, attrValue, this.source.obj, this.rawSet);\n if (documentFragment) {\n const rr = RawSet.checkPointCreates(documentFragment, this.source.obj, this.source.config)\n this.elementSource.element.parentNode?.replaceChild(documentFragment, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n this.afterCallBack.onAttrInitCallBacks.push({\n attrName,\n attrValue,\n obj: this.source.obj\n });\n targetAttr?.complete?.(this.elementSource.element, attrValue, this.source.obj, this.rawSet);\n }\n }\n return ExecuteState.EXECUTE;\n }\n return ExecuteState.NO_EXECUTE;\n }\n}\n", "import { OperatorExecuterAttrRequire } from './OperatorExecuterAttrRequire';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { RawSet } from '../rawsets/RawSet';\nimport { Render } from '../rawsets/Render';\nimport { AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source } from './OperatorExecuter';\n\nexport class DrStripElement extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n // const itRandom = RawSet.drItOtherEncoding(this.elementSource.element, 'DrStripElement');\n // const vars = RawSet.drVarEncoding(this.elementSource.element, this.elementSource.attrs.drVarOption ?? '');\n const newTemp = this.source.config.window.document.createElement('temp');\n // Object.entries(this.__render.drAttr).filter(([k,v]) => k !== 'drIf' && v).forEach(([k, v]) => n.setAttribute(this.__render.drAttrsOriginName[k], v)); <-- \uC774\uBD80\uBD84\uC740 \uB2E4\uB978 attr\uC5D0\uB3C4 \uC801\uC6A9\uC744 \uD560\uC9C0\uB9D0\uC9C0 \uC0DD\uAC01\uD574\uC57C\uB428 \uC5D8\uB9AC\uBA3C\uD2B8 \uC874\uC7AC\uC720\uBB34\uC5D0 \uB530\uB77C\uC11C \uC801\uC6A9\uC744 \uD560\uC9C0\uB9D0\uC9C0 \uACB0\uC815\uD574\uC57C\uB428\n ScriptUtils.evaluate(`\n ${this.render.bindScript}\n ${this.elementSource.attrs.drBeforeOption ?? ''}\n const n = $element.cloneNode(true);\n if(${attr}) {\n Array.from(n.childNodes).forEach(it => this.__render.fag.append(it));\n } else {\n this.__render.fag.append(n);\n }\n ${this.elementSource.attrs.drAfterOption ?? ''};\n return true;\n `, Object.assign(this.source.obj,\n {\n __render: Object.freeze({\n fag: newTemp,\n drAttr: this.elementSource.attrs,\n drAttrsOriginName: RawSet.drAttrsOriginName,\n drStripOption: this.elementSource.attrs.drStripOption,\n ...this.render\n } as Render)\n }\n ));\n\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content);\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config);\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n return ExecuteState.EXECUTE;\n }\n}\n", "export enum DestroyOptionType {\n NO_DESTROY = 'NO_DESTROY',\n NO_MESSENGER_DESTROY = 'NO_MESSENGER_DESTROY'\n}", "export enum RawSetType {\n TEXT = 'TEXT',\n STYLE_TEXT = 'STYLE_TEXT',\n TARGET_ELEMENT = 'TARGET_ELEMENT',\n TARGET_ATTR = 'TARGET_ATTR',\n UNKOWN = 'UNKOWN',\n}", "import {OperatorExecuterAttrRequire} from './OperatorExecuterAttrRequire';\nimport {ScriptUtils} from '@dooboostore/core-web/script/ScriptUtils';\nimport {RawSet} from '../rawsets/RawSet';\nimport {Render} from '../rawsets/Render';\nimport {AfterCallBack, ElementSource, ExecuteState, ReturnContainer, Source} from './OperatorExecuter';\nimport {DomRenderConfig} from '../configs/DomRenderConfig';\n\nexport class DrThisProperty extends OperatorExecuterAttrRequire<string> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async executeAttrRequire(attr: string): Promise<ExecuteState> {\n const itRandom = RawSet.drItOtherEncoding(this.elementSource.element, 'DrThisProperty');\n const vars = RawSet.drVarEncoding(this.elementSource.element, this.elementSource.attrs.drVarOption ?? '');\n const newTemp = this.source.config.window.document.createElement('temp');\n const dictioanry = ScriptUtils.evaluateReturn(attr, this.source.obj)\n const dictionaryKey = this.elementSource.attrs.drKeyOption ?? '';\n // console.log('--->', attr, dictionaryKey)\n // if (!(dictioanry instanceof Dictionary)) {\n // return ExecuteState.STOP;\n // }\n // await new Promise(resolve => setTimeout(resolve, 1000));\n // console.log('!!!!!!!!!!!!!!', this.rawSet);\n ScriptUtils.evaluate(`\n ${this.render.bindScript}\n ${this.elementSource.attrs.drBeforeOption ?? ''}\n var i = 0; \n const dictionary = ${attr};\n const dictionaryKey = '${dictionaryKey}';\n const dictionaryStr = \\`${attr}\\`.trim();\n // console.log('----@#!@#@!#', this.__render.oldChild);\n if (dictionary) {\n for(const it in dictionary) {\n var destIt = dictionaryStr + '[\"' + it + '\"]';\n const n = this.__render.element.cloneNode(true);\n n.setAttribute('dr-this', destIt);\n n.setAttribute('${RawSet.DR_KEY_OPTIONNAME}', it);\n // n.setAttribute('dr-dictionary-key', it);\n this.__render.fag.append(n);\n i++;\n }\n this.__render.rawset.point.start.setAttribute('${RawSet.DR_HAS_KEYS_OPTIONNAME}',Object.keys(dictionary).join(','));\n }\n ${this.elementSource.attrs.drAfterOption ?? ''}\n `, Object.assign(this.source.obj, {\n __render: Object.freeze({\n drStripOption: this.elementSource.attrs.drStripOption,\n drAttr: this.elementSource.attrs,\n drAttrsOriginName: RawSet.drAttrsOriginName,\n fag: newTemp,\n ...this.render\n } as Render)\n }));\n RawSet.drVarDecoding(newTemp, vars);\n RawSet.drItOtherDecoding(newTemp, itRandom);\n const tempalte = this.source.config.window.document.createElement('template');\n tempalte.innerHTML = newTemp.innerHTML;\n this.returnContainer.fag.append(tempalte.content);\n const rr = RawSet.checkPointCreates(this.returnContainer.fag, this.source.obj, this.source.config);\n this.elementSource.element.parentNode?.replaceChild(this.returnContainer.fag, this.elementSource.element);\n // const rrr = rr.flatMap(it => it.render(obj, config));// .flat();\n this.returnContainer.raws.push(...rr);\n return ExecuteState.EXECUTE;\n }\n\n\n public static append(obj: any, fullPath: string, key: string, rawSet: RawSet, config: DomRenderConfig) {\n const genNode = config.window.document.importNode(rawSet.dataSet.fragment, true);\n // console.log('---> append', rawSet, genNode);\n const rawSets: RawSet[] = [];\n for (const cNode of Array.from(genNode.childNodes.values())) {\n const element = cNode.cloneNode(true) as Element;\n element.removeAttribute(RawSet.DR_THIS_PROPERTY_NAME);\n element.setAttribute(RawSet.DR_THIS_NAME, `this.${fullPath}`);\n element.setAttribute(RawSet.DR_KEY_OPTIONNAME, key);\n // rawSet.point.end.after(element);\n const fg = config.window.document.createDocumentFragment()\n fg.append(element);\n rawSets.push(...RawSet.checkPointCreates(fg, obj, config));\n rawSet.point.end.before(fg);\n const start = (rawSet.point.start as Element);\n const keys = start.getAttribute(RawSet.DR_HAS_KEYS_OPTIONNAME)?.split(',') ?? [];\n keys.push(key);\n start.setAttribute(RawSet.DR_HAS_KEYS_OPTIONNAME, keys.join(','));\n rawSets.forEach(async (it) => await it.render(obj, config));\n }\n return rawSets;\n }\n}\n", "export enum RawSetOperatorType {\n DR_THIS_PROPERTY = 'this-property'\n}", "export interface CssDeclaration {\n [property: string]: string;\n}\n\n// --- Content item types for maintaining order ---\nexport interface CssDeclarationItem {\n type: 'declaration';\n property: string;\n value: string;\n}\n\nexport interface CssRuleItem {\n type: 'rule';\n rule: CssRule;\n}\n\nexport interface CssCommentItem {\n type: 'comment';\n text: string;\n}\n\nexport type CssContentItem = CssDeclarationItem | CssRuleItem | CssCommentItem;\n\n// --- Base CSS Node Class with common functionality ---\nexport abstract class CssNode {\n public content: CssContentItem[]; // Maintains order of declarations and rules\n\n constructor(content: CssContentItem[] = []) {\n this.content = content;\n }\n\n // --- Computed properties for backward compatibility ---\n public get declarations(): CssDeclaration {\n const declarations: CssDeclaration = {};\n this.content.forEach(item => {\n if (item.type === 'declaration') {\n declarations[item.property] = item.value;\n }\n });\n return declarations;\n }\n\n public get children(): CssRule[] {\n return this.content\n .filter(item => item.type === 'rule')\n .map(item => (item as CssRuleItem).rule);\n }\n\n public abstract stringify(indent?: number): string;\n\n // --- Common Manipulation Methods for content ---\n protected _addRules(rulesToAdd: CssRule[], atIndex?: number): this {\n const ruleItems: CssRuleItem[] = rulesToAdd.map(rule => ({ type: 'rule', rule }));\n if (atIndex === undefined) {\n this.content.push(...ruleItems);\n } else {\n // Find the actual content index for the rule at the given children index\n const ruleContentIndices = this.content\n .map((item, idx) => ({ item, idx }))\n .filter(({ item }) => item.type === 'rule')\n .map(({ idx }) => idx);\n\n const insertIndex = atIndex < ruleContentIndices.length ? ruleContentIndices[atIndex] : this.content.length;\n this.content.splice(insertIndex, 0, ...ruleItems);\n }\n return this;\n }\n\n public append(ruleOrCss: CssRule | string): this {\n const rulesToAdd = CssParser._parseInputToRules(ruleOrCss);\n return this._addRules(rulesToAdd);\n }\n\n public prepend(ruleOrCss: CssRule | string): this {\n const rulesToAdd = CssParser._parseInputToRules(ruleOrCss);\n return this._addRules(rulesToAdd, 0);\n }\n\n public insertAt(index: number, ruleOrCss: CssRule | string): this {\n const rulesToAdd = CssParser._parseInputToRules(ruleOrCss);\n return this._addRules(rulesToAdd, index);\n }\n\n public insertBefore(target: CssRule, newRuleOrCss: CssRule | string): this {\n const contentIndex = this.content.findIndex(item =>\n item.type === 'rule' && item.rule === target\n );\n if (contentIndex > -1) {\n const rulesToAdd = CssParser._parseInputToRules(newRuleOrCss);\n const ruleItems: CssRuleItem[] = rulesToAdd.map(rule => ({ type: 'rule', rule }));\n this.content.splice(contentIndex, 0, ...ruleItems);\n }\n return this;\n }\n\n public insertAfter(target: CssRule, newRuleOrCss: CssRule | string): this {\n const contentIndex = this.content.findIndex(item =>\n item.type === 'rule' && item.rule === target\n );\n if (contentIndex > -1) {\n const rulesToAdd = CssParser._parseInputToRules(newRuleOrCss);\n const ruleItems: CssRuleItem[] = rulesToAdd.map(rule => ({ type: 'rule', rule }));\n this.content.splice(contentIndex + 1, 0, ...ruleItems);\n }\n return this;\n }\n\n public replace(target: CssRule, newRuleOrCss: CssRule | string): this {\n const contentIndex = this.content.findIndex(item =>\n item.type === 'rule' && item.rule === target\n );\n if (contentIndex > -1) {\n const rulesToReplace = CssParser._parseInputToRules(newRuleOrCss);\n const ruleItems: CssRuleItem[] = rulesToReplace.map(rule => ({ type: 'rule', rule }));\n this.content.splice(contentIndex, 1, ...ruleItems);\n }\n return this;\n }\n\n public remove(target: CssRule): this {\n const contentIndex = this.content.findIndex(item =>\n item.type === 'rule' && item.rule === target\n );\n if (contentIndex > -1) {\n this.content.splice(contentIndex, 1);\n }\n return this;\n }\n}\n\n// --- Style Rule Class ---\nexport class StyleRule extends CssNode {\n public selector: string;\n\n constructor(selector: string, content: CssContentItem[] = []) {\n super(content);\n this.selector = selector;\n }\n\n public stringify(indent = 0): string {\n const indentStr = ' '.repeat(indent);\n const innerIndentStr = ' '.repeat(indent + 1);\n\n if (this.content.length === 0) {\n return `${indentStr}${this.selector} {}`;\n }\n\n const contentLines: string[] = [];\n\n for (const item of this.content) {\n if (item.type === 'declaration') {\n const kebabProperty = CssParser._camelToKebab(item.property);\n contentLines.push(`${innerIndentStr}${kebabProperty}: ${item.value};`);\n } else if (item.type === 'rule') {\n contentLines.push(item.rule.stringify(indent + 1));\n } else if (item.type === 'comment') {\n contentLines.push(`${innerIndentStr}/* ${item.text} */`);\n }\n }\n\n const innerContent = contentLines.join('\\n');\n return `${indentStr}${this.selector} {\\n${innerContent}\\n${indentStr}}`;\n }\n}\n\n// --- At Rule Class ---\nexport class AtRule extends CssNode {\n public name: string;\n public condition: string;\n\n constructor(name: string, condition: string, content: CssContentItem[] = []) {\n super(content);\n this.name = name;\n this.condition = condition;\n }\n\n public stringify(indent = 0): string {\n const indentStr = ' '.repeat(indent);\n const innerIndentStr = ' '.repeat(indent + 1);\n const prelude = `@${this.name}${this.condition ? ' ' + this.condition : ''}`;\n\n if (this.content.length === 0) {\n return `${indentStr}${prelude};`;\n }\n\n const contentLines: string[] = [];\n\n for (const item of this.content) {\n if (item.type === 'declaration') {\n const kebabProperty = CssParser._camelToKebab(item.property);\n contentLines.push(`${innerIndentStr}${kebabProperty}: ${item.value};`);\n } else if (item.type === 'rule') {\n contentLines.push(item.rule.stringify(indent + 1));\n } else if (item.type === 'comment') {\n contentLines.push(`${innerIndentStr}/* ${item.text} */`);\n }\n }\n\n const innerContent = contentLines.join('\\n');\n return `${indentStr}${prelude} {\\n${innerContent}\\n${indentStr}}`;\n }\n}\n\nexport type CssRule = StyleRule | AtRule;\n\n// --- The main parser class ---\n\nexport class CssParser extends CssNode {\n constructor(css: string = '') {\n const content = CssParser._parseTopLevel(css);\n super(content);\n }\n\n // --- Accessors ---\n public get rules(): Readonly<CssRule[]> {\n return this.children;\n }\n\n // --- Stringify ---\n public stringify(indent = 0): string {\n if (this.content.length === 0) {\n return '';\n }\n\n const contentLines: string[] = [];\n\n for (const item of this.content) {\n if (item.type === 'declaration') {\n const kebabProperty = CssParser._camelToKebab(item.property);\n contentLines.push(`${kebabProperty}: ${item.value};`);\n } else if (item.type === 'rule') {\n contentLines.push(item.rule.stringify(indent));\n } else if (item.type === 'comment') {\n contentLines.push(`/* ${item.text} */`);\n }\n }\n\n return contentLines.join('\\n');\n }\n\n // --- Static parsing method ---\n private static _parseTopLevel(css: string): CssContentItem[] {\n const cleanedCss = CssParser._cleanCss(css);\n\n // Parse top-level content including comments, declarations, and rules\n return CssParser._parseContent(cleanedCss);\n }\n\n // --- Parsing Logic ---\n private static _cleanCss(css: string): string {\n // Don't remove comments - we'll parse them as content items\n return css.trim();\n }\n\n // --- Universal content parser that handles comments, declarations, and rules ---\n private static _parseContent(css: string): CssContentItem[] {\n const content: CssContentItem[] = [];\n let i = 0;\n\n while (i < css.length) {\n // Skip whitespace\n while (i < css.length && /\\s/.test(css[i])) {\n i++;\n }\n if (i >= css.length) break;\n\n // Handle comments\n if (css[i] === '/' && i + 1 < css.length && css[i + 1] === '*') {\n const commentStart = i + 2;\n let commentEnd = css.indexOf('*/', commentStart);\n if (commentEnd === -1) {\n commentEnd = css.length;\n i = css.length;\n } else {\n const commentText = css.substring(commentStart, commentEnd).trim();\n content.push({ type: 'comment', text: commentText });\n i = commentEnd + 2;\n }\n continue;\n }\n\n // Find the next significant token\n const nextBraceIndex = css.indexOf('{', i);\n const nextSemicolonIndex = css.indexOf(';', i);\n const nextCommentIndex = css.indexOf('/*', i);\n\n // Determine what comes first\n const nextTokens = [\n { type: 'brace', index: nextBraceIndex },\n { type: 'semicolon', index: nextSemicolonIndex },\n { type: 'comment', index: nextCommentIndex }\n ].filter(token => token.index !== -1).sort((a, b) => a.index - b.index);\n\n if (nextTokens.length === 0) {\n // No more tokens, parse remaining as declaration if it contains ':'\n const remaining = css.substring(i).trim();\n if (remaining && remaining.includes(':')) {\n const parts = remaining.split(':');\n if (parts.length >= 2) {\n const prop = parts[0].trim();\n const val = parts.slice(1).join(':').trim();\n if (prop && val) {\n content.push({ type: 'declaration', property: prop, value: val });\n }\n }\n }\n break;\n }\n\n const nextToken = nextTokens[0];\n\n if (nextToken.type === 'comment') {\n // Handle comment (already handled above, but just in case)\n i = nextToken.index;\n continue;\n }\n\n if (nextToken.type === 'brace') {\n // This is a rule (selector or at-rule)\n const prelude = css.substring(i, nextToken.index).trim();\n if (prelude) {\n const blockEndIndex = CssParser._findMatchingBrace(css, nextToken.index);\n if (blockEndIndex !== -1) {\n const blockContent = css.substring(nextToken.index + 1, blockEndIndex).trim();\n\n if (prelude.startsWith('@')) {\n // At-rule\n const name = prelude.match(/^@([^\\s]+)/)?.[1] || 'unknown';\n const condition = prelude.replace(/^@[^\\s]+\\s*/, '').trim();\n const childContent = CssParser._parseContent(blockContent);\n content.push({ type: 'rule', rule: new AtRule(name, condition, childContent) });\n } else {\n // Style rule\n const childContent = CssParser._parseContent(blockContent);\n content.push({ type: 'rule', rule: new StyleRule(prelude, childContent) });\n }\n i = blockEndIndex + 1;\n continue;\n }\n }\n }\n\n if (nextToken.type === 'semicolon') {\n // This could be a declaration or at-rule without block\n const statement = css.substring(i, nextToken.index).trim();\n if (statement) {\n if (statement.startsWith('@')) {\n // At-rule without block\n const name = statement.match(/^@([^\\s]+)/)?.[1] || 'unknown';\n const condition = statement.replace(/^@[^\\s]+\\s*/, '').trim();\n content.push({ type: 'rule', rule: new AtRule(name, condition, []) });\n } else if (statement.includes(':')) {\n // Declaration\n const parts = statement.split(':');\n if (parts.length >= 2) {\n const prop = parts[0].trim();\n const val = parts.slice(1).join(':').trim();\n if (prop && val) {\n content.push({ type: 'declaration', property: prop, value: val });\n }\n }\n }\n }\n i = nextToken.index + 1;\n continue;\n }\n\n // Fallback: move to next character\n i++;\n }\n\n return content;\n }\n\n private static _parseBlockContent(css: string): { content: CssContentItem[] } {\n // Use the universal content parser\n return { content: CssParser._parseContent(css) };\n }\n\n private static _parseRules(css: string): CssRule[] {\n const rules: CssRule[] = [];\n let currentIndex = 0;\n css = css.trim();\n\n const recursiveAtRules = ['media', 'supports', 'container', 'scope', 'layer'];\n\n while (currentIndex < css.length) {\n while (currentIndex < css.length && /\\s/.test(css[currentIndex])) {\n currentIndex++;\n }\n if (currentIndex >= css.length) {\n break;\n }\n\n const nextBraceIndex = css.indexOf('{', currentIndex);\n const nextSemicolonIndex = css.indexOf(';', currentIndex);\n\n if (nextBraceIndex !== -1 && (nextBraceIndex < nextSemicolonIndex || nextSemicolonIndex === -1)) {\n const prelude = css.substring(currentIndex, nextBraceIndex).trim();\n if (!prelude) {\n currentIndex = nextBraceIndex + 1;\n continue;\n }\n\n const blockEndIndex = CssParser._findMatchingBrace(css, nextBraceIndex);\n if (blockEndIndex === -1) {\n console.error(\"Malformed CSS: No matching brace for selector -> \", prelude);\n return rules;\n }\n\n const blockContent = css.substring(nextBraceIndex + 1, blockEndIndex).trim();\n\n if (prelude.startsWith('@')) {\n const name = prelude.match(/^@([^\\s]+)/)?.[1] || 'unknown';\n const condition = prelude.replace(/^@[^\\s]+\\s*/, '').trim();\n const content = CssParser._parseContent(blockContent);\n rules.push(new AtRule(name, condition, content));\n } else {\n const content = CssParser._parseContent(blockContent);\n rules.push(new StyleRule(prelude, content));\n }\n currentIndex = blockEndIndex + 1;\n\n } else if (nextSemicolonIndex !== -1) {\n const statement = css.substring(currentIndex, nextSemicolonIndex).trim();\n if (statement.startsWith('@')) {\n const name = statement.match(/^@([^\\s]+)/)?.[1] || 'unknown';\n const condition = statement.replace(/^@[^\\s]+\\s*/, '').trim();\n rules.push(new AtRule(name, condition, []));\n }\n currentIndex = nextSemicolonIndex + 1;\n } else {\n break;\n }\n }\n return rules;\n }\n\n private static _findMatchingBrace(str: string, startIndex: number): number {\n let depth = 1;\n for (let i = startIndex + 1; i < str.length; i++) {\n if (str[i] === '{') {\n depth++;\n } else if (str[i] === '}') {\n depth--;\n if (depth === 0) {\n return i;\n }\n }\n }\n return -1;\n }\n\n private static _parseDeclarations(declarationString: string): CssDeclaration {\n const declarations: CssDeclaration = {};\n const declarationPairs = declarationString.split(';');\n\n for (const pair of declarationPairs) {\n if (pair.trim() === '') {\n continue;\n }\n const parts = pair.split(':');\n if (parts.length >= 2) {\n const property = parts[0].trim();\n const value = parts.slice(1).join(':').trim();\n if (property && value) {\n declarations[property] = value;\n }\n }\n }\n return declarations;\n }\n\n public static _declarationsToCSS(declarations: CssDeclaration, indent: number): string {\n const indentStr = ' '.repeat(indent);\n return Object.entries(declarations)\n .map(([prop, value]) => `${indentStr}${CssParser._camelToKebab(prop)}: ${value};`)\n .join('\\n');\n }\n\n public static _camelToKebab(camelCase: string): string {\n return camelCase.replace(/([a-z0-9]|(?=[A-Z]))([A-Z])/g, '$1-$2').toLowerCase();\n }\n\n // Helper to parse string input to CssRule[]\n public static _parseInputToRules(ruleOrCss: CssRule | string): CssRule[] {\n if (typeof ruleOrCss === 'string') {\n const parsed = new CssParser(ruleOrCss).rules;\n if (parsed.length === 0) {\n console.warn('Provided CSS string resulted in no rules.');\n }\n return [...parsed];\n } else {\n return [ruleOrCss];\n }\n }\n}\n\n// --- Type Guards ---\n\nexport function isRule(obj: any): obj is CssRule {\n return obj instanceof StyleRule || obj instanceof AtRule;\n}\n\nexport function isStyleRule(rule: any): rule is StyleRule {\n return rule instanceof StyleRule;\n}\n\nexport function isAtRule(rule: any): rule is AtRule {\n return rule instanceof AtRule;\n}\n\nexport function isCssDeclarationItem(item: any): item is CssDeclarationItem {\n return item && typeof item === 'object' && item.type === 'declaration' &&\n typeof item.property === 'string' && typeof item.value === 'string';\n}\n\nexport function isCssRuleItem(item: any): item is CssRuleItem {\n return item && typeof item === 'object' && item.type === 'rule' && isRule(item.rule);\n}\n\nexport function isCssCommentItem(item: any): item is CssCommentItem {\n return item && typeof item === 'object' && item.type === 'comment' && typeof item.text === 'string';\n}", "import { Render } from '../rawsets/Render';\n\nexport type OnCreateRenderDataParams = { rootParent: any, render?: Render };\n\nexport interface OnCreateRenderData {\n onCreateRenderData(data: OnCreateRenderDataParams): void;\n}\n\nexport const isOnCreateRenderData = (obj: any): obj is OnCreateRenderData => {\n return typeof obj?.onCreateRenderData === 'function';\n}", "export interface OnCreateRender {\n onCreateRender(...param: any[]): void;\n}\nexport const isOnCreateRender = (obj: any): obj is OnCreateRender => {\n return typeof obj?.onCreateRender === 'function';\n}", "import { RawSet } from '../rawsets/RawSet';\n\nexport type OtherData = {\n rawSet?: RawSet\n}\nexport interface OnChangeAttrRender {\n onChangeAttrRender(name: string, value: any, other: OtherData): void;\n}\n\nexport const isOnChangeAttrRender = (obj: any): obj is OnChangeAttrRender => {\n return typeof obj?.onChangeAttrRender === 'function';\n}\n", "import { RawSet } from '../rawsets/RawSet';\n\nexport interface OnInitRender {\n onInitRender(param: any, rawSet:RawSet): void;\n}\n\nexport function isOnInitRender(obj: any): obj is OnInitRender {\n return typeof obj?.onInitRender === 'function';\n}", "import { OnCreateRenderDataParams } from '../lifecycle/OnCreateRenderData';\n\n\nexport interface OnCreatedThisChild {\n onCreatedThisChild(child: any, childData: OnCreateRenderDataParams): void;\n}\n\nexport const isOnCreatedThisChild= (obj: any): obj is OnCreatedThisChild => {\n return typeof obj?.onCreatedThisChild === 'function';\n}", "import { RawSet } from '../rawsets/RawSet';\n\nexport type OnDestroyRenderParams = { rawSet: RawSet };\n\nexport interface OnDestroyRender {\n onDestroyRender(data?: OnDestroyRenderParams): void;\n}\n\nexport const isOnDestroyRender = (obj: any): obj is OnDestroyRender => {\n return typeof obj?.onDestroyRender === 'function';\n};", "import { RawSet } from '../rawsets/RawSet';\nimport { CreatorMetaData } from '../rawsets/CreatorMetaData';\nimport { AfterCallBack, ElementSource, ExecuteState, OperatorExecuter, ReturnContainer, Source } from './OperatorExecuter';\nimport { Render } from '../rawsets/Render';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\n\n\n// \uC5EC\uAE30\uC11C \uC0AC\uC6A9\uC790\uAC00 \uB4F1\uB85D\uD55C TargetElement\uAC00 \uB4E4\uC5B4\uAC04\uB2E4.\nexport class DrTargetElementIsElement extends OperatorExecuter<string | null> {\n constructor(rawSet: RawSet, render: Render, returnContainer: ReturnContainer, elementSource: ElementSource, source: Source, afterCallBack: AfterCallBack) {\n source.operatorAround = undefined;\n super(rawSet, render, returnContainer, elementSource, source, afterCallBack, false);\n }\n\n async execute(attr: string | null): Promise<ExecuteState> {\n if (!attr) {\n return ExecuteState.NO_EXECUTE;\n }\n const targetElement = this.source.config?.targetElements?.find(it => it.name.toLowerCase() === attr.toLowerCase());\n // console.log('--------------tar', targetElement)\n if (targetElement) {\n if (this.rawSet.point.start instanceof this.source.config.window.HTMLMetaElement && this.rawSet.point.end instanceof this.source.config.window.HTMLMetaElement) {\n this.rawSet.point.start.setAttribute('this-path', `this.__domrender_components.${this.rawSet.uuid}`)\n this.rawSet.point.end.setAttribute('this-path', `this.__domrender_components.${this.rawSet.uuid}`)\n }\n\n\n const documentFragment = await targetElement.callBack(this.elementSource.element, this.source.obj, this.rawSet, this.elementSource.attrs, this.source.config);\n if (documentFragment) {\n const detectAction = this.elementSource.element.getAttribute(RawSet.DR_DETECT_NAME);\n this.rawSet.dataSet.fragment = documentFragment;\n if (detectAction && this.rawSet.dataSet.render) {\n // TODO: \uC5C6\uC5B4\uC838\uC57C\uB420\uB4EF?\n this.rawSet.detect = {\n action: () => {\n const script = `var $component = this.__render.component; var $element = this.__render.element; var $innerHTML = this.__render.innerHTML; var $attribute = this.__render.attribute; ${detectAction} `;\n ScriptUtils.evaluate(script, Object.assign(this.source.obj, {\n __render: this.rawSet.dataSet.render\n }))\n }\n };\n }\n\n // dr-replace-target-element-is \uB294 \uBB34\uC870\uAC74 NoStrip\uB85C \uCC98\uB9AC\n const noStrip = targetElement.noStrip\n\n let targetFragment = documentFragment;\n if (noStrip) {\n const fragment = this.source.config.window.document.createDocumentFragment()\n Array.from(documentFragment.firstElementChild?.childNodes || []).forEach(child => {\n fragment.appendChild(child);\n });\n targetFragment = fragment;\n }\n\n const rr = RawSet.checkPointCreates(targetFragment, this.source.obj, this.source.config)\n if (noStrip) {\n Array.from(targetFragment.childNodes||[]).forEach(child => {\n documentFragment.firstElementChild?.appendChild(child)\n })\n }\n this.elementSource.element.parentNode?.replaceChild(documentFragment, this.elementSource.element);\n this.returnContainer.raws.push(...rr);\n this.afterCallBack.onElementInitCallBacks.push({\n name: targetElement.name.toLowerCase(),\n obj: this.source.obj,\n targetElement,\n creatorMetaData: targetElement.__creatorMetaData as CreatorMetaData\n });\n targetElement?.complete?.(this.elementSource.element, this.source.obj, this.rawSet);\n }\n return ExecuteState.EXECUTE;\n }\n return ExecuteState.NO_EXECUTE;\n }\n}\n", "import { RandomUtils } from '@dooboostore/core/random/RandomUtils';\nimport { StringUtils } from '@dooboostore/core/string/StringUtils';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { EventManager } from '../events/EventManager';\nimport type { DomRenderConfig } from '../configs/DomRenderConfig';\nimport { Range } from '../iterators/Range';\nimport { ElementUtils } from '@dooboostore/core-web/element/ElementUtils';\nimport { ComponentSet } from '../components/ComponentSet';\nimport { DrPre } from '../operators/DrPre';\nimport { Dr } from '../operators/Dr';\nimport { DrIf } from '../operators/DrIf';\nimport { ExecuteState } from '../operators/OperatorExecuter';\nimport { DrThis } from '../operators/DrThis';\nimport { DrForm } from '../operators/DrForm';\nimport { DrInnerText } from '../operators/DrInnerText';\nimport { DrInnerHTML } from '../operators/DrInnerHTML';\nimport { DrFor } from '../operators/DrFor';\nimport { DrForOf } from '../operators/DrForOf';\nimport { DrAppender } from '../operators/DrAppender';\nimport { DrRepeat } from '../operators/DrRepeat';\nimport { DrTargetElement } from '../operators/DrTargetElement';\nimport { DrTargetAttr } from '../operators/DrTargetAttr';\nimport { DrStripElement } from '../operators/DrStripElement';\nimport { TargetElement } from '../configs/TargetElement';\nimport { TargetAttr } from '../configs/TargetAttr';\nimport { DestroyOptionType } from './DestroyOptionType';\nimport { Attrs } from './Attrs';\nimport { AttrInitCallBack } from './AttrInitCallBack';\nimport { ElementInitCallBack } from './ElementInitCallBack';\nimport { RawSetType } from './RawSetType';\nimport { Render } from './Render';\nimport { DrThisProperty } from '../operators/DrThisProperty';\nimport { RawSetOperatorType } from './RawSetOperatorType';\nimport { CssParser, CssRule, isStyleRule, isAtRule } from '@dooboostore/core/parser/css/CssParser';\nimport { isOnCreateRenderData, OnCreateRenderDataParams } from '../lifecycle/OnCreateRenderData';\nimport { isOnCreateRender } from '../lifecycle/OnCreateRender';\nimport { isOnChangeAttrRender } from '../lifecycle/OnChangeAttrRender';\nimport { isOnInitRender } from '../lifecycle/OnInitRender';\nimport { isOnCreatedThisChild } from '../lifecycle/OnCreatedThisChild';\nimport { isOnDestroyRender, OnDestroyRenderParams } from '../lifecycle/OnDestroyRender';\nimport { DrTargetElementIsElement } from '../operators/DrTargetElementIsElement';\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\n\n\nexport class RawSet {\n public static readonly DR_NAME = 'dr';\n public static readonly DR_IF_NAME = 'dr-if';\n public static readonly DR_FOR_NAME = 'dr-for';\n public static readonly DR_FOR_OF_NAME = 'dr-for-of';\n public static readonly DR_THIS_PROPERTY_NAME = 'dr-this-property';\n public static readonly DR_REPEAT_NAME = 'dr-repeat';\n public static readonly DR_THIS_NAME = 'dr-this';\n public static readonly DR_FORM_NAME = 'dr-form';\n public static readonly DR_PRE_NAME = 'dr-pre';\n public static readonly DR_APPENDER_NAME = 'dr-appender';\n public static readonly DR_INNERHTML_NAME = 'dr-inner-html';\n public static readonly DR_INNERTEXT_NAME = 'dr-inner-text';\n public static readonly DR_DETECT_NAME = 'dr-detect';\n public static readonly DR_STRIP_NAME = 'dr-strip';\n public static readonly DR_REPLACE_TARGET_ELEMENT_IS_NAME = 'dr-replace-target-element-is';\n\n // \uAC10\uC9C0\uCC98\uB9AC\uB418\uB294 \uC635\uC158\n public static readonly DR_DETECT_IF_OPTIONNAME = 'dr-detect-option-if';\n public static readonly DR_DETECT_FILTER_OPTIONNAME = 'dr-detect-option-filter';\n public static readonly DR_DETECT_ATTR_OPTIONNAME = 'dr-detect-option-attr';\n\n\n /**\n * @deprecated\n */\n public static readonly DR_THIS_OPTIONNAME = 'dr-option-this';\n public static readonly DR_ATTR_OPTIONNAME = 'dr-option-attr';\n public static readonly DR_IF_OPTIONNAME = 'dr-option-if';\n public static readonly DR_IT_OPTIONNAME = 'dr-option-it';\n public static readonly DR_VAR_OPTIONNAME = 'dr-option-var';\n public static readonly DR_AFTER_OPTIONNAME = 'dr-option-after';\n public static readonly DR_NEXT_OPTIONNAME = 'dr-option-next';\n public static readonly DR_BEFORE_OPTIONNAME = 'dr-option-before';\n public static readonly DR_COMPLETE_OPTIONNAME = 'dr-option-complete';\n public static readonly DR_STRIP_OPTIONNAME = 'dr-option-strip';\n public static readonly DR_DESTROY_OPTIONNAME = 'dr-option-destroy';\n\n public static readonly DR_THIS_NAME_OPTIONNAME = 'dr-option-this-name';\n /**\n * @deprecated\n */\n public static readonly DR_COMPONENT_NAME_OPTIONNAME = 'dr-option-component-name';\n public static readonly DR_COMPONENT_INNER_HTML_NAME_OPTIONNAME = 'dr-option-component-inner-html-name';\n public static readonly DR_KEY_OPTIONNAME = 'dr-option-key';\n public static readonly DR_HAS_KEYS_OPTIONNAME = 'dr-option-has-keys';\n\n public static readonly DR_ON_CREATE_ARGUMENTS_OPTIONNAME = 'dr-on-create:arguments';\n public static readonly DR_ON_CREATED_CALLBACK_OPTIONNAME = 'dr-on-create:callback';\n /** \uC6B0\uC120 \uC4F0\uB294\uACF3\uC774 \uC5C6\uC5B4\uC11C deprecated\uB97C \uAC78\uC5B4\uB1A8\uC74C\n @deprecated\n */\n public static readonly DR_ON_INIT_ARGUMENTS_OPTIONNAME = 'dr-on-init:arguments';\n public static readonly DR_ON_CONSTRUCTOR_ARGUMENTS_OPTIONNAME = 'dr-on-constructor:arguments';\n\n public static readonly drAttrsOriginName: Attrs = {\n dr: RawSet.DR_NAME,\n drIf: RawSet.DR_IF_NAME,\n drFor: RawSet.DR_FOR_NAME,\n drForOf: RawSet.DR_FOR_OF_NAME,\n drThisProperty: RawSet.DR_THIS_PROPERTY_NAME,\n drAppender: RawSet.DR_APPENDER_NAME,\n drRepeat: RawSet.DR_REPEAT_NAME,\n drThis: RawSet.DR_THIS_NAME,\n drForm: RawSet.DR_FORM_NAME,\n drPre: RawSet.DR_PRE_NAME,\n drInnerHTML: RawSet.DR_INNERHTML_NAME,\n drInnerText: RawSet.DR_INNERTEXT_NAME,\n drItOption: RawSet.DR_IT_OPTIONNAME,\n drVarOption: RawSet.DR_VAR_OPTIONNAME,\n drAfterOption: RawSet.DR_AFTER_OPTIONNAME,\n drNextOption: RawSet.DR_NEXT_OPTIONNAME,\n drBeforeOption: RawSet.DR_BEFORE_OPTIONNAME,\n drCompleteOption: RawSet.DR_COMPLETE_OPTIONNAME,\n drStripElement: RawSet.DR_STRIP_NAME,\n drReplaceTargetElementIs: RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME,\n drStripOption: RawSet.DR_STRIP_OPTIONNAME,\n drIfOption: RawSet.DR_IF_OPTIONNAME,\n drDetectIfOption: RawSet.DR_DETECT_IF_OPTIONNAME,\n drDestroyOption: RawSet.DR_DESTROY_OPTIONNAME,\n drHasKeysOption: RawSet.DR_HAS_KEYS_OPTIONNAME,\n drKeyOption: RawSet.DR_KEY_OPTIONNAME\n };\n\n public static readonly DR_TAGS = [];\n\n // public static readonly DR_REPLACE_ACTION_ATTRIBUTES = [\n // RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME\n // ]\n\n public static readonly DR_ATTRIBUTES = [\n RawSet.DR_NAME,\n RawSet.DR_APPENDER_NAME,\n RawSet.DR_IF_NAME,\n RawSet.DR_FOR_OF_NAME,\n RawSet.DR_THIS_PROPERTY_NAME,\n RawSet.DR_FOR_NAME,\n RawSet.DR_THIS_NAME,\n RawSet.DR_FORM_NAME,\n RawSet.DR_PRE_NAME,\n RawSet.DR_INNERHTML_NAME,\n RawSet.DR_INNERTEXT_NAME,\n RawSet.DR_REPEAT_NAME,\n RawSet.DR_DETECT_NAME,\n RawSet.DR_STRIP_NAME,\n ] as const;\n\n constructor(\n public uuid: string,\n public type: RawSetType,\n public point: {\n start: (Comment | Text | HTMLMetaElement),\n node: Node,\n end: Comment | Text | HTMLMetaElement,\n // thisVariableName?: string | null,\n parent?: Node | null,\n parentRawSet?: RawSet,\n childrenRawSets?: RawSet[]\n },\n public dataSet: {\n config: DomRenderConfig;\n fragment: DocumentFragment,\n render?: Render;\n },\n public detect?: { action: Function },\n ) {\n // point.start.rawSet = this;\n // console.log('rawset constructor->', (this.point.node as Element).getAttributeNames());\n }\n\n get isConnected() {\n // console.log('isConnect???', this, this.point.start.isConnected, this.point.end.isConnected);\n return this.point.start.isConnected && this.point.end.isConnected;\n }\n\n // \uC911\uC694\n getUsingTriggerVariables(config?: DomRenderConfig): Set<string> {\n const usingTriggerVariables = new Set<string>();\n // console.log('------data', this.dataSet)\n this.dataSet.fragment.childNodes.forEach((cNode, key) => {\n // console.log('-----aaaa-data', cNode, key)\n let script = '';\n if (cNode.nodeType === Node.TEXT_NODE) {\n script = `\\`${(cNode as Text).textContent ?? ''}\\``;\n const expressionGroups = RawSet.expressionGroups(script)\n // console.log('???????', script, expressionGroups)\n if (expressionGroups[0].length >1) {\n script = expressionGroups[0][1] as string;\n }\n // console.log('--', expressionGroups, script)\n } else if (cNode.nodeType === Node.ELEMENT_NODE) {\n const element = cNode as Element;\n const targetAttrNames = (config?.targetAttrs?.map(it => it.name) ?? [])\n .concat(RawSet.DR_ATTRIBUTES, RawSet.DR_DETECT_FILTER_OPTIONNAME, RawSet.DR_DETECT_IF_OPTIONNAME, RawSet.DR_DETECT_ATTR_OPTIONNAME); // .concat(EventManager.normalAttrMapAttrName);\n const targetScripts = targetAttrNames.map(it => element.getAttribute(it)).filter(it => it).map(it=>`(${it})`);\n const targetAttrMap = element.getAttribute(EventManager.normalAttrMapAttrName);\n // console.log('targetAttrMap-->', targetAttrMap)\n if (targetAttrMap) {\n new Map<string, string>(JSON.parse(targetAttrMap)).forEach((v, k) => {\n targetScripts.push(`(${v})`);\n });\n }\n // console.log('targetScriptstargetScripts', targetScripts)\n script = targetScripts.join(';');\n // script = targetScripts.map(it=>`try{${it}}catch(e){}`).join(';');\n\n // attribute\uCABD \uCCB4\uD06C\uD558\uB294\uAC70 \uCD94\uAC00\n // console.log('----!!!!!-->', targetAttrNames)\n // const otherAttrs = element.getAttributeNames()\n // .filter(it => !targetAttrNames.includes(it.toLowerCase()) && RawSet.isExporesion(element.getAttribute(it)))\n // .map(it => {\n // return `\\`${element.getAttribute(it) ?? ''}\\``;\n // }).join(';');\n // script += ';' + otherAttrs\n }\n if (script) {\n\n // console.log('------1-',script)\n script = script.replace(/#[^#]*#/g, '({})');\n // console.log('------2-',script)\n // script = script.replace('}$','}');\n // script = script.replace('@this@','this');\n // console.log('----------->', script)\n\n // TODO: \uD6D4.. \uAF2D\uD544\uC694\uD55C\uAC00..? \uD2B8\uB9AC\uAC70\uB420\uB54C \uC2A4\uD06C\uB9BD\uD2B8\uBCC0\uC218 \uAE4C\uC9C0 \uAC10\uC9C0\uD574\uC57C\uB420\uAE4C?\n EventManager.VARNAMES.forEach(it => {\n // script = script.replace(RegExp(it.replace('$', '\\\\$'), 'g'), `this?.___${it}`);\n // script = script.replace(RegExp(it.replace('$', '\\\\$'), 'g'), `this.___${it}`);\n script = script.replace(RegExp(it.replace('$', '\\\\$'), 'g'), `this.___${it}`);\n // console.log('scripts-->', script)\n });\n // console.log('--------1--', script);\n // script = script.replaceAll('#{','${').replaceAll('}#', '}')\n // console.log('--------2--', script);\n // TODO: \uD6D4.. \uAF2D\uD544\uC694\uD55C\uAC00..? \uD2B8\uB9AC\uAC70\uB420\uB54C \uC2A4\uD06C\uB9BD\uD2B8\uBCC0\uC218 \uAE4C\uC9C0 \uAC10\uC9C0\uD574\uC57C\uB420\uAE4C?\n Array.from(ObjectUtils.Path.detectPathFromScript(script,{excludeThis: true})).filter(it => !it.startsWith(`___${EventManager.SCRIPTS_VARNAME}`)).forEach(it => usingTriggerVariables.add(it));\n }\n });\n // console.log('usingTriggerVariable----------->', usingTriggerVariables)\n return usingTriggerVariables;\n }\n\n // \uC911\uC694 render \uCC98\uB9AC \uBD80\uBD84\n public async render(obj: any, config: DomRenderConfig): Promise<RawSet[]> {\n // console.log('render!!!!!!!!!!!!!!')\n const genNode = config.window.document.importNode(this.dataSet.fragment, true);\n const raws: RawSet[] = [];\n const onAttrInitCallBacks: AttrInitCallBack[] = [];\n const onElementInitCallBacks: ElementInitCallBack[] = [];\n const onThisComponentSetCallBacks: ComponentSet[] = [];\n const drAttrs: Attrs[] = [];\n // console.log('rawSet render!!', obj, config, this, Array.from(genNode.childNodes.values()));\n for (const cNode of Array.from(genNode.childNodes.values())) {\n // console.log('cNodecNodecNode', cNode);\n let attribute = {};\n if (cNode.nodeType === Node.ELEMENT_NODE) {\n attribute = ElementUtils.getAttributeToObject(cNode as Element);\n }\n\n const __render = Object.freeze({\n rawSet: this,\n scripts: EventManager.setBindProperty(config?.scripts, obj),\n router: config?.router,\n range: Range.range,\n element: cNode,\n attribute: attribute,\n rootObject: obj,\n scriptUtils: ScriptUtils,\n nearThis: this.findNearThis(obj),\n parentThis: this.findParentThis(obj),\n bindScript: ` /** render **/\n const ${EventManager.SCRIPTS_VARNAME} = this.__render.scripts;\n const ${EventManager.RAWSET_VARNAME} = this.__render.rawSet;\n const ${EventManager.ELEMENT_VARNAME} = this.__render.element;\n const ${EventManager.ATTRIBUTE_VARNAME} = this.__render.attribute;\n const ${EventManager.RANGE_VARNAME} = this.__render.range;\n const ${EventManager.ROUTER_VARNAME} = this.__render.router;\n const ${EventManager.NEAR_THIS_VARNAME} = this.__render.nearThis;\n const ${EventManager.PARENT_THIS_VARNAME} = this.__render.parentThis;\n const ${EventManager.SCRIPT_UTILS_VARNAME} = this.__render.scriptUtils;\n const ${EventManager.ROOT_OBJECT_VARNAME} = this.__render.rootObject;\n `\n }) as unknown as Render;\n\n\n // const normalAttribute = attribute[EventManager.normalAttrMapAttrName];\n // if (normalAttribute) {\n // new Map<string, string>(JSON.parse(normalAttribute)).forEach((v, k) => {\n // const cval = ScriptUtils.evalReturn({ bodyScript: __render.bindScript, returnScript: v }, Object.assign(obj, { __render: __render }));\n // console.log('-----------',v,k, cval);\n // attribute[v] = cval;\n // });\n // }\n\n\n const fag = config.window.document.createDocumentFragment();\n if (cNode.nodeType === Node.TEXT_NODE && cNode.textContent) {\n // console.log('text-->', this, obj, config, cNode.textContent);\n // console.log('text-->', Array.from(this.fragment.childNodes))\n const textContent = cNode.textContent;\n const runText = RawSet.expressionGroups(textContent)[0][1];\n // console.log('--->', RawSet.exporesionGrouops(textContent), textContent,runText, runText[0][1])\n let newNode: Node;\n if (textContent?.startsWith('#')) {\n const r = ScriptUtils.evaluate(`${__render.bindScript} return ${runText}`, Object.assign(obj, {__render}));\n const template = config.window.document.createElement('template') as HTMLTemplateElement;\n template.innerHTML = r;\n newNode = template.content;\n } else {\n const r = ScriptUtils.evaluate(`${__render.bindScript} return ${runText}`, Object.assign(obj, {__render}));\n newNode = config.window.document.createTextNode(r);\n }\n cNode.parentNode?.replaceChild(newNode, cNode);\n // console.log('-------', this.point.start.parentNode.nodeName)\n // \uC911\uC694 style value change \uB410\uC744\uB54C \uB2E4\uC2DC \uCC98\uB9AC\uD574\uC57C\uB418\uAE30\uB584\uBB38\uC5D0: \uB9C8\uC9C0\uB9C9\uC5D0 completed \uC5C6\uB294 attr \uAC00\uC9C0\uACE0 \uD310\uB2E8 \uD558\uB2C8\uAE50\n if (this.type === RawSetType.STYLE_TEXT && this.point.parent) {\n (this.point.parent as Element).removeAttribute('completed');\n }\n } else if (cNode.nodeType === Node.ELEMENT_NODE) {\n const element = cNode as Element;\n // console.log('target-->', element)\n const drAttr:Attrs = {\n dr: this.getAttributeAndDelete(element, RawSet.DR_NAME),\n drIf: this.getAttributeAndDelete(element, RawSet.DR_IF_NAME),\n drFor: this.getAttributeAndDelete(element, RawSet.DR_FOR_NAME),\n drForOf: this.getAttributeAndDelete(element, RawSet.DR_FOR_OF_NAME),\n drThisProperty: this.getAttributeAndDelete(element, RawSet.DR_THIS_PROPERTY_NAME),\n drAppender: this.getAttributeAndDelete(element, RawSet.DR_APPENDER_NAME),\n drRepeat: this.getAttributeAndDelete(element, RawSet.DR_REPEAT_NAME),\n drThis: this.getAttributeAndDelete(element, RawSet.DR_THIS_NAME),\n drForm: this.getAttributeAndDelete(element, RawSet.DR_FORM_NAME),\n drPre: this.getAttributeAndDelete(element, RawSet.DR_PRE_NAME),\n drInnerHTML: this.getAttributeAndDelete(element, RawSet.DR_INNERHTML_NAME),\n drInnerText: this.getAttributeAndDelete(element, RawSet.DR_INNERTEXT_NAME),\n drStripElement: this.getAttributeAndDelete(element, RawSet.DR_STRIP_NAME),\n drReplaceTargetElementIs: this.getAttributeAndDelete(element, RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME),\n drItOption: this.getAttributeAndDelete(element, RawSet.DR_IT_OPTIONNAME),\n drIfOption: this.getAttributeAndDelete(element, RawSet.DR_IF_OPTIONNAME),\n drVarOption: this.getAttributeAndDelete(element, RawSet.DR_VAR_OPTIONNAME),\n drNextOption: this.getAttributeAndDelete(element, RawSet.DR_NEXT_OPTIONNAME),\n drAfterOption: this.getAttributeAndDelete(element, RawSet.DR_AFTER_OPTIONNAME),\n drBeforeOption: this.getAttributeAndDelete(element, RawSet.DR_BEFORE_OPTIONNAME),\n drCompleteOption: this.getAttributeAndDelete(element, RawSet.DR_COMPLETE_OPTIONNAME),\n drStripOption: this.getAttributeAndDelete(element, RawSet.DR_STRIP_OPTIONNAME),\n drDestroyOption: this.getAttributeAndDelete(element, RawSet.DR_DESTROY_OPTIONNAME),\n drKeyOption: this.getAttributeAndDelete(element, RawSet.DR_KEY_OPTIONNAME),\n drDetectIfOption: this.getAttribute(element, RawSet.DR_DETECT_IF_OPTIONNAME),\n drHasKeysOption: this.getAttribute(element, RawSet.DR_HAS_KEYS_OPTIONNAME),\n };\n drAttrs.push(drAttr);\n // \uC544\uB798 \uC21C\uC11C \uC911\uC694\n const operators = [\n new DrPre(this, __render, {raws, fag}, {element, attrName: RawSet.DR_PRE_NAME, attr: drAttr.drPre, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.drPre}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new Dr(this, __render, {raws, fag}, {element, attrName: RawSet.DR_NAME, attr: drAttr.dr, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.dr}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n // new Dr(this, __render, {raws, fag}, {element, attrName: EventManager.onRenderedInitAttrName, attr: drAttr.dr, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.dr}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrIf(this, __render, {raws, fag}, {element, attrName: RawSet.DR_IF_NAME, attr: drAttr.drIf, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.drIf}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrStripElement(this, __render, {raws, fag}, {element, attrName: RawSet.DR_STRIP_NAME, attr: drAttr.drStripElement, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.drThis}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrThis(this, __render, {raws, fag}, {element, attrName: RawSet.DR_THIS_NAME, attr: drAttr.drThis, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.drThis}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrForm(this, __render, {raws, fag}, {element, attrName: RawSet.DR_FOR_NAME, attr: drAttr.drForm, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.drForm}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrInnerText(this, __render, {raws, fag}, {element, attrName: RawSet.DR_INNERTEXT_NAME, attr: drAttr.drInnerText, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.drInnerText}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrInnerHTML(this, __render, {raws, fag}, {element, attrName: RawSet.DR_INNERHTML_NAME, attr: drAttr.drInnerHTML, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.drInnerHTML}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrFor(this, __render, {raws, fag}, {element, attrName: RawSet.DR_FOR_NAME, attr: drAttr.drFor, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.drFor}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrForOf(this, __render, {raws, fag}, {element, attrName: RawSet.DR_FOR_OF_NAME, attr: drAttr.drForOf, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.drForOf}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrThisProperty(this, __render, {raws, fag}, {element, attrName: RawSet.DR_THIS_PROPERTY_NAME, attr: drAttr.drThisProperty, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.drThisProperty}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrAppender(this, __render, {raws, fag}, {element, attrName: RawSet.DR_APPENDER_NAME, attr: drAttr.drAppender, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.drAppender}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrRepeat(this, __render, {raws, fag}, {element, attrName: RawSet.DR_REPEAT_NAME, attr: drAttr.drRepeat, attrs: drAttr}, {config, obj, operatorAround: config.operatorAround?.drRepeat}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrTargetElementIsElement(this, __render, {raws, fag}, {element, attrName: RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME, attr: drAttr.drReplaceTargetElementIs, attrs: drAttr}, {config, obj}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrTargetElement(this, __render, {raws, fag}, {element, attrs: drAttr}, {config, obj}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n new DrTargetAttr(this, __render, {raws, fag}, {element, attrs: drAttr}, {config, obj}, {onAttrInitCallBacks, onElementInitCallBacks, onThisComponentSetCallBacks}),\n ];\n\n for (const operator of operators) {\n const state = await operator.start();\n if (state === ExecuteState.EXECUTE) {\n break;\n } else if (state === ExecuteState.STOP) {\n return raws;\n }\n }\n }\n }\n\n this.point.childrenRawSets = raws;\n raws.forEach(it => {\n it.point.parentRawSet = this;\n });\n\n // console.log('pppppppppppppp', this);\n\n\n // replaceBody\uC640 applyEvent \uC21C\uC11C\uB97C \uBC14\uAFE8\uB2E4 20250511\n const childrenNodes = Array.from(genNode.childNodes);\n this.applyEvent(obj, genNode, config);\n this.replaceBody(genNode); // \uC911\uC694 \uC5EC\uAE30\uC11C \uB9C8\uC9C0\uB9C9\uC5D0 \uC5F0\uC158\uB41C \uAC12\uC744 \uADF8\uB824\uC900\uB2E4.\n // console.log('rawSEt!!!!!!!', obj,childrenNodes,config)\n // console.log('rawSEt!!!!!!!', obj, this.findNearThis(obj),childrenNodes,config)\n // console.log('rawSEt!!!!!!!', obj, drAttrs)\n this.onRenderedEvent(obj, childrenNodes, config);\n\n drAttrs.forEach(it => {\n if (it.drCompleteOption) {\n // genNode.childNodes\n const render = Object.freeze({\n rawSet: this,\n fag: genNode,\n scripts: EventManager.setBindProperty(config?.scripts, obj)\n } as Render);\n ScriptUtils.evaluate(`\n const ${EventManager.FAG_VARNAME} = this.__render.fag;\n const ${EventManager.SCRIPTS_VARNAME} = this.__render.scripts;\n const ${EventManager.RAWSET_VARNAME} = this.__render.rawSet;\n ${it.drCompleteOption}`, Object.assign(obj, {__render: render}));\n }\n });\n\n\n // \uC911\uC694 style isolation \uB098\uC911\uC5D0 :scope\uB85C \uB300\uCCB4 \uAC00\uB2A5\uD560\uB4EF.\n // 2023.9.4\uC77C \uC5C6\uC570 style \uCC98\uC74C\uB4E4\uC5B4\uC62C\uB54C \uCC98\uB9AC\uD558\uB294\uAC78\uB85C \uBC14\uAFC8\n // RawSet.generateStyleSheetsLocal(config);\n for (const it of onThisComponentSetCallBacks) {\n if (isOnInitRender(it.obj)) {\n it.obj?.onInitRender?.({}, this);\n }\n }\n for (const it of onElementInitCallBacks) {\n if (isOnInitRender(this.dataSet.render?.currentThis)) {\n // TODO: \uB098\uC911\uC5D0 \uD30C\uB77C\uBBF8\uD130 \uB4E4\uC5B4\uAC00\uC57C\uB420\uB4EF. \uC9C0\uAE08\uC740 \uB9AC\uD329\uD1A0\uB9C1\uD558\uB290\uB77C \uBE60\uC9D0\n // console.log('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!', it, this.dataSet);\n // dr-on-init:arguments\n\n // if (isOnInitRender()) {\n // it.targetElement.__render.component.onInitRender?.(...param);\n // }\n // if (it.targetElement?.__render?.element && it.targetElement?.__render?.component) {\n // const oninit = it.targetElement.__render.element.getAttribute(RawSet.DR_ON_INIT_ARGUMENTS_OPTIONNAME); // dr-on-component-init\n // let param = [];\n // if (oninit) {\n // const script = `${it.targetElement.__render.renderScript} return ${oninit} `;\n // param = ScriptUtils.eval(script, Object.assign(obj, {\n // __render: it.targetElement.__render\n // }));\n // if (!Array.isArray(param)) {\n // param = [param];\n // }\n // }\n //\n // if (isOnInitRender(it.targetElement.__render.component)) {\n // it.targetElement.__render.component.onInitRender?.(...param);\n // }\n // }\n this.dataSet.render.currentThis.onInitRender({}, this);\n }\n\n\n config?.onElementInit?.(it.name, obj, this, it.targetElement);\n }\n\n // TODO: \uC774\uBD80\uBD84\uB3C4 \uC704\uC5D0 targetElement \uCC98\uB7FC \uD574\uC57C\uB420\uAE4C?\n for (const it of onAttrInitCallBacks) {\n config?.onAttrInit?.(it.attrName, it.attrValue, obj, this);\n }\n\n // component destroy\n if (obj.__domrender_components) {\n Object.entries(obj.__domrender_components).forEach(([key, value]) => {\n const rawSet = (value as any).__rawSet as RawSet;\n const drAttrs: Attrs | undefined = rawSet?.dataSet.render?.attribute;\n if (rawSet && !rawSet.isConnected) {\n const destroyOptions = drAttrs?.drDestroyOption?.split(',') ?? [];\n RawSet.destroy(obj.__domrender_components[key], {rawSet: rawSet}, config, destroyOptions);\n delete obj.__domrender_components[key];\n }\n });\n }\n // console.log('-------raws',raws)\n return raws;\n }\n\n\n // \uC911\uC694 \uC2A4\uD0C0\uC77C \uC801\uC6A9 \uBD80\uBD84\n private static generateRuleSelector(start: string, end: string, sit: string) {\n const selectorText = `:is(${start} ~ *:not(${start} ~ ${end} ~ *))`;\n if (sit.startsWith('## ')) {\n return sit.replace(/^## /, '');\n } else if (sit.startsWith('.')) {\n return `${selectorText}${sit}, ${selectorText} ${sit}`;\n } else if (sit.includes('::')) {\n const reg = sit.match(/(.*)::(.*)$/);\n const first = reg?.[1];\n const extracted = reg?.[2];\n const divText = `${start} ~ ${first}:not(${start} ~ ${end} ~ *)`;\n return `${selectorText} ${first}, ${divText}::${extracted}`;\n } else {\n const divText = `${start} ~ ${sit}:not(${start} ~ ${end} ~ *)`;\n return `${selectorText} ${sit}, ${divText}`;\n }\n }\n\n public static generateStyleTransform(styleBody: string | string[], componentKey: string, styleTagWrap = true) {\n // console.log('style!!!!!!!!!!!!!!!!1', styleBody, componentKey, styleTagWrap);\n if (Array.isArray(styleBody)) {\n styleBody = styleBody.join('\\n');\n }\n styleBody = styleBody.replaceAll('#uuid#', componentKey);\n const start = `#${componentKey}-start`;\n const end = `#${componentKey}-end`;\n // \uC774\uAC70\uBB50\uD558\uB294\uC9C0 \uAE4C\uBA39\uC5C8\uB124 \uBB50\uC600\uC9C0??..\n // \uB3D9\uC801\uC73C\uB85C \uCC98\uB9AC\uD558\uB294\uAC83\uAC19\uC740\uB370.. css \uC5D0\uC11C\uB294 \uB3D9\uC801\uC73C\uB85C \uCC98\uB9AC\uD558\uB294\uAC78 \uC9C0\uD5A5 \uD574\uC57C\uB420\uAC83\uAC19\uC740\uB370 \uC774\uAE30\uB2A5 deprecated \uD560\uC9C0 \uACE0\uBBFC\uC911\n // const before = StringUtils.regexExecArrayReplace(styleBody, /(\\$\\{.*?\\}\\$)/g, (data) => {\n // // console.log('\uB3D9\uC801?', `var(--domrender-${data[0]})`)\n // return `var(--domrender-${data[0]})`;\n // });\n // const before = styleBody;\n // console.log('before@@@@@@@@@@@', before)\n const cssParser = new CssParser(styleBody);\n \n const processRule = (rule: CssRule) => {\n if (isStyleRule(rule)) {\n const isRoot = rule.selector.includes(':root');\n if (!isRoot) {\n // Handle comma-separated selectors\n const selectors = rule.selector.split(',').map(s => s.trim());\n const transformedSelectors = selectors.map(selector => \n this.generateRuleSelector(start, end, selector)\n );\n rule.selector = transformedSelectors.join(', ');\n }\n } else if (isAtRule(rule)) {\n if (rule.name === 'media') {\n const hasRoot = rule.children.some(childRule => \n isStyleRule(childRule) && childRule.selector.includes(':root')\n );\n if (!hasRoot) {\n rule.children.forEach(childRule => {\n if (isStyleRule(childRule)) {\n const selectors = childRule.selector.split(',').map(s => s.trim());\n const transformedSelectors = selectors.map(selector => \n this.generateRuleSelector(start, end, selector)\n );\n childRule.selector = transformedSelectors.join(', ');\n }\n });\n }\n }\n }\n };\n\n cssParser.rules.forEach(processRule);\n \n let after = cssParser.stringify();\n // let after = StringUtils.regexExecArrayReplace(stringify as string, /(var\\(--domrender-(\\$\\{.*?\\}\\$)?\\))/g, (data) => {\n // return data[2];\n // });\n // console.log('after@@@@@@@@@@@', after)\n\n // \uC5EC\uAE30\uC11C \uC120\uC5B8 selector \uC790\uCCB4\uC5D0\uB3C4 \uCC98\uB9AC\uAC00\uB2A5\uD558\uB3C4\uB85D \uD55C\uB2E4 20250518\n after = after.replaceAll('/*$', '${')\n after = after.replaceAll('$*/', '}$')\n\n\n if (styleTagWrap) {\n styleBody = `<style id='${componentKey}-style' domstyle>${after}</style>`;\n }\n\n // console.log('style!!!!!!!!!!!!!!2', styleBody);\n return styleBody;\n }\n\n public applyEvent(obj: any, fragment = this.dataSet.fragment, config?: DomRenderConfig) {\n this.dataSet.config.eventManager.applyEvent(obj, this.dataSet.config.eventManager.findAttrElements(fragment, config), config);\n }\n\n public onRenderedEvent(obj: any, nodes: Node[], config?: DomRenderConfig) {\n this.dataSet.config.eventManager.onRenderedEvent(obj, nodes, config);\n }\n\n public getAttribute(element: Element, attr: string) {\n const data = element.getAttribute(attr);\n return data;\n }\n\n public getAttributeAndDelete(element: Element, attr: string) {\n const data = element.getAttribute(attr);\n // if (data)\n // element.setAttribute(`origin-${attr}`, data);\n\n element.removeAttribute(attr);\n return data;\n }\n\n public getDrAppendAttributeAndDelete(element: Element, obj: any) {\n let data = element.getAttribute(RawSet.DR_APPENDER_NAME);\n // if (data && !/\\[[0-9]+\\]/g.test(data)) {\n if (data && !/\\[.+\\]/g.test(data)) {\n const currentIndex = ScriptUtils.evaluateReturn(`${ObjectUtils.Path.toOptionalChainPath(data)}?.length -1`, obj);\n // console.log('------?', currentIndex)\n // if (currentIndex === undefined || isNaN(currentIndex)) {\n // return undefined;\n // }\n // const currentIndex = ScriptUtils.evalReturn(`${data}.length`, obj);\n data = `${data}[${currentIndex}]`;\n element.setAttribute(RawSet.DR_APPENDER_NAME, data);\n // element.setAttribute(RawSet.DR_IF_NAME, data);\n // element.setAttribute('dr-id', data);\n // console.log('-->', element)\n }\n\n // if (data && !/\\.childs\\[[0-9]+\\]/g.test(data)) {\n // const currentIndex = ScriptUtils.evalReturn(`${data}.currentIndex`, obj);\n // data = `${data}.childs[${currentIndex}]`;\n // element.setAttribute(RawSet.DR_APPENDER_NAME, data)\n // }\n element.removeAttribute(RawSet.DR_APPENDER_NAME);\n return data;\n }\n\n public replaceBody(genNode: Node) {\n this.childAllRemove();\n this.point.start.parentNode?.insertBefore(genNode, this.point.start.nextSibling); // \uC911\uC694 start checkpoint \uB2E4\uC74C\uC778 end checkpoint \uC55E\uC5D0 \uB123\uB294\uB2E4. \uC989 \uC911\uAC04 \uAEF4\uB123\uAE30 (\uB098\uC911\uC5D0 meta tag\uB85C \uBCC0\uACBD\uC744 \uD574\uB3C4\uB420\uB4EF\uD558\uAE34\uD55C\uB370..)\n }\n\n // \uC911\uC694 important\n public static checkPointCreates(element: Node, obj: any, config: DomRenderConfig): RawSet[] {\n // console.log('!@@@@@@@@@@@@@@@@', obj);\n // const NodeFilter = (config.window as any).NodeFilter;\n // const thisVariableName = (element as any).__domrender_this_variable_name;\n // console.log('thisVariableName---', thisVariableName);\n const nodeIterator = config.window.document?.createNodeIterator(element, NodeFilter.SHOW_ALL, {\n acceptNode(node) {\n // console.log('nodeType', node.nodeType, (node as any).tagName, (node as any).data);\n if (node.nodeType === Node.TEXT_NODE) {\n // console.log('text--->', node.textContent)\n // console.log('????????', node.parentElement, node.parentElement?.getAttribute('dr-pre'));\n // console.log('???????/',node.textContent, node.parentElement?.getAttribute('dr-pre'))\n // TODO: \uB098\uC911\uC5D0\n // const between = StringUtils.betweenRegexpStr('[$#]\\\\{', '\\\\}', StringUtils.deleteEnter((node as Text).data ?? ''))\n const between = RawSet.expressionGroups(StringUtils.deleteEnter((node as Text).data ?? ''));\n // console.log('bbbb', between)\n return between?.length > 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n // return /\\$\\{.*?\\}/g.test(StringUtils.deleteEnter((node as Text).data ?? '')) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n // return /[$#]\\{.*?\\}/g.test(StringUtils.deleteEnter((node as Text).data ?? '')) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n } else if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node as Element;\n if (element.hasAttribute(RawSet.DR_PRE_NAME)) {\n return NodeFilter.FILTER_REJECT;\n }\n if (element.hasAttribute(EventManager.attrAttrName)) {\n const script = element.getAttribute(EventManager.attrAttrName) ?? '';\n // console.log('scriptscriptscriptscriptscriptscript,', script)\n const keyValuePairs = Array.from(script.matchAll(/(\\w+):\\s*([^,}]+)/g)).map(match => ({key: match[1], value: match[2]}));\n (keyValuePairs ?? []).forEach(it => {\n element.setAttribute(it.key, '${' + it.value + '}$')\n })\n // console.log('-------k', keyValuePairs)\n\n // const drAttr = ScriptUtils.evalReturn(script, obj)\n // Object.entries(drAttr).forEach(([key, value]) => {\n // const keyValuePairs = Array.from(a.matchAll(/(\\w+):\\s*([^,}]+)/g)).map(match => ({ key: match[1], value: match[2] }));\n // console.log(keyValuePairs);\n // // \uCD9C\uB825: [{ key: 'value', value: 'this.child.obj.name' }, { key: 'wow', value: 'this.ww' }, { key: 'zz', value: '22' }, { key: 'v', value: '\"ee\"' }]\n //\n // console.log('-----------------', key,value)\n // element.setAttribute(key, '${'+(value)+'}$');\n // })\n // EventManager.attrNames.filter(it => it in drAttr).forEach(it => {\n // if (drAttr[it] === null) {\n // element.removeAttribute(it);\n // } else {\n // element.setAttribute(it, drAttr[it]);\n // }\n // })\n // console.log('-------->', Array.from(element.attributes), element.getAttribute('dr-attr'), obj)\n }\n // element.setAttribute('dr-event-click', 'console.log(11)');\n const targetElementIs = element.getAttribute(RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME);\n const targetElementNames = config.targetElements?.map(it => it.name.toLowerCase()) ?? [];\n const isElement = targetElementNames.includes(element.tagName.toLowerCase()) || targetElementNames.includes(targetElementIs?.toLowerCase() as any);\n // if (isElement) {\n // (element as HTMLElement).style.display = 'none';\n // (element as HTMLElement).style.width = '100px';\n // (element as HTMLElement).style.height = '100px';\n // console.log((element as HTMLElement).outerHTML)\n // }\n // console.log('------targetElementIstargetElementIs>', targetElementNames, '---', isElement, targetElementIs);\n // const targetAttrNames = (config.targetAttrs?.map(it => it.name) ?? []).concat([...RawSet.DR_ATTRIBUTES,...EventManager.RAWSET_CHECK_ATTRIBUTE]);\n const targetAttrNames = (config.targetAttrs?.map(it => it.name) ?? []).concat([...RawSet.DR_ATTRIBUTES]);\n const normalAttrs = new Map<string, string>();\n const linkVariables = new Map<string, string>();\n const linkNames = EventManager.linkAttrs.map(it => it.name);\n const isAttr = element.getAttributeNames().filter(it => {\n const value = element.getAttribute(it);\n\n // link\uC77C\uB54C\n if (value && linkNames.includes(it)) {\n linkVariables.set(it, value);\n } else if (value && RawSet.isExpression(value)) { // \uD45C\uD604\uC2DD\uC788\uC744\uB584\n let variablePath: string = RawSet.expressionGroups(value)[0][1];\n // console.log('0-----',variablePath, node);\n // normal Attribute \uCD08\uBC18\uC5D0 \uC14B\uD305\uD574\uC8FC\uAE30.\n // TODO: \uC774\uAC70 \uD558\uAE34\uD588\uB294\uB370 \uC0AC\uC774\uB4DC \uC774\uD329\uD2B8?\n const originVariable = variablePath\n variablePath = variablePath.replace(/#[^#]*#/g, '({})');\n // console.log('1-----',variablePath, node);\n const optionalChainPath = ObjectUtils.Path.toOptionalChainPath(variablePath);\n // console.log('2-----',optionalChainPath);\n const cval = ScriptUtils.evaluateReturn(optionalChainPath, Object.assign(obj));\n // const cval = ScriptUtils.evalReturn(variablePath, Object.assign(obj));\n if (cval === null) {\n element.removeAttribute(it);\n } else {\n element.setAttribute(it, cval);\n }\n normalAttrs.set(it, originVariable);\n // console.log('normalAttribute', it, variablePath);\n }\n // console.log(element.getAttribute(it), attrExpresion);\n const isTargetAttr = targetAttrNames.includes(it.toLowerCase());\n return isTargetAttr;\n }).length > 0;\n\n if (linkVariables.size) {\n element.setAttribute(EventManager.linkTargetMapAttrName, JSON.stringify(Array.from(linkVariables.entries())));\n }\n // \uAE30\uBCF8 attribute\uB97C \uCC98\uB9AC\uD558\uAE30\uC704\uD574\n if (normalAttrs.size) {\n element.setAttribute(EventManager.normalAttrMapAttrName, JSON.stringify(Array.from(normalAttrs.entries())));\n }\n // if (isElement) {\n // element.setAttribute('www', '@this@');\n // }\n const r = (isAttr || isElement) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n return r;\n }\n return NodeFilter.FILTER_REJECT;\n }\n });\n const pars: RawSet[] = [];\n let currentNode: Node | null;\n // eslint-disable-next-line no-cond-assign\n while (currentNode = nodeIterator?.nextNode()) {\n if (currentNode.nodeType === Node.TEXT_NODE) {\n const text = (currentNode as Text).textContent ?? '';\n const template = config.window.document?.createElement('template');\n if (!template) break;\n // const a = StringUtils.regexExec(/\\$\\{.*?\\}/g, text);\n // const a = StringUtils.regexExec(/[$#]\\{.*?\\}/g, text);\n // const a = StringUtils.betweenRegexpStr('[$#]\\\\{', '\\\\}', text); // <--TODO: \uB098\uC911\uC5D0..\n const groups = RawSet.expressionGroups(text);\n const map = groups.map(it => ({uuid: `${RandomUtils.alphabet(40)}_${obj?.constructor?.name}`, content: it[0], regexArr: it}));\n let lasterIndex = 0;\n for (let i = 0; i < map.length; i++) {\n const it = map[i];\n // console.log('itttttttttttt', it);\n const regexArr = it.regexArr;\n // \uC911\uC694: text\uACBD\uC6B0 asdasd ${this.name}$ \uC774\uB807\uAC8C \uC788\uB2E4\uBA74 \uC55E\uBD80\uBD84 asdasd <-- \uC774\uBD80\uBD84\uC740 \uC0B4\uB824\uC57C\uB418\uB2C8\uAE50 \uC544\uB798\uCC98\uB7FC \uC9DC\uB984\n const preparedText = regexArr.input.substring(lasterIndex, regexArr.index);\n // const preparedText = regexArr[1];\n // const start = config.window.document.createElement('meta');\n // start.setAttribute('id', `${it.uuid}-start`);\n // const end = config.window.document.createElement('meta');\n // end.setAttribute('id', `${it.uuid}-end`);\n let type: RawSetType;\n if (currentNode.parentNode && currentNode.parentNode.nodeName.toUpperCase() === 'STYLE') {\n type = RawSetType.STYLE_TEXT;\n } else {\n type = RawSetType.TEXT;\n }\n const node = document.createTextNode(preparedText);\n const startEndPoint = RawSet.createStartEndPoint({id: it.uuid, type}, config);\n // layout setting\n // console.log('createTextNode', node);\n template.content.append(node); // expression \uC55E \uBD80\uBD84 \uB123\uC5B4\uC918\uC57C \uC55E\uBD80\uBD84 \uC77C\uBC18 text \uC548\uC9E4\uB9B0\uB2E4.\n template.content.append(startEndPoint.start); // add start checkpoint\n template.content.append(startEndPoint.end); // add end checkpoint\n\n // content \uC548\uCABD RawSet render \uD560\uB54C start \uC640 end \uC0AC\uC774\uC5D0 fragment \uC5F0\uC0B0\uD574\uC11C \uB4E4\uC5B4\uAC04\uB2E4.\n const fragment = config.window.document.createDocumentFragment();\n fragment.append(config.window.document.createTextNode(it.content));\n // (startEndPoint.start as any).khh = RandomUtils.decimal(0,10)\n pars.push(new RawSet(it.uuid, type, {\n start: startEndPoint.start,\n node: currentNode,\n end: startEndPoint.end,\n parent: currentNode.parentNode,\n // thisVariableName: thisVariableName\n }, {fragment: fragment, config: config}));\n lasterIndex = regexArr.index + it.content.length;\n }\n template.content.append(config.window.document.createTextNode(text.substring(lasterIndex, text.length)));\n currentNode?.parentNode?.replaceChild(template.content, currentNode); // <-- \uC5EC\uAE30\uC11C text\uB97C fragment\uB85C replace\uD588\uAE30\uB54C\uBB38\uC5D0 \uCD94\uC801 \uBCC0\uACBD\uC774 \uAC00\uB2A5\uD558\uB2E4.\n } else if (currentNode.nodeType === Node.ELEMENT_NODE) {\n // const uuid = `${RandomUtils.alphabet(40)}___${obj?.constructor?.name}`;\n const uuid = `${RandomUtils.alphabet(40)}`;\n const element = currentNode as Element;\n const fragment = config.window.document.createDocumentFragment();\n const elementType: RawSetType = RawSetType.TARGET_ELEMENT;\n const startEndPoint = RawSet.createStartEndPoint({node: element, id: uuid, type: elementType}, config);\n // \uC5EC\uAE30\uC11C \uB4F1\uB85D\uD55C component \uCD94\uAC00\uD55C\uB2E4.\n const targetElementIs = element.getAttribute(RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME);\n const targetElementNames = config.targetElements?.map(it => it.name.toLowerCase()) ?? [];\n const isElement = targetElementNames.includes(element.tagName.toLowerCase()) || targetElementNames.includes(targetElementIs?.toLowerCase() as any);\n // if (isElement) {\n // (element as HTMLElement).style.display = 'none'\n // }\n // const isElement = targetElementNames.includes(element.tagName.toLowerCase());\n const targetAttrNames = (config.targetAttrs?.map(it => it.name) ?? []).concat(RawSet.DR_ATTRIBUTES);\n const isAttr = element.getAttributeNames().filter(it => targetAttrNames.includes(it.toLowerCase())).length > 0;\n currentNode?.parentNode?.insertBefore(startEndPoint.start, currentNode);\n currentNode?.parentNode?.insertBefore(startEndPoint.end, currentNode.nextSibling);\n fragment.append(currentNode);\n // const tempDiv = document.createElement('div');\n // tempDiv.appendChild(fragment.cloneNode(true)); // fragment \uBCF5\uC0AC\uBCF8 \uCD94\uAC00\n // console.log('------',tempDiv.innerHTML);\n // console.log();\n const rawSet = new RawSet(uuid, isElement ? elementType : (isAttr ? RawSetType.TARGET_ATTR : RawSetType.UNKOWN), {\n start: startEndPoint.start,\n node: currentNode,\n end: startEndPoint.end,\n parent: currentNode.parentNode,\n // thisVariableName: thisVariableName\n }, {config: config, fragment: fragment});\n pars.push(rawSet);\n }\n }\n // console.log('parsparsparsparsparsparsparsparsparspars', pars);\n return pars;\n }\n\n public static createStartEndPoint(data: { node?: Node, id: string, type: RawSetType }, config: DomRenderConfig) {\n if (data.type === RawSetType.TARGET_ELEMENT && data.node) {\n const element = data.node as Element;\n const start: HTMLMetaElement = config.window.document.createElement('meta');\n const end: HTMLMetaElement = config.window.document.createElement('meta');\n start.setAttribute('id', `${data.id}-start`);\n start.setAttribute('dr-start-point', '');\n const keys = element.getAttribute(RawSet.DR_KEY_OPTIONNAME);\n const thisPropertyType = element.getAttribute(RawSet.DR_THIS_PROPERTY_NAME);\n if (thisPropertyType) {\n start.setAttribute('type', RawSetOperatorType.DR_THIS_PROPERTY);\n }\n if (keys) {\n element.removeAttribute(RawSet.DR_KEY_OPTIONNAME);\n start.setAttribute(RawSet.DR_KEY_OPTIONNAME, keys);\n }\n end.setAttribute('id', `${data.id}-end`);\n end.setAttribute('dr-end-point', '');\n return {start, end};\n } else if (data.type === RawSetType.STYLE_TEXT) {\n return {\n start: config.window.document.createTextNode(`/*start text ${data.id}*/`),\n end: config.window.document.createTextNode(`/*end text ${data.id}*/`)\n };\n } else { // text\n return {\n start: config.window.document.createComment(`start text ${data.id}`),\n end: config.window.document.createComment(`end text ${data.id}`)\n };\n }\n }\n\n public remove() {\n this.childAllRemove();\n this.point.end.remove();\n this.point.start.remove();\n }\n\n public childAllRemove() {\n let next = this.point.start.nextSibling;\n while (next) {\n if (next === this.point.end) {\n break;\n }\n next.remove();\n next = this.point.start.nextSibling;\n }\n }\n\n public childs(stopNext?: (node: Node) => boolean) {\n const childs: any[] = [];\n let next = this.point.start.nextSibling;\n while (next && next !== this.point.end) {\n if (stopNext?.(next)) {\n return;\n }\n childs.push(next);\n next = next.nextSibling;\n }\n return childs;\n }\n\n public getHasRawSet(key: string) {\n let rawSet: RawSet | undefined;\n this.childs((node) => {\n const drKey = (node as Element).getAttribute?.(RawSet.DR_KEY_OPTIONNAME);\n if (drKey && drKey === key) {\n rawSet = (node as any).rawSet as RawSet;\n return true;\n }\n return false;\n });\n return rawSet;\n }\n\n public static drItOtherEncoding(element: Element | DocumentFragment, postFix?: string) {\n\n const random = RandomUtils.uuid() + postFix;\n const regex = /#it#/g;\n element.querySelectorAll(`[${RawSet.DR_IT_OPTIONNAME}], [${RawSet.DR_FOR_OF_NAME}], [${RawSet.DR_REPEAT_NAME}], [${RawSet.DR_APPENDER_NAME}]`).forEach(it => {\n it.innerHTML = it.innerHTML.replace(regex, random);\n });\n return random;\n }\n\n public static drItOtherDecoding(element: Element | DocumentFragment, random: string) {\n element.querySelectorAll(`[${RawSet.DR_IT_OPTIONNAME}], [${RawSet.DR_FOR_OF_NAME}], [${RawSet.DR_REPEAT_NAME}], [${RawSet.DR_APPENDER_NAME}]`).forEach(it => {\n it.innerHTML = it.innerHTML.replace(RegExp(random, 'g'), '#it#');\n });\n }\n\n public static drVarDecoding(element: Element, vars: { name: string, value: string, regex: RegExp, random: string }[]) {\n element.querySelectorAll(`[${RawSet.DR_THIS_NAME}]`).forEach(it => {\n vars.filter(vit => vit.value && vit.name).forEach(vit => {\n it.innerHTML = it.innerHTML.replace(RegExp(vit.random, 'g'), vit.value);\n });\n });\n }\n\n public static replaceInnerHTML(element: Element, config: { asIs: string | RegExp, toBe?: string }): string {\n const innerHTML = element.innerHTML;\n const tobe = config.toBe = config.toBe ?? RandomUtils.uuid();\n if (config.asIs instanceof RegExp) {\n element.innerHTML = innerHTML.replace(config.asIs, config.toBe);\n } else {\n element.innerHTML = innerHTML.replaceAll(config.asIs, config.toBe);\n }\n return tobe;\n }\n\n public static drThisEncoding(element: Element, drThis: string, config: { asIs: RegExp, toBe?: string }): string {\n const thisRandom = config.toBe = config?.toBe ?? RandomUtils.uuid();\n // const thisRegex = /(?<!(dr-|\\.))this(?=.?)/g;\n // const thisRegex = /[^(dr\\-)]this(?=.?)/g;\n // const thisRegex = /[^(dr\\-)]this\\./g;\n // safari \uB54C\uBB38\uC5D0 \uC804\uC704 \uAC80\uC0C9 regex\uAC00 \uC548\uB428 \uC544 \uC9DC\uC99D\uB098\uC11C \uC774\uAC78\uB85C\uD568.\n // element.querySelectorAll(`[${RawSet.DR_PRE_NAME}]`).forEach(it => {\n // let message = it.innerHTML;\n // })\n element.querySelectorAll(`[${RawSet.DR_PRE_NAME}]`).forEach(it => {\n it.innerHTML = it.innerHTML.replace(config.asIs, thisRandom);\n });\n element.querySelectorAll(`[${RawSet.DR_THIS_NAME}]`).forEach(it => {\n // console.log('rrrrrrrrand?', drThis,config);\n let message = it.innerHTML;\n // StringUtils.regexExec(/([^(dr\\-)])?this(?=.?)/g, message).reverse().forEach(it => {\n StringUtils.regexExec(config.asIs, message).reverse().forEach(it => {\n message = message.substr(0, it.index) + message.substr(it.index).replace(it[0], `${it[1] ?? ''}${drThis}`);\n });\n it.innerHTML = message;\n });\n\n // console.log('changggg', element.innerHTML);\n let message = element.innerHTML;\n StringUtils.regexExec(config.asIs, message).reverse().forEach(it => {\n message = message.substr(0, it.index) + message.substr(it.index).replace(it[0], `${it[1] ?? ''}${drThis}`);\n });\n element.innerHTML = message;\n return thisRandom;\n }\n\n public static drThisBindEncoding(element: Element, variable: RegExp, config: { config: DomRenderConfig, otherReplaceVariablePath?: string }) {\n element.querySelectorAll(`[${RawSet.DR_THIS_NAME}]`).forEach(eIt => {\n let message = eIt.innerHTML;\n // StringUtils.regexExec(/([^(dr\\-)])?this(?=.?)/g, message).reverse().forEach(it => {\n StringUtils.regexExec(variable, message).reverse().forEach(it => {\n message = message.substr(0, it.index) + message.substr(it.index).replace(it[0], `${it[1] ?? ''}${eIt.getAttribute(RawSet.DR_THIS_NAME)}`);\n });\n eIt.innerHTML = message;\n });\n\n\n const targetElements = config.config.targetElements ?? [];\n const targetElementNames = targetElements.map(it => it.name.replaceAll('.', '\\\\.').replaceAll(':', '\\\\:')).join(',');\n const thisRandom = RandomUtils.uuid();\n element.querySelectorAll(targetElementNames).forEach(it => {\n it.innerHTML = it.innerHTML.replace(variable, thisRandom);\n });\n\n element.querySelectorAll(`[${RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME}]`).forEach(it => {\n it.innerHTML = it.innerHTML.replace(variable, thisRandom);\n })\n\n\n if (config.otherReplaceVariablePath) {\n let message = element.innerHTML;\n StringUtils.regexExec(variable, message).reverse().forEach(it => {\n message = message.substr(0, it.index) + message.substr(it.index).replace(it[0], `${it[1] ?? ''}${config.otherReplaceVariablePath}`);\n });\n element.innerHTML = message;\n }\n return thisRandom;\n }\n\n public static drThisBindDecoding(element: Element, config: { asIs: string, toBe: string, config: DomRenderConfig }) {\n const targetElements = config.config.targetElements ?? [];\n const targetElementNames = targetElements.map(it => it.name.replaceAll('.', '\\\\.').replaceAll(':', '\\\\:')).join(',');\n element.querySelectorAll(targetElementNames).forEach(it => {\n it.innerHTML = it.innerHTML.replace(RegExp(config.asIs, 'g'), config.toBe);\n });\n element.querySelectorAll(`[${RawSet.DR_REPLACE_TARGET_ELEMENT_IS_NAME}]`).forEach(it => {\n it.innerHTML = it.innerHTML.replace(RegExp(config.asIs, 'g'), config.toBe);\n })\n }\n\n public static drThisDecoding(element: Element, config: { asIs: string, toBe: string }) {\n element.querySelectorAll(`[${RawSet.DR_PRE_NAME}]`).forEach(it => {\n it.innerHTML = it.innerHTML.replace(RegExp(config.asIs, 'g'), config.toBe);\n });\n element.querySelectorAll(`[${RawSet.DR_THIS_NAME}]`).forEach(it => {\n it.innerHTML = it.innerHTML.replace(RegExp(config.asIs, 'g'), config.toBe);\n });\n }\n\n public static drFormOtherMoveAttr(element: Element, as: string, to: string, config: DomRenderConfig) {\n element.querySelectorAll(`[${RawSet.DR_FORM_NAME}]`).forEach(subElement => {\n const nodeIterator = config.window.document?.createNodeIterator(subElement, NodeFilter.SHOW_ELEMENT, {\n acceptNode(node) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node as Element;\n return element.hasAttribute(as) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_REJECT;\n } else {\n return NodeFilter.FILTER_REJECT;\n }\n }\n });\n\n let node;\n // eslint-disable-next-line no-cond-assign\n while (node = nodeIterator?.nextNode()) {\n const element = node as Element;\n element.setAttribute(to, element.getAttribute(as) ?? '');\n element.removeAttribute(as);\n }\n });\n }\n\n public static drVarEncoding(element: Element, drVarOption: string) {\n const vars = (drVarOption?.split(',') ?? []).map(it => {\n const s = it.trim().split('=');\n const name = s[0]?.trim();\n const value = s[1]?.trim();\n return {\n name,\n value,\n // regex: RegExp('(?<!(dr-|\\\\.))var\\\\.' + s[0] + '(?=.?)', 'g'),\n regex: RegExp('\\\\$var\\\\.' + name + '(?=.?)', 'g'),\n random: RandomUtils.uuid()\n };\n });\n // console.log('asd', element.innerHTML);\n // element.querySelectorAll(`[${RawSet.DR_THIS_NAME}]`).forEach(it => {\n element.querySelectorAll(`[${RawSet.DR_VAR_OPTIONNAME}]`).forEach(it => {\n vars.filter(vit => vit.value && vit.name).forEach(vit => {\n it.innerHTML = it.innerHTML.replace(vit.regex, vit.random);\n });\n });\n vars.filter(vit => vit.value && vit.name).forEach(vit => {\n element.innerHTML = element.innerHTML.replace(vit.regex, vit.value);\n });\n return vars;\n }\n\n public static async drThisCreate(rawSet: RawSet, element: Element, drThis: string, drVarOption: string, drStripOption: boolean | string | null, obj: any, config: DomRenderConfig, set?: ComponentSet): Promise<DocumentFragment|undefined> {\n // console.log('ttttttttttttttttttttt',element.innerHTML, drThis, set, obj);\n const fag = config.window.document?.createDocumentFragment();\n if(!fag) {\n return ;\n }\n const targetElement = element.cloneNode(true) as Element;\n let targetObj = obj;\n if (set) {\n targetObj = set.obj;\n set.setTemplateStyle(await RawSet.fetchTemplateStyle(set));\n const style = RawSet.generateStyleTransform(set.styles ?? [], rawSet.uuid, true);\n targetElement.innerHTML = style + (set.template ?? '');\n } else {\n targetObj = ScriptUtils.evaluateReturn(ObjectUtils.Path.toOptionalChainPath(drThis), obj);\n }\n\n const componentKey = rawSet.uuid;\n const renderScript = ` /*drThisCreate*/\n // console.log('-----', this.__render);\n var ${EventManager.RENDER_VARNAME} = this.__render; \n var ${EventManager.RAWSET_VARNAME} = this.__render.rawSet; \n var ${EventManager.COMPONENT_VARNAME} = this.__render.component; \n var ${EventManager.ELEMENT_VARNAME} = this.__render.element; \n var ${EventManager.ROUTER_VARNAME} = this.__render.router; \n var ${EventManager.INNER_HTML_VARNAME} = this.__render.innerHTML; \n var ${EventManager.ATTRIBUTE_VARNAME} = this.__render.attribute; \n var ${EventManager.PARENT_THIS_PATH_VARNAME} = this.__render.parentThisPath; \n var ${EventManager.CURRENT_THIS_VARNAME} = this.__render.currentThis; \n var ${EventManager.CURRENT_THIS_PATH_VARNAME} = this.__render.currentThisPath; \n var ${EventManager.PARENT_THIS_VARNAME} = this.__render.parentThis; \n var ${EventManager.NEAR_THIS_PATH_VARNAME} = this.__render.nearThisPath; \n var ${EventManager.NEAR_THIS_VARNAME} = this.__render.nearThis; \n var ${EventManager.CREATOR_META_DATA_VARNAME} = this.__render.creatorMetaData;\n `;\n\n const parentThisPath = rawSet.findParentThisPath();\n const parentThis = rawSet.findParentThis(obj);\n const nearThisPath = rawSet.findNearThisPath();\n const nearThis = rawSet.findNearThis(obj);\n // console.log('ttttttttttttttttt',parentThisPath, parentThis, nearThisPath, nearThis);\n // console.log('-element.innerHTMLelement.innerHTMLelement.innerHTML',element.innerHTML);\n let render = {\n renderScript: renderScript,\n element: element,\n getElement: () => config.window.document.querySelector(`[class*=\"${rawSet.uuid}\"]`),\n innerHTML: element.innerHTML,\n // attribute: ObjectUtils.toDeleteKey(attribute, [...Object.values(RawSet.drAttrsOriginName), ...Object.values(EventManager.VARNAMES)]),\n rawSet: rawSet,\n router: config.router,\n componentKey: componentKey,\n currentThis: targetObj,\n currentThisPath: drThis,\n parentThisPath: parentThisPath,\n parentThis: parentThis,\n nearThisPath: nearThisPath,\n nearThis: nearThis,\n scripts: EventManager.setBindProperty(config.scripts ?? {}, obj)\n } as Render;\n // const attribute = DomUtils.getAttributeToObject(element);\n render.attribute = RawSet.getAttributeObject(element, {script: renderScript, obj: obj, renderData: render})\n render = Object.freeze(render);\n\n // dr-on-create data onCreateRender\n const onCreateDataScript = `return {rootParent: this, render: this.__render}`;\n const onCreateDataParam = ScriptUtils.evaluate<OnCreateRenderDataParams>(onCreateDataScript, Object.assign(obj, {__render: render}));\n if (isOnCreateRenderData(targetObj)) {\n targetObj?.onCreateRenderData(onCreateDataParam as OnCreateRenderDataParams);\n }\n // \uBD80\uBAA8\uC5D0\uAC8C\uB3C4 \uC790\uC2DD this \uC0DD\uC131\uB41C\uAC70 \uC54C\uB824\uC8FC\uB294 callback\n if (onCreateDataParam?.render?.parentThis && isOnCreatedThisChild(onCreateDataParam?.render?.parentThis)) {\n onCreateDataParam.render.parentThis.onCreatedThisChild(targetObj, onCreateDataParam as OnCreateRenderDataParams);\n }\n\n\n // dr-on-create onCreateRender\n const onCreate = element.getAttribute(RawSet.DR_ON_CREATE_ARGUMENTS_OPTIONNAME);\n let createParam: any[] = [];\n if (onCreate) {\n createParam = ScriptUtils.evaluateReturn<any[]>({bodyScript:renderScript, returnScript:ObjectUtils.Path.toOptionalChainPath(onCreate)}, obj)\n if (!Array.isArray(createParam)) {\n createParam = [createParam];\n }\n }\n\n if (isOnCreateRender(targetObj)) {\n targetObj.onCreateRender(...createParam);\n }\n\n // console.log('\uB9E4\uBC88\uD0C0\uB098?');\n // \uC911\uC694 dr-normal-attr-map\n // const normalAttrMap = element.getAttribute(EventManager.normalAttrMapAttrName);\n const targetAttrObject = RawSet.getAttributeObject(element, {script: renderScript, obj: obj, renderData: render});\n if (targetAttrObject) {\n rawSet.dataSet.render ??= {};\n rawSet.dataSet.render.attribute = targetAttrObject;\n Object.entries(targetAttrObject).forEach(([key, cval], index) => {\n // console.log('ooooooooooooooooo', key, cval);\n // const script = `${renderScript} return ${value} `;\n // const cval = ScriptUtils.eval(script, Object.assign(obj, { __render: render }));\n // // element.setAttribute(key, cval);\n if (isOnChangeAttrRender(targetObj)) {\n targetObj.onChangeAttrRender(key, cval, {rawSet: rawSet});\n }\n });\n }\n\n\n // dr-on-component-init\n // const oninit = element.getAttribute(`${EventManager.attrPrefix}on-component-init`); // dr-on-component-init\n const oninit = element.getAttribute(RawSet.DR_ON_CREATED_CALLBACK_OPTIONNAME); // dr-on-component-init\n // console.log('--------drThisCreate!!!', oninit)\n if (oninit) {\n const script = `${renderScript} ${oninit} `;\n ScriptUtils.evaluate(script, Object.assign(obj, {__render: render}));\n }\n\n targetElement.querySelectorAll(EventManager.attrNames.map(it => `[${it}]`).join(',')).forEach(it => {\n it.setAttribute(EventManager.ownerVariablePathAttrName, 'this');\n });\n\n // console.log('targetElement',targetElement);\n // attribute\n // const componentName = element.getAttribute(RawSet.DR_COMPONENT_NAME_OPTIONNAME) ?? 'component';\n const componentNameReplaceKey = RandomUtils.uuid();\n // if (componentName) {\n // RawSet.replaceInnerHTML(element, {asIs: `#${componentName}#`, toBe: 'this'})\n // }\n // const innerHTMLName = element.getAttribute(RawSet.DR_COMPONENT_INNER_HTML_NAME_OPTIONNAME) ?? 'innerHTML';\n // const innerHTMLNameReplaceKey = RandomUtils.uuid();\n // if (innerHTMLName) {\n // RawSet.replaceInnerHTML(element, {asIs: `#${innerHTMLName}#`, toBe: innerHTMLNameReplaceKey})\n // }\n // \uC774\uAC78 \uC65C \uBE90\uC5C8\uC9C0... \uB2E4\uC2DC\uB123\uC5C8\uC74C \uADF8\uB7F0\uB370 \uC870\uAE08 \uB85C\uC9C1\uC774.. \uAC80\uC99D\uC774..\n const innerHTMLName = targetElement.getAttribute(RawSet.DR_COMPONENT_INNER_HTML_NAME_OPTIONNAME) ?? 'innerHTML';\n if (innerHTMLName) {\n RawSet.replaceInnerHTML(targetElement, {asIs: `#${innerHTMLName}#`, toBe: element.innerHTML})\n }\n\n // console.log('aa-asIs', targetElement.innerHTML);\n const optionThisName = targetElement.getAttribute(RawSet.DR_THIS_NAME_OPTIONNAME);\n // console.log('11111111111111', optionThisName)\n targetElement.getAttributeNames().forEach(it => targetElement.setAttribute(it, targetElement.getAttribute(it)!.replace(/#this#/g, drThis)));\n const thisRandom = this.drThisEncoding(targetElement, drThis, {asIs: /@this@/g});\n // console.log('@@@@@@@@@@@@@0', targetElement.innerHTML);\n // let thisNameRandom: string | undefined = undefined;\n if (optionThisName) {\n // console.log('-----0', element.innerHTML, '\\n', targetElement.innerHTML)\n targetElement.innerHTML = targetElement.innerHTML.replaceAll(`@${optionThisName}@`, drThis);\n // console.log('-----1', element.innerHTML, '\\n', targetElement.innerHTML)\n // thisNameRandom = this.drThisBindEncoding(targetElement, new RegExp(`@${optionThisName}@`, 'g'), {config: config, otherReplaceVariablePath: drThis});\n }\n const nearThisRandom = this.drThisBindEncoding(targetElement, /@nearThis@/g, {config: config, otherReplaceVariablePath: rawSet.findNearThisPath()});\n const parentThisRandom = this.drThisBindEncoding(targetElement, /@parentThis@/g, {config: config, otherReplaceVariablePath: rawSet.findParentThisPath()});\n // console.log('@@@@@@@@@@@@@1', targetElement.innerHTML, rawSet.findParentThisPath());\n // console.log('@@@@@@@@@@@@@-----------', rawSet.point?.parentRawSet?.point?.start, rawSet.point?.parentRawSet?.point?.start instanceof HTMLMetaElement);\n // if (rawSet.point?.parentRawSet?.point?.start instanceof HTMLMetaElement) {\n // console.log('@@@@@@@@@@@@@-----------', rawSet.point?.parentRawSet?.point?.start.getAttribute('this-path'));\n // }\n // console.log('@@@@@@@@@@@@@2', targetElement.innerHTML);\n // const nearThisRandom = this.drThisEncoding(targetElement, rawSet.findNearThisPath(), {asIs: /@nearThis@/g});\n // const parentThisRandom = this.drThisEncoding(targetElement, rawSet.findParentThisPath(), {asIs: /@parentThis@/g});\n // console.log('aa-toBe', targetElement.innerHTML);\n // console.log('------', rawSet.findNearThisPath());\n // console.log('------', rawSet.findParentThisPath());\n const vars = this.drVarEncoding(targetElement, drVarOption);\n this.drVarDecoding(targetElement, vars);\n this.drThisDecoding(targetElement, {asIs: thisRandom, toBe: '@this@'});\n // if (optionThisName && thisNameRandom)\n // this.drThisBindDecoding(targetElement, {config: config, asIs: thisNameRandom, toBe: `@${optionThisName}@`});\n this.drThisBindDecoding(targetElement, {config: config, asIs: nearThisRandom, toBe: '@nearThis@'});\n this.drThisBindDecoding(targetElement, {config: config, asIs: parentThisRandom, toBe: '@parentThis@'});\n // if (componentName) {\n // RawSet.replaceInnerHTML(element, {asIs: componentNameReplaceKey, toBe: `#${componentName}#`})\n // }\n // if (innerHTMLName) {\n // RawSet.replaceInnerHTML(targetElement, {asIs: innerHTMLNameReplaceKey, toBe: `#${innerHTMLName}#`})\n // }\n // console.log('ddddddddddddd', targetElement.innerHTML);\n if (drStripOption && (drStripOption === true || drStripOption === 'true')) {\n // console.log('------childNodes', Array.from(n.childNodes))\n Array.from(targetElement.childNodes).forEach(it => fag.append(it));\n } else {\n targetElement.classList.add(`${rawSet.uuid}`)\n fag.append(targetElement);\n }\n // (fag as any).__domrender_this_variable_name = drThis;\n // console.log('set __domrender_this_variable_name', (fag as any).__domrender_this_variable_name)\n return fag;\n }\n\n private static async fetchTemplateStyle(set: { template?: string, styles?: string | (string[]) }) {\n // const id = RandomUtils.getRandomString(20);\n const stylePromises: Promise<string>[] = [];\n const templatePromise = (set.template && set.template.startsWith('lazy://') ? (await fetch(set.template.substring(6))).text() : Promise.resolve(set.template));\n if (Array.isArray(set.styles)) {\n for (let i = 0; set.styles && i < (set.styles.length ?? 0); i++) {\n const it = set.styles[i];\n stylePromises.push(it.startsWith('lazy://') ? (await fetch(it.substring(6))).text() : Promise.resolve(it));\n }\n } else if (set.styles) {\n stylePromises.push(Promise.resolve(set.styles));\n }\n // const tempTemplate = config.window.document.createElement('template');\n // tempTemplate.innerHTML = await templatePromise;\n // const tempContainer = config.window.document.createElement('div');\n return {\n template: await templatePromise,\n styles: await Promise.all(stylePromises)\n };\n }\n\n public static createComponentTargetAttribute(name: string, getThisObj: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => any, factory: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => DocumentFragment) {\n const targetAttribute: TargetAttr = {\n name,\n callBack(element: Element, attrValue: string, obj: any, rawSet: RawSet): DocumentFragment {\n const thisObj = getThisObj(element, attrValue, obj, rawSet);\n const data = factory(element, attrValue, obj, rawSet);\n // rawSet.point.thisVariableName = (data as any).__domrender_this_variable_name;\n if (thisObj) {\n // const i = thisObj.__domrender_component_new = (thisObj.__domrender_component_new ?? new Proxy({}, new DomRenderFinalProxy())) as CreatorMetaData;\n // i.thisVariableName = rawSet.point.thisVariableName;\n // i.rawSet = rawSet;\n // i.innerHTML = element.innerHTML;\n // i.rootCreator = new Proxy(obj, new DomRenderFinalProxy());\n // i.creator = new Proxy(rawSet.point.thisVariableName ? ScriptUtils.evalReturn(rawSet.point.thisVariableName, obj) : obj, new DomRenderFinalProxy());\n }\n return data;\n }\n\n };\n return targetAttribute;\n }\n\n public static createComponentTargetElement(\n {name, objFactory, template = '', styles = [], noStrip}: {\n name: string,\n noStrip?: boolean;\n objFactory: (element: Element, obj: any, rawSet: RawSet, counstructorParam: any[]) => any,\n template?: string,\n styles?: string | (string[])\n }\n ): TargetElement {\n\n const targetElement: TargetElement = {\n name,\n styles,\n template,\n noStrip,\n async callBack(element: Element, obj: any, rawSet: RawSet, attrs: Attrs, config: DomRenderConfig): Promise<DocumentFragment | undefined> {\n const templateStyle = await RawSet.fetchTemplateStyle({template: this.template, styles: this.styles});\n this.template = templateStyle.template;\n this.styles = templateStyle.styles;\n obj.__domrender_components ??= {};\n const domrenderComponents = obj.__domrender_components;\n // debugger;\n const renderScript = ` /*createComponentTargetElement*/\n // console.log('-------------------',this.__render);\n var ${EventManager.RAWSET_VARNAME} = this.__render.rawSet; \n var ${EventManager.COMPONENT_VARNAME} = this.__render.component; \n var ${EventManager.ELEMENT_VARNAME} = this.__render.element; \n var ${EventManager.ROUTER_VARNAME} = this.__render.router; \n var ${EventManager.INNER_HTML_VARNAME} = this.__render.innerHTML; \n var ${EventManager.ATTRIBUTE_VARNAME} = this.__render.attribute; \n var ${EventManager.PARENT_THIS_PATH_VARNAME} = this.__render.parentThisPath; \n var ${EventManager.PARENT_THIS_VARNAME} = this.__render.parentThis; \n var ${EventManager.NEAR_THIS_PATH_VARNAME} = this.__render.nearThisPath; \n var ${EventManager.NEAR_THIS_VARNAME} = this.__render.nearThis; \n var ${EventManager.CREATOR_META_DATA_VARNAME} = this.__render.creatorMetaData;\n `;\n const parentThisPath = rawSet.findParentThisPath();\n const parentThis = rawSet.findParentThis(obj);\n const nearThisPath = rawSet.findNearThisPath();\n const nearThis = rawSet.findNearThis(obj);\n let render = {\n renderScript,\n element: element,\n innerHTML: element.innerHTML,\n // attribute: attribute,\n getElement: () => config.window.document.querySelector(`[class*=\"${rawSet.uuid}\"]`),\n rawSet: rawSet,\n router: config.router,\n componentKey: rawSet.uuid,\n nearThisPath: nearThisPath,\n nearThis: nearThis,\n parentThisPath: parentThisPath,\n parentThis: parentThis,\n scripts: EventManager.setBindProperty(config.scripts ?? {}, obj)\n } as Render;\n const constructor = element.getAttribute(RawSet.DR_ON_CONSTRUCTOR_ARGUMENTS_OPTIONNAME);\n let constructorParam = [];\n // script \uBD80\uBD84\uC740 \uCC98\uB9AC\uB418\uC5B4 \uBC14\uC778\uB529 \uC2DC\uCF1C\uC900\uB2E4\n render.attribute = RawSet.getAttributeObject(element, {script: renderScript, obj: obj, renderData: render})\n render = Object.freeze(render);\n //\n // // dr-constructor\n if (constructor) {\n let param = ScriptUtils.evaluateReturn({bodyScript: renderScript, returnScript: ObjectUtils.Path.toOptionalChainPath(constructor)}, Object.assign(obj, {__render: render})) ?? [];\n if (!Array.isArray(param)) {\n param = [param];\n }\n constructorParam = param;\n }\n\n\n // // console.log('------22', attrs);\n const instance = domrenderComponents[rawSet.uuid] = objFactory(element, obj, rawSet, constructorParam);\n render = {\n currentThis: instance,\n // creatorMetaData: i,\n ...render\n };\n rawSet.dataSet.render = render;\n // \uCD94\uC801 \uBC0F destroy \uC704\uD574.\n instance.__rawSet = rawSet;\n\n //\n // const i = instance.__domrender_component_new = (instance.__domrender_component_new ?? new Proxy({}, new DomRenderFinalProxy())) as CreatorMetaData;\n // i.thisVariableName = rawSet.point.thisVariableName;\n // i.thisFullVariableName = `this.__domrender_components.${componentKey}`;\n // i.componentKey = componentKey;\n // i.rawSet = rawSet;\n // i.attribute = attribute;\n // i.router = config.router;\n // i.scripts = render.scripts;\n // i.drAttrs = attrs;\n // i.innerHTML = element.innerHTML;\n // i.rootCreator = new Proxy(obj, new DomRenderFinalProxy());\n // i.creator = new Proxy(rawSet.point.thisVariableName ? ScriptUtils.evalReturn(rawSet.point.thisVariableName, obj) : obj, new DomRenderFinalProxy());\n // this.__creatorMetaData = i;\n // render = {\n // component: instance,\n // creatorMetaData: i,\n // ...render\n // };\n //\n // // \uC911\uC694 dr-normal-attr-map\n // const normalAttrMap = element.getAttribute(EventManager.normalAttrMapAttrName);\n // if (isOnChangeAttrRender(instance) && normalAttrMap) {\n // new Map<string, string>(JSON.parse(normalAttrMap)).forEach((value, key) => {\n // const script = `${renderScript} return ${value} `;\n // const cval = ScriptUtils.eval(script, Object.assign(obj, { __render: render }));\n // // element.setAttribute(key, cval);\n // instance.onChangeAttrRender(key, cval);\n // });\n // }\n //\n // // dr-on-create data\n // const onCreateDataScript = `return {rootParent: this, render: this.__render}`;\n // const onCreateDataParam = ScriptUtils.eval(onCreateDataScript, Object.assign(obj, { __render: render }));\n // if (isOnCreateRenderData(instance)) {\n // instance?.onCreateRenderData(onCreateDataParam);\n // }\n //\n // // dr-on-create onCreateRender\n // const onCreate = element.getAttribute(RawSet.DR_ON_CREATE_ARGUMENTS_OPTIONNAME);\n // this.__render = render;\n // let createParam = [];\n // if (onCreate) {\n // const script = `${renderScript} return ${onCreate} `;\n // createParam = ScriptUtils.eval(script, Object.assign(obj, { __render: render }));\n // if (!Array.isArray(createParam)) {\n // createParam = [createParam];\n // }\n // }\n // if (isOnCreateRender(instance)) {\n // instance?.onCreateRender?.(...createParam);\n // }\n let applayTemplate = element.innerHTML;\n let innerHTMLThisRandom;\n const componentName = element.getAttribute(RawSet.DR_COMPONENT_NAME_OPTIONNAME) ?? 'component';\n const innerHTMLName = element.getAttribute(RawSet.DR_COMPONENT_INNER_HTML_NAME_OPTIONNAME) ?? 'innerHTML';\n if (applayTemplate) {\n // if (rawSet.point.thisVariableName) {\n // \uB118\uC5B4\uC628 innerHTML\uC5D0 this\uAC00 \uC788\uC73C\uBA74 \uD574\uB2F9\uC548\uB418\uAC8C \uC6B0\uC120 \uCE58\uD658.\n innerHTMLThisRandom = RandomUtils.uuid();\n applayTemplate = applayTemplate.replace(/this\\./g, innerHTMLThisRandom);\n // }\n applayTemplate = applayTemplate.replace(RegExp(`#${componentName}#`, 'g'), 'this');\n }\n // applayTemplate = template.replace(RegExp(`#${innerHTMLName}#`, 'g'), applayTemplate);\n applayTemplate = (this.template ?? '').replace(RegExp(`#${innerHTMLName}#`, 'g'), applayTemplate);\n // dr-on-component-init\n // const oninit = element.getAttribute(`${EventManager.attrPrefix}on-component-init`); // dr-on-component-init\n // const oninit = element.getAttribute(RawSet.DR_ON_CREATED_CALLBACK_OPTIONNAME); // dr-on-component-init\n // if (oninit) {\n // const script = `${renderScript} ${oninit} `;\n // ScriptUtils.eval(script, Object.assign(obj, {\n // __render: render\n // }));\n // }\n\n const style = RawSet.generateStyleTransform(this.styles, rawSet.uuid, true);\n element.innerHTML = style + (applayTemplate ?? '');\n\n // \uC5EC\uAE30\uC11C targetElement\uC758 \uC637\uC744 \uBC97\uAE34\uB2E4.\n // console.log('---createComponentTargetElement', element);\n let data = await RawSet.drThisCreate(rawSet, element, `this.__domrender_components.${rawSet.uuid}`, '', !noStrip, obj, config);\n // const tempDiv = document.createElement(\"div\");\n // tempDiv.appendChild(data.cloneNode(true)); // \uC6D0\uBCF8 \uBCF4\uC874\n // console.log('-------------ddddddddddddd', element.innerHTML, tempDiv.innerHTML);\n // let data = await RawSet.drThisCreate(rawSet, element, `this.__domrender_components.${componentKey}`, '', false, obj, config);\n\n // \uB118\uC5B4\uC628 innerHTML\uC5D0 this\uAC00 \uC788\uB294\uAC78 \uB2E4\uC2DC \uBCF5\uD638\uD654\uD574\uC11C \uC81C\uB300\uB85C \uC791\uB3D9\uD558\uB3C4\uB85D\uD55C\uB2E4. \uBD80\uBAA8\uC5D0\uC11C\uC758 this\uBA74 \uBD80\uBAA8\uAEC4\uB85C \uC791\uB3D9\uB418\uAC8C\n if (data && innerHTMLThisRandom) {\n const template = config.window.document.createElement('template') as HTMLTemplateElement;\n template.content.append(data);\n template.innerHTML = template.innerHTML.replace(RegExp(innerHTMLThisRandom, 'g'), 'this.');\n data = template.content;\n }\n // (data as any).render = render;\n return data;\n }\n // complete\n };\n return targetElement;\n }\n\n public static isExpression(data: string | null) {\n // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]?[^{]*?)\\}[$#]))/g;\n const reg = /[$#]\\{([\\s\\S.]*?)\\}[$#]/g;\n return reg.test(data ?? '');\n }\n\n public static expressionGroups(data: string | null) {\n // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]*?)\\}[$#]))/g;\n // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]?[^{]*?)\\}[$#]))/g;\n const reg = /[$#]\\{([\\s\\S.]*?)\\}[$#]/g;\n return StringUtils.regexExec(reg, data ?? '');\n }\n\n public static destroy(obj: any | undefined, parameter: OnDestroyRenderParams, config: DomRenderConfig, destroyOptions: (DestroyOptionType | string)[] = []): void {\n // console.log('destroy destroydestroydestroydestroy', obj, parameter, config, destroyOptions);\n if (!destroyOptions.some(it => it === DestroyOptionType.NO_DESTROY)) {\n if (!destroyOptions.some(it => it === DestroyOptionType.NO_MESSENGER_DESTROY)) {\n if (config.messenger && obj) {\n config.messenger.deleteChannelFromObj(obj);\n }\n }\n // console.log('------------destroy', obj);\n if (isOnDestroyRender(obj)) {\n obj.onDestroyRender?.(parameter);\n }\n }\n }\n\n\n public findNearThis = (obj: any, rawSet: RawSet = this) => {\n const path = this.findNearThisPath(rawSet);\n if (path) {\n const optionalPath = ObjectUtils.Path.toOptionalChainPath(path);\n // console.log('ppppp-', path, optionalPath)\n return ScriptUtils.evaluateReturn(optionalPath, obj);\n }\n };\n\n public findParentThis = (obj: any, rawSet: RawSet = this) => {\n const path = this.findParentThisPath(rawSet);\n if (path) {\n const optionalPath = ObjectUtils.Path.toOptionalChainPath(path);\n return ScriptUtils.evaluateReturn(optionalPath, obj);\n }\n };\n\n public findNearThisPath = (rawSet: RawSet = this): string | undefined => {\n const paths = this.findThisPaths(rawSet);\n return paths[paths.length - 1];\n };\n\n public findParentThisPath = (rawSet: RawSet = this): string | undefined => {\n const paths = this.findThisPaths(rawSet);\n return paths[paths.length - 2];\n };\n\n public findThisPaths = (rawSet: RawSet = this): string[] => {\n const paths: string[] = [];\n const findPath = (rawSet: RawSet) => {\n if (rawSet && rawSet.point) {\n // jsDom\uC5D0\uC11C instranceof HTMLMetaElement\uAC00 \uC548\uBA39\uD788\uB294\uAC83\uAC19\uC544? \uAC04\uD608\uC801\uC73C\uB85C?\n if ('getAttribute' in rawSet.point.start && rawSet.point.start.getAttribute('this-path')) {\n paths.push(rawSet.point.start.getAttribute('this-path')!);\n }\n if (rawSet.point.parentRawSet)\n findPath(rawSet.point.parentRawSet);\n }\n };\n findPath(rawSet);\n paths.push('this');\n return paths.reverse();\n };\n\n public static getAttributeObject(element: Element, config: { script: string, obj: any, renderData?: any }) {\n if (!element) {\n return undefined;\n }\n const attribute = ElementUtils.getAttributeToObject(element);\n const normalAttribute = attribute[EventManager.normalAttrMapAttrName];\n if (normalAttribute) {\n new Map<string, string>(JSON.parse(normalAttribute)).forEach((v, k) => {\n const cval = ScriptUtils.evaluateReturn({bodyScript: config.script, returnScript: v}, Object.assign(config.obj, config.renderData ? {__render:config.renderData} : undefined));\n attribute[k] = cval;\n });\n }\n return attribute;\n }\n\n}\n", "export const DomRenderNoProxyKey = 'DomRender:NoProxy'\nexport const DomRenderNoProxy = (target: any, propertyKey?: string | symbol) => {\n // \uD074\uB798\uC2A4 \uB370\uCF54\uB808\uC774\uD130\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0\n if (propertyKey === undefined) {\n // target\uC740 \uD074\uB798\uC2A4 \uC0DD\uC131\uC790\n Reflect.defineMetadata(DomRenderNoProxyKey, true, target);\n return;\n }\n\n // \uD504\uB85C\uD37C\uD2F0 \uB370\uCF54\uB808\uC774\uD130\uB85C \uC0AC\uC6A9\uB41C \uACBD\uC6B0\n // target\uC740 \uD504\uB85C\uD1A0\uD0C0\uC785, propertyKey\uB294 \uD504\uB85C\uD37C\uD2F0 \uC774\uB984\n Reflect.defineMetadata(DomRenderNoProxyKey, true, target, propertyKey);\n};\n\nexport const getDomRenderNoProxy = (target: any, propertyKey?: string | symbol) => {\n // if (ValidUtils.isNotNullUndefined(target)) {\n // \uD074\uB798\uC2A4 \uB370\uCF54\uB808\uC774\uD130\n if (propertyKey === undefined) {\n return Reflect.getMetadata(DomRenderNoProxyKey, target);\n }\n // \uD504\uB85C\uD37C\uD2F0 \uB370\uCF54\uB808\uC774\uD130\n return Reflect.getMetadata(DomRenderNoProxyKey, target, propertyKey);\n // } else {\n // return undefined;\n // }\n}\n\nexport const isDomRenderNoProxy = (target: any, propertyKey?: string | symbol) => {\n return getDomRenderNoProxy(target, propertyKey) === true;\n}", "import { Subscription } from './Subscription';\nimport { Observer } from './Observer';\n\nexport class Subscriber<T, E = any> implements Subscription, Observer<T, E>{\n closed = false;\n constructor(private destination: Observer<T, E>) {\n }\n next(value: T): void {\n if (this.closed) {\n return;\n }\n this.destination.next(value);\n }\n error(err: E): void {\n if (this.closed) {\n return;\n }\n this.closed = true;\n this.destination.error(err);\n this.unsubscribe();\n }\n complete(): void {\n if (this.closed) {\n return;\n }\n this.closed = true;\n this.destination.complete();\n this.unsubscribe();\n }\n unsubscribe(): void {\n this.closed = true;\n }\n\n}", "import { Subscription } from './Subscription';\nimport { CompleteCallBack, ErrorCallBack, ObserverCallBack, Subscribable } from './Subscribable';\nimport { Observer } from './Observer';\nimport { Subscriber } from './Subscriber.';\n\nexport type OperatorFunction<T, R> = (source: Observable<T, any>) => Observable<R, any>;\n\nexport class Observable<T, E = any> implements Subscribable<T, E> {\n private _producerFunction: ((subscriber: Subscriber<T, E>) => (Subscription | (() => void) | void)) | undefined;\n\n constructor(producerFunction?: (subscriber: Subscriber<T, E>) => (Subscription | (() => void) | void)) {\n this._producerFunction = producerFunction;\n }\n\n subscribe(observer: Partial<Observer<T, E>>): Subscription;\n subscribe(d: ObserverCallBack<T>, e?: ErrorCallBack, c?: CompleteCallBack): Subscription;\n subscribe(observer: Partial<Observer<T, E>> | ObserverCallBack<T>, e?: ErrorCallBack, c?: CompleteCallBack): Subscription {\n\n const partialObserver: Partial<Observer<T, E>> = {\n next: typeof observer === 'object' ? observer.next : observer,\n error: typeof observer === 'object' ? observer.error : e,\n complete: typeof observer === 'object' ? observer.complete : c\n }\n\n // Create a new internal subscriber for this specific subscription\n const internalSubscriber = new Subscriber({\n next: (data: T) => {\n partialObserver.next?.(data);\n },\n error: (e: E) => {\n partialObserver.error?.(e);\n },\n complete: () => {\n partialObserver.complete?.();\n }\n }\n );\n\n let teardownLogic: Subscription | (() => void) | void;\n if (this._producerFunction) {\n teardownLogic = this._producerFunction(internalSubscriber);\n }\n\n let closed = false;\n return {\n get closed() {\n return closed;\n },\n unsubscribe: () => {\n // console.log('unsubscribe-->', teardownLogic)\n // Execute the teardown logic returned by the producer function\n if (typeof teardownLogic === 'function') {\n teardownLogic();\n } else if (teardownLogic && typeof teardownLogic.unsubscribe === 'function') {\n teardownLogic.unsubscribe();\n }\n closed = true;\n }\n }\n }\n\n toPromise(): Promise<T | undefined> {\n return new Promise((resolve, reject) => {\n let lastValue: T | undefined;\n let subscription: Subscription;\n\n subscription = this.subscribe({\n next: (value: T) => {\n lastValue = value;\n },\n error: (err: E) => {\n reject(err);\n subscription.unsubscribe();\n },\n complete: () => {\n resolve(lastValue);\n subscription.unsubscribe();\n }\n });\n });\n }\n\n pipe(): Observable<T, E>;\n pipe<A>(op1: OperatorFunction<T, A>): Observable<A, any>;\n pipe<A, B>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>): Observable<B, any>;\n pipe<A, B, C>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>): Observable<C, any>;\n pipe<A, B, C, D>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>): Observable<D, any>;\n pipe<A, B, C, D, E>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>): Observable<E, any>;\n pipe<A, B, C, D, E, F>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>): Observable<F, any>;\n pipe<A, B, C, D, E, F, G>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>): Observable<G, any>;\n pipe<A, B, C, D, E, F, G, H>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>): Observable<H, any>;\n pipe<A, B, C, D, E, F, G, H, I>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>): Observable<I, any>;\n pipe<A, B, C, D, E, F, G, H, I, J>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>): Observable<J, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>): Observable<K, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>): Observable<L, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>): Observable<M, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>): Observable<N, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>): Observable<O, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>): Observable<P, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>): Observable<Q, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>): Observable<R, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>): Observable<S, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>): Observable<U, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>): Observable<V, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>): Observable<W, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>): Observable<X, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>): Observable<Y, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>): Observable<Z, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>): Observable<AA, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>): Observable<AB, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>): Observable<AC, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>): Observable<AD, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>): Observable<AE, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>): Observable<AF, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>): Observable<AG, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>): Observable<AH, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>): Observable<AI, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>): Observable<AJ, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>): Observable<AK, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>): Observable<AL, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>): Observable<AM, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>): Observable<AN, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>): Observable<AO, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>): Observable<AP, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>): Observable<AQ, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>, op43: OperatorFunction<AQ, AR>): Observable<AR, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>, op43: OperatorFunction<AQ, AR>, op44: OperatorFunction<AR, AS>): Observable<AS, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>, op43: OperatorFunction<AQ, AR>, op44: OperatorFunction<AR, AS>, op45: OperatorFunction<AS, AT>): Observable<AT, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>, op43: OperatorFunction<AQ, AR>, op44: OperatorFunction<AR, AS>, op45: OperatorFunction<AS, AT>, op46: OperatorFunction<AT, AU>): Observable<AU, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>, op43: OperatorFunction<AQ, AR>, op44: OperatorFunction<AR, AS>, op45: OperatorFunction<AS, AT>, op46: OperatorFunction<AT, AU>, op47: OperatorFunction<AU, AV>): Observable<AV, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>, op43: OperatorFunction<AQ, AR>, op44: OperatorFunction<AR, AS>, op45: OperatorFunction<AS, AT>, op46: OperatorFunction<AT, AU>, op47: OperatorFunction<AU, AV>, op48: OperatorFunction<AV, AW>): Observable<AW, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>, op43: OperatorFunction<AQ, AR>, op44: OperatorFunction<AR, AS>, op45: OperatorFunction<AS, AT>, op46: OperatorFunction<AT, AU>, op47: OperatorFunction<AU, AV>, op48: OperatorFunction<AV, AW>, op49: OperatorFunction<AW, AX>): Observable<AX, any>;\n pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX, AY>(op1: OperatorFunction<T, A>, op2: OperatorFunction<A, B>, op3: OperatorFunction<B, C>, op4: OperatorFunction<C, D>, op5: OperatorFunction<D, E>, op6: OperatorFunction<E, F>, op7: OperatorFunction<F, G>, op8: OperatorFunction<G, H>, op9: OperatorFunction<H, I>, op10: OperatorFunction<I, J>, op11: OperatorFunction<J, K>, op12: OperatorFunction<K, L>, op13: OperatorFunction<L, M>, op14: OperatorFunction<M, N>, op15: OperatorFunction<N, O>, op16: OperatorFunction<O, P>, op17: OperatorFunction<P, Q>, op18: OperatorFunction<Q, R>, op19: OperatorFunction<R, S>, op20: OperatorFunction<S, U>, op21: OperatorFunction<U, V>, op22: OperatorFunction<V, W>, op23: OperatorFunction<W, X>, op24: OperatorFunction<X, Y>, op25: OperatorFunction<Y, Z>, op26: OperatorFunction<Z, AA>, op27: OperatorFunction<AA, AB>, op28: OperatorFunction<AB, AC>, op29: OperatorFunction<AC, AD>, op30: OperatorFunction<AD, AE>, op31: OperatorFunction<AE, AF>, op32: OperatorFunction<AF, AG>, op33: OperatorFunction<AG, AH>, op34: OperatorFunction<AH, AI>, op35: OperatorFunction<AI, AJ>, op36: OperatorFunction<AJ, AK>, op37: OperatorFunction<AK, AL>, op38: OperatorFunction<AL, AM>, op39: OperatorFunction<AM, AN>, op40: OperatorFunction<AN, AO>, op41: OperatorFunction<AO, AP>, op42: OperatorFunction<AP, AQ>, op43: OperatorFunction<AQ, AR>, op44: OperatorFunction<AR, AS>, op45: OperatorFunction<AS, AT>, op46: OperatorFunction<AT, AU>, op47: OperatorFunction<AU, AV>, op48: OperatorFunction<AV, AW>, op49: OperatorFunction<AW, AX>, op50: OperatorFunction<AX, AY>): Observable<AY, any>;\n pipe(...operators: OperatorFunction<any, any>[]): Observable<any, any> {\n if (operators.length === 0) {\n return this as any;\n }\n return operators.reduce((prev, operator) => operator(prev), this as any);\n }\n}", "import { Observable } from '@dooboostore/core/message/Observable';\n\nexport namespace DocumentUtils {\n\n export const querySelectorAllByAttributeName = (document: Document | Element, attributeName: string): {element: Element, value: string | null}[] =>{\n const elements: {element:Element, value: (string | null)}[] = [];\n document.querySelectorAll(`[${attributeName}]`)?.forEach((element) => {\n elements.push({element: element, value: element.getAttribute(attributeName)});\n });\n return elements;\n }\n export const eventObservable = <K extends keyof WindowEventMap>(document: Document, type: K, options?: boolean | AddEventListenerOptions): Observable<WindowEventMap[K]> => {\n return new Observable<WindowEventMap[K]>((subscriber) => {\n const handler = (event: WindowEventMap[K]) => subscriber.next(event);\n window.addEventListener(type, handler, options);\n return () => {\n window.removeEventListener(type, handler, options);\n };\n });\n }\n}", "export interface OnBeforeReturnSet {\n onBeforeReturnSet(name: string, value: any, fullPath?: string[]): void;\n}\nexport function isOnBeforeReturnSet(obj: any): obj is OnBeforeReturnSet {\n return typeof obj?.onBeforeReturnSet === 'function';\n}\n", "import { RawSet } from '../rawsets/RawSet';\n\nexport interface OnChildRenderedByProperty {\n onChildRenderedByProperty(key: string, value: any): void;\n}\n\nexport function isOnChildRenderedByProperty(obj: any): obj is OnChildRenderedByProperty {\n return typeof obj?.onChildRenderedByProperty === 'function';\n}", "import {DomRenderConfig} from '../configs/DomRenderConfig';\n\nexport interface OnProxyDomRender {\n onProxyDomRender(config: DomRenderConfig): void;\n}\nexport const isOnProxyDomRender = (obj: any): obj is OnProxyDomRender =>\n typeof obj?.onProxyDomRender === 'function';", "import { RawSet } from './rawsets/RawSet';\nimport { EventManager } from './events/EventManager';\nimport { DomRenderConfig } from './configs/DomRenderConfig';\nimport { ScriptUtils } from '@dooboostore/core-web/script/ScriptUtils';\nimport { DomRenderFinalProxy, Shield } from './types/Types';\nimport { RawSetType } from './rawsets/RawSetType';\nimport { DrThisProperty } from './operators/DrThisProperty';\nimport { RawSetOperatorType } from './rawsets/RawSetOperatorType';\nimport { ComponentSet } from './components/ComponentSet';\nimport { DomRenderNoProxyKey, isDomRenderNoProxy } from './decorators/DomRenderNoProxy';\nimport { isOnCreateRender } from './lifecycle/OnCreateRender';\nimport { isOnInitRender } from './lifecycle/OnInitRender';\nimport { isOnCreateRenderData } from './lifecycle/OnCreateRenderData';\nimport { isOnChangeAttrRender } from './lifecycle/OnChangeAttrRender';\nimport { DocumentUtils } from '@dooboostore/core-web/document/DocumentUtils';\nimport { isDefined } from '@dooboostore/core/types';\nimport { isOnBeforeReturnSet } from './lifecycle/OnBeforeReturnSet';\nimport { isOnChildRenderedByProperty } from './lifecycle/OnChildRenderedByProperty';\nimport { ObjectUtils } from '@dooboostore/core/object/ObjectUtils';\nimport {ValidUtils} from '@dooboostore/core/valid/ValidUtils'\nimport { isOnProxyDomRender } from './lifecycle/OnProxyDomRender';\n\nconst excludeGetSetPropertys = ['onBeforeReturnGet', 'onBeforeReturnSet', '__domrender_components', '__render', '_DomRender_isFinal', '_domRender_ref', '_rawSets', '_domRender_proxy', '_targets', '_DomRender_origin', '_DomRender_ref', '_DomRender_proxy'];\nexport const isWrapProxyDomRenderProxy = <T>(obj: T): boolean => {\n return obj && typeof obj === 'object' && ('_DomRender_isProxy' in obj);\n};\nexport const getDomRenderOriginObject = <T>(obj: T):T => {\n if (isWrapProxyDomRenderProxy(obj)) {\n return (obj as any)._domRender_origin;\n }\n return obj;\n}\nexport const getDomRenderConfig = (obj: any): DomRenderConfig | undefined => {\n if (isWrapProxyDomRenderProxy(obj)) {\n return obj._domRender_config;\n }\n return undefined;\n}\n//@ts-ignore\nexport const getDomRenderProxy = <T>(obj: T): DomRenderProxy<T> | undefined => {\n if (isWrapProxyDomRenderProxy(obj)) {\n //@ts-ignore\n return (obj as any)._domRender_proxy as DomRenderProxy<T>;\n }\n return undefined;\n}\nexport class DomRenderProxy<T extends object> implements ProxyHandler<T> {\n public _domRender_ref = new Map<object, Set<string>>();\n public _rawSets = new Map<string, Set<RawSet>>();\n public _domRender_proxy?: T;\n // public _firstTarget: Node;\n public _targets = new Set<Node>();\n\n constructor(public _domRender_origin: T, target: Node | null | undefined, public _domRender_config: DomRenderConfig) {\n if (target) {\n this._targets.add(target);\n // this._firstTarget = target;\n }\n\n // setInterval(() => {\n // this._rawSets.forEach(it => {\n // Array.from(it).forEach(it => {\n // console.log(it, it.isConnected)\n // })\n // });\n // }, 1000)\n }\n\n public static unFinal<T = any>(obj: T): T {\n return DomRenderFinalProxy.unFinal(obj);\n }\n\n public static final<T = any>(obj: T): T {\n return DomRenderFinalProxy.final(obj);\n }\n\n public static isFinal<T = any>(obj: T) {\n return DomRenderFinalProxy.isFinal(obj);\n }\n\n public run(objProxy: T) {\n this._domRender_proxy = objProxy;\n if (isOnProxyDomRender(objProxy)) {\n objProxy.onProxyDomRender(this._domRender_config);\n }\n const obj = getDomRenderOriginObject<any>(objProxy);\n if (obj) {\n Object.keys(obj).forEach(it => {\n // Reflect \uBA54\uD0C0\uB370\uC774\uD130\uC5D0\uC11C domRender:NoProxy \uC5EC\uBD80 \uD655\uC778\n try {\n const isNoProxy = Reflect.getMetadata(DomRenderNoProxyKey, obj, it) || Reflect.getMetadata(DomRenderNoProxyKey, Object.getPrototypeOf(obj).constructor);\n if (isNoProxy) {\n return obj;\n }\n } catch (e) {\n }\n const target = obj[it];\n if (target !== undefined && target !== null && typeof target === 'object' && !DomRenderProxy.isFinal(target) && !Object.isFrozen(target) && !(obj instanceof Shield)) {\n const isExcluded = this._domRender_config.proxyExcludeTyps?.some(it => target instanceof it) ?? false;\n // const filter = this._domRender_config.proxyExcludeTyps?.filter(it => target instanceof it) ?? [];\n if (!isExcluded) {\n const proxyAfter = this.proxy(objProxy, target, it);\n obj[it] = proxyAfter;\n }\n }\n });\n }\n // console.log('target', this._targets);\n this._targets.forEach(target => {\n this.initRender(target);\n });\n }\n\n public initRender(target: Node, rawSet?: RawSet) {\n\n // if (target instanceof Element) {\n // target.setAttribute('dr-this', 'this');\n // const rawSets = RawSet.checkPointCreates(target, this._domRender_proxy, this.config);\n // this.render(rawSets)\n // return;\n // }\n //\n if (target instanceof Element) {\n // \uC911\uC694: \uB098\uB97C\uD1B5\uD574 \uC774\uC5B4\uC9C4\uACF3\uC758 \uC704\uCE58\uB97C \uB0A8\uACA8\uC57C\uB41C\uB2E4 \uC548\uADF8\uB7EC\uBA74 TargetElement\uB294 \uC54C\uC218 \uC788\uB294 \uBC29\uBC95\uC774 \uC5C6\uB2E4. \uC5EC\uAE30\uC11C \uD754\uC801\uC744 \uB0A8\uACA8\uC918\uC57C \uD55C\uB2E4.\n // const targetElementNames = (this.config.targetElements?.map(it => it.name.toLowerCase().replaceAll('.', '\\\\.')) ?? []).join(',');\n // Array.from(target.querySelectorAll(targetElementNames)).forEach(it => it.setAttribute(EventManager.parentVariablePathAttrName, '@this@'));\n target.innerHTML = target.innerHTML.replace(/@this@/g, 'this');\n }\n // TODO: \uD55C\uACF3\uC5D0\uC11C \uCC98\uB9AC \uD544\uC694\uD560\uB4EF.. \uB108\uBB34 \uC0B0\uBC1C\uC801\uC73C\uB85C \uC788\uC74C.\n const onCreate = (target as any).getAttribute?.(RawSet.DR_ON_CREATE_ARGUMENTS_OPTIONNAME);\n let createParam: any[] = [];\n if (onCreate) {\n createParam = ScriptUtils.evaluateReturn(onCreate, this._domRender_proxy);\n if (!Array.isArray(createParam)) {\n createParam = [createParam];\n }\n }\n\n if (isOnCreateRenderData(this._domRender_proxy)) {\n this._domRender_proxy?.onCreateRenderData({ rootParent: this._domRender_proxy });\n }\n\n if (isOnCreateRender(this._domRender_proxy)) {\n this._domRender_proxy.onCreateRender(...createParam);\n }\n\n // const innerHTML = (target as any).innerHTML ?? '';\n this._targets.add(target);\n const rawSets = RawSet.checkPointCreates(target, this._domRender_proxy, this._domRender_config);\n // console.log('initRender -------rawSet', rawSets)\n // \uC911\uC694 \uCD08\uAE30\uC5D0 \uD55C\uBC88 \uD295\uACA8\uC918\uC57C\uD568.\n this._domRender_config.eventManager.applyEvent(this._domRender_proxy, this._domRender_config.eventManager.findAttrElements(target as Element, this._domRender_config), this._domRender_config);\n rawSets.forEach(it => {\n const variables = it.getUsingTriggerVariables(this._domRender_config);\n if (variables.size <= 0) {\n this.addRawSet('', it);\n } else {\n variables.forEach(sit => {\n this.addRawSet(sit, it);\n });\n }\n });\n this.render(this.getRawSets()).then(it => {\n // const render = {target} as Render;\n // const creatorMetaData = {\n // creator: this._domRender_proxy,\n // rootCreator: this._domRender_proxy,\n // innerHTML\n // } as CreatorMetaData;\n const onInit = (target as any).getAttribute?.(RawSet.DR_ON_INIT_ARGUMENTS_OPTIONNAME);\n let initParam: any;\n if (onCreate) {\n initParam = ScriptUtils.evaluateReturn(onCreate, this._domRender_proxy);\n // if (!Array.isArray(initParam)) {\n // initParam = [initParam];\n // }\n }\n if (isOnInitRender(this._domRender_proxy)) {\n this._domRender_proxy.onInitRender(initParam, rawSet ?? {dataSet: {config: this._domRender_config}} as any);\n }\n });\n\n }\n\n public getRawSets() {\n const set = new Set<RawSet>();\n this._rawSets.forEach((v, k) => {\n v.forEach(it => set.add(it));\n });\n return Array.from(set);\n }\n\n // \uC911\uC694 important\n public async render(raws?: RawSet[] | string, fullPathStr?: string) {\n if (typeof raws === 'string') {\n const iter = this._rawSets.get(raws);\n if (iter) {\n raws = Array.from(iter);\n } else {\n raws = undefined;\n }\n }\n const removeRawSets: RawSet[] = [];\n const rawSets = raws ?? this.getRawSets();\n\n // console.log('----', rawSets);\n for (const it of rawSets as RawSet[]) {\n it.getUsingTriggerVariables(this._domRender_config).forEach(path => {\n // console.log('getUsingTriggerVariables->', path);\n this.addRawSet(path, it);\n });\n if (it.isConnected) {\n // \uC911\uC694 render\uB420\uB54C targetAttribute \uCCB4\uD06C \uD574\uC57C\uD568.\n const targetAttrMap = (it.point.node as Element)?.getAttribute?.(EventManager.normalAttrMapAttrName);\n // console.log('sssssssssSSS?',it, targetAttrMap)\n // console.log('----2', it, fullPathStr, targetAttrMap, (it.fragment as any).render, it.isConnected, this.getRawSets());\n if (it.detect?.action) {\n it.detect.action();\n // } else if (it.type === RawSetType.TARGET_ELEMENT && it.data && fullPathStr && targetAttrMap && (it.fragment as any).render) {\n } else if (it.type === RawSetType.TARGET_ELEMENT && it.dataSet?.render?.currentThis && fullPathStr && targetAttrMap) {\n new Map<string, string>(JSON.parse(targetAttrMap)).forEach((v, k) => {\n // it?.data.onChangeAttrRender(k, null, v);\n const isUsing = EventManager.isUsingThisVar(v, `this.${fullPathStr}`);\n if (isUsing) {\n const targetAttrObject = RawSet.getAttributeObject((it.point.node as Element), { script: it.dataSet?.render?.renderScript ?? '', obj: Object.assign(this._domRender_proxy ?? {}, { __render: it.dataSet?.render }) });\n it.dataSet.render??={};\n it.dataSet.render.attribute = targetAttrObject;\n // const render = it.dataSet?.render;\n // console.log('render-->!!!!!', it.dataSet.render);\n // const script = `${render.renderScript} return ${v} `;\n // const cval = ScriptUtils.eval(script, Object.assign(this._domRender_proxy ?? {}, { __render: render }));\n if (isOnChangeAttrRender(it.dataSet?.render?.currentThis)) {\n it.dataSet?.render?.currentThis?.onChangeAttrRender?.(k, targetAttrObject[k], { rawSet: it });\n }\n }\n // console.log('---?', v, fullPathStr, isUsing);\n });\n // ------------------->\n } else {\n const rawSets = await it.render(this._domRender_proxy, this._domRender_config);\n // \uADF8\uC678 \uC790\uC2DD\uB4E4 render\n if (rawSets && rawSets.length > 0) {\n await this.render(rawSets);\n }\n }\n } else {\n removeRawSets.push(it);\n }\n }\n\n if (removeRawSets.length > 0) {\n this.removeRawSet(...removeRawSets);\n }\n return this.getRawSets();\n }\n\n // domrender_ref\uB85C \uCC3E\uB294\uAC78\uB85C \uBC14\uAFC8\n // public findRootDomRenderProxy(): DomRenderProxy<any> {\n // let current:DomRenderProxy<any> = this;\n // while (current.parentProxy) {\n // current = current.parentProxy;\n // }\n // return current;\n // }\n\n public root(pathInfos: {path: string, obj: any}[][], value?: any, lastDoneExecute = true): {path: string, obj:any}[][] {\n // console.log('root--->', paths, value, this._domRender_ref, this._domRender_origin);\n const fullPaths: {path: string, obj:any}[][] = [];\n if (this._domRender_ref.size > 0) {\n this._domRender_ref.forEach((it, key) => {\n if ('_DomRender_isProxy' in key) {\n it.forEach(sit => {\n try {\n\n const concat = pathInfos.concat([[{path: sit, obj: key}]]);\n const items:{path: string, obj:any}[][] = (key as any)._DomRender_proxy?.root(concat, value, lastDoneExecute);\n\n fullPaths.push(items.flat());\n // fullPaths.push({path: items.map(it=>it.path).join(','), obj: this._domRender_proxy});\n // fullPaths.push({path: items.map(it=>it.path).join(','), obj: this._domRender_proxy});\n } catch (e) {\n // \uC624\uBE0C\uC81D\uD2B8\uB4E4 \uC5C6\uC5B4\uC84C\uC744\uC218\uB3C4\uC788\uB2E4 Destroy\uC2DC\uC810\uC5D0\uC11C \uC624\uB958\uB098\uB294\uACBD\uC6B0\uAC00 \uC788\uB2E4. \uB530\uB77C\uC11C \uCC38\uC870 \uD558\uB294\uBD80\uBD84 \uC5C6\uC5B4\uC838\uC57C\uD55C\uB2E4.\n // console.error(e)\n // it.delete(sit);\n }\n });\n }\n });\n } else {\n // const firstPathStr = paths.slice(1).reverse().join('.');\n const strings = pathInfos.reverse().map(it=>it.map(it=>it.path).join(','));\n // array\uAC19\uC740\uACBD\uC6B0\uB3C4 \uD0A4\uAC12\uC73C\uB85C \uC811\uADFC\uD558\uAE30\uB54C\uBB38\uC5D0 \uD2B9\uC815 \uC778\uB371\uC2A4\uB97C \uCC3E\uC544\uC11C \uADF8\uBD80\uBD84\uB9CC \uBC14\uAFD4\uC904\uC218 \uC788\uB2E4.\n const fullPathStr = strings.map(it => isNaN(Number(it)) ? '.' + it : `[${it}]`).join('').slice(1);\n // console.log('-------fullPathStr', fullPathStr, lastDoneExecute);\n if (lastDoneExecute) {\n // const firstData = ScriptUtils.evalReturn('this.' + firstPathStr, this._domRender_proxy);\n // console.log('-------', firstPathStr, firstData);\n // if (firstData instanceof Dictionary) {\n // }\n const iterable = this._rawSets.get(fullPathStr);\n // array check\n const front = strings.slice(0, strings.length - 1).map(it => isNaN(Number(it)) ? '.' + it : `[${it}]`).join('');\n const lastPropertyName = strings[strings.length - 1];\n const path = 'this' + front;\n const data = ScriptUtils.evaluateReturn(ObjectUtils.Path.toOptionalChainPath(path), this._domRender_proxy);\n // console.log('root-->', this._rawSets, path, data );\n // console.log('--!!!!', fullPathStr, iterable, data, front, last);\n // \uC65C\uC5EC\uAE30\uC11C promise\uB97C \uD588\uC744\uAE4C\uB97C \uC0DD\uAC01\uD574\uBCF4\uBA74......\uD6D4.. \uBCC0\uC218\uBCC0\uACBD\uACFC \uD654\uBA74 \uBFCC\uB824\uC8FC\uB294\uAC78 \uB3D9\uAE30\uB85C\uD558\uBA74 \uC131\uB2A5\uC774 \uC548\uB098\uC624\uACE0 \uBE44\uD604\uC2E4\uC801\uC774\uB2E4. \uADF8\uB798\uC11C promise\n new Promise<RawSet[]>(async resolve => {\n let rData: RawSet[] = [];\n const firstPathStr = front.slice(1);\n\n // check dictionary\n // console.log('-promise-------', firstPathStr, this)\n const firstTargets = this._rawSets.get(firstPathStr);\n const firstTargetDictionary: RawSet[] = [];\n firstTargets?.forEach(it => {\n // console.log('----forEach---', it);\n const type = (it.point.start as Element).getAttribute?.('type');\n if (type === RawSetOperatorType.DR_THIS_PROPERTY) {\n firstTargetDictionary.push(it);\n }\n });\n if (firstTargetDictionary.length > 0) {\n // console.log('ddddddddddd', firstTargetDictionary);\n const rawSets: RawSet[] = [];\n let skip = false;\n firstTargetDictionary.forEach(it => {\n const startElement = it.point.start as Element;\n const keys = startElement.getAttribute(RawSet.DR_HAS_KEYS_OPTIONNAME)?.split(',') ?? [];\n if (value === undefined) {\n const rawSet = it.getHasRawSet(lastPropertyName);\n rawSet?.remove();\n startElement.setAttribute(RawSet.DR_HAS_KEYS_OPTIONNAME, keys.filter(it => it !== lastPropertyName).join(','));\n }\n if (!keys.includes(lastPropertyName)) {\n const raws = DrThisProperty.append(this._domRender_proxy, fullPathStr, lastPropertyName, it, this._domRender_config);\n if (raws) {\n rawSets.push(...raws);\n }\n } else {\n skip = true;\n }\n });\n if (skip === false || rawSets.length > 0) {\n rData = await this.render(rawSets);\n }\n }\n\n if (lastPropertyName === 'length' && Array.isArray(data)) {\n const aIterable = this._rawSets.get(firstPathStr);\n if (aIterable) {\n rData = await this.render(Array.from(aIterable));\n }\n } else if (iterable) {\n // console.log('------------',iterable, fullPaths)\n rData = await this.render(Array.from(iterable), fullPathStr);\n }\n\n\n\n // console.log('-----------', this, lastPropertyName );\n // this._targets.forEach(it => {\n // // return;\n // if (it.nodeType === Node.DOCUMENT_FRAGMENT_NODE || it.nodeType === Node.ELEMENT_NODE) {\n // const targets = eventManager.findAttrElements((it as DocumentFragment | Element), this.config);\n // eventManager.changeVar(this._domRender_proxy, targets, `this.${fullPathStr}`, this.config);\n // }\n // });\n\n\n this._targets.forEach(it => {\n // return;\n if (it.nodeType === Node.DOCUMENT_FRAGMENT_NODE || it.nodeType === Node.ELEMENT_NODE) {\n const targets = this._domRender_config.eventManager.findAttrElements((it as DocumentFragment | Element), this._domRender_config);\n this._domRender_config.eventManager.changeVar(this._domRender_proxy, targets, `this.${fullPathStr}`, this._domRender_config);\n }\n });\n\n //\uB79C\uB354\uB300\uC0C1\uB41C\uAC8C\uC788\uC73C\uBA74\n if(rData?.length > 0 && isOnChildRenderedByProperty(data)) {\n const propertyValue = ScriptUtils.evaluateReturn(`this.${lastPropertyName}`, data)\n data.onChildRenderedByProperty(lastPropertyName, propertyValue);\n // data\n }\n resolve(rData);\n }).then(it => {\n // console.log('DonrenderProxy root RenderDone')\n });\n }\n fullPaths.push([{path:fullPathStr, obj: this._domRender_proxy}]);\n }\n\n // console.log('dddddd', fullPaths.flatMap(it=>it).map(it=>it.path))\n return fullPaths;\n }\n\n public set(target: T, p: string | symbol, value: any, receiver: T): boolean {\n // console.log('set------->', target, p, value, receiver, Date.now())\n // console.log('set------->', target, p, value, receiver, Date.now())\n // try {\n // const isNoProxy = Reflect.getMetadata(DomRenderNoProxyKey, target, p) || Reflect.getMetadata(DomRenderNoProxyKey, Object.getPrototypeOf(obj).constructor);\n // if (isNoProxy) {\n // return obj;\n // }\n // }catch (e) {}\n\n // console.log('set-->', p, value, target, receiver, Reflect.getMetadata(DomRenderNoProxyKey, target, p) );\n\n if (\n (typeof p === 'string' && p !== '__domrender_components' && excludeGetSetPropertys.includes(p)) ||\n Reflect.getMetadata(DomRenderNoProxyKey, target, p)\n ) {\n (target as any)[p] = value;\n return true;\n }\n // const old = (target as any)[p];\n // console.log('set proxy-->', target, p, value, this._rawSets, this._domRender_ref);\n // if (typeof p === 'string' && '__render' === p) {\n // (target as any)[p] = value;\n // return true;\n // }\n // console.log('set--?', p, target, value);\n\n if (typeof p === 'string') {\n value = this.proxy(receiver, value, p);\n }\n\n // console.log('set typeChecked', (target as any)[p] instanceof ComponentSet, value instanceof ComponentSet);\n // if ((target as any)[p] instanceof ComponentSet) {\n // (target as any)[p]?.obj?.onDrThisUnBind?.();\n // }\n // is ComponentSet\n if ((value instanceof ComponentSet) && ((target as any)[p] instanceof ComponentSet)) {\n value.config.beforeComponentSet = (target as any)[p];\n }\n (target as any)[p] = value;\n let fullPathInfo: {path: string, obj:any}[][] = [];\n if (typeof p === 'string') {\n fullPathInfo = this.root([[{path:p, obj: this._domRender_proxy}]], value)\n }\n\n // console.log('setRooot', fullPathInfo);\n\n\n //normal attribute \uB610\uD55C \uB9C1\uD06C\uB791 \uAC19\uC740 \uC99D\uC138\uB77C\uC11C \uC774\uB807\uAC8C \uD574\uC918\uC57C\uD55C\uB2E4!!\n // const rootDomRenderProxy = this.findRootDomRenderProxy();\n // console.log('set!!!!!!!', fullPathInfo, rootDomRenderProxy)\n // console.log('--------rootDom',fullPathInfo, rootDomRenderProxy, rootDomRenderProxy._domRender_proxy)\n const rootElement = this._domRender_config.rootElement ?? this._domRender_config.window.document;\n DocumentUtils.querySelectorAllByAttributeName(rootElement, EventManager.normalAttrMapAttrName)?.forEach(elementInfo => {\n // @ts-ignore\n // const optionalPath = ObjectUtils.Path.toOptionalChainPath(elementInfo.value);\n const targets = new Map<string,string>(ScriptUtils.evaluateReturn<[string, string][]>(elementInfo.value));\n Array.from(targets.entries()).filter(([key, value])=>value.trim()).filter(isDefined).flatMap(([key,valueScript])=> {\n return fullPathInfo.flat().filter(it => valueScript.includes(`this.${it.path}`)).flatMap(it=> ({key, valueScript: valueScript, pathInfo: it}));\n }).forEach(it=> {\n const optionalPath = ObjectUtils.Path.toOptionalChainPath(it.valueScript);\n const value1 = ScriptUtils.evaluateReturn(optionalPath, it.pathInfo.obj);\n // console.log('proxy set!Attribut======', it.key, value1)\n if (value1 === null) {\n elementInfo.element.removeAttribute(it.key);\n elementInfo.element[it.key] = null;\n } else {\n elementInfo.element.setAttribute(it.key, value1);\n elementInfo.element[it.key] = value1\n }\n })\n })\n\n //\uC5EC\uAE30\uC11C \uB9C1\uD06C \uAC19\uC740\uAC70 \uD574\uC918\uC57C\uD568 *-link\uB85C \uBCC0\uC218\uAC12\uC774 \uBCC0\uACBD\uB418\uBA74 \uADF8\uAC78 \uCC38\uACE0\uD558\uACE0\uC788\uB294 \uB2E4\uB978\uAC83\uB4E4\uC5D0\uB3C4 \uD574\uC918\uC57C\uD55C\uB2E4.\n DocumentUtils.querySelectorAllByAttributeName(rootElement, EventManager.linkTargetMapAttrName)?.forEach(elementInfo => {\n // @ts-ignore\n const targets = new Map<string,string>(ScriptUtils.evaluateReturn<[string, string][]>(elementInfo.value));\n\n Array.from(targets.entries()).filter(([key, value])=>value.trim()).filter(isDefined).flatMap(([key,valueScript])=> {\n return fullPathInfo.flat().filter(it => valueScript.includes(`this.${it.path}`)).flatMap(it=> ({key, valueScript: valueScript, pathInfo: it}));\n }).forEach(info=> {\n const value1 = ScriptUtils.evaluateReturn(info.valueScript, info.pathInfo.obj);\n const applyAttributeName = EventManager.linkAttrs.find(it => it.name === info.key);\n if (applyAttributeName) {\n if (value1 === null) {\n elementInfo.element.removeAttribute(applyAttributeName.property);\n } else {\n // console.log('ppppppppppppppppppppppp', applyAttributeName, elementInfo)\n elementInfo.element.setAttribute(applyAttributeName.property, value1);\n }\n }\n })\n\n Array.from(targets.entries()).filter(([key, value])=>value.trim()).filter(isDefined).flatMap(([key,valueScript])=> {\n return fullPathInfo.flat().filter(it => valueScript.includes(`this.${it.path}`)).flatMap(it=> ({key, valueScript: valueScript, pathInfo: it}));\n }).forEach(info=> {\n const linkInfo = EventManager.linkAttrs.find(it=>it.name === info.key)\n if (linkInfo) {\n elementInfo.element[linkInfo.property] = value\n }\n })\n })\n if (('onBeforeReturnSet' in receiver) && typeof p === 'string' && !(this._domRender_config.proxyExcludeOnBeforeReturnSets ?? []).concat(excludeGetSetPropertys).includes(p)) {\n if(isOnBeforeReturnSet(receiver)){\n receiver.onBeforeReturnSet?.(p, value, fullPathInfo.map(it => it.map(it=>it.path).join()));\n }\n }\n return true;\n }\n\n get(target: T, p: string | symbol, receiver: any): any {\n // console.log('get-->', target, p, receiver);\n if (p === '_DomRender_origin' || p === '_domRender_origin') {\n return this._domRender_origin;\n } else if (p === '_DomRender_ref' || p === '_domRender_ref') {\n return this._domRender_ref;\n } else if (p === '_DomRender_config' || p ==='_domRender_config') {\n return this._domRender_config;\n } else if (p === '_DomRender_proxy' || p ==='_domRender_proxy') {\n return this;\n } else {\n // Date\uB77C\uB358\uC9C0 \uC774\uB7F0\uB188\uB4E4\uC740-_-\uD504\uB85D\uC2DC\uAC00 \uC774\uC0C1\uD558\uAC8C \uB3D9\uC791\uD574\uC11C\n // console.log('--->', p, target, target.bind, 'bind' in target)\n // if ((p in target) && ('bind' in target)) {\n // try{\n // return (target as any)[p].bind(target);\n // }catch (e) {\n // console.error(e)\n // }\n // } else {\n // return (target as any)[p]\n // }\n // return (p in target) ? (target as any)[p].bind(target) : (target as any)[p]\n // console.log('-->', p, Object.prototype.toString.call((target as any)[p]), (target as any)[p])\n // return (target as any)[p]\n let it = (target as any)[p];\n if (it && typeof it === 'object' && ('_DomRender_isProxy' in it) && Object.prototype.toString.call(it._DomRender_origin) === '[object Date]') {\n it = it._DomRender_origin;\n }\n\n if (('onBeforeReturnGet' in receiver) && typeof p === 'string' && !(this._domRender_config.proxyExcludeOnBeforeReturnGets ?? []).concat(excludeGetSetPropertys).includes(p)) {\n (receiver as any)?.onBeforeReturnGet?.(p, it, this.root([[{path:p, obj: this._domRender_proxy}]], it, false));\n }\n return it;\n }\n }\n\n deleteProperty(target: T, p: string | symbol): boolean {\n delete (target as any)[p];\n if (typeof p === 'string') {\n this.root([[{path:p, obj: this._domRender_proxy}]]);\n }\n return true;\n }\n\n has(target: T, p: string | symbol): boolean {\n return p === '_DomRender_isProxy' || p in target;\n }\n\n proxy(parentProxy: T, obj: T | any, p: string) {\n\n\n try {\n // const isNoProxy = Reflect.getMetadata(DomRenderNoProxyKey, obj, p) || Reflect.getMetadata(DomRenderNoProxyKey, Object.getPrototypeOf(obj).constructor);\n const isObject = typeof obj === 'object';\n const isNoProxy = isObject && isDomRenderNoProxy(obj,p)\n const isExclude = (this._domRender_config.proxyExcludeTyps?.some(it => obj instanceof it)) ?? false;\n const isFinal = isObject && DomRenderProxy.isFinal(obj);\n const isFrozen = Object.isFrozen(obj);\n const isShield = obj instanceof Shield;\n if (isNoProxy || isExclude || ValidUtils.isNullOrUndefined(obj) || !isObject || isFinal || isFrozen || isShield) {\n return obj;\n }\n } catch (e) {\n }\n\n\n/*\n const proxyTarget = (this._domRender_config.proxyExcludeTyps?.filter(it => obj instanceof it) ?? []).length <= 0;\n if (proxyTarget && obj !== undefined && obj !== null && typeof obj === 'object' && !('_DomRender_isProxy' in obj) && !DomRenderProxy.isFinal(obj) && !Object.isFrozen(obj) && !(obj instanceof Shield)) {\n const domRender = new DomRenderProxy(obj, undefined, this._domRender_config);\n domRender.addRef(parentProxy, p);\n const proxy = new Proxy(obj, domRender);\n domRender.run(proxy);\n return proxy;\n }\n if (proxyTarget && obj !== undefined && obj !== null && typeof obj === 'object' && ('_DomRender_isProxy' in obj) && !DomRenderProxy.isFinal(obj) && !Object.isFrozen(obj) && !(obj instanceof Shield)) {\n const d = (obj as any)._DomRender_proxy as DomRenderProxy<T>;\n d.addRef(this._domRender_proxy!, p);\n return obj;\n } else {\n return obj;\n }\n */\n if ( !isWrapProxyDomRenderProxy(obj)) {\n const domRender = new DomRenderProxy(obj, undefined, this._domRender_config);\n domRender.addRef(parentProxy, p);\n const proxy = new Proxy(obj, domRender);\n domRender.run(proxy);\n return proxy;\n }\n if (isWrapProxyDomRenderProxy(obj)) {\n const d = (obj as any)._DomRender_proxy as DomRenderProxy<T>;\n d.addRef(this._domRender_proxy!, p);\n return obj;\n } else {\n return obj;\n }\n }\n\n public addRef(parent: object, path: string) {\n if (!this._domRender_ref.get(parent)) {\n this._domRender_ref.set(parent, new Set<string>());\n }\n this._domRender_ref.get(parent)?.add(path);\n }\n\n public addRawSetAndRender(path: string, rawSet: RawSet) {\n this.addRawSet(path, rawSet);\n this.render([rawSet]);\n }\n\n public addRawSet(path: string, rawSet: RawSet) {\n // console.log('addRawSet--> path:', path, 'rawSet:', rawSet)\n if (!this._rawSets.get(path)) {\n this._rawSets.set(path, new Set<RawSet>());\n }\n this._rawSets.get(path)?.add(rawSet);\n }\n\n // public removeRawSet(...raws: RawSet[]) {\n // this._rawSets.forEach(it => {\n // raws.forEach(sit => it.delete(sit));\n // })\n // this.garbageRawSet();\n // }\n\n public removeRawSet(...raws: RawSet[]) {\n this._rawSets.forEach(it => {\n it.forEach(sit => {\n if (!sit.isConnected) {\n it.delete(sit);\n } else if (raws.includes(sit)) {\n it.delete(sit);\n }\n });\n });\n this.targetGarbageRawSet();\n }\n\n private targetGarbageRawSet() {\n this._targets.forEach(it => {\n if (!it.isConnected) {\n this._targets.delete(it);\n }\n });\n }\n\n private garbageRawSet() {\n this._targets.forEach(it => {\n if (!it.isConnected) {\n this._targets.delete(it);\n }\n });\n\n this._rawSets.forEach(it => {\n it.forEach(sit => {\n if (!sit.isConnected) {\n it.delete(sit);\n }\n });\n });\n }\n}\n", "import { Vector } from './Vector';\n\nexport class Point2D {\n public x: number;\n public y: number;\n\n constructor(data: {x?: number, y?: number});\n constructor(x?: number, y?: number);\n constructor(x?: number | {x?: number, y?: number} | Vector , y?: number) {\n if (typeof x === 'object') {\n this.x = x.x ?? 0;\n this.y = x.y ?? 0;\n } else {\n this.x = x ?? 0;\n this.y = y ?? 0;\n }\n }\n\n copy() {\n return new Point2D(this.x, this.y);\n }\n}\n", "// https://p5js.org/ko/\nimport { Point3D } from './Point3D';\nimport { Point2D } from './Point2D';\n\nexport class Vector {\n public x: number;\n public y: number;\n public z: number;\n\n constructor(data: Point3D);\n constructor(data: {x?: number, y?: number, z?: number});\n constructor(x?: number, y?: number, z?: number);\n constructor(x?: number | {x?: number, y?: number, z?: number} | Point3D, y?: number, z?: number) {\n if (x instanceof Point3D) {\n this.x = x.x;\n this.y = x.y;\n this.z = x.z;\n } else if (typeof x === 'object') {\n this.x = x.x ?? 0;\n this.y = x.y ?? 0;\n this.z = x.z ?? 0;\n } else {\n this.x = x ?? 0;\n this.y = y ?? 0;\n this.z = z ?? 0;\n }\n }\n\n\n public set(v: number | Vector | Point3D, y: number = 0, z: number = 0) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.set(v.x || 0, v.y || 0, v.z || 0);\n } else {\n this.x = v;\n this.y = y;\n this.z = z;\n }\n return this;\n }\n\n public get() {\n return new Vector(this.x, this.y, this.z);\n }\n\n // \uD53C\uD0C0\uACE0\uB77C\uC2A4\uC758 \uC815\uB9AC\uB294 a\uC758 \uC81C\uACF1 \uB354\uD558\uAE30 b \uC758 \uC81C\uACF1\uC740 c \uC758 \uC81C\uACF1\uACFC \uAC19\uB2E4\uB294 \uAC83\uC744 \uC815\uC758\uD569\uB2C8\uB2E4.\n public mag(): number {\n const x = this.x;\n const y = this.y;\n const z = this.z;\n return Math.sqrt(x * x + y * y + z * z); // \uC758 \uC81C\uACF1\uADFC\uC744 \uB9AC\uD134\uD558\uBA74 \uAE38\uC774\uAC00 \uBC18\uD658\uB41C\uB2E4.\n }\n\n public add(v: number | Vector | Point3D, y: number = 0, z: number = 0) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x += v.x;\n this.y += v.y;\n this.z += v.z;\n } else {\n this.x += v;\n this.y += y;\n this.z += z;\n }\n }\n\n public toAdd(v1: Vector|Point3D, v2: Vector|Point3D): Vector {\n return new Vector(v1.x + v2.x, v1.y + v2.y, v1.x + v2.y);\n }\n\n // public static add(v1: Vector, v2: Vector): Vector {\n // return new Vector(v1.x + v2.x, v1.y + v2.y, v1.x + v2.y);\n // }\n\n public sub(v: number | Vector |Point3D, y = 0, z = 0) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x -= v.x;\n this.y -= v.y;\n this.z -= v.z;\n } else {\n this.x -= v;\n this.y -= y;\n this.z -= z;\n }\n }\n\n public toSub(v2: Vector | Point3D): Vector {\n const v1 = this;\n return new Vector(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z);\n }\n\n //\n // public static sub(v1: Vector, v2: Vector): Vector {\n // return new Vector(v1.x - v2.x, v1.y - v2.y, v1.z - v2.z);\n // }\n\n public mult(v: number | Vector | Point3D) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x *= v.x;\n this.y *= v.y;\n this.z *= v.z;\n } else {\n this.x *= v;\n this.y *= v;\n this.z *= v;\n }\n return this;\n }\n\n public toMult(v2: Vector | Point3D): Vector {\n const v1 = this;\n return new Vector(v1.x *= v2.x, v1.y *= v2.y, v1.z *= v2.z);\n }\n\n // public static mult(v1: Vector, v2: Vector) {\n // return new Vector(v1.x *= v2.x, v1.y *= v2.y, v1.z *= v2.z);\n // }\n\n public div(v: number | Vector | Point3D) {\n if (v instanceof Vector || v instanceof Point3D) {\n this.x /= v.x;\n this.y /= v.y;\n this.z /= v.z;\n } else {\n this.x /= v;\n this.y /= v;\n this.z /= v;\n }\n return this;\n }\n\n public toDiv( d: number): Vector {\n const v = this;\n const rv = v.get();\n rv.x /= d;\n rv.y /= d;\n rv.z /= d;\n return rv;\n }\n\n // public static div(v: Vector, d: number): Vector {\n // const rv = v.get();\n // rv.x /= d;\n // rv.y /= d;\n // rv.z /= d;\n // return rv;\n // }\n\n public dist(v: Vector | Point3D): number {\n const dx = this.x - v.x,\n dy = this.y - v.y,\n dz = this.z - v.z;\n return Math.sqrt(dx * dx + dy * dy + dz * dz);\n }\n\n public toDist(v2: Vector | Point3D): number {\n const v1 = this;\n const dx = v1.x - v2.x,\n dy = v1.y - v2.y,\n dz = v1.z - v2.z;\n return Math.sqrt(dx * dx + dy * dy + dz * dz);\n }\n\n // public static dist(v1: Vector, v2: Vector): number {\n // const dx = v1.x - v2.x,\n // dy = v1.y - v2.y,\n // dz = v1.z - v2.z;\n // return Math.sqrt(dx * dx + dy * dy + dz * dz);\n // }\n\n public dot(v: number | Vector | Point3D, y: number, z: number): number {\n if (v instanceof Vector || v instanceof Point3D) {\n return this.x * v.x + this.y * v.y + this.z * v.z;\n }\n ;\n return this.x * v + this.y * y + this.z * z;\n }\n\n public cross(v: Vector | Point3D): Vector {\n const x = this.x,\n y = this.y,\n z = this.z;\n return new Vector(y * v.z - v.y * z, z * v.x - v.z * x, x * v.y - v.x * y);\n }\n\n public normalize() {\n const m = this.mag();\n if (m > 0) this.div(m);\n }\n\n public limit(high: number) {\n if (this.mag() > high) {\n this.normalize();\n this.mult(high);\n }\n }\n\n public heading2D() {\n return -Math.atan2(-this.y, this.x);\n }\n\n public random2D() {\n return this.fromAngle(Math.random() * (2 * Math.PI));\n }\n\n public fromAngle(angle: number, length = 1) {\n return new Vector(length * Math.cos(angle), length * Math.sin(angle), 0);\n };\n\n public fromAngles(theta: number, phi: number, length = 1) {\n const cosPhi = Math.cos(phi);\n const sinPhi = Math.sin(phi);\n const cosTheta = Math.cos(theta);\n const sinTheta = Math.sin(theta);\n\n return new Vector(\n length * sinTheta * sinPhi,\n -length * cosTheta,\n length * sinTheta * cosPhi\n );\n };\n\n public array(): number[] {\n return [this.x, this.y, this.z];\n }\n\n public toPoint3D(): Point3D {\n return new Point3D(this.x, this.y, this.z);\n }\n\n public toPoint2D(): Point2D {\n return new Point2D(this.x, this.y);\n }\n\n public copy(): Vector {\n return new Vector(this.x, this.y, this.z);\n }\n\n public toString(): string {\n return '[' + this.x + ', ' + this.y + ', ' + this.z + ']';\n }\n\n}\n", "import { Vector } from './Vector';\nimport { Point2D } from './Point2D';\n\nexport class Point3D extends Point2D {\n public z: number;\n\n constructor(data: Vector);\n constructor(data: {x?: number, y?: number, z?: number});\n constructor(x?: number, y?: number, z?: number);\n constructor(x?: number | {x?: number, y?: number, z?: number} | Vector, y?: number, z?: number) {\n if (x instanceof Vector) {\n super(x.x, x.y);\n this.z = x.z;\n } else if (typeof x === 'object') {\n super({x: x.x ?? 0, y: x.y ?? 0})\n this.z = x.z ?? 0;\n } else {\n super(x,y)\n this.z = z ?? 0;\n }\n }\n\n copy() {\n return new Point3D(this.x, this.y, this.z);\n }\n}\n", "import { Vector } from '../../Vector';\nimport { Rect } from '../../Rect';\n\ntype Transaform = [number, number, number, number, number, number];\n\ntype Color = {\n r?: number,\n g?: number,\n b?: number,\n a?: number\n};\n\nexport class Obj<T = any> extends Vector {\n\n public volume = 0; // \uBD80\uD53C\n public mass = 0; // \uC9C8\uB7C9\n public e = 0; // \uD0C4\uC131\n public rotate = 0; // \uD68C\uC804\n public width = 0; // \uB108\uBE44\n public height = 0; // \uB192\uC774\n public data?: T;\n // public age = 0; // \uC0DD\uC131\uB41C \uC2DC\uAC04 \uAC00\uC911\uCE58\n // https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/transform\n /*\n a, d: \uAC00\uB85C/\uC138\uB85C \uC2A4\uCF00\uC77C\n b, c: \uAE30\uC6B8\uC774\uAE30(skew)\n e, f: \uC774\uB3D9(translate)\n --------------\n a, b, c, d, e, f\n */\n public transform: Transaform = [1, 0, 0, 1, 0, 0];\n public color: Color = {\n r: 0,\n g: 0,\n b: 0,\n a: 255\n };\n public id?: string;\n\n // public data?: T;\n\n\n constructor(data?: {\n x?: number,\n y?: number,\n z?: number,\n volume?: number,\n mass?: number,\n e?: number,\n rotate?: number,\n width?: number,\n height?: number,\n transform?: Transaform,\n color?: Color,\n data?: T,\n }) {\n super();\n this.updateObjWithDefaults(data);\n }\n\n\n copyObj() {\n return new Obj({\n x: this.x,\n y: this.y,\n z: this.z,\n volume: this.volume,\n mass: this.mass,\n e: this.e,\n rotate: this.rotate,\n width: this.width,\n height: this.height,\n transform: [...this.transform],\n color: {...this.color},\n data: {...this.data}\n });\n }\n\n updateObjWithDefaults(data?: {\n x?: number,\n y?: number,\n z?: number,\n volume?: number,\n mass?: number,\n e?: number,\n rotate?: number,\n width?: number,\n height?: number,\n transform?: Transaform,\n color?: Color,\n data?: T,\n }) {\n if (data) {\n this.x = data.x ?? this.x;\n this.y = data.y ?? this.y;\n this.z = data.z ?? this.z;\n this.volume = data.volume ?? this.volume;\n this.mass = data.mass ?? this.mass;\n this.e = data.e ?? this.e;\n this.rotate = data.rotate ?? this.rotate;\n this.width = data.width ?? this.width;\n this.height = data.height ?? this.height;\n this.transform = [...(data.transform ?? this.transform)];\n this.color = {...(data.color ?? this.color)};\n const t = data.data ?? this.data;\n this.data = t?{...t}:undefined;\n }\n }\n\n setObj(data?: {\n x?: number,\n y?: number,\n z?: number,\n volume?: number,\n mass?: number,\n e?: number,\n rotate?: number,\n width?: number,\n height?: number,\n transform?: Transaform,\n color?: Color,\n data?: T,\n }) {\n if (data) {\n this.x = data.x??0;\n this.y = data.y??0;\n this.z = data.z??0;\n this.volume = data.volume??0;\n this.mass = data.mass??0;\n this.e = data.e??0;\n this.rotate = data.rotate??0;\n this.width = data.width??0;\n this.height = data.height??0;\n this.transform = [...(data.transform??[1, 0, 0, 1, 0, 0])];\n this.color = { ...(data.color??{r:0,g:0,b:0,a:255})};\n const data1 = data.data;\n this.data = data1 ? { ...data1} : undefined;\n }\n }\n\n toRect(): Rect {\n return new Rect(this.x, this.y, this.width, this.height);\n }\n\n // constructor(canvas: HTMLCanvasElement, context: CanvasRenderingContext2D, public avaliablePlace: Rectangle = new Rectangle(new Point(0, 0), new Point(0, 0))) {\n // super(canvas, context);\n // }\n\n\n // get centerPoint(): Point {\n // return new Point();\n // }\n}\n", "import { Point3D } from '../entity/Point3D';\nimport { Vector } from '../entity/Vector';\nimport { Obj } from '../entity/object/obj/Obj';\nimport { Point2D } from '../entity/Point2D';\n\nexport namespace MathUtil {\n export type BezierConfig = { p1x: number | 'random', p1y: number | 'random', p2x: number | 'random', p2y: number | 'random' } | [number | 'random', number | 'random', number | 'random', number | 'random'];\n export const getMinByObjectArray = (objectArray: Array<any>, varName: string) => {\n let min;\n if (varName && objectArray && objectArray.length > 0) {\n min = objectArray[0][varName];\n for (let i = 1; i < objectArray.length; i++) {\n min = Math.min(min, objectArray[i][varName]);\n }\n }\n return min;\n };\n\n export const hypot = (...data: number[]) => {\n // 2\uCC28\uC6D0 \uC608\uC2DC\n // Math.hypot(3, 4); // \uACB0\uACFC: 5 (3\u00B2 + 4\u00B2 = 9 + 16 = 25, \u221A25 = 5)\n\n// 3\uCC28\uC6D0 \uC608\uC2DC\n// Math.hypot(3, 4, 5); // \uACB0\uACFC: 7.0710678118654755\n\n return Math.hypot(...data);\n }\n\n // \uD53C\uD0C0\uACE0\uB77C\uC2A4 \uC815\uB9AC \uD568\uC218\n export const pythagorean = (a: number, b: number): number => {\n /*\n \uD53C\uD0C0\uACE0\uB77C\uC2A4 \uC815\uB9AC\n a^2 + b^2 = c^2\n c = \u221A(a^2 + b^2)\n */\n // return Math.sqrt(start * start + end * end);\n return Math.sqrt(a * a + b * b);\n };\n\n export const getMaxByObjectArray = (objectArray: Array<any>, varName: string) => {\n let max;\n if (varName && objectArray && objectArray.length > 0) {\n max = objectArray[0][varName];\n for (let i = 1; i < objectArray.length; i++) {\n max = Math.max(max, objectArray[i][varName]);\n }\n }\n return max;\n };\n\n export const sum = (array: number[]) => {\n return array.reduce((acc, curr) => acc + curr, 0);\n }\n\n export const avg = (array: number[]) => {\n return array.length > 0 ? MathUtil.sum(array) / array.length : 0;\n }\n\n export const minMax = (data: number, minMax: { min: number, max: number }) => {\n return Math.min(Math.max(data, minMax.min), minMax.max);\n }\n export const max = (array: number[]) => {\n return array.length > 0 ? Math.max(...array) : undefined;\n };\n\n export const min = (array: number[]) => {\n return array.length > 0 ? Math.min(...array) : undefined;\n };\n\n export const getSumByObjectArray = (objectArray: Array<any>, varName: string) => {\n let sum = 0;\n if (varName && objectArray && objectArray.length > 0) {\n for (let i = 0; i < objectArray.length; i++) {\n sum += objectArray[i][varName];\n }\n }\n return sum;\n };\n\n\n export type AngleUnitType = 'degreeAngle' | 'ratio' | 'percent';\n /**\n * Converts value to radians based on given type.\n * @param data - The value to convert to radians\n * @param option - Conversion type configuration\n * @param option.type - Type of conversion:\n * 'degreeAngle' - Converts from degrees to radians\n * 'ratio' - Multiplies value by 2\u03C0 (input range 0-1)\n * 'percent' - Converts percentage to 2\u03C0 ratio (input range 0-100)\n * @returns The converted value in radians\n * @example\n * // Convert 180 degrees to radians (3.14...)\n * radians(180, {type: 'degreeAngle'})\n *\n * // Convert 0.5 ratio to radians (3.14...)\n * radians(0.5, {type: 'ratio'})\n *\n * // Convert 50% to radians (3.14...)\n * radians(50, {type: 'percent'})\n */\n export const radians = (data: number, {type = 'degreeAngle'}: {type?: AngleUnitType}): number => {\n /*\n radian\n * 1.57..: 90\uB3C4, PI/2\n * 3.14..: 180\uB3C4, PI\n * 4.71..: 270\uB3C4, PI + PI/2\n * 6.28..: 360\uB3C4, PI * 2\n */\n if (type === 'ratio') {\n return (data * 2) * Math.PI;\n } else if (type === 'percent') {\n return ((data / 100) * 2) * Math.PI;\n } else {\n // return data * Math.PI / 180;\n return data / 180 * Math.PI;\n }\n };\n\n export const degrees = (data: number, {type = 'degreeAngle'}: {type?: AngleUnitType}): number => {\n if (type === 'ratio') {\n return data * 360;\n } else if (type === 'percent') {\n return (data / 100) * 360;\n } else {\n return data * 180 / Math.PI;\n }\n };\n // static createCanvas(w, h) {\n // let canvas = document.createElement('canvas');\n // canvas.width = w;\n // canvas.height = h;\n // return canvas;\n // }\n //\n // static copyCanvas(canvas) {\n // let newCanvas = document.createElement('canvas');\n // newCanvas.width = canvas.width;\n // newCanvas.height = canvas.height;\n // context = newCanvas.getContext('2d');\n // context.drawImage(canvas, 0, 0);\n // return newCanvas;\n // }\n\n /**\n 1. \uBE44\uC728\uC758 \uAC1C\uB150\n \uBE44\uC728(Ratio): \uB450 \uC591\uC758 \uC0C1\uB300\uC801\uC778 \uD06C\uAE30\uB97C \uBE44\uAD50\uD55C \uAC12\uC73C\uB85C, \uC77C\uBC18\uC801\uC73C\uB85C \uBD84\uC218\uB098 \uC18C\uC218\uB85C \uD45C\uD604\uB429\uB2C8\uB2E4. \uC608\uB97C \uB4E4\uC5B4, \"2:3\" \uBE44\uC728\uC740 \uB450 \uC218\uC758 \uBE44\uAC00 2 \uB300 3\uC774\uB77C\uB294 \uB73B\uC774\uBA70, \uC774\uB294 2/3\uB85C\uB3C4 \uB098\uD0C0\uB0BC \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n \uB2E8\uC704 \uBE44\uC728(Normalized Ratio): \uD55C \uAC12\uC744 \uAE30\uC900\uC73C\uB85C \uB2E4\uB978 \uAC12\uC744 \uC870\uC815\uD55C \uBE44\uC728\uC744 \uC758\uBBF8\uD569\uB2C8\uB2E4. \uC5EC\uAE30\uC11C\uB294 \uB108\uBE44(w)\uB97C 1\uB85C \uC815\uADDC\uD654(normalize)\uD558\uC5EC \uB192\uC774(h)\uC758 \uC0C1\uB300\uC801 \uAC12\uC744 \uAD6C\uD558\uB294 \uAC83\uC774 \uBAA9\uD45C\uC785\uB2C8\uB2E4.\n \uC774\uBBF8\uC9C0 \uBE44\uC728: \uC774\uBBF8\uC9C0\uC758 \uB108\uBE44\uC640 \uB192\uC774 \uBE44\uC728\uC740 \uBCF4\uD1B5 \"w:h\" \uD615\uC2DD\uC73C\uB85C \uD45C\uD604\uB418\uBA70, \uC774 \uBE44\uC728\uC744 \uC720\uC9C0\uD558\uBA74\uC11C \uD06C\uAE30\uB97C \uC870\uC815\uD560 \uB54C \uC720\uC6A9\uD569\uB2C8\uB2E4.\n 2. \uACC4\uC0B0 \uBC29\uBC95\n \uC8FC\uC5B4\uC9C4 \uB370\uC774\uD130:\n\n \uB108\uBE44(w) = 1652 \uD53D\uC140\n \uB192\uC774(h) = 421 \uD53D\uC140\n \uBAA9\uD45C: \uB108\uBE44\uB97C 1\uB85C \uBCF4\uC558\uC744 \uB54C \uB192\uC774\uC758 \uAC12 \uAD6C\uD558\uAE30\n \uB2E8\uACC4\uBCC4 \uACC4\uC0B0\n \uC6D0\uB798 \uBE44\uC728 \uAD6C\uD558\uAE30:\n \uC774\uBBF8\uC9C0\uC758 \uBE44\uC728\uC740 w:h = 1652:421\uC785\uB2C8\uB2E4.\n \uC774\uB97C \uBD84\uC218\uB85C \uD45C\uD604\uD558\uBA74 1652 / 421\uC785\uB2C8\uB2E4.\n \uB108\uBE44\uB97C 1\uB85C \uC815\uADDC\uD654:\n \uB108\uBE44\uB97C 1\uB85C \uB9CC\uB4E4\uAE30 \uC704\uD574, \uC6D0\uB798 \uB108\uBE44(1652)\uB97C 1\uB85C \uB098\uB204\uACE0, \uC774\uB97C \uB192\uC774\uC5D0\uB3C4 \uB3D9\uC77C\uD558\uAC8C \uC801\uC6A9\uD569\uB2C8\uB2E4.\n \uC815\uADDC\uD654\uB41C \uB192\uC774 = \uC6D0\uB798 \uB192\uC774(h) \u00F7 \uC6D0\uB798 \uB108\uBE44(w)\n \uC218\uC2DD: h' = h / w (\uC5EC\uAE30\uC11C h'\uB294 \uC815\uADDC\uD654\uB41C \uB192\uC774)\n \uACC4\uC0B0 \uC801\uC6A9:\n \uC815\uADDC\uD654\uB41C \uB192\uC774 = 421 / 1652\n \uACC4\uC0B0: 421 \u00F7 1652 \u2248 0.25485 (\uC18C\uC218\uC810 \uC57D 5\uC790\uB9AC\uAE4C\uC9C0)\n \uACB0\uACFC \uD574\uC11D:\n \uB108\uBE44\uAC00 1\uC77C \uB54C \uB192\uC774\uB294 \uC57D 0.25485\uC785\uB2C8\uB2E4. \uC774\uB294 \uB192\uC774\uAC00 \uB108\uBE44\uC758 \uC57D 25.485%\uC5D0 \uD574\uB2F9\uD568\uC744 \uC758\uBBF8\uD569\uB2C8\uB2E4.\n \uAC80\uC99D\n \uC6D0\uB798 \uBE44\uC728\uC744 \uC720\uC9C0\uD558\uB824\uBA74, \uC815\uADDC\uD654\uB41C \uAC12\uC744 \uC5ED\uC73C\uB85C \uC801\uC6A9\uD574 \uC6D0\uB798 \uAC12\uC744 \uBCF5\uC6D0\uD560 \uC218 \uC788\uC5B4\uC57C \uD569\uB2C8\uB2E4.\n \uC815\uADDC\uD654\uB41C \uBE44\uC728(0.25485)\uC744 1652\uC5D0 \uACF1\uD558\uBA74: 1652 * 0.25485 \u2248 421, \uC774\uB294 \uC6D0\uB798 \uB192\uC774\uC640 \uC77C\uCE58\uD558\uBBC0\uB85C \uACC4\uC0B0\uC774 \uC62C\uBC14\uB984.\n 3. \uC218\uC2DD \uC815\uB9AC\n \uC77C\uBC18\uC801\uC778 \uC815\uADDC\uD654 \uC218\uC2DD:\n \uC815\uADDC\uD654\uB41C \uB192\uC774(h') = h / w\n \uC815\uADDC\uD654\uB41C \uB108\uBE44(w') = w / w = 1 (\uAE30\uC900\uAC12)\n \uC774 \uBB38\uC81C \uC801\uC6A9:\n h' = 421 / 1652 \u2248 0.25485\n 4. \uB300\uC548: \uBE44\uC728\uB85C \uD45C\uD604\n \uBE44\uC728\uC744 \"1:\uBE44\uC728\uAC12\" \uD615\uC2DD\uC73C\uB85C \uD45C\uD604\uD558\uB824\uBA74, \uB192\uC774\uB97C \uB108\uBE44\uB85C \uB098\uB208 \uAC12\uC744 \uADF8\uB300\uB85C \uC0AC\uC6A9.\n \uACB0\uACFC: 1 : 0.25485 \uB610\uB294 \uC57D 1 : 0.255 (\uC18C\uC218\uC810 \uBC18\uC62C\uB9BC).\n 5. \uCD94\uAC00 \uAC1C\uB150\n \uBE44\uB840\uC2DD: \uC774\uBBF8\uC9C0 \uD06C\uAE30\uB97C \uC870\uC815\uD560 \uB54C \uBE44\uC728\uC744 \uC720\uC9C0\uD558\uB824\uBA74, w1 / h1 = w2 / h2\uB97C \uB9CC\uC871\uD574\uC57C \uD569\uB2C8\uB2E4. \uC5EC\uAE30\uC11C w2 = 1\uB85C \uC124\uC815\uD55C \uACBD\uC6B0, h2 = h1 / w1\uC774 \uB429\uB2C8\uB2E4.\n \uC2E4\uC81C \uC801\uC6A9: \uC6F9 \uB514\uC790\uC778\uC774\uB098 \uADF8\uB798\uD53D\uC5D0\uC11C \uC774\uBBF8\uC9C0\uB97C \uB9AC\uC0AC\uC774\uC9D5\uD560 \uB54C, \uC6D0\uBCF8 \uBE44\uC728(1652:421)\uC744 \uC720\uC9C0\uD558\uB824\uBA74 \uC774 \uC815\uADDC\uD654\uB41C \uAC12\uC744 \uC0AC\uC6A9\uD574 \uB192\uC774\uB97C \uACC4\uC0B0.\n <script>\n const w = 1652;\n const h = 421;\n const normalizedHeight = h / w;\n console.log(`\uC815\uADDC\uD654\uB41C \uB192\uC774: ${normalizedHeight.toFixed(5)}`); // 0.25485\n console.log(`\uC6D0\uB798 \uBE44\uC728 \uD655\uC778: ${w * normalizedHeight} \u2248 ${h}`); // \uC57D 421\n </script>\n */\n export const ratio = (numerator: number, denominator: number, multiplier: number = 1): number => {\n // numerator(\uBD84\uC790) : denominator(\uBD84\uBAA8) = multiplier : x\n // x = multiplier * denominator / numerator\n return multiplier * (denominator / numerator)\n // a:b = c:x \uBE44\uB840\uC2DD\uC744 \uC774\uC6A9\uD574 x \uAC12\uC744 \uAD6C\uD568\n // ax = bc\n // x = bc/a\n }\n //end - start \uB05D\uACFC \uC2DC\uC791\uC758 \uC0AC\uC774\uAE38\uC774\uB97C \uCDE8\uB4DD\uD55C\uB2E4.\n export const getBetweenLength = (start: number, end: number) => {\n return end - start;\n };\n\n //\uC804\uCCB4\uAC12\uC5D0\uC11C \uC77C\uBD80\uAC12\uC740 \uBA87 \uD37C\uC13C\uD2B8? \uACC4\uC0B0\uBC95 \uACF5\uC2DD tot\uC5D0\uC11C data\uB294 \uBA87%\uC778\uAC00.\n export const getPercentByTotal = (tot: number, data: number) => {\n /*\n \uC804\uCCB4\uAC12\uC5D0\uC11C \uC77C\uBD80\uAC12\uC740 \uBA87 \uD37C\uC13C\uD2B8? \uACC4\uC0B0\uBC95 \uACF5\uC2DD\n \uC77C\uBD80\uAC12 \u00F7 \uC804\uCCB4\uAC12 X 100\n \uC608\uC81C) 300\uC5D0\uC11C 105\uB294 \uBA87\uD37C\uC13C\uD2B8?\n \uB2F5: 35%\n */\n return (data / tot) * 100;\n };\n export const getRatioByTotal = (tot: number, data: number) => {\n return (data / tot)\n };\n\n //\uC804\uCCB4\uAC12\uC758 \uBA87 \uD37C\uC13C\uD2B8\uB294 \uC5BC\uB9C8? \uACC4\uC0B0\uBC95 \uACF5\uC2DD tot\uC5D0\uC11C wantPercent\uB294 \uBA87\uC778\uAC00?\n export const getValueByTotalInPercent = (tot: number, wantPercent: number) => {\n /*\n \uC804\uCCB4\uAC12 X \uD37C\uC13C\uD2B8 \u00F7 100\n \uC608\uC81C) 300\uC758 35\uD37C\uC13C\uD2B8\uB294 \uC5BC\uB9C8?\n \uB2F5) 105\n */\n return (tot * wantPercent) / 100;\n };\n export const getValueByTotalInRatio = (tot: number, ratio: number) => {\n return (tot * ratio);\n };\n\n //\uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uC99D\uAC00\uC2DC\uD0A4\uB294 \uACF5\uC2DD tot\uC5D0\uC11C wantPercent\uC744 \uC99D\uAC00 \uC2DC\uD0A8\uB2E4\n export const getValuePercentUp = (tot: number, wantPercent: number) => {\n /*\n \uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uC99D\uAC00\uC2DC\uD0A4\uB294 \uACF5\uC2DD\n \uC22B\uC790 X (1 + \uD37C\uC13C\uD2B8 \u00F7 100)\n \uC608\uC81C) 1548\uC744 66\uD37C\uC13C\uD2B8 \uC99D\uAC00\uD558\uBA74?\n \uB2F5) 2569.68\n */\n return tot * (1 + wantPercent / 100);\n };\n\n export const getValueRatioUp = (tot: number, ratio: number) => {\n return tot * (1 + ratio);\n }\n\n //\uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uAC10\uC18C\uD558\uB294 \uACF5\uC2DD tot\uC5D0\uC11C wantPercent\uC744 \uC99D\uAC10 \uC2DC\uD0A8\uB2E4\n export const getValuePercentDown = (tot: number, wantPercent: number) => {\n /*\n \uC22B\uC790\uB97C \uBA87 \uD37C\uC13C\uD2B8 \uAC10\uC18C\uD558\uB294 \uACF5\uC2DD\n \uC22B\uC790 X (1 - \uD37C\uC13C\uD2B8 \u00F7 100)\n \uC608\uC81C) 1548\uC744 66\uD37C\uC13C\uD2B8 \uAC10\uC18C\uD558\uBA74?\n \uB2F5) 526.32\n */\n return tot * (1 - wantPercent / 100);\n };\n\n export const getValueRatioDown = (tot: number, ratio: number) => {\n return tot * (1 - ratio);\n }\n\n\n //\uBC14\uB840\uC2DD\n // A:B = C:X => 30:50 = 33 : x\n // 30X = 50*33\n // X = BC / 30\n\n\n // Bezier\n // https://cubic-bezier.com/#.17,.67,.83,.67\n // https://matthewlein.com/tools/ceaser\n // https://easings.net/ko#\n // (0.250, 0.250, 0.750, 0.750); /* linear */\n export const beziers = (points: (Point3D | { x: number; y: number, z: number })[], frame: number) => {\n const datas = new Array(frame).fill(undefined);\n for (let i = 0; i < datas.length; i++) {\n datas[i] = MathUtil.bezier(points, frame, i);\n }\n return datas;\n };\n\n // \uCC98\uC74C\uC810\uC740 \uD3EC\uD568\uB418\uC9C0 \uC54A\uB294\uB2E4, \uB05D\uC810\uC740 \uD3EC\uD568\uB41C\uB2E4.\n export const bezier = (points: (Point3D | { x: number; y: number, z: number })[], frame: number, idx: number): Vector => {\n if (points && points.length > 0) {\n const pv = points.map(it => new Vector(it.x, it.y, it.z));\n const steps: Vector[] = [];\n pv.reduce((a, b) => {\n const step = a.toSub(b).div(frame).mult(idx + 1);\n steps.push(a.toSub(step));\n return b;\n });\n\n if (steps.length <= 1) {\n return steps[0];\n }\n return MathUtil.bezier(steps.map(it => new Point3D(it)), frame, idx);\n } else {\n return new Vector();\n }\n };\n\n // \uC2DC\uC791\uC810\uACFC \uB05D\uC810\uC740 \uD3EC\uD568\uD558\uC9C0 \uC54A\uB294\uB2E4.\n export function cubicBezier(position: { start: number; end: number; }, frameConfig: { frame: number; }, bezierConfig: BezierConfig): number[];\n export function cubicBezier(position: { start: Obj; end: Obj; }, frameConfig: { frame: number; }, bezierConfig: BezierConfig): Obj[];\n export function cubicBezier(position: { start: Point3D; end: Point3D; }, frameConfig: { frame: number; }, bezierConfig: BezierConfig): Point3D[];\n export function cubicBezier(\n position: {\n start: number; // \uC2DC\uC791 \uAC12\n end: number; // \uB05D \uAC12\n } | {\n start: Point3D; // \uC2DC\uC791 \uAC12\n end: Point3D; // \uB05D \uAC12\n } | {\n start: Obj; // \uC2DC\uC791 \uAC12\n end: Obj; // \uB05D \uAC12\n },\n frameConfig: {\n // includeStartEnd?: boolean,\n frame: number; // \uD504\uB808\uC784 \uC218 (\uBC30\uC5F4 \uD06C\uAE30)\n },\n bezierConfig: BezierConfig\n ): number[] | Point3D[] | Obj[] {\n\n\n if (position.start instanceof Obj && position.end instanceof Obj) {\n const x = MathUtil.cubicBezier({start: position.start.x, end: position.end.x}, frameConfig, bezierConfig);\n const y = MathUtil.cubicBezier({start: position.start.y, end: position.end.y}, frameConfig, bezierConfig);\n const z = MathUtil.cubicBezier({start: position.start.z, end: position.end.z}, frameConfig, bezierConfig);\n const v = MathUtil.cubicBezier({start: position.start.volume, end: position.end.volume}, frameConfig, bezierConfig);\n const m = MathUtil.cubicBezier({start: position.start.mass, end: position.end.mass}, frameConfig, bezierConfig);\n const e = MathUtil.cubicBezier({start: position.start.e, end: position.end.e}, frameConfig, bezierConfig);\n const r = MathUtil.cubicBezier({start: position.start.rotate, end: position.end.rotate}, frameConfig, bezierConfig);\n const w = MathUtil.cubicBezier({start: position.start.width, end: position.end.width}, frameConfig, bezierConfig);\n const h = MathUtil.cubicBezier({start: position.start.height, end: position.end.height}, frameConfig, bezierConfig);\n const t0 = MathUtil.cubicBezier({start: position.start.transform[0], end: position.end.transform[0]}, frameConfig, bezierConfig);\n const t1 = MathUtil.cubicBezier({start: position.start.transform[1], end: position.end.transform[1]}, frameConfig, bezierConfig);\n const t2 = MathUtil.cubicBezier({start: position.start.transform[2], end: position.end.transform[2]}, frameConfig, bezierConfig);\n const t3 = MathUtil.cubicBezier({start: position.start.transform[3], end: position.end.transform[3]}, frameConfig, bezierConfig);\n const t4 = MathUtil.cubicBezier({start: position.start.transform[4], end: position.end.transform[4]}, frameConfig, bezierConfig);\n const t5 = MathUtil.cubicBezier({start: position.start.transform[5], end: position.end.transform[5]}, frameConfig, bezierConfig);\n const colorR = MathUtil.cubicBezier({start: position.start.color.r ?? 0, end: position.end.color.r ?? 0}, frameConfig, bezierConfig);\n const colorG = MathUtil.cubicBezier({start: position.start.color.g ?? 0, end: position.end.color.g ?? 0}, frameConfig, bezierConfig);\n const colorB = MathUtil.cubicBezier({start: position.start.color.b ?? 0, end: position.end.color.b ?? 0}, frameConfig, bezierConfig);\n const colorA = MathUtil.cubicBezier({start: position.start.color.a ?? 255, end: position.end.color.a ?? 255}, frameConfig, bezierConfig);\n const objs = x.map((x, idx) => {\n const obj = new Obj({x, y: y[idx], z: z[idx]});\n obj.volume = v[idx];\n obj.mass = m[idx];\n obj.e = e[idx];\n obj.rotate = r[idx];\n obj.width = w[idx];\n obj.height = h[idx];\n obj.transform = [t0[idx], t1[idx], t2[idx], t3[idx], t4[idx], t5[idx]];\n obj.color = {r: colorR[idx], g: colorG[idx], b: colorB[idx], a: colorA[idx]};\n return obj;\n });\n return objs;\n } else if (position.start instanceof Point3D && position.end instanceof Point3D) {\n const x = MathUtil.cubicBezier({start: position.start.x, end: position.end.x}, frameConfig, bezierConfig);\n const y = MathUtil.cubicBezier({start: position.start.y, end: position.end.y}, frameConfig, bezierConfig);\n const z = MathUtil.cubicBezier({start: position.start.z, end: position.end.z}, frameConfig, bezierConfig);\n return x.map((x, idx) => new Point3D(x, y[idx], z[idx]));\n }\n\n\n const {start, end} = position as { start: number, end: number };\n\n // ----\n\n const {frame} = frameConfig;\n let {p1x, p1y, p2x, p2y} = Array.isArray(bezierConfig) ? {p1x: bezierConfig[0], p1y: bezierConfig[1], p2x: bezierConfig[2], p2y: bezierConfig[3]} : bezierConfig;\n p1x = p1x === 'random' ? Math.random() : p1x;\n p1y = p1y === 'random' ? Math.random() : p1y;\n p2x = p2x === 'random' ? Math.random() : p2x;\n p2y = p2y === 'random' ? Math.random() : p2y;\n\n const result: number[] = [];\n const totalChange = end - start;\n\n // console.log('----222->',totalChange);\n\n // 3\uCC28 \uBCA0\uC9C0\uC5B4 \uACE1\uC120 \uACF5\uC2DD\n const bezier = (t: number): number => {\n const t2 = Number(t * t);\n const t3 = Number(t2 * t);\n const mt = Number(1 - t);\n const mt2 = Number(mt * mt);\n const mt3 = Number(mt2 * mt);\n\n return mt3 * 0 + 3 * mt2 * t * Number(p1y) + 3 * mt * t2 * Number(p2y) + t3 * 1;\n };\n\n // frame \uC218\uB9CC\uD07C \uACC4\uC0B0, \uC2DC\uC791\uC810, \uB05D\uC810 \uC81C\uC678\n const targetFrame = frame + 1;\n for (let i = 1; i < targetFrame; i++) {\n // const t = frame <= 1 ? 1 : (i + 1) / frame;\n // const t = frame <= 1 ? 1 : (i + 1) / frame;\n const t = i / targetFrame;\n const progress = bezier(t);\n // console.log('pppppppp', progress);\n const value = start + totalChange * progress;\n result.push(value);\n }\n\n return result;\n\n }\n\n export const diff = (a: number, b: number) => {\n return Math.abs(a - b);\n };\n\n /*\n > \uD22C\uC601\uBD80\uBD84? \uC800\uBD80\uBD84 \uD575\uC2EC\uBD80\uBD84 \uB354 \uC790\uC138\uD558\uAC8C \uC54C\uB824\uC904\uB798\n\n\u2726 \uB124, \uADF8\uB7FC\uC694. \uC774 \uBD80\uBD84\uC774 \uAE30\uD558\uD559\uC801\uC73C\uB85C \uC5B4\uB5A4 \uC758\uBBF8\uB97C \uAC00\uC9C0\uB294\uC9C0 \uADF8\uB9BC\uACFC \uD568\uAED8 \uBA38\uB9BF\uC18D\uC73C\uB85C \uC0C1\uC0C1\uD558\uBA70 \uC774\uD574\uD558\uBA74\n \uC27D\uC2B5\uB2C8\uB2E4.\n\n \uD575\uC2EC \uC544\uC774\uB514\uC5B4: \uADF8\uB9BC\uC790 \uB0B4\uB9AC\uAE30 (Projection)\n\n \uAC00\uC7A5 \uAC04\uB2E8\uD55C \uBE44\uC720\uB294 \uADF8\uB9BC\uC790\uC785\uB2C8\uB2E4.\n\n\n * `\uC120\uBD84 vw`: \uB545\uC5D0 \uB193\uC5EC\uC788\uB294 \uB9C9\uB300\uAE30\uB77C\uACE0 \uC0C1\uC0C1\uD574 \uBCF4\uC138\uC694. (v\uB294 \uC2DC\uC791\uC810, w\uB294 \uB05D\uC810)\n * `\uC810 p`: \uACF5\uC911\uC5D0 \uB5A0 \uC788\uB294 \uB9C8\uC6B0\uC2A4 \uCEE4\uC11C\uB77C\uACE0 \uC0C1\uC0C1\uD574 \uBCF4\uC138\uC694.\n * \uBAA9\uD45C: \uB9C8\uC6B0\uC2A4 \uCEE4\uC11C(p)\uC5D0\uC11C \uB9C9\uB300\uAE30(vw)\uAE4C\uC9C0 \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC9C0\uC810\uC744 \uCC3E\uB294 \uAC83.\n\n\n \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC9C0\uC810\uC740 p\uC5D0\uC11C \uB9C9\uB300\uAE30\uB85C \uC218\uC9C1\uC73C\uB85C \uC120\uC744 \uB0B4\uB838\uC744 \uB54C \uB9CC\uB098\uB294 \uC810\uC785\uB2C8\uB2E4. \uB9C8\uCE58 p \uBC14\uB85C \uC704\uC5D0 \uC190\uC804\uB4F1\uC744\n \uCF1C\uC11C \uB9C9\uB300\uAE30\uC5D0 \uADF8\uB9BC\uC790\uB97C \uB9CC\uB4DC\uB294 \uAC83\uACFC \uAC19\uC2B5\uB2C8\uB2E4. \uC774 \uADF8\uB9BC\uC790\uAC00 \uB5A8\uC5B4\uC9C0\uB294 \uC9C0\uC810\uC774 \uBC14\uB85C \uD22C\uC601(projection)\uC785\uB2C8\uB2E4.\n\n ---\n\n \uCF54\uB4DC \uC0C1\uC138 \uBD84\uC11D\n\n\n let t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y)) / l2;\n\n \uC774 \uD55C \uC904\uC758 \uCF54\uB4DC\uB294 \uBC14\uB85C \uADF8 '\uADF8\uB9BC\uC790\uAC00 \uB9C9\uB300\uAE30\uC758 \uC5B4\uB514\uC5D0 \uB5A8\uC5B4\uC9C0\uB294\uAC00'\uB97C \uACC4\uC0B0\uD558\uB294 \uACFC\uC815\uC785\uB2C8\uB2E4. \uC5EC\uAE30\uC11C t\uB294\n \uBE44\uC728\uC744 \uC758\uBBF8\uD569\uB2C8\uB2E4.\n\n 1. \uBCA1\uD130(Vector)\uB85C \uC0DD\uAC01\uD558\uAE30\n\n\n \uCF54\uB4DC\uB97C \uC774\uD574\uD558\uAE30 \uC704\uD574 \uB450 \uAC1C\uC758 \uBCA1\uD130\uB97C \uC0DD\uAC01\uD574\uC57C \uD569\uB2C8\uB2E4.\n\n\n * \uBCA1\uD130 1 (`vw`): \uB9C9\uB300\uAE30 \uC790\uCCB4\uC758 \uBC29\uD5A5\uACFC \uAE38\uC774\uB97C \uB098\uD0C0\uB0B4\uB294 \uBCA1\uD130\uC785\uB2C8\uB2E4.\n * w.x - v.x (x\uBC29\uD5A5)\n * w.y - v.y (y\uBC29\uD5A5)\n * \uBCA1\uD130 2 (`vp`): \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810\uC5D0\uC11C \uB9C8\uC6B0\uC2A4 \uCEE4\uC11C\uAE4C\uC9C0\uC758 \uBCA1\uD130\uC785\uB2C8\uB2E4.\n * p.x - v.x (x\uBC29\uD5A5)\n * p.y - v.y (y\uBC29\uD5A5)\n\n\n 2. \uBD84\uC790: \uBCA1\uD130 \uB0B4\uC801 (Dot Product)\n\n ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y))\n\n\n \uC774 \uBD80\uBD84\uC740 \uB450 \uBCA1\uD130 vp\uC640 vw\uC758 \uB0B4\uC801(dot product)\uC744 \uACC4\uC0B0\uD558\uB294 \uACF5\uC2DD\uC785\uB2C8\uB2E4. \uBCA1\uD130 \uB0B4\uC801\uC740 \uB450 \uBCA1\uD130\uAC00 \uC5BC\uB9C8\uB098\n \"\uAC19\uC740 \uBC29\uD5A5\uC744 \uBC14\uB77C\uBCF4\uACE0 \uC788\uB294\uC9C0\"\uB97C \uB098\uD0C0\uB0B4\uB294 \uC218\uCE58\uC785\uB2C8\uB2E4.\n\n\n * \uB450 \uBCA1\uD130\uAC00 \uC11C\uB85C \uC218\uC9C1\uC774\uBA74 \uB0B4\uC801\uC740 0\uC785\uB2C8\uB2E4.\n * \uB450 \uBCA1\uD130\uAC00 \uAC19\uC740 \uBC29\uD5A5\uC744 \uBCFC\uC218\uB85D \uB0B4\uC801 \uAC12\uC740 \uCEE4\uC9D1\uB2C8\uB2E4.\n\n \uAE30\uD558\uD559\uC801\uC73C\uB85C, `vp` \uBCA1\uD130\uB97C `vw` \uBCA1\uD130 \uC704\uB85C \uD22C\uC601(\uADF8\uB9BC\uC790)\uC2DC\uCF30\uC744 \uB54C\uC758 \uAE38\uC774\uC640 \uAD00\uB828\uC774 \uC788\uC2B5\uB2C8\uB2E4.\n\n 3. \uBD84\uBAA8: l2\n\n\n l2\uB294 \uC55E\uC5D0\uC11C \uACC4\uC0B0\uD588\uB4EF\uC774 \uB9C9\uB300\uAE30 \uBCA1\uD130 vw\uC758 \uAE38\uC774\uC758 \uC81C\uACF1\uC785\uB2C8\uB2E4.\n\n 4. t\uC758 \uC758\uBBF8: \uBE44\uC728\n\n \uACB0\uAD6D t\uB294 \uB2E4\uC74C\uACFC \uAC19\uC774 \uACC4\uC0B0\uB429\uB2C8\uB2E4.\n\n t = (\uBCA1\uD130 vp\uC640 vw\uC758 \uB0B4\uC801) / (\uBCA1\uD130 vw\uC758 \uAE38\uC774 \uC81C\uACF1)\n\n\n \uC774 t \uAC12\uC774 \uBC14\uB85C \uD22C\uC601\uB41C \uADF8\uB9BC\uC790 \uC9C0\uC810\uC774 \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810 `v`\uB85C\uBD80\uD130 \uC5BC\uB9C8\uB098 \uB5A8\uC5B4\uC838 \uC788\uB294\uC9C0\uB97C \uB098\uD0C0\uB0B4\uB294 \uBE44\uC728\uC774\n \uB429\uB2C8\uB2E4.\n\n\n * `t = 0`: \uADF8\uB9BC\uC790\uAC00 \uC815\uD655\uD788 \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810 v\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n * `t = 1`: \uADF8\uB9BC\uC790\uAC00 \uC815\uD655\uD788 \uB9C9\uB300\uAE30 \uB05D\uC810 w\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n * `t = 0.5`: \uADF8\uB9BC\uC790\uAC00 \uC815\uD655\uD788 \uB9C9\uB300\uAE30 \uD55C\uAC00\uC6B4\uB370\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n * `t < 0` (\uC608: `t = -0.2`): p\uAC00 v\uC758 \"\uB4A4\uCABD\"\uC5D0 \uC788\uC5B4\uC11C, \uADF8\uB9BC\uC790\uAC00 \uB9C9\uB300\uAE30 \uC2DC\uC791\uC810 \uC774\uC804\uC5D0 \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n (\uB9C9\uB300\uAE30\uB97C \uBB34\uD55C\uD55C \uC9C1\uC120\uC73C\uB85C \uBD24\uC744 \uB54C)\n * `t > 1` (\uC608: `t = 1.5`): p\uAC00 w\uC758 \"\uC55E\uCABD\"\uC5D0 \uC788\uC5B4\uC11C, \uADF8\uB9BC\uC790\uAC00 \uB9C9\uB300\uAE30 \uB05D\uC810\uC744 \uC9C0\uB098\uC11C \uB5A8\uC5B4\uC9D1\uB2C8\uB2E4.\n (\uB9C9\uB300\uAE30\uB97C \uBB34\uD55C\uD55C \uC9C1\uC120\uC73C\uB85C \uBD24\uC744 \uB54C)\n\n \uACB0\uB860\n\n\n \uC774 t \uAC12\uC744 \uACC4\uC0B0\uD558\uB294 \uAC83\uC774 \uD575\uC2EC\uC778 \uC774\uC720\uB294, \uB9C8\uC6B0\uC2A4 \uD3EC\uC778\uD130(p)\uC640 \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC774 \uB9C9\uB300\uAE30 \uB0B4\uBD80\uC5D0 \uC788\uB294\uC9C0,\n \uC544\uB2C8\uBA74 \uC591\uCABD \uB05D\uC810 \uC911 \uD558\uB098\uC778\uC9C0 \uD310\uB2E8\uD560 \uC218 \uC788\uB294 \uAE30\uC900\uC744 \uC81C\uACF5\uD558\uAE30 \uB54C\uBB38\uC785\uB2C8\uB2E4.\n\n\n * t\uAC00 0\uACFC 1 \uC0AC\uC774\uC5D0 \uC788\uB2E4\uBA74, \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC740 \uB9C9\uB300\uAE30 \uC704\uC758 '\uADF8\uB9BC\uC790' \uC9C0\uC810\uC785\uB2C8\uB2E4.\n * t\uAC00 0\uBCF4\uB2E4 \uC791\uB2E4\uBA74, \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC740 \uB9C9\uB300\uAE30\uC758 \uC2DC\uC791\uC810 v\uC785\uB2C8\uB2E4.\n * t\uAC00 1\uBCF4\uB2E4 \uD06C\uB2E4\uBA74, \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC740 \uB9C9\uB300\uAE30\uC758 \uB05D\uC810 w\uC785\uB2C8\uB2E4.\n\n\n \uC774\uAC83\uC774 \uBC14\uB85C \uB2E4\uC74C \uCF54\uB4DC \uB77C\uC778 t = Math.max(0, Math.min(1, t));\uAC00 t\uB97C 0\uACFC 1 \uC0AC\uC774\uB85C \uC81C\uD55C\uD558\uB294 \uC774\uC720\uC785\uB2C8\uB2E4.\n \uC774\uB85C\uC368 \uAC00\uC7A5 \uAC00\uAE4C\uC6B4 \uC810\uC774 \uD56D\uC0C1 \uC120\uBD84 \uC704(\uC591 \uB05D\uC810 \uD3EC\uD568)\uC5D0 \uC788\uB3C4\uB85D \uBCF4\uC7A5\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n */\nexport const distSqToLineSegment = (p: Point2D, v: Point2D, w: Point2D): number => {\n const l2 = (v.x - w.x) ** 2 + (v.y - w.y) ** 2;\n if (l2 === 0) return (p.x - v.x) ** 2 + (p.y - v.y) ** 2;\n let t = ((p.x - v.x) * (w.x - v.x) + (p.y - v.y) * (w.y - v.y)) / l2;\n t = Math.max(0, Math.min(1, t));\n const projection = { x: v.x + t * (w.x - v.x), y: v.y + t * (w.y - v.y) };\n return (p.x - projection.x) ** 2 + (p.y - projection.y) ** 2;\n };\n // static bezirePointToPointVector(point: {point1: Point, point2?: Point, point3?: Point, point4?: Point}) {\n // if (!point.point2) {\n // point.point2 = point.point1;\n // }\n // if (!point.point3) {\n // point.point3 = point.point2;\n // }\n // if (!point.point4) {\n // point.point4 = point.point3;\n // }\n // return {\n // point1: new PointVector(point.point1.x, point.point1.y, point.point1.z),\n // point2: new PointVector(point.point2.x, point.point2.y, point.point2.z),\n // point3: new PointVector(point.point3.x, point.point3.y, point.point3.z),\n // point4: new PointVector(point.point4.x, point.point4.y, point.point4.z),\n // }\n // }\n // static bezier(point: {point1: Point, point2?: Point, point3?: Point, point4?: Point}, frame: number, idx: number) {\n // const pointVector = MathUtil.bezirePointToPointVector(point);\n //\n // const point12Step = PointVector.sub(pointVector.point1, pointVector.point2).div(frame).mult(idx + 1);\n // const point23Step = PointVector.sub(pointVector.point2, pointVector.point3).div(frame).mult(idx + 1);\n // const point34Step = PointVector.sub(pointVector.point3, pointVector.point4).div(frame).mult(idx + 1);\n //\n // pointVector.point1.sub(point12Step);\n // pointVector.point2.sub(point23Step);\n // pointVector.point3.sub(point34Step);\n //\n // const point12MoveStep = PointVector.sub(pointVector.point1, pointVector.point2).div(frame);\n // const point23MoveStep = PointVector.sub(pointVector.point2, pointVector.point3).div(frame);\n // // const point34MoveStep = PointVector.sub(point3, point4).div(frame); // \uB354\uC774\uC0C1\uAC08\uACF3\uC5C6\uC74C\n //\n // const cnt = idx + 1;\n // const point12MovePoint = point12MoveStep.mult(cnt)\n // const point23MovePoint = point23MoveStep.mult(cnt);\n // const combinationPoint1MovePoint = PointVector.sub(pointVector.point1, point12MovePoint); //new PointVector(point1.x - point12MovePoint.x, point1.y - point12MovePoint.y);\n // const combinationPoint2MovePoint = PointVector.sub(pointVector.point2, point23MovePoint); // new PointVector(point2.x - point23MovePoint.x, point2.y - point23MovePoint.y);\n //\n // const finalPointMoveStep = PointVector.sub(combinationPoint1MovePoint, combinationPoint2MovePoint).div(frame);\n // const finalPointMovePoint = finalPointMoveStep.mult(cnt);\n // const final = PointVector.sub(combinationPoint1MovePoint, finalPointMovePoint);\n // return final;\n // }\n //\n // static beziers(point: {point1: Point, point2?: Point, point3?: Point, point4?: Point}, frame: number) {\n // const pointVector = MathUtil.bezirePointToPointVector(point);\n // const frames = new Array(frame).fill(undefined) as PointVector[];\n // for (let i = 0; i < frame; i++) {\n // frames[i] = MathUtil.bezier(point, frame, i);\n // // pointVector.point1.sub(point12Step);\n // // pointVector.point2.sub(point23Step);\n // // pointVector.point3.sub(point34Step);\n // //\n // // const point12MoveStep = PointVector.sub(pointVector.point1, pointVector.point2).div(frame);\n // // const point23MoveStep = PointVector.sub(pointVector.point2, pointVector.point3).div(frame);\n // // // const point34MoveStep = PointVector.sub(point3, point4).div(frame); // \uB354\uC774\uC0C1\uAC08\uACF3\uC5C6\uC74C\n // //\n // // const cnt = i + 1;\n // // const point12MovePoint = point12MoveStep.mult(cnt)\n // // const point23MovePoint = point23MoveStep.mult(cnt);\n // // const combinationPoint1MovePoint = PointVector.sub(pointVector.point1, point12MovePoint); //new PointVector(point1.x - point12MovePoint.x, point1.y - point12MovePoint.y);\n // // const combinationPoint2MovePoint = PointVector.sub(pointVector.point2, point23MovePoint); // new PointVector(point2.x - point23MovePoint.x, point2.y - point23MovePoint.y);\n // //\n // // const finalPointMoveStep = PointVector.sub(combinationPoint1MovePoint, combinationPoint2MovePoint).div(frame);\n // // const finalPointMovePoint = finalPointMoveStep.mult(cnt);\n // // const final = PointVector.sub(combinationPoint1MovePoint, finalPointMovePoint);\n // }\n // return frames;\n // }\n\n\n// interface Point {\n// x: number;\n// y: number;\n// }\n//\n// interface BezierPathOptions {\n// /**\n// * \uC81C\uC5B4\uC810\uC744 \uC5BC\uB9C8\uB098 \uBA40\uB9AC \uB458\uC9C0 \uACB0\uC815\uD558\uB294 \uAC12\uC785\uB2C8\uB2E4. (\uAE30\uBCF8\uAC12: 0.25)\n// * 0 \uC774\uBA74 \uAC70\uC758 \uC9C1\uC120\uC5D0 \uAC00\uAE5D\uACE0, \uAC12\uC774 \uCEE4\uC9C8\uC218\uB85D \uACE1\uC120\uC758 \uD718\uC5B4\uC9D0\uC774 \uCEE4\uC9D1\uB2C8\uB2E4.\n// * \uC74C\uC218 \uAC12\uC744 \uC8FC\uBA74 \uBC18\uB300 \uBC29\uD5A5\uC73C\uB85C \uD729\uB2C8\uB2E4.\n// */\n// controlPointOffsetFactor?: number;\n//\n// /**\n// * \uC810\uB4E4\uC758 \uBD84\uD3EC\uB97C \uC870\uC808\uD558\uB294 \uAC00\uC18D\uB3C4 \uACC4\uC218\uC785\uB2C8\uB2E4. (\uAE30\uBCF8\uAC12: 1)\n// * 1: \uB4F1\uAC04\uACA9 (\uC120\uD615)\n// * > 1: \uC2DC\uC791 \uBD80\uBD84\uC5D0 \uC810\uB4E4\uC774 \uBAA8\uC774\uACE0 \uB05D\uC73C\uB85C \uAC08\uC218\uB85D \uAC04\uACA9\uC774 \uB113\uC5B4\uC9D0 (\uAC00\uC18D, ease-in)\n// * < 1: \uB05D \uBD80\uBD84\uC5D0 \uC810\uB4E4\uC774 \uBAA8\uC774\uACE0 \uC2DC\uC791 \uBD80\uBD84\uC758 \uAC04\uACA9\uC774 \uB113\uC5B4\uC9D0 (\uAC10\uC18D, ease-out)\n// * \uC608: 2\uB294 \uC81C\uACF1 \uAC00\uC18D, 0.5\uB294 \uC81C\uACF1\uADFC \uAC10\uC18D.\n// */\n// accelerationFactor?: number;\n// }\n//\n// /**\n// * 2\uCC28 \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uC704\uC758 \uD2B9\uC815 t \uAC12\uC5D0\uC11C\uC758 \uC810 \uC88C\uD45C\uB97C \uACC4\uC0B0\uD569\uB2C8\uB2E4.\n// * B(t) = (1-t)^2 * P0 + 2 * (1-t) * t * P1 + t^2 * P2\n// * @param t \uB9E4\uAC1C\uBCC0\uC218 (0\uC5D0\uC11C 1 \uC0AC\uC774)\n// * @param p0 \uC2DC\uC791\uC810\n// * @param p1 \uC81C\uC5B4\uC810\n// * @param p2 \uB05D\uC810\n// * @returns \uACC4\uC0B0\uB41C \uC810\uC758 \uC88C\uD45C\n// */\n// function quadraticBezier(t: number, p0: Point, p1: Point, p2: Point): Point {\n// const mt = 1 - t; // (1-t)\n// const mt2 = mt * mt; // (1-t)^2\n// const t2 = t * t; // t^2\n//\n// const x = mt2 * p0.x + 2 * mt * t * p1.x + t2 * p2.x;\n// const y = mt2 * p0.y + 2 * mt * t * p1.y + t2 * p2.y;\n//\n// return { x, y };\n// }\n//\n// /**\n// * \uCD9C\uBC1C\uC810\uACFC \uB3C4\uCC29\uC810 \uC0AC\uC774\uB97C \uC787\uB294 2\uCC28 \uBCA0\uC9C0\uC5D0 \uACE1\uC120\uC744 \uB530\uB77C \uC774\uB3D9\uD560 \uC88C\uD45C\uB4E4\uC744 \uACC4\uC0B0\uD569\uB2C8\uB2E4.\n// * @param startPoint \uCD9C\uBC1C\uC810 \uC88C\uD45C { x, y }\n// * @param endPoint \uB3C4\uCC29\uC810 \uC88C\uD45C { x, y }\n// * @param options \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uBC0F \uC810 \uBD84\uD3EC \uC635\uC158\n// * @param numberOfSteps \uC0DD\uC131\uD560 \uC911\uAC04 \uC774\uB3D9 \uC88C\uD45C\uC758 \uAC1C\uC218 (\uC774\uB3D9 \uACBD\uB85C\uC0C1\uC758 \uC810 \uAC1C\uC218)\n// * @returns \uACC4\uC0B0\uB41C \uC88C\uD45C\uB4E4\uC758 \uBC30\uC5F4 (startPoint\uB294 \uD3EC\uD568\uD558\uC9C0 \uC54A\uACE0, endPoint\uB294 \uD3EC\uD568)\n// */\n// function getPointsOnBezierPath(\n// startPoint: Point,\n// endPoint: Point,\n// options: BezierPathOptions = {}, // \uAE30\uBCF8\uAC12 \uBE48 \uAC1D\uCCB4\n// numberOfSteps: number\n// ): Point[] {\n// // --- \uC635\uC158 \uAE30\uBCF8\uAC12 \uC124\uC815 ---\n// const controlPointOffsetFactor = options.controlPointOffsetFactor ?? 0.25; // \uAE30\uBCF8\uAC12 0.25\n// const accelerationFactor = options.accelerationFactor ?? 1; // \uAE30\uBCF8\uAC12 1 (\uC120\uD615)\n//\n// // --- \uC785\uB825\uAC12 \uC720\uD6A8\uC131 \uAC80\uC0AC ---\n// if (numberOfSteps <= 0) {\n// console.warn(\"numberOfSteps\uB294 0\uBCF4\uB2E4 \uCEE4\uC57C \uD569\uB2C8\uB2E4.\");\n// return []; // \uBE48 \uBC30\uC5F4 \uBC18\uD658 \uB610\uB294 \uC5D0\uB7EC \uCC98\uB9AC\n// }\n//\n// const points: Point[] = [];\n// const p0 = startPoint;\n// const p2 = endPoint;\n//\n// // --- \uC81C\uC5B4\uC810(P1) \uC790\uB3D9 \uACC4\uC0B0 ---\n// const midX = (p0.x + p2.x) / 2;\n// const midY = (p0.y + p2.y) / 2;\n//\n// const deltaX = p2.x - p0.x;\n// const deltaY = p2.y - p0.y;\n//\n// const distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n//\n// let p1: Point;\n//\n// if (distance === 0) {\n// // \uC2DC\uC791\uC810\uACFC \uB05D\uC810\uC774 \uAC19\uC73C\uBA74 \uC81C\uC5B4\uC810\uB3C4 \uAC19\uC740 \uC704\uCE58\uB85C \uC124\uC815 (\uC9C1\uC120 \uC774\uB3D9 \uC5C6\uC74C)\n// p1 = { ...p0 };\n// // \uC774 \uACBD\uC6B0, \uBAA8\uB4E0 \uACC4\uC0B0\uB41C \uC810\uC740 \uC2DC\uC791/\uB05D \uC810\uACFC \uB3D9\uC77C\uD558\uAC8C \uB429\uB2C8\uB2E4.\n// // \uC694\uCCAD\uC5D0 \uB530\uB77C \uBE48 \uBC30\uC5F4\uC744 \uBC18\uD658\uD558\uAC70\uB098, \uB05D\uC810\uC744 numberOfSteps\uB9CC\uD07C \uBC18\uD658\uD560 \uC218\uB3C4 \uC788\uC2B5\uB2C8\uB2E4.\n// // \uC5EC\uAE30\uC11C\uB294 \uACC4\uC0B0 \uB85C\uC9C1\uC744 \uADF8\uB300\uB85C \uB450\uC5B4 \uB3D9\uC77C\uD55C \uC810\uC774 \uBC18\uBCF5 \uC0DD\uC131\uB418\uB3C4\uB85D \uD569\uB2C8\uB2E4.\n// } else {\n// // \uC2DC\uC791\uC810\uC5D0\uC11C \uB05D\uC810\uC73C\uB85C\uC758 \uBCA1\uD130\uC5D0 \uC218\uC9C1\uC778 \uBC29\uD5A5 \uBCA1\uD130 \uACC4\uC0B0 (\uC2DC\uACC4 \uBC18\uB300 \uBC29\uD5A5 90\uB3C4 \uD68C\uC804)\n// const perpX = -deltaY / distance;\n// const perpY = deltaX / distance;\n//\n// // \uC911\uAC04 \uC9C0\uC810\uC5D0\uC11C \uC218\uC9C1 \uBC29\uD5A5\uC73C\uB85C \uC635\uC158\uC5D0 \uB530\uB77C \uC81C\uC5B4\uC810 \uC704\uCE58 \uACC4\uC0B0\n// const offset = distance * controlPointOffsetFactor;\n// p1 = {\n// x: midX + perpX * offset,\n// y: midY + perpY * offset,\n// };\n// }\n//\n// // --- \uACE1\uC120 \uC0C1\uC758 \uC810 \uACC4\uC0B0 ---\n// for (let i = 1; i <= numberOfSteps; i++) {\n// // 1. \uAE30\uBCF8 \uD30C\uB77C\uBBF8\uD130 u \uACC4\uC0B0 (0 < u <= 1)\n// const u = i / numberOfSteps;\n// // 2. \uAC00\uC18D\uB3C4 \uC801\uC6A9\uB41C \uD30C\uB77C\uBBF8\uD130 t \uACC4\uC0B0\n// const t = Math.pow(u, accelerationFactor);\n// // 3. \uBCA0\uC9C0\uC5D0 \uACE1\uC120 \uC704\uC758 \uC810 \uACC4\uC0B0\n// const pointOnCurve = quadraticBezier(t, p0, p1, p2);\n// points.push(pointOnCurve);\n// }\n//\n// return points; // \uACC4\uC0B0\uB41C \uC911\uAC04 \uC88C\uD45C\uB4E4\uC758 \uBC30\uC5F4 \uBC18\uD658\n// }\n//\n// // --- \uC0AC\uC6A9 \uC608\uC2DC ---\n// const start: Point = { x: 4, y: 10 };\n// const end: Point = { x: 50, y: 20 };\n// const steps = 10; // 10\uAC1C\uC758 \uC911\uAC04 \uC9C0\uC810 \uACC4\uC0B0\n//\n// // \uC608\uC2DC 1: \uAE30\uBCF8 \uC635\uC158 (\uC57D\uAC04\uC758 \uACE1\uC120, \uB4F1\uAC04\uACA9)\n// const path1 = getPointsOnBezierPath(start, end, {}, steps);\n// console.log(\"\uAE30\uBCF8 \uC635\uC158 \uACBD\uB85C:\", path1.map(p => `(${p.x.toFixed(1)}, ${p.y.toFixed(1)})`).join(\" -> \"));\n//\n// // \uC608\uC2DC 2: \uB354 \uB9CE\uC774 \uD718\uC5B4\uC9C0\uAC8C (offset \uC99D\uAC00), \uAC00\uC18D \uD6A8\uACFC \uCD94\uAC00 (acceleration > 1)\n// const path2 = getPointsOnBezierPath(start, end, { controlPointOffsetFactor: 0.6, accelerationFactor: 2 }, steps);\n// console.log(\"\uAC15\uD55C \uACE1\uC120 + \uAC00\uC18D \uACBD\uB85C:\", path2.map(p => `(${p.x.toFixed(1)}, ${p.y.toFixed(1)})`).join(\" -> \"));\n//\n// // \uC608\uC2DC 3: \uBC18\uB300 \uBC29\uD5A5\uC73C\uB85C \uD718\uAC8C (offset \uC74C\uC218), \uAC10\uC18D \uD6A8\uACFC \uCD94\uAC00 (acceleration < 1)\n// const path3 = getPointsOnBezierPath(start, end, { controlPointOffsetFactor: -0.3, accelerationFactor: 0.5 }, steps);\n// console.log(\"\uBC18\uB300 \uACE1\uC120 + \uAC10\uC18D \uACBD\uB85C:\", path3.map(p => `(${p.x.toFixed(1)}, ${p.y.toFixed(1)})`).join(\" -> \"));\n\n export const rotatePoint = (point: Point2D, center: Point2D, angleInRadians: number): Point2D => {\n // Translate point to origin so that center is the origin\n const translatedX = point.x - center.x;\n const translatedY = point.y - center.y;\n\n // Rotate point\n const rotatedX = translatedX * Math.cos(angleInRadians) - translatedY * Math.sin(angleInRadians);\n const rotatedY = translatedX * Math.sin(angleInRadians) + translatedY * Math.cos(angleInRadians);\n\n // Translate point back\n return new Point2D(rotatedX + center.x, rotatedY + center.y);\n }\n}\n", "export type SizeType = {\n width: number;\n height: number;\n};\n\nexport const isSizeType = (obj: any): obj is SizeType =>\n !!obj &&\n typeof obj.width === 'number' &&\n typeof obj.height === 'number';", "import { Point2D } from './Point2D';\nimport { MathUtil } from '../math/MathUtil';\nimport AngleUnitType = MathUtil.AngleUnitType;\nimport { isSizeType, SizeType } from './SizeType';\nimport { Point2DType } from './Point2DType';\n\ntype ValueLinkControl<T> = { value: T, noLink: boolean | Rect };\nconst isValueLinkControl = <T = any>(data: any): data is ValueLinkControl<T> => {\n return typeof data === 'object' && 'value' in data && 'noLink' in data;\n // return data.value !== undefined && data.noLink !== undefined && typeof data.value === 'object' && typeof data.noLink === 'boolean';\n}\n\nexport class Rect {\n private _start: Point2D;\n private _width: number\n private _height: number\n private linkRects?: Set<Rect>;\n\n constructor(size: SizeType);\n constructor(point: Point2DType, endPoint: Point2DType);\n constructor(point: Point2D, endPoint: Point2D);\n constructor(point: Point2D, width?: number, height?: number);\n constructor(x: number, y: number, width?: number, height?: number);\n constructor(xOrPoint: number | Point2D | { x: number, y: number } | SizeType, yOrPointOrWidth?: number | Point2D | { x: number, y: number }, widthOrHeight = 0, heightOrUndefined = 0) {\n if (isSizeType(xOrPoint)) {\n this._start = new Point2D(0, 0);\n this._width = xOrPoint.width;\n this._height = xOrPoint.height;\n } else if (typeof xOrPoint === 'object' && typeof yOrPointOrWidth === 'object') {\n this._start = xOrPoint instanceof Point2D ? xOrPoint : new Point2D(xOrPoint.x, xOrPoint.y);\n this.end = yOrPointOrWidth instanceof Point2D ? yOrPointOrWidth : new Point2D(yOrPointOrWidth.x, yOrPointOrWidth.y);\n } else if (typeof xOrPoint === 'object' && typeof yOrPointOrWidth === 'number') {\n this._start = xOrPoint instanceof Point2D ? xOrPoint : new Point2D(xOrPoint.x, xOrPoint.y);\n this._width = yOrPointOrWidth;\n this._height = widthOrHeight\n } else if (typeof xOrPoint === 'number' && typeof yOrPointOrWidth === 'number') {\n this._start = new Point2D(xOrPoint, yOrPointOrWidth);\n this._width = widthOrHeight;\n this._height = heightOrUndefined;\n }\n }\n\n\n private valueLinkControl<T>(value: T | ValueLinkControl<T>) {\n let v: T;\n let noLink: boolean | Rect = false;\n if (isValueLinkControl(value)) {\n v = value.value;\n noLink = value.noLink;\n } else {\n v = value;\n }\n return {value: v, noLink};\n }\n\n get width(): number {\n return this._width;\n }\n\n get height(): number {\n return this._height;\n }\n\n get start(): Point2D {\n return this._start.copy();\n }\n\n ////////////////////\n\n set width(width: number) {\n this.setWidth(width);\n }\n\n public setWidth(width: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(width);\n const percentDiff = MathUtil.getPercentByTotal(this._width, value);\n this._width = value;\n this.applyWidthPercentLinks({value: percentDiff, noLink});\n }\n\n\n set height(height: number) {\n this.setHeight(height);\n }\n\n public setHeight(height: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(height);\n const percentDiff = MathUtil.getPercentByTotal(this._height, value);\n this._height = value;\n this.applyHeightPercentLinks({value: percentDiff, noLink});\n }\n\n set start(inputValue: Point2D) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const percentDiff = new Point2D({x: MathUtil.getPercentByTotal(this._start.x, value.x), y: MathUtil.getPercentByTotal(this._start.y, value.y)});\n this._start = value;\n this.applyStartPercentLinks({value: percentDiff, noLink});\n }\n\n // \uC5B8\uC81C\uC4F0\uB294\uAC70\uC9C0 \u3161\u3161?\n setWidthFromEnd(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const percentDiff = MathUtil.getPercentByTotal(this.start.x, value);\n this._start.x = this.end.x - value;\n this.applyStartXPercentLinks({value: percentDiff, noLink});\n }\n\n set widthFromEnd(inputValue: number) {\n this.setWidthFromEnd(inputValue);\n }\n\n // \uC5B8\uC81C\uC4F0\uB294\uAC70\uC9C0 \u3161\u3161?\n setHeightFromEnd(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.end.y - value;\n const percentDiff = MathUtil.getPercentByTotal(this.start.y, diff);\n this._start.y = diff;\n this.applyStartYPercentLinks({value: percentDiff, noLink});\n }\n\n set heightFromEnd(inputValue: number) {\n this.setHeightFromEnd(inputValue);\n }\n\n setWidthFromCenter(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.center.x - (value / 2);\n const percentDiff = MathUtil.getPercentByTotal(this.start.x, diff);\n this._start.x = diff;\n this.applyStartXPercentLinks(percentDiff);\n }\n\n set widthFromCenter(inputValue: number) {\n this.setWidthFromCenter(inputValue);\n }\n\n setHeightFromCenter(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.center.y - (value / 2);\n const percentDiff = MathUtil.getPercentByTotal(this.start.y, diff);\n this._start.y = diff;\n this.applyStartYPercentLinks(percentDiff);\n }\n\n set heightFromCenter(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = this.center.y - (value / 2);\n const percentDiff = MathUtil.getPercentByTotal(this.start.y, diff);\n this._start.y = diff;\n this.applyStartYPercentLinks(percentDiff);\n }\n\n set x(inputValue: number) {\n this.setX(inputValue);\n }\n\n public setX(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = value - this._start.x;\n const percentDiff = MathUtil.getPercentByTotal(this.width, diff);\n this._start.x = value;\n this.applyStartXPercentLinks({value: percentDiff, noLink});\n }\n\n set y(inputValue: number) {\n this.setY(inputValue);\n }\n\n public setY(inputValue: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(inputValue);\n const diff = value - this._start.y;\n const percentDiff = MathUtil.getPercentByTotal(this.height, diff);\n this._start.y = value;\n this.applyStartYPercentLinks({value: percentDiff, noLink});\n }\n\n ////////////////////////////\n\n applyWidthPercentLinks(widthPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(widthPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.setWidthByWidthPercent({value: value, noLink: this});\n })\n }\n }\n\n applyHeightPercentLinks(heightPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(heightPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.setHeightByHeightPercent({value: value, noLink: this});\n })\n }\n }\n\n applyStartPercentLinks(startPercent: Point2D | ValueLinkControl<Point2D>) {\n let {value, noLink} = this.valueLinkControl(startPercent);\n this.applyStartXPercentLinks({value: value.x, noLink});\n this.applyStartYPercentLinks({value: value.y, noLink});\n }\n\n applyStartXPercentLinks(xPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(xPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.addXByWidthPercent({value: value, noLink: this});\n })\n }\n }\n\n applyStartYPercentLinks(yPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(yPercent);\n if (this.linkRects && (typeof noLink === 'boolean' ? !noLink : true)) {\n Array.from(this.linkRects.values()).filter(it => {\n return typeof noLink === 'boolean' ? true : it !== noLink;\n }).forEach(it => {\n it.addYByHeightPercent({value: value, noLink: this});\n })\n }\n }\n\n hasLink(rect: Rect) {\n return this.linkRects?.has(rect)\n }\n\n isLinked() {\n return !!this.linkRects?.size;\n }\n\n addLink(...rect: Rect[]) {\n this.linkRects ??= new Set<Rect>();\n rect.filter(it => !this.linkRects?.has(it)).forEach(it => {\n this.linkRects?.add(it);\n it.addLink(this);\n })\n }\n\n setLinks(rects: Rect[]) {\n this.unLinkAll();\n this.addLink(...rects);\n }\n\n unLinkAll() {\n if (this.linkRects) {\n Array.from(this.linkRects.values()).forEach(it => {\n this.unLink(it);\n })\n this.linkRects.clear();\n }\n }\n\n unLink(rect: Rect | ValueLinkControl<Rect>) {\n let {value, noLink} = this.valueLinkControl(rect);\n if (this.linkRects) {\n this.linkRects.delete(value);\n }\n if (!noLink)\n value.unLink({value: this, noLink: this});\n }\n\n addWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setWidth({value: this.width + MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n addHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setHeight({value: this.height + MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n addWidthRatio(wRatio: number) {\n this.width = this.width + MathUtil.getValueByTotalInRatio(this.width, wRatio);\n }\n\n addHeightRatio(hRatio: number) {\n this.height = this.height + MathUtil.getValueByTotalInRatio(this.height, hRatio);\n }\n\n addXPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setX({value: this.x + MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n addYPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setY({value: this.y + MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n addXRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setX({value: this.x + MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n addYRatio(hRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hRatio);\n this.setY({value: this.y + MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n ////////////\n\n set endX(value: number) {\n const diff = value - this.x;\n this.width = diff;\n }\n\n set endXPercent(endXPercent: number) {\n this.endX = MathUtil.getValueByTotalInPercent(this.width, endXPercent);\n }\n\n set endYPercent(endYPercent: number) {\n this.endY = MathUtil.getValueByTotalInPercent(this.height, endYPercent);\n }\n\n set endY(value: number) {\n this.height = value - this.y;\n }\n\n set end(value: Point2D) {\n this.width = value.x - this.x;\n this.height = value.y - this.y;\n }\n\n get x(): number {\n return this.start.x;\n }\n\n get y(): number {\n return this.start.y;\n }\n\n get endX(): number {\n return this.end.x;\n }\n\n get endY(): number {\n return this.end.y;\n }\n\n to(startPoint: Point2D) {\n const r = this.copy();\n r.start = startPoint;\n return r;\n }\n\n toRotate(r: number, {rotatePoint = this.center, type = 'degreeAngle'}: { rotatePoint?: { x: number, y: number }, type?: AngleUnitType }): Point2D[] {\n const angle = MathUtil.radians(r, {type});\n const centerPoint = rotatePoint instanceof Point2D ? rotatePoint : new Point2D(rotatePoint.x, rotatePoint.y);\n\n const points = [\n this.leftTop,\n this.rightTop,\n this.rightBottom,\n this.leftBottom\n ];\n\n return points.map(p => MathUtil.rotatePoint(p, centerPoint, angle));\n }\n\n get center(): Point2D {\n return new Point2D(this.start.x + (this.width / 2), this.start.y + (this.height / 2));\n }\n\n get end(): Point2D {\n return new Point2D(this.start.x + this.width, this.start.y + this.height);\n }\n\n get leftTop(): Point2D {\n return this.start.copy();\n }\n\n get leftBottom(): Point2D {\n return new Point2D(this.start.x, this.end.y);\n }\n\n get rightTop(): Point2D {\n return new Point2D(this.end.x, this.start.y);\n }\n\n get rightBottom(): Point2D {\n return this.end;\n }\n\n public copy(): Rect {\n return new Rect(this.x, this.y, this.width, this.height);\n }\n\n /////////////////\n\n getWidthPercent(width: number) {\n return MathUtil.getPercentByTotal(this.width, width);\n }\n\n getWidthRatio(width: number) {\n return MathUtil.getRatioByTotal(this.width, width);\n }\n\n getWidthByPercent(percent: number) {\n return MathUtil.getValueByTotalInPercent(this.width, percent);\n }\n\n getWidthByRatio(percent: number) {\n return MathUtil.getValueByTotalInRatio(this.width, percent);\n }\n\n getHeightPercent(height: number) {\n return MathUtil.getPercentByTotal(this.height, height);\n }\n\n getHeightRatio(height: number) {\n return MathUtil.getRatioByTotal(this.height, height);\n }\n\n getHeightByPercent(percentY: number) {\n return MathUtil.getValueByTotalInPercent(this.height, percentY);\n }\n\n getHeightByRatio(ratio: number) {\n return MathUtil.getValueByTotalInRatio(this.height, ratio);\n }\n\n getXPercent(x: number) {\n return MathUtil.getPercentByTotal(this.width, x - this.x)\n }\n\n getXRatio(x: number) {\n return MathUtil.getRatioByTotal(this.width, x - this.x)\n }\n\n getXByPercent(xPercent: number) {\n return this.x + MathUtil.getValueByTotalInPercent(this.width, xPercent);\n }\n\n getXByRatio(ratio: number) {\n return this.x + MathUtil.getValueByTotalInRatio(this.width, ratio);\n }\n\n getYPercent(y: number) {\n return MathUtil.getPercentByTotal(this.height, y - this.y);\n }\n\n getYRatio(y: number) {\n return MathUtil.getRatioByTotal(this.height, y - this.y);\n }\n\n getYByPercent(yPercent: number) {\n return this.y + MathUtil.getValueByTotalInPercent(this.height, yPercent);\n }\n\n getYByRatio(ratio: number) {\n return this.y + MathUtil.getValueByTotalInRatio(this.height, ratio);\n }\n\n getPercent(point: { x: number, y: number }): Point2D {\n return new Point2D(\n this.getXPercent(point.x),\n this.getYPercent(point.y),\n );\n }\n\n /**\n * \uC8FC\uC5B4\uC9C4 width\uC5D0 \uB9DE\uCDB0 \uBE44\uC728\uC5D0 \uB530\uB77C height\uB97C \uC2A4\uCF00\uC77C\uB9C1\uD558\uC5EC \uC0C8\uB85C\uC6B4 Rect\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n * @param width \uC0C8\uB85C\uC6B4 width \uAC12\n * @returns \uBE44\uC728\uC5D0 \uB9DE\uAC8C height\uAC00 \uC870\uC815\uB41C Rect\n */\n toScaleByWidth(width: number): Rect {\n const ratio = this.height / this.width;\n return new Rect(this.x, this.y, width, width * ratio);\n }\n /**\n * \uC8FC\uC5B4\uC9C4 height\uC5D0 \uB9DE\uCDB0 \uBE44\uC728\uC5D0 \uB530\uB77C width\uB97C \uC2A4\uCF00\uC77C\uB9C1\uD558\uC5EC \uC0C8\uB85C\uC6B4 Rect\uB97C \uBC18\uD658\uD569\uB2C8\uB2E4.\n * @param height \uC0C8\uB85C\uC6B4 height \uAC12\n * @returns \uBE44\uC728\uC5D0 \uB9DE\uAC8C width\uAC00 \uC870\uC815\uB41C Rect\n */\n toScaleByHeight(height: number): Rect {\n const ratio = this.width / this.height;\n return new Rect(this.x, this.y, height * ratio, height);\n }\n\n toRatio(point: Rect | { x: number, y: number, w: number, h: number }): Rect {\n return new Rect(\n this.getXRatio(point.x),\n this.getYRatio(point.y),\n this.getWidthRatio(point instanceof Rect ? point.width : point.w),\n this.getHeightRatio(point instanceof Rect ? point.height : point.h),\n );\n }\n\n getRatio(point: { x: number, y: number }) {\n return new Point2D(\n this.getXRatio(point.x),\n this.getYRatio(point.y),\n );\n }\n\n getByPercent(percent: { x: number, y: number }): Point2D {\n return new Point2D(\n this.getXByPercent(percent.x),\n this.getYByPercent(percent.y),\n );\n }\n\n getByRatio(ratio: { x: number, y: number }) {\n return new Point2D(\n this.getXByRatio(ratio.x),\n this.getYByRatio(ratio.y),\n );\n }\n\n getDiffX(x: number) {\n return x - this.x;\n }\n\n getDiffY(y: number) {\n return y - this.y;\n }\n\n getDiffLeft(x: number) {\n this.getDiffX(x);\n }\n\n getDiffTop(y: number) {\n this.getDiffY(y);\n }\n\n getDiffRight(x: number) {\n return x - this.end.x;\n }\n\n getDiffBottom(y: number) {\n return y - this.end.y;\n }\n\n getDiffWidth(width: number) {\n return width - this.width;\n }\n\n getDiffHeight(height: number) {\n return height - this.height;\n }\n\n toDiff(rect: Rect) {\n return new Rect(\n rect.x - this.x,\n rect.y - this.y,\n rect.width - this.width,\n rect.height - this.height,\n );\n }\n\n setXByWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setX({value: MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n set xByWidthPercent(wPercent: number) {\n this.setXByWidthPercent(wPercent);\n }\n\n setXByWidthRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setX({value: MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n set xByWidthRatio(wRatio: number) {\n this.setXByWidthRatio(wRatio);\n }\n\n setYByHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setY({value: MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n set yByHeightPercent(hPercent: number) {\n this.setYByHeightPercent(hPercent);\n }\n\n setYByHeightRatio(ratio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(ratio);\n this.setY({value: MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n set yByHeightRatio(ratio: number) {\n this.setYByHeightRatio(ratio);\n }\n\n addXByWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setX({value: this.x + MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n addXByWidthRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setX({value: this.x + MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n addYByHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setY({value: this.y + MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n addYByHeightRatio(ratio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(ratio);\n this.setY({value: this.y + MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n setWidthByWidthPercent(wPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wPercent);\n this.setWidth({value: MathUtil.getValueByTotalInPercent(this.width, value), noLink});\n }\n\n set widthByWidthPercent(wPercent: number) {\n this.setWidthByWidthPercent(wPercent);\n }\n\n setWidthByWidthRatio(wRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(wRatio);\n this.setWidth({value: MathUtil.getValueByTotalInRatio(this.width, value), noLink});\n }\n\n set widthByWidthRatio(wRatio: number) {\n this.setWidthByWidthRatio(wRatio);\n }\n\n setHeightByHeightPercent(hPercent: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hPercent);\n this.setHeight({value: MathUtil.getValueByTotalInPercent(this.height, value), noLink});\n }\n\n set heightByHeightPercent(hPercent: number) {\n this.setHeightByHeightPercent(hPercent);\n }\n\n setHeightByHeightRatio(hRatio: number | ValueLinkControl<number>) {\n let {value, noLink} = this.valueLinkControl(hRatio);\n this.setHeight({value: MathUtil.getValueByTotalInRatio(this.height, value), noLink});\n }\n\n set heightByHeightRatio(hRatio: number) {\n this.setHeightByHeightRatio(hRatio);\n }\n\n // getWidthHeightPercentByPoint(point: Point2D): Point2D {\n // return new Point2D(this.getWidthPercent(point.x),this.getHeightPercent(point.y));\n // }\n //\n // getByPercent(point: Point2D): Point2D {\n // return new Point2D(this.getWidthByPercent(point.x),this.getHeightByPercent(point.y));\n // }\n\n ///////\n\n public copyByPercent(percent: number): Rect;\n public copyByPercent(percentX: number, percentY?: number): Rect ;\n public copyByPercent(percentOrX: number, percentY?: number): Rect {\n return new Rect(this.x, this.y,\n MathUtil.getValueByTotalInPercent(this.width, percentOrX),\n MathUtil.getValueByTotalInPercent(this.height, percentY ?? percentOrX)\n );\n }\n\n public copyByRatio(ratio: number): Rect;\n public copyByRatio(ratioX: number, ratioY?: number): Rect ;\n public copyByRatio(ratioOrX: number, ratioY?: number): Rect {\n return new Rect(this.x, this.y,\n MathUtil.getValueByTotalInRatio(this.width, ratioOrX),\n MathUtil.getValueByTotalInRatio(this.height, ratioY ?? ratioOrX)\n );\n }\n\n public isIn(data: { x: number, y: number }): boolean;\n public isIn(data: Point2D): boolean;\n public isIn(data: Rect): boolean\n public isIn(data: Point2D | Rect | { x: number, y: number }): boolean {\n if (data instanceof Rect) {\n return this.isIn(data.start) && this.isIn(data.end);\n } else {\n return data.x >= this.start.x && data.x <= this.end.x && data.y >= this.start.y && data.y <= this.end.y;\n }\n }\n\n public isOut(data: Point2D): boolean;\n public isOut(data: Rect): boolean;\n public isOut(data: Point2D | Rect) {\n if (data instanceof Rect) {\n return !this.isOverlap(data);\n } else {\n return !this.isIn(data);\n }\n }\n\n public isOverlap(data: Point2D): boolean;\n public isOverlap(data: Rect): boolean;\n public isOverlap(data: Point2D | Rect) {\n if (data instanceof Rect) {\n /*\n \uC0C8\uB85C\uC6B4 \uB85C\uC9C1\uC740 \uBC18\uB300\uB85C \"\uACB9\uCE58\uC9C0 \uC54A\uB294 \uC870\uAC74\"\uC744 \uCC3E\uACE0, \uADF8 \uC870\uAC74\uC5D0 \uD574\uB2F9\uD558\uC9C0 \uC54A\uC73C\uBA74 \"\uACB9\uCE5C\uB2E4\"\uACE0 \uD310\uB2E8\uD558\uB294\n \uBC29\uC2DD\uC785\uB2C8\uB2E4. \uC774 \uBC29\uBC95\uC774 \uD6E8\uC52C \uAC04\uB2E8\uD558\uACE0 \uBAA8\uB4E0 \uACBD\uC6B0\uB97C \uCC98\uB9AC\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4.\n\n \uB450 \uC0AC\uAC01\uD615(A\uC640 B)\uC774 \uACB9\uCE58\uC9C0 \uC54A\uC73C\uB824\uBA74, \uB2E4\uC74C \uB124 \uAC00\uC9C0 \uC870\uAC74 \uC911 \uD558\uB098\uB77C\uB3C4 \uB9CC\uC871\uD574\uC57C \uD569\uB2C8\uB2E4.\n 1. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC67C\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC624\uB978\uCABD \uB05D(this.endX)\uC774 B\uC758 \uC67C\uCABD \uC2DC\uC791(data.x)\uBCF4\uB2E4 \uC67C\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.endX < data.x\n\n\n 2. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC624\uB978\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC67C\uCABD \uC2DC\uC791(this.x)\uC774 B\uC758 \uC624\uB978\uCABD \uB05D(data.endX)\uBCF4\uB2E4 \uC624\uB978\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.x > data.endX\n\n\n 3. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC704\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC544\uB798\uCABD \uB05D(this.endY)\uC774 B\uC758 \uC704\uCABD \uC2DC\uC791(data.y)\uBCF4\uB2E4 \uC704\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.endY < data.y\n\n\n 4. A\uAC00 B\uC758 \uC644\uC804\uD788 \uC544\uB798\uCABD\uC5D0 \uC788\uC744 \uB54C\n * A\uC758 \uC704\uCABD \uC2DC\uC791(this.y)\uC774 B\uC758 \uC544\uB798\uCABD \uB05D(data.endY)\uBCF4\uB2E4 \uC544\uB798\uCABD\uC5D0 \uC788\uB294 \uACBD\uC6B0\n * \uCF54\uB4DC: this.y > data.endY\n */\n const noOverlap = this.endX < data.x ||\n this.x > data.endX ||\n this.endY < data.y ||\n this.y > data.endY;\n return !noOverlap;\n // return (\n // this.isOverlap(data.leftTop) ||\n // this.isOverlap(data.rightTop) ||\n // this.isOverlap(data.rightBottom) ||\n // this.isOverlap(data.leftBottom)) ||\n // (\n // data.start.x < this.x && data.start.y < this.y &&\n // data.end.x > this.end.x && data.end.y > this.end.y\n // );\n } else {\n return this.isIn(data);\n }\n }\n\n public toString(): string {\n return `x:${this.x}, y:${this.y}, width: ${this.width}, height: ${this.height}`;\n }\n\n}\n", "import { ValidUtils } from '../valid/ValidUtils';\nimport { FieldType, FilterTuple } from '../types';\nimport { Point2D } from '../entity/Point2D';\nimport { Point3D } from '../entity/Point3D';\nimport { Rect } from '../entity/Rect';\nimport { ObjectUtils } from '../object/ObjectUtils';\nimport { IOS3166_1_Code } from '../code/IOS3166_1';\n\nexport namespace ConvertUtils {\n export type RGBA = { r?: number, g?: number, b?: number, a?: number };\n export type MinMaxCenterAvgDiff<T> = { min: T, max: T, center: T, avg: T };\n export type ToURLSearchParamsParams = { [key: string]: any } | URLSearchParams | [string, unknown][] | string;\n export const objToGetURL = (obj: any): string => {\n return Object.keys(obj).reduce((prev, key, i) => (\n `${prev}${i !== 0 ? '&' : ''}${key}=${obj[key]}`\n ), '');\n };\n\n export const mapToJson = (map: Map<string, any>): string => {\n return JSON.stringify(\n Array.from(\n map.entries()\n ).reduce((o: any, [key, value]) => {\n o[key] = value;\n return o;\n }, {}));\n };\n\n export const jsonToMap = (jsonStr: any): Map<string, string> => {\n return new Map(JSON.parse(jsonStr));\n };\n\n\n export const decodeURIString = (data: string) => {\n return decodeURIComponent(data);\n }\n\n export const objToStrMap = (obj: any): Map<string, string> => {\n const strMap = new Map();\n for (const k of Object.keys(obj)) {\n strMap.set(k, obj[k]);\n }\n return strMap;\n };\n\n export const jsonToStrMap = (jsonStr: string) => {\n return ConvertUtils.objToStrMap(JSON.parse(jsonStr));\n };\n\n export const strToObject = (message: string): any => {\n return JSON.parse(message);\n };\n\n export const objToJson = (obj: any): string => {\n return JSON.stringify(obj);\n };\n\n export const objToMap = (obj: any): Map<string, any> => {\n const mp = new Map<string, any>();\n Object.keys(obj).forEach((k) => {\n mp.set(k, obj[k]);\n });\n return mp;\n };\n\n export const mapToObj = (map: Map<string, any>): any => {\n const obj = {} as any;\n map.forEach((v, k) => {\n obj[k] = v;\n });\n return obj;\n };\n\n export const snakeToCamelCase = (str: string): string => {\n return str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n }\n export const camelToSnakeCase = (str: string): string => {\n return str.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase();\n };\n\n export function toFormData (obj: any) {\n const formData = new FormData();\n for (const key in obj)\n formData.append(key, obj[key]);\n return formData;\n }\n\n export function toObject<T>(obj: URLSearchParams, config: { firstValue: true }): FieldType<T, string>;\n export function toObject(obj: URLSearchParams): { [key: string]: string | string[] };\n export function toObject<T>(obj: FormData): T;\n export function toObject<T>(obj: [string, unknown][]): T;\n export function toObject<T>(obj: Iterable<any>): T;\n export function toObject(obj: any): any;\n export function toObject(obj: URLSearchParams | FormData |any, config?: { firstValue: boolean }): any {\n if (obj instanceof URLSearchParams) {\n const robj = {} as any;\n obj.forEach((v, k) => {\n if (config?.firstValue && robj[k] === undefined) {\n robj[k] = v;\n } else if (!config?.firstValue) {\n if (robj[k]) {\n if (Array.isArray(robj[k])) {\n robj[k].push(v);\n } else {\n robj[k] = [robj[k], v];\n }\n } else {\n robj[k] = v;\n }\n }\n })\n return robj;\n } else if(obj instanceof FormData) {\n // new Map().entries()\n // Object.entries({})\n // obj = Object.fromEntries(obj.entries());\n const formDataToObject = (formData: any) => {\n const obj: any = {};\n // FormData\uC758 \uBAA8\uB4E0 \uD0A4\uB97C \uC21C\uD68C\n for (const key of formData.keys()) {\n const values = formData.getAll(key); // \uB3D9\uC77C \uD0A4\uC758 \uBAA8\uB4E0 \uAC12 \uAC00\uC838\uC624\uAE30\n // \uAC12\uC774 \uD558\uB098\uBA74 \uB2E8\uC77C \uAC12\uC73C\uB85C, \uC5EC\uB7EC \uAC1C\uBA74 \uBC30\uC5F4\uB85C \uC800\uC7A5\n obj[key] = values.length > 1 ? values : values[0];\n }\n return obj;\n }\n return formDataToObject(obj);\n } else if (obj && typeof obj[Symbol.iterator] === 'function') {\n return Object.fromEntries(obj);\n } else if (Array.isArray(obj)) {\n return Object.fromEntries(obj);\n }else {\n // console.log(Object.prototype.toString.call(obj));\n if (ValidUtils.isMap(obj)) {\n const map = obj as Map<string, any>;\n obj = ConvertUtils.mapToObj(map);\n }\n if (ValidUtils.isArray(obj)) {\n const arr = obj as any[];\n for (let i = 0; i < arr.length; i++) {\n arr[i] = ConvertUtils.toObject(arr[i]);\n }\n }\n\n if (ValidUtils.isObject(obj)) {\n for (const property in obj) {\n obj[property] = ConvertUtils.toObject(obj[property]);\n }\n }\n\n return obj;\n }\n };\n\n export const toArray = <T>(data?: T | T[] | Set<T>): T[] => {\n if (data instanceof Set) {\n return Array.from(data.values());\n }\n\n const datas = (Array.isArray(data) ? data : (data ? [data] : []));\n return datas;\n }\n export const flatArray = <T>(...data: (T | Iterable<T>)[]): T[] => {\n const datas = data.flatMap<T>((item) => (item instanceof Object && Symbol.iterator in item ? Array.from(item) : [item]));\n return datas;\n };\n\n export const iteratorToArray = <T>(it: any): T[] => {\n return Array.from(it) as T[];\n };\n\n export const toJson = (obj: any): string => {\n const at = ConvertUtils.toObject(obj);\n return JSON.stringify(at);\n };\n\n export const concatenateToAttribute = (object_o: any) => {\n return ConvertUtils.concatenateToString(object_o, '=', ' ', '\\'');\n };\n\n export const concatenateToParameter = (object_o: any) => {\n return ConvertUtils.concatenateToString(object_o, '=', '&', '');\n };\n\n export const concatenateToString = (object_o: any, unionString_s = '=', spilString_s = ' ', pairString_s = '') => {\n const results: any[] = [];\n for (const property in object_o) {\n const value = object_o[property];\n if (value) {\n results.push(property.toString() + unionString_s + pairString_s + value + pairString_s);\n }\n }\n\n return results.join(spilString_s);\n };\n\n export const specialCharsToEscape = (data: string): string => {\n return data.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n };\n\n export const decodeHTMLEscape = (data: string): string => {\n // HTML \uC5D4\uD2F0\uD2F0 \uC774\uC2A4\uCF00\uC774\uD504\uB97C \uB514\uCF54\uB4DC\uD569\uB2C8\uB2E4.\n return data.replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/"/g, '\"')\n .replace(/'/g, \"'\")\n .replace(///g, '/');\n }\n\n export const copyObject = <T extends Record<string, any>>(obj: T, update: Partial<T> = {}): T => {\n return {...obj, ...update};\n };\n\n export const copyArrayWithAddition = <T extends unknown[]>(arr: FilterTuple<T>, update?: T): T => {\n return [...arr, ...(update || [])] as T;\n };\n\n export const hexToInt = (hex: string): number => {\n if (hex.startsWith('#')) {\n hex = hex.slice(1);\n }\n if (hex.length === 3) {\n hex = hex.split('').map((c) => c + c).join('');\n }\n return parseInt(hex, 16);\n };\n\n\n // export const toHex = (val: number): string => {\n // const hex = Math.floor(val).toString(16).toUpperCase();\n // return (hex.length === 1 ? '0' + hex : hex);\n // };\n\n export const toHex = (num: number): string => {\n if (num < 0) {\n num = 0xFFFFFFFF + num + 1;\n }\n num = Number(num.toFixed(0));\n return num.toString(16).padStart(2, '0').toUpperCase();\n };\n\n export const toHexColor = (rgba: RGBA): string => {\n const r = ConvertUtils.toHex(rgba.r ?? 0);\n const g = ConvertUtils.toHex(rgba.g ?? 0);\n const b = ConvertUtils.toHex(rgba.b ?? 0);\n const a = ConvertUtils.toHex(rgba.a ?? 255);\n return `#${r}${g}${b}${a}`;\n };\n\n export const avgColor = (color: RGBA[]): RGBA => {\n const sum = color.reduce((acc: Required<RGBA>, c) => {\n acc.r += c.r ?? 0;\n acc.g += c.g ?? 0;\n acc.b += c.b ?? 0;\n acc.a += c.a ?? 0;\n return acc;\n }, {r: 0, g: 0, b: 0, a: 0}) as Required<RGBA>;\n const avg = {r: Math.floor(sum.r / color.length), g: Math.floor(sum.g / color.length), b: Math.floor(sum.b / color.length), a: Math.floor(sum.a / color.length)};\n return avg;\n };\n\n export const toRGBA = (hex?: string | null): RGBA => {\n hex ??= '#000000FF';\n const hexColor = hex.replace('#', '');\n const r = parseInt(hexColor.slice(0, 2) || '0', 16);\n const g = parseInt(hexColor.slice(2, 4) || '0', 16);\n const b = parseInt(hexColor.slice(4, 6) || '0', 16);\n const a = hexColor.length > 6 ? parseInt(hexColor.slice(6, 8) || '0', 16) : 255;\n return {r, g, b, a};\n };\n\n export const minMaxCenterAvg = <T extends { [key: string]: number }>(obj: T[]): { [key in keyof T]?: MinMaxCenterAvgDiff<number> & {diff: number} } => {\n const result: { [key in keyof T]: { min: number, max: number, center: number, diff: number, avg: number } } = {} as any;\n\n const allKeys = ObjectUtils.uniqueKeys(obj);\n for (const key of allKeys) {\n const values = obj.map(item => item[key]);\n const min = Math.min(...values);\n const max = Math.max(...values);\n const center = (min + max) / 2;\n const avg = values.reduce((sum, val) => sum + val, 0) / values.length;\n\n result[key as keyof T] = {min, max, center, avg, diff: max - min};\n }\n\n return result;\n }\n\n export const minMaxCenterRectAvg2D = (point2Ds: (Point2D | { x: number, y: number })[]): MinMaxCenterAvgDiff<Point2D> & { minMaxRect: Rect } => {\n const min = new Point2D(Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER);\n const max = new Point2D(Number.MIN_SAFE_INTEGER, Number.MIN_SAFE_INTEGER);\n let sum = new Point2D(0, 0);\n point2Ds.forEach((p) => {\n min.x = Math.min(min.x, p.x);\n min.y = Math.min(min.y, p.y);\n max.x = Math.max(max.x, p.x);\n max.y = Math.max(max.y, p.y);\n sum.x += p.x;\n sum.y += p.y;\n });\n const center = new Point2D((min.x + max.x) / 2, (min.y + max.y) / 2);\n const avg = new Point2D(sum.x / point2Ds.length, sum.y / point2Ds.length);\n const minMaxRect = new Rect(min.x, min.y, max.x - min.x, max.y - min.y);\n return {min, max, center, avg, minMaxRect};\n };\n\n\n export const minMaxCenterAvg3D = (point3Ds: (Point3D | { x: number, y: number, z: number })[]): MinMaxCenterAvgDiff<Point3D> => {\n const min = new Point3D(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\n const max = new Point3D(Number.MIN_VALUE, Number.MIN_VALUE, Number.MIN_VALUE);\n let sum = new Point3D(0, 0, 0);\n point3Ds.forEach((p) => {\n min.x = Math.min(min.x, p.x);\n min.y = Math.min(min.y, p.y);\n min.z = Math.max(min.z, p.z);\n max.x = Math.max(max.x, p.x);\n max.y = Math.max(max.y, p.y);\n max.z = Math.max(max.z, p.y);\n sum.x += p.x;\n sum.y += p.y;\n sum.z += p.z;\n });\n const center = new Point3D((min.x + max.x) / 2, (min.y + max.y) / 2, (min.z + max.z) / 2);\n const avg = new Point3D(sum.x / point3Ds.length, sum.y / point3Ds.length, sum.z / point3Ds.length);\n return {min, max, center, avg};\n };\n\n export const roundRectRadiiToFullRadii = (radii?: [number] | [number, number] | [number, number, number] | [number, number, number, number]) => {\n if (!radii) {\n return [0, 0, 0, 0];\n }\n if (radii.length === 1) {\n return [radii[0] ?? 0, radii[0] ?? 0, radii[0] ?? 0, radii[0] ?? 0];\n } else if (radii.length === 2) {\n return [radii[0] ?? 0, radii[1] ?? 0, radii[0] ?? 0, radii[1] ?? 0];\n } else if (radii.length === 3) {\n return [radii[0] ?? 0, radii[1] ?? 0, radii[2] ?? 0, radii[1] ?? 0];\n } else {\n return radii;\n }\n };\n\n\n export const toArrayDirectionChange = <T>(array: T[][]) => {\n // \uC785\uB825 \uBC30\uC5F4\uC774 \uBE44\uC5B4\uC788\uAC70\uB098 \uCCAB \uBC88\uC9F8 \uD589\uC774 \uBE44\uC5B4\uC788\uC73C\uBA74 \uBE48 \uBC30\uC5F4 \uBC18\uD658\n if (!array || array.length === 0 || !array[0] || array[0].length === 0) {\n return [];\n }\n const result: T[][] = [];\n const numCols = array[0].length; // \uAE30\uC900 \uC5F4 \uAC1C\uC218 (\uCCAB \uD589 \uAE30\uC900)\n const numRows = array.length; // \uD589 \uAC1C\uC218\n\n for (let i = 0; i < numCols; i++) {\n const newRow: T[] = [];\n for (let j = 0; j < numRows; j++) {\n // \uB9CC\uC57D jagged array \uAC00\uB2A5\uC131\uC744 \uC5C4\uACA9\uD788 \uB2E4\uB8E8\uB824\uBA74 \uC5EC\uAE30\uC11C array[j].length > i \uC778\uC9C0 \uD655\uC778 \uD544\uC694\n // \uD558\uC9C0\uB9CC T[][] \uD0C0\uC785 \uC2DC\uADF8\uB2C8\uCC98\uB294 \uBCF4\uD1B5 rectangular array\uB97C \uAE30\uB300\uD568\n newRow.push(array[j][i]);\n }\n result.push(newRow);\n }\n return result;\n }\n\n // groupBy \uD568\uC218 \uAD6C\uD604\n export const groupByMap = <T, K>(array: T[], keySelector: (item: T) => K): Map<K, T[]> => {\n return array.reduce((map, item) => {\n const key = keySelector(item);\n const group = map.get(key) || [];\n group.push(item);\n map.set(key, group);\n return map;\n }, new Map<K, T[]>());\n }\n export const groupByObject = <T, K extends string | number | symbol>(\n array: T[],\n keySelector: (item: T) => K\n ): Record<K, T[]> => {\n// groupByMap \uD638\uCD9C\n const map = groupByMap(array, keySelector);\n // Map\uC744 Record\uB85C \uBCC0\uD658\n return Object.fromEntries(map) as Record<K, T[]>;\n }\n\n\n\n export const toURLSearchParams = (data: ToURLSearchParamsParams): URLSearchParams =>{\n const searchParams = new URLSearchParams();\n if (typeof data === 'string') {\n new URLSearchParams(data).forEach((value, key) => {\n searchParams.append(key, value);\n });\n } else if (typeof data === 'object') {\n const forTarget = data instanceof URLSearchParams ? data.entries() : (Array.isArray(data) ? data : Object.entries(data));\n for (const [k, v] of Array.from(forTarget)) {\n if (Array.isArray(v)) {\n v.forEach(it => searchParams.append(k, it));\n } else {\n searchParams.append(k, v as any);\n }\n }\n }\n return searchParams;\n }\n // export const RelativeHumanReadableTimeLabels = {\n // [IOS3166_1_Code.KOR]: {\n // justNow: '\uBC29\uAE08 \uC804',\n // minutesAgo: '\uBD84 \uC804',\n // hoursAgo: '\uC2DC\uAC04 \uC804',\n // daysAgo: '\uC77C \uC804',\n // }\n //\n // }\n // export type RelativeHumanReadableTimeLabel = {\n // justNow: string,\n // minutesAgo: string,\n // hoursAgo: string,\n // daysAgo: string,\n // };\n // export type RelativeHumanReadableTimeConfig = {\n // label: RelativeHumanReadableTimeLabel;\n // }\n // export const formatRelativeHumanReadableTime = (date: Date | string | number, config: RelativeHumanReadableTimeConfig): string => {\n // if (!(date instanceof Date)) {\n // date = new Date(date);\n // }\n // const now = new Date();\n // const diffMs = now.getTime() - date.getTime();\n // const diffMinutes = Math.floor(diffMs / (1000 * 60));\n // const diffHours = Math.floor(diffMinutes / 60);\n //\n // if (diffMinutes < 1) return config.label.justNow;\n // if (diffMinutes < 60) return `${diffMinutes}${config.label.minutesAgo}`;\n // if (diffHours < 24) return `${diffHours}${}`;\n // return `${Math.floor(diffHours / 24)}\uC77C \uC804`;\n // }\n\n /**\n * \uBB38\uC790\uC5F4 JSON\uC744 \uD0A4-\uAC12 \uC30D \uBC30\uC5F4\uB85C \uBCC0\uD658\uD569\uB2C8\uB2E4.\n *\n * @param {string} stringJson - JSON \uD615\uC2DD\uC758 \uBB38\uC790\uC5F4 (\uC608: \"{value: this.child.obj.name}\")\n * @return {Array<{ key: string, value: string }>} \uD0A4-\uAC12 \uC30D \uBC30\uC5F4\n */\n export const stringJsonToKeyPairs = (stringJson: string) => {\n return Array.from(stringJson.matchAll(/(\\w+):\\s*([^,}]+)/g)).map(match => ({key: match[1], value: match[2]}))\n }\n\n // const formDataToFormDataEntryValueObj = <T = { [key: string]: FormDataEntryValue | FormDataEntryValue[] }>(\n // data: FormData | HTMLFormElement\n // ): T => {\n // if (typeof HTMLFormElement !== 'undefined' && data instanceof HTMLFormElement) {\n // data = new FormData(data);\n // }\n // const obj: any = {};\n // data.forEach((value, key) => {\n // if (Array.isArray(obj[key])) {\n // obj[key].push(value);\n // } else if (obj[key] !== undefined || !isNaN(obj[key])) {\n // obj[key] = [obj[key], value];\n // } else {\n // obj[key] = value;\n // }\n // });\n // return obj;\n // }\n\n}\n", "import { Observer } from './Observer';\nimport { Observable, OperatorFunction } from './Observable';\nimport { Subscription } from './Subscription';\nimport { CompleteCallBack, ErrorCallBack, ObserverCallBack, Subscribable } from './Subscribable';\n\nexport class Subject<T, E = any> extends Observable<T, E> implements Observer<T, E> {\n private _observers = new Set<Partial<Observer<T, E>>>();\n private _isStopped = false;\n private _hasError = false;\n private _error: E | undefined;\n\n constructor() {\n // Call parent Observable constructor with our own subscribe logic\n super((subscriber) => {\n return this._subscribeToSubject(subscriber);\n });\n }\n\n protected _subscribeToSubject(subscriber: any): Subscription {\n const partialObserver: Partial<Observer<T, E>> = {\n next: subscriber.next.bind(subscriber),\n error: subscriber.error.bind(subscriber),\n complete: subscriber.complete.bind(subscriber)\n };\n\n if (this._isStopped) {\n if (this._hasError) {\n partialObserver.error?.(this._error!);\n } else {\n partialObserver.complete?.();\n }\n return { closed: true, unsubscribe: () => {} }; // Already stopped, return dummy subscription\n }\n\n this._observers.add(partialObserver);\n\n let closed = false;\n\n return {\n get closed() {\n return closed;\n },\n unsubscribe: () => {\n this._observers.delete(partialObserver);\n closed = true;\n }\n };\n }\n\n next(data: T): void {\n if (this._isStopped) {\n return; // Subject is stopped, no more emissions\n }\n this._observers.forEach(observer => {\n observer.next?.(data)\n });\n }\n\n error(err: E): void {\n if (this._isStopped) {\n return; // Subject is stopped, no more errors\n }\n this._hasError = true;\n this._error = err;\n this._isStopped = true; // Subject stops after error\n this._observers.forEach(observer => observer.error?.(err));\n this._observers.clear(); // Clear observers after error\n }\n\n complete(): void {\n if (this._isStopped) {\n return; // Subject is stopped, no more completions\n }\n this._isStopped = true; // Subject stops after completion\n this._observers.forEach(observer => observer.complete?.());\n this._observers.clear(); // Clear observers after completion\n }\n\n\n\n asObservable(): Observable<T, E> {\n // Returns a new Observable that wraps this Subject's subscribe method.\n // This hides the next/error/complete methods from the consumer.\n return new Observable<T, E>(subscriber => {\n return this._subscribeToSubject(subscriber);\n });\n }\n}", "import { Subject } from './Subject';\nimport { Subscription } from './Subscription';\nimport { Observer } from './Observer';\nimport { CompleteCallBack, ErrorCallBack, ObserverCallBack } from './Subscribable';\n\nexport class BehaviorSubject<T, E = any> extends Subject<T, E> {\n private _value: T; // BehaviorSubject always has a current value\n\n constructor(initialValue: T) {\n super();\n this._value = initialValue; // Store the initial value\n }\n\n next(data: T): void {\n this._value = data; // Update the current value\n super.next(data); // Multicast to all current subscribers\n }\n\n protected _subscribeToSubject(subscriber: any): Subscription {\n // Call parent's subscribe logic first\n const subscription = super._subscribeToSubject(subscriber);\n\n // Immediately emit the current value to the new subscriber\n // Only if the subject has not completed or errored\n if (!(this as any)._isStopped) { // _isStopped is from Subject\n subscriber.next(this._value);\n } else if ((this as any)._hasError) { // _hasError is from Subject\n subscriber.error((this as any)._error!); // _error is from Subject\n } else {\n subscriber.complete();\n }\n\n return subscription;\n }\n\n getValue(): T {\n if ((this as any)._hasError) {\n throw (this as any)._error;\n }\n return this._value;\n }\n}", "import { StringUtils } from '../string/StringUtils';\n\nexport namespace Expression {\n\n // html = html.replace(/\\$\\{[\\s\\S]*?\\}\\$/g, '');\n\n export const bindExpression = (expression: string, bind: { [name: string]: ((arg: any) => any) | any }) => {\n // ${data} wow ${wow:parameter}\n // expression\uC5D0\uC11C ${...} \uD615\uD0DC\uB97C \uBAA8\uB450 \uCC3E\uC544\uC11C \uCC98\uB9AC\n return (expression ?? '').replace(/\\$\\{([\\s\\S.]*?)\\}/g, (_, group) => {\n // \uD30C\uB77C\uBBF8\uD130\uAC00 \uC788\uB294 \uACBD\uC6B0: name:param\n const [name, param] = group.split(':');\n const binder = bind[name];\n if (!binder) return '';\n if (typeof binder === 'function') {\n return binder(bind[param]);\n }\n return binder;\n });\n }\n export namespace Group {\n export const isExpression = (data: string | null) => {\n // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]?[^{]*?)\\}[$#]))/g;\n const reg = /[$#]\\{([\\s\\S.]*?)\\}[$#]/g;\n return reg.test(data ?? '');\n }\n\n export const expressionGroups = (data: string | null) => {\n // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]*?)\\}[$#]))/g;\n // const reg = /(?:[$#]\\{(?:(([$#]\\{)??[^$#]?[^{]*?)\\}[$#]))/g;\n const reg = /[$#]\\{([\\s\\S.]*?)\\}[$#]/g;\n return StringUtils.regexExec(reg, data ?? '');\n }\n }\n export namespace Path {\n export type PathNameData = { [name: string]: string }\n export const pathNameData = (pathName: string, urlExpression: string) => {\n const urls = pathName.split('/');\n const urlExpressions = urlExpression.split('/');\n if (urls.length !== urlExpressions.length) {\n return;\n }\n const data: Path.PathNameData = {}\n for (let i = 0; i < urlExpressions.length; i++) {\n const it = urlExpressions[i];\n const urlit = urls[i];\n // ex) {serialNo:[0-9]+} or {no} ..\n const execResult = /^\\{(.+)\\}$/g.exec(it);\n if (!execResult) {\n if (it !== urlit) {\n return;\n }\n continue;\n }\n // regex check\n const [name, regex] = execResult[1].split(':'); // group1\n if (regex && !new RegExp(regex).test(urlit)) {\n return;\n }\n data[name] = urlit;\n }\n return data;\n }\n }\n}", "import { ConvertUtils } from '@dooboostore/core/convert/ConvertUtils';\nimport { Observable } from '@dooboostore/core/message/Observable';\nimport { BehaviorSubject } from '@dooboostore/core/message/BehaviorSubject';\nimport { Expression } from '@dooboostore/core/expression/Expression';\nimport ToURLSearchParamsParams = ConvertUtils.ToURLSearchParamsParams;\n\nexport type RouteData = {\n path: string;\n url: string;\n data?: any;\n searchParams: URLSearchParams;\n pathData?: any;\n router: Router;\n currentTarget?:PopCurrentState;\n}\nexport type PopStateCurrentTargetDomrenderRouter = { currentTargetName: 'domRenderRouter' };\nexport type PopCurrentState = PopStateCurrentTargetDomrenderRouter;\nexport const isPopStateCurrentTargetDomrenderRouter = (obj: any): obj is PopStateCurrentTargetDomrenderRouter =>\n obj?.currentTargetName === 'domRenderRouter';\n\nexport type RouterConfig<T = any> = { rootObject?: T, window: Window, disableAttach?: boolean,\n // changeStateConvertDate?:(data: any)=>any\n};\nexport type ChangeStateResult = {data?: any}\nexport type RouteAction = string | { path?: string, searchParams?: ToURLSearchParamsParams };\n\n/*\n this.option.window.addEventListener('popstate', (event) => { // history.back, forward\uC5D0\uB9CC popstate \uBC1C\uC0DD\uB418\uACE0 \uAC12\uC774 \uB3C4\uCD9C\uB41C\uB2E4\n console.log('popstate-------!!', event.state, this.domRenderConfig.window.history.state)\n })\n */\nexport abstract class Router<T = any> {\n private behaviorSubject: BehaviorSubject<RouteData>;\n private _config: RouterConfig<T>;\n\n get observable(): Observable<RouteData> {\n return this.behaviorSubject.asObservable();\n }\n\n get searchParamObject() {\n return ConvertUtils.toObject(this.getSearchParams());\n }\n\n get config() {\n return this._config;\n }\n\n constructor(config: RouterConfig<any>) {\n this._config = config;\n this.behaviorSubject = new BehaviorSubject<RouteData>(this.getRouteData());\n this.config.window.addEventListener('popstate', (event: PopStateEvent) => {\n if(!isPopStateCurrentTargetDomrenderRouter(event.state)) {\n // console.log('-------');\n const routeData = this.getRouteData();\n this.behaviorSubject.next(routeData);\n }\n })\n }\n\n public getSearchFirstParamsObject<T = any>(defaultValue?: T) {\n const a = ConvertUtils.toObject<T>(this.getSearchParams(), {firstValue: true});\n return Object.assign({}, defaultValue, a);\n }\n\n public getHashSearchFirstParamsObject<T = any>() {\n return ConvertUtils.toObject<T>(this.getHashSearchParams(), {firstValue: true});\n }\n\n async attach(): Promise<void> {\n // const proxy = getDomRenderProxy(this.config.rootObject)\n // if (proxy) {\n // const key = `___${EventManager.ROUTER_VARNAME}`;\n // await proxy.render(key);\n // }\n }\n\n testRegexp(regexp?: string): boolean {\n if (regexp) {\n const b = RegExp(regexp).test(this.getPathName());\n return b;\n }else {\n return false;\n }\n }\n\n test(urlExpression?: string): boolean {\n if (urlExpression && this.getPathData(urlExpression)) {\n return true;\n } else {\n return false;\n }\n }\n\n getRouteData(config?: {urlExpression?: string, currentTarget?: PopCurrentState}): RouteData {\n const newVar = {\n path: this.getPathName(),\n url: this.getUrl(),\n searchParams: this.getSearchParams()\n } as RouteData;\n\n const data = this.getData();\n if (data) {\n newVar.data = data;\n }\n if (config?.urlExpression) {\n const data = this.getPathData(config.urlExpression);\n if (data) {\n newVar.pathData = data;\n }\n }\n newVar.router = this;\n newVar.currentTarget = config?.currentTarget;\n return Object.freeze(newVar);\n }\n\n pushState(data: any, title: string | undefined, path: string):ChangeStateResult {\n // data = this.config.changeStateConvertDate?this.config.changeStateConvertDate(data): data;\n // console.log('--->pushState', data);\n this.config.window.history.pushState(data, title??'', path);\n this.behaviorSubject.next(this.getRouteData({currentTarget: {currentTargetName: 'domRenderRouter'}}));\n return {data};\n }\n\n replaceState(data: any, title: string | undefined, path: string):ChangeStateResult {\n // data = this.config.changeStateConvertDate?this.config.changeStateConvertDate(data): data;\n // console.log('--->replaceState', data);\n this.config.window.history.replaceState(data, title??'', path);\n this.behaviorSubject.next(this.getRouteData({currentTarget: {currentTargetName: 'domRenderRouter'}}));\n return {data};\n }\n\n private dispatchPopStateEvent(data?: any) {\n this.config.window.dispatchEvent(new PopStateEvent('popstate', {state: {...data, currentTargetName: 'domRenderRouter'}}));\n }\n\n reload(data?: any) {\n this.config.window.dispatchEvent(new PopStateEvent('popstate', {state: data}));\n }\n\n getData(): any {\n return this.config.window.history.state;\n }\n\n getPathData(urlExpression: string, currentUrl = this.getPathName()): any {\n return Expression.Path.pathNameData(currentUrl, urlExpression);\n }\n\n async go(config: string | { path: RouteAction, data?: any, replace?: boolean, title?: string, disabledPopEvent?: boolean, scrollToTop?: boolean } | string): Promise<void> {\n if (typeof config === 'string') {\n config = { path: config };\n }\n\n // let data: ChangeStateResult | undefined = undefined;\n if (config?.replace) {\n this.replace(config.path, config.data, config.title);\n } else {\n this.push(config.path, config.data, config.title);\n }\n if (!this.config.disableAttach) {\n await this.attach();\n }\n \n // \uC2A4\uD06C\uB864 \uC81C\uC5B4 (\uAE30\uBCF8\uAC12: true - \uB9E8 \uC704\uB85C \uC2A4\uD06C\uB864)\n if (config.scrollToTop !== false) {\n try {\n this._config.window?.scrollTo?.(0, 0);\n }catch (e){}\n }\n \n // console.log('----------', data, config)\n if (!config.disabledPopEvent) {\n this.dispatchPopStateEvent(config?.data);\n }\n }\n\n toUrl(data: RouteAction) {\n let targetPath: string;\n if (typeof data === 'string') {\n targetPath = data;\n } else {\n const tpath = data.path ?? this.getPathName();\n const s = data.searchParams ? ConvertUtils.toURLSearchParams(data.searchParams).toString() : '';\n // data.searchParams\n targetPath = `${tpath}${s.length > 0 ? '?' : ''}${s}`;\n }\n return targetPath;\n }\n\n\n abstract push(path: RouteAction, data?: any, title?: string): void;\n\n abstract replace(path: RouteAction, data?: any, title?: string): void;\n\n abstract pushDeleteSearchParam(name: string | string[], data?: any, title?: string): void;\n\n abstract pushDeleteHashSearchParam(name: string | string[], data?: any, title?: string): void;\n\n abstract pushAddSearchParam(params:[[string, string]], data?: any, title?: string): void;\n\n abstract replaceDeleteSearchParam(name: string | string[], data?: any, title?: string): void;\n\n abstract replaceDeleteHashSearchParam(name: string | string[], data?: any, title?: string): void;\n\n abstract replaceAddSearchParam(params:[[string, string]], data?: any, title?: string): void;\n\n abstract getSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams;\n\n abstract getHashSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams;\n\n abstract getUrl(): string;\n\n abstract getHref(): string;\n\n abstract getPathName(): string;\n}\n", "import { ChangeStateResult, RouteAction, Router, RouterConfig } from './Router';\n\nexport class PathRouter extends Router {\n constructor(config: RouterConfig) {\n super(config);\n }\n\n getSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams {\n const searchParams = (new URL(this.config.window.document.location.href)).searchParams;\n data?.delete?.forEach(it => {\n searchParams.delete(it);\n })\n\n data?.append?.forEach(it => {\n searchParams.append(it[0], it[1]);\n })\n return searchParams;\n\n }\n\n push(path: RouteAction, data?: any, title: string = ''): ChangeStateResult {\n return super.pushState(data, title, this.toUrl(path));\n }\n\n replace(path: RouteAction, data?: any, title: string = ''): ChangeStateResult {\n return super.replaceState(data, title, this.toUrl(path));\n }\n\n pushDeleteSearchParam(name: string, data?: any, title?: string): void {\n const s = this.getSearchParams({delete: [name]});\n this.push({searchParams: s}, data, title);\n }\n\n pushDeleteHashSearchParam(name: string, data?: any, title?: string) {\n const s = this.getHashSearchParams({delete: [name]});\n const size = Array.from(s.entries()).length;\n const href = `${this.config.window.location.pathname}${this.config.window.location.search}${size > 0 ? '#' + s.toString() : ''}`;\n super.pushState(data, title, href);\n }\n\n pushAddSearchParam(params:[[string, string]], data?: any, title?: string): void {\n const s = this.getSearchParams({append: params});\n this.push({searchParams: s}, data, title);\n }\n replaceDeleteSearchParam(name: string | string[], data?: any, title?: string): void {\n const s = this.getSearchParams({delete: Array.isArray(name) ? name : [name]});\n this.replace({searchParams: s}, data, title);\n }\n\n replaceDeleteHashSearchParam(name: string | string[], data?: any, title?: string) {\n const s = this.getHashSearchParams({delete: Array.isArray(name) ? name : [name]});\n const size = Array.from(s.entries()).length;\n const href = `${this.config.window.location.pathname}${this.config.window.location.search}${size > 0 ? '#' + s.toString() : ''}`;\n super.replaceState(data, title, href);\n }\n\n replaceAddSearchParam(params:[[string, string]], data?: any, title?: string): void {\n const s = this.getSearchParams({append: params});\n this.replace({searchParams: s}, data, title);\n }\n\n\n getUrl(): string {\n const url = new URL(this.config.window.document.location.href);\n return url.pathname + url.search;\n }\n\n getHref(): string {\n return this.config.window.location.href;\n }\n\n getPathName(): string {\n return this.config.window.location.pathname;\n }\n\n getHashSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams {\n // http://local.com/#wow=222&wow=bb&z=2\n const searchParams = new URLSearchParams(this.config.window.location.hash.slice(1));\n\n data?.delete?.forEach(it => {\n searchParams.delete(it);\n })\n\n data?.append?.forEach(it => {\n searchParams.append(it[0], it[1]);\n })\n return searchParams;\n\n // return undefined;\n }\n\n\n}\n", "export class LocationUtils {\n static hash(window: Window): string {\n return window.location.hash.replace('#', '')\n }\n\n static hashPath(window: Window): string {\n return window.location.hash.replace('#', '').split('?')[0]\n }\n\n static hashSearch(window: Window): string {\n return window.location.hash.replace('#', '').split('?')[1]\n }\n\n static hashQueryParams(window: Window): Map<string, string> {\n const s = window.location.hash.replace('#', '').split('?')[1] || '';\n return this.queryStringToMap(s);\n }\n\n static path(window: Window): string {\n return window.location.pathname;\n }\n\n static pathQueryParamsObject(window: Window): { [key:string]: string } {\n return this.queryStringToObject(window.location.search.substring(1));\n }\n\n static hashQueryParamsObject(window: Window): { [key:string]: string } {\n const s = window.location.hash.split('?').pop() ?? '';\n if (s.startsWith('#')) {\n return {};\n } else {\n return this.queryStringToObject(s);\n }\n }\n\n static pathQueryParams(window: Window): Map<string, string> {\n return this.queryStringToMap(window.location.search.substring(1));\n }\n\n private static queryStringToMap(s: string) {\n const params = new Map<string, string>();\n const vars = s.split('&') || [];\n vars.forEach(it => {\n const kv = it.split('=') || [];\n if (kv[0] && kv[0].length > 0) {\n params.set(kv[0], kv[1]);\n }\n })\n return params;\n }\n\n private static queryStringToObject(s: string): { [key:string]: string } {\n const params = {} as { [key:string]: string };\n const vars = s.split('&') || [];\n vars.forEach(it => {\n const kv = it.split('=') || [];\n if (kv[0] && kv[0].length > 0) {\n params[kv[0]] = kv[1];\n }\n })\n return params;\n }\n}\n", "import { ChangeStateResult, RouteAction, Router, RouterConfig } from './Router';\nimport { LocationUtils } from '@dooboostore/core-web/location/LocationUtils';\n\n\nexport class HashRouter extends Router {\n\n constructor(config: RouterConfig) {\n super(config);\n }\n\n\n getSearchParams(data?: { delete?: string[], append?: [[string, string]] }): URLSearchParams {\n const hashSearch = LocationUtils.hashSearch(this.config.window);\n const searchParams = hashSearch ? new URLSearchParams(hashSearch) : (new URL(this.config.window.document.location.href)).searchParams;\n\n\n data?.delete?.forEach(it => {\n searchParams.delete(it);\n })\n\n data?.append?.forEach(it => {\n searchParams.append(it[0], it[1]);\n })\n return searchParams;\n }\n\n push(path: RouteAction, data?: any, title: string = ''): ChangeStateResult {\n if (path === '/') {\n return super.pushState(data, title, '/');\n } else {\n return super.pushState(data, title, `#${this.toUrl(path)}`);\n }\n }\n\n replace(path: RouteAction, data?: any, title?: string):ChangeStateResult {\n if (path === '/') {\n return super.replaceState(data, title, '/');\n } else {\n return super.replaceState(data, title, `#${this.toUrl(path)}`);\n }\n }\n\n setDeleteHashSearchParam(name: string, data?: any, title?: string) {\n }\n\n pushDeleteHashSearchParam(name: string | string[], data: any, title: string | undefined): void {\n const s = this.getHashSearchParams({delete:Array.isArray(name) ? name : [name]});\n const size = Array.from(s.entries()).length;\n const href = `${this.config.window.location.pathname}${this.config.window.location.search}${size > 0 ? '#' + s.toString() : ''}`;\n super.pushState(data, title, href);\n }\n\n pushDeleteSearchParam(name: string | string[], data?: any, title?: string): void {\n const s = this.getSearchParams({delete:Array.isArray(name) ? name : [name]});\n this.push({searchParams: s}, data, title);\n }\n\n pushAddSearchParam(params:[[string, string]], data?: any, title?: string): void {\n const s = this.getSearchParams({append: params});\n this.push({searchParams: s}, data, title);\n }\n\n replaceDeleteHashSearchParam(name: string | string[], data: any, title: string | undefined): void {\n const s = this.getHashSearchParams({delete: Array.isArray(name) ? name : [name]});\n const size = Array.from(s.entries()).length;\n const href = `${this.config.window.location.pathname}${this.config.window.location.search}${size > 0 ? '#' + s.toString() : ''}`;\n super.pushState(data, title, href);\n }\n\n replaceDeleteSearchParam(name: string | string[], data?: any, title?: string): void {\n const s = this.getSearchParams({delete: Array.isArray(name) ? name : [name]});\n this.push({searchParams: s}, data, title);\n }\n\n replaceAddSearchParam(params:[[string, string]], data?: any, title?: string): void {\n const s = this.getSearchParams({append: params});\n this.push({searchParams: s}, data, title);\n }\n\n getUrl(): string {\n return LocationUtils.hash(this.config.window) || '/';\n }\n\n getHref(): string {\n return this.config.window.location.href;\n }\n\n getPathName(): string {\n return LocationUtils.hashPath(this.config.window) || '/';\n }\n\n getHashSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams {\n const hash = this.config.window.location.hash;\n const queryIndex = hash.indexOf('?');\n const searchParams = (queryIndex !== -1) ? new URLSearchParams(hash.slice(queryIndex + 1)) : new URLSearchParams();;\n data?.delete?.forEach(it => {\n searchParams.delete(it);\n })\n data?.append?.forEach(it => {\n searchParams.append(it[0], it[1]);\n })\n return searchParams;\n\n }\n\n}\n", "import { ConstructorType } from '@dooboostore/core/types';\nimport {DomRenderFinalProxy} from '../types/Types';\nimport {DomRenderConfig} from '../configs/DomRenderConfig';\n\nenum CallBackType {\n FILTER,\n MAP,\n SUBSCRIBE\n}\n\nexport type ChannelData = {\n channel: Channel;\n data?: (any | undefined);\n}\nexport type ChannelMetaData = {\n channel?: Channel;\n action?: string;\n}\n\nexport class ChannelSubscription {\n constructor(public channel: Channel, public subscriber: ChannelSubscriber) {\n }\n\n unsubscribe() {\n this.subscriber.unsubscribe();\n }\n}\n\nexport class ChannelSubscriber<SD = any> {\n public parentSubscriber?: ChannelSubscriber;\n public callbacks: ({ type: CallBackType, callback: (data: any, metaData: ChannelMetaData) => any | undefined })[] = [];\n\n constructor(public channel: Channel) {\n }\n\n exeCallback(data: any, metaData: ChannelMetaData) {\n for (const callback of this.callbacks) {\n if (callback.type === CallBackType.FILTER && !callback.callback(data, metaData)) {\n break;\n } else if (callback.type === CallBackType.MAP) {\n data = callback.callback(data, metaData);\n } else if (callback.type === CallBackType.SUBSCRIBE) {\n data = callback.callback(data, metaData);\n break;\n }\n }\n return data;\n }\n\n // chaining point\n filter<D = SD>(callback: (data: D, meta: ChannelMetaData) => boolean): ChannelSubscriber<SD> {\n this.callbacks.push({type: CallBackType.FILTER, callback});\n return this;\n }\n\n map<D = SD, R = any>(callback: (data: D, meta: ChannelMetaData) => R): ChannelSubscriber<R> {\n this.callbacks.push({type: CallBackType.MAP, callback});\n return this as unknown as ChannelSubscriber<R>;\n }\n\n subscribe(callback: (data: SD, metaData: ChannelMetaData) => any | undefined) {\n this.callbacks.push({type: CallBackType.SUBSCRIBE, callback});\n this.channel.subscribers.add(this);\n return new ChannelSubscription(this.channel, this);\n }\n\n unsubscribe() {\n this.channel.subscribers.delete(this);\n }\n\n deleteSubscriber() {\n this.unsubscribe();\n this.channel.subscribers.delete(this);\n }\n}\n\nexport class Channel {\n public subscribers = new Set<ChannelSubscriber>();\n\n constructor(private messenger: Messenger, public obj: object, public key: string) {\n }\n\n publish(key: string | object | ConstructorType<any>, data: any, action?: string) {\n const rtns: ChannelData[] = [];\n this.messenger.getChannels(key)?.forEach(it => {\n try {\n it.subscribers.forEach(its => {\n const rdata = its.exeCallback(data, {channel: this, action});\n rtns.push({channel: it, data: rdata});\n });\n } catch (e) {\n console.error(e);\n }\n });\n return rtns;\n }\n\n allPublish(data: any, action: string) {\n const rtns: (any | undefined)[][] = [];\n this.messenger.getAllChannelKeys().forEach(it => {\n rtns.push(this.publish(it, data));\n });\n return rtns.flat();\n }\n\n // string point\n filter<D = any>(filterF: (data: D, meta: ChannelMetaData) => boolean) {\n const subscriber = new ChannelSubscriber<D>(this);\n subscriber.filter(filterF);\n return subscriber;\n }\n\n map<D = any, R = any>(filterF: (data: D, meta: ChannelMetaData) => R): ChannelSubscriber<R> {\n const subscriber = new ChannelSubscriber<R>(this);\n subscriber.map(filterF);\n return subscriber;\n }\n\n subscribe<D = any>(subscribeCallback: (data: D, meta: ChannelMetaData) => any | void | undefined) {\n const subscriber = new ChannelSubscriber<D>(this);\n return subscriber.subscribe(subscribeCallback);\n };\n\n deleteChannel() {\n this.messenger.deleteChannel(this);\n };\n}\n\ntype MessengerEventDetail = {\n key: string | object | ConstructorType<any>;\n data?: any;\n action?: string;\n result?: (c: ChannelData[]) => void;\n}\n\ntype MessengerSubscribeEventDetail = {\n obj: any;\n key?: string | object | ConstructorType<any>;\n init: (channel: Channel, subscription: ChannelSubscription) => void;\n subscribe: (data: any, meta: ChannelMetaData) => void;\n}\n\nexport abstract class Messenger {\n private channels = new Set<Channel>();\n static readonly EVENT_PUBLISH_KEY = 'domRenderMessenger_publish';\n static readonly EVENT_SUBSCRIBE_KEY = 'domRenderMessenger_subscribe';\n constructor(private config: DomRenderConfig) {\n this.config.window.addEventListener(Messenger.EVENT_PUBLISH_KEY, (e: Event) => {\n const detail = ((e as CustomEvent).detail as MessengerEventDetail);\n // console.log('--->', detail)\n const rtns: ChannelData[] = [];\n this.getChannels(detail.key)?.forEach(it => {\n try {\n it.subscribers.forEach(its => {\n const rdata = its.exeCallback(detail.data, {action: detail.action});\n rtns.push({channel: it, data: rdata});\n });\n } catch (e) {\n console.error(e);\n }\n });\n detail.result?.(rtns);\n });\n this.config.window.addEventListener(Messenger.EVENT_SUBSCRIBE_KEY, (e: Event) => {\n const detail = ((e as CustomEvent).detail as MessengerSubscribeEventDetail);\n // console.log('--->', detail)\n const channel = this.createChannel(detail.obj, detail.key);\n detail.init(channel, channel.subscribe(detail.subscribe));\n });\n }\n\n public static publish(window: Window, detail: MessengerEventDetail) {\n window.dispatchEvent(new CustomEvent(Messenger.EVENT_PUBLISH_KEY, {detail}));\n }\n\n public static subscribe(window: Window, detail: MessengerSubscribeEventDetail) {\n window.dispatchEvent(new CustomEvent(Messenger.EVENT_SUBSCRIBE_KEY, {detail}));\n }\n\n createChannel(obj: any, key = obj.constructor.name): Channel {\n const channel = DomRenderFinalProxy.final(new Channel(this, obj, key)) as Channel;\n this.channels.add(channel);\n // this.channels.get(key) ? this.channels.get(key)!.push(channel) : this.channels.set(key, [channel]);\n return channel;\n }\n\n deleteChannel(channel: Channel) {\n this.channels.delete(channel);\n }\n\n deleteChannelFromObj(obj: any) {\n if (obj) {\n this.channels.forEach(it => {\n if (it.obj === obj) {\n // console.log('dddddddddddd', obj)\n this.deleteChannel(it);\n }\n });\n }\n }\n\n addChannel(channel: Channel) {\n this.channels.add(channel);\n }\n\n getChannels(key: string | object | ConstructorType<any>): Channel[] {\n if (typeof key === 'object') {\n key = key.constructor.name;\n } else if (typeof key === 'function') {\n key = key.name;\n }\n return Array.from(this.channels.values()).filter(it => it.key === key);\n }\n\n getAllChannels(): Channel[] {\n return Array.from(this.channels.values());\n }\n\n getAllChannelKeys(): string[] {\n return Array.from(this.channels.values()).map(it => it.key);\n }\n}\n", "import {Messenger} from './Messenger';\n\nexport class DefaultMessenger extends Messenger {\n\n}", "import { ConstructorType } from '../types';\nexport namespace ReflectUtils {\n export const getParameterTypes = (target: any, propertyKey?: string | symbol): ConstructorType<any>[] => {\n // console.log('---------param')\n if (propertyKey) {\n return Reflect.getMetadata('design:paramtypes', target, propertyKey) || [];\n } else {\n return Reflect.getMetadata('design:paramtypes', target) || [];\n }\n }\n\n\n export const getReturnType = (target: any, propertyKey: string | symbol): any => {\n return Reflect.getMetadata('design:returntype', target, propertyKey);\n }\n\n // @Reflect.metadata(\"design:type\", Point)\n export const getType = (target: any, propertyKey?: string | symbol): any => {\n if (propertyKey) {\n return Reflect.getMetadata('design:type', target, propertyKey);\n } else {\n return Reflect.getMetadata('design:type', target);\n }\n }\n\n export const getMetadata = <T = any>(metadataKey: any, target: any, propertyKey?: string | symbol): T | undefined => {\n if (propertyKey) {\n return Reflect.getMetadata(metadataKey, target, propertyKey);\n } else {\n return Reflect.getMetadata(metadataKey, target);\n }\n }\n\n export const getMetadataKeys = (target: any) => {\n return Reflect.getMetadataKeys(target);\n }\n\n export const getOwnMetadata = (metadataKey: any, target: any, propertyKey?: string): number[] | any => {\n if (propertyKey) {\n return Reflect.getOwnMetadata(metadataKey, target, propertyKey);\n } else {\n return Reflect.getOwnMetadata(metadataKey, target);\n }\n }\n\n export const getMetadatas = (target: any) => {\n return ReflectUtils.getMetadataKeys(target).map(it => ReflectUtils.getMetadata(it, target));\n }\n\n export const metadata = (metadataKey: any, data: any) => {\n return Reflect.metadata(metadataKey, data);\n }\n\n export const defineMetadata = (metadataKey: any, value: any, target: any, propertyKey?: string | symbol) => {\n // console.log(\"Reflect:\",Reflect)\n if (propertyKey && Reflect.defineMetadata) {\n Reflect.defineMetadata(metadataKey, value, target, propertyKey);\n } else if (Reflect.defineMetadata) {\n Reflect.defineMetadata(metadataKey, value, target);\n // Reflect.defineMetadata(\"design:paramtypes\", value, target);\n }\n // console.log(\"Reflect:\",Reflect.getMetadata(metadataKey, target))\n // console.log(\"Reflect:\",Reflect.getMetadata('design:paramtypes', target))\n }\n}\n", "import { Observable } from '../Observable';\n\nexport function debounceTime<T>(duration: number) {\n return (source: Observable<T, any>): Observable<T, any> => {\n return new Observable(subscriber => {\n let timeoutId: any = null;\n let lastValue: T | undefined;\n let hasValue = false;\n\n const subscription = source.subscribe({\n next: (value) => {\n clearTimeout(timeoutId);\n lastValue = value;\n hasValue = true;\n timeoutId = setTimeout(() => {\n if (hasValue) {\n subscriber.next(lastValue!);\n hasValue = false; // Reset after emitting\n }\n }, duration);\n },\n error: (err) => {\n clearTimeout(timeoutId);\n subscriber.error(err);\n },\n complete: () => {\n clearTimeout(timeoutId);\n // Emit the last value if it's pending\n if (hasValue) {\n subscriber.next(lastValue!);\n }\n subscriber.complete();\n }\n });\n return subscription; // Return the subscription for teardown\n });\n };\n}\n", "import { ElementUtils } from '@dooboostore/core-web/element/ElementUtils';\nimport { OnChangeAttrRender, OtherData } from '../lifecycle/OnChangeAttrRender';\nimport { OnCreateRenderData, OnCreateRenderDataParams } from '../lifecycle/OnCreateRenderData';\nimport { RawSet } from '../rawsets/RawSet';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { OnCreatedThisChild } from '../lifecycle/OnCreatedThisChild';\nimport { DomRenderNoProxy } from '../decorators/DomRenderNoProxy';\nimport { OnInitRender } from '../lifecycle/OnInitRender';\nimport { ConvertUtils } from '@dooboostore/core/convert/ConvertUtils';\nimport { OnDestroyRender, OnDestroyRenderParams } from '../lifecycle/OnDestroyRender';\nimport { OnDrThisUnBind } from '../lifecycle/dr-this/OnDrThisUnBind';\nimport { OnDrThisBind } from '../lifecycle/dr-this/OnDrThisBind';\nimport type { Render } from '../rawsets/Render';\nimport { ReflectUtils } from '@dooboostore/core/reflect/ReflectUtils';\nimport { DomRenderConfig } from '../configs/DomRenderConfig';\nimport { Subject } from '@dooboostore/core/message/Subject';\nimport { debounceTime } from '@dooboostore/core/message/operators/debounceTime';\nimport type { Subscription } from '@dooboostore/core/message/Subscription';\n\n\nexport const ATTRIBUTE_METADATA_KEY = Symbol('attribute');\nexport const QUERY_METADATA_KEY = Symbol('query');\nexport const EVENT_METADATA_KEY = Symbol('event');\n\nexport interface AttributeMetadata {\n propertyKey: string | symbol;\n name: string;\n converter?: (value: any | string | null) => any;\n isMethod: boolean;\n}\n\nexport interface QueryMetadata {\n selector: string;\n propertyKey: string | symbol;\n isMethod: boolean;\n convert?: (e: Element) => any;\n onDestroy?: (componentInstance: any, element: Element) => void;\n refreshTime?: number; // milliseconds\n}\n\nexport interface EventMetadata {\n query: string;\n eventName: string;\n methodName: string | symbol;\n onDestroy?: (componentInstance: any, element: Element) => void;\n refreshTime?: number; // milliseconds\n}\n\nexport function attribute(nameOrOptions?: string | { name?: string, converter?: (value: any | string | null) => any }): (target: object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => void {\n return (target: object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => {\n const attributes = ReflectUtils.getMetadata<AttributeMetadata[]>(ATTRIBUTE_METADATA_KEY, target.constructor) || [];\n \n let name: string;\n let converter: ((value: any | string | null) => any) | undefined;\n \n if (typeof nameOrOptions === 'string') {\n name = nameOrOptions;\n } else if (nameOrOptions) {\n name = nameOrOptions.name || String(propertyKey);\n converter = nameOrOptions.converter;\n } else {\n name = String(propertyKey);\n }\n \n const attributeMetadata: AttributeMetadata = {\n propertyKey: propertyKey,\n name: name,\n converter: converter,\n isMethod: !!descriptor\n };\n \n attributes.push(attributeMetadata);\n ReflectUtils.defineMetadata(ATTRIBUTE_METADATA_KEY, attributes, target.constructor);\n };\n}\n\nexport function query(selectorOrOptions: string | { selector: string, convert?: (e: Element) => any, onDestroy?: (componentInstance: any, element: Element) => void, refreshIntervalTime?: number }): (target: object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => void {\n return (target: object, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => {\n const queries = ReflectUtils.getMetadata<QueryMetadata[]>(QUERY_METADATA_KEY, target.constructor) || [];\n \n let selector: string;\n let convert: ((e: Element) => any) | undefined;\n let onDestroy: ((componentInstance: any, element: Element) => void) | undefined;\n let refreshTime: number | undefined;\n \n if (typeof selectorOrOptions === 'string') {\n selector = selectorOrOptions;\n } else {\n selector = selectorOrOptions.selector;\n convert = selectorOrOptions.convert;\n onDestroy = selectorOrOptions.onDestroy;\n refreshTime = selectorOrOptions.refreshIntervalTime;\n }\n \n const queryMetadata: QueryMetadata = {\n selector: selector,\n propertyKey: propertyKey,\n isMethod: !!descriptor,\n convert: convert,\n onDestroy: onDestroy,\n refreshTime: refreshTime\n };\n \n queries.push(queryMetadata);\n ReflectUtils.defineMetadata(QUERY_METADATA_KEY, queries, target.constructor);\n };\n}\n\nexport function event(options: { query: string, name: string, onDestroy?: (componentInstance: any, element: Element) => void, refreshTime?: number }): MethodDecorator {\n return (target: object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const events = ReflectUtils.getMetadata<EventMetadata[]>(EVENT_METADATA_KEY, target.constructor) || [];\n \n const eventMetadata: EventMetadata = {\n query: options.query,\n eventName: options.name,\n methodName: propertyKey,\n onDestroy: options.onDestroy,\n refreshTime: options.refreshTime\n };\n \n events.push(eventMetadata);\n ReflectUtils.defineMetadata(EVENT_METADATA_KEY, events, target.constructor);\n };\n}\n\n\nexport type ComponentBaseConfig = { onlyParentType?: ConstructorType<any>[] | ConstructorType<any>, createChildrenDebounce?: number };\n\nexport type ChildrenSet = { instance: any, data: OnCreateRenderDataParams };\n\nexport class ComponentBase<T = any, C extends ComponentBaseConfig = ComponentBaseConfig> implements OnChangeAttrRender, OnCreateRenderData, OnCreatedThisChild, OnDrThisBind, OnDrThisUnBind, OnInitRender, OnDestroyRender {\n @DomRenderNoProxy\n private _rawSet?: RawSet;\n @DomRenderNoProxy\n private _children: ChildrenSet[] = [];\n @DomRenderNoProxy\n private _render: Render | undefined;\n @DomRenderNoProxy\n private _attribute?: T;\n @DomRenderNoProxy\n private _boundEventListeners: { element: Element, eventName: string, listener: (e: Event) => void }[] = [];\n @DomRenderNoProxy\n private _queryBindings: { element: Element, metadata: QueryMetadata }[] = [];\n @DomRenderNoProxy\n private _eventBindings: { element: Element, metadata: EventMetadata, listener: (e: Event) => void }[] = [];\n @DomRenderNoProxy\n private _refreshTimers: Map<QueryMetadata | EventMetadata, NodeJS.Timeout> = new Map();\n\n @DomRenderNoProxy\n private childrenSetSubject = new Subject<ChildrenSet[]>();\n @DomRenderNoProxy\n private createChildrenDebounceSubscription?: Subscription | undefined;\n\n constructor(private _config?: C) {\n }\n get componentConfig(): C | undefined {\n return this._config;\n }\n get render(): Render | undefined {\n return this._render;\n }\n\n get rawSet(): RawSet | undefined {\n return this._rawSet;\n }\n\n get domRenderConfig(): DomRenderConfig | undefined {\n return this.rawSet?.dataSet.config;\n }\n\n private _queryElements(selector: string, rawSet:RawSet): Element[] {\n const e = this.getElement();\n // console.log('queryElement-->', e);\n if (e) {\n return ElementUtils.querySelectorAll(e, selector);\n } else {\n let startNode = rawSet.point?.start;\n let endNode = rawSet.point?.end;\n // console.log('-----', startNode, endNode)\n // console.log('-----', startNode?.isConnected, endNode?.isConnected)\n if (rawSet.point?.start && startNode && !startNode.isConnected && startNode instanceof HTMLElement && startNode.hasAttribute('id')) {\n rawSet.point.start = startNode = rawSet.dataSet.config.window.document.querySelector('#' + startNode.id) as HTMLMetaElement\n }\n if (rawSet.point?.end && endNode && !endNode.isConnected && endNode instanceof HTMLElement && endNode.hasAttribute('id')) {\n rawSet.point.end = endNode = rawSet.dataSet.config.window.document.querySelector('#' + endNode.id) as HTMLMetaElement\n }\n if (startNode && endNode) {\n // console.log('query!!', startNode, endNode);\n return ElementUtils.querySelectorAll({ start: startNode as Element, end: endNode as Element }, selector);\n }\n }\n return [];\n }\n\n private _cleanupEventListeners() {\n for (const { element, eventName, listener } of this._boundEventListeners) {\n element.removeEventListener(eventName, listener);\n }\n this._boundEventListeners = [];\n }\n\n private _cleanupQueryBindings() {\n for (const { element, metadata } of this._queryBindings) {\n if (metadata.onDestroy) {\n metadata.onDestroy(this, element);\n }\n this._clearRefreshTimer(metadata);\n }\n this._queryBindings = [];\n }\n\n private _cleanupEventBindings() {\n for (const { element, metadata, listener } of this._eventBindings) {\n element.removeEventListener(metadata.eventName, listener);\n if (metadata.onDestroy) {\n metadata.onDestroy(this, element);\n }\n this._clearRefreshTimer(metadata);\n }\n this._eventBindings = [];\n }\n\n private _applyQueryBinding(queryInfo: QueryMetadata, elements: Element[], newElementsOnly: Element[] = elements) {\n const { propertyKey, isMethod, convert } = queryInfo;\n \n // Track bindings for cleanup\n elements.forEach(element => {\n this._queryBindings.push({ element, metadata: queryInfo });\n });\n \n // Apply convert function if provided\n const processedElements = convert ? elements.map(convert) : elements;\n const processedNewElements = convert ? newElementsOnly.map(convert) : newElementsOnly;\n \n if (isMethod) {\n const method = (this as any)[propertyKey];\n if (typeof method === 'function') {\n const paramTypes = ReflectUtils.getParameterTypes(this, propertyKey);\n if (paramTypes && paramTypes.length > 0 && paramTypes[0] === Array) {\n // For array methods, pass only new elements\n method.call(this, processedNewElements, processedElements);\n } else {\n // For single element methods, pass first new element\n if (processedNewElements.length > 0) {\n method.call(this, processedNewElements[0]);\n }\n }\n }\n } else {\n // For properties, always set all elements (not just new ones)\n const propertyType = ReflectUtils.getType(this, propertyKey);\n if (propertyType === Array) {\n (this as any)[propertyKey] = processedElements;\n } else {\n (this as any)[propertyKey] = processedElements[0] || null;\n }\n }\n }\n\n private _setupQueryDecorators(rawSet: RawSet) {\n if (!rawSet) return;\n\n const queries = ReflectUtils.getMetadata<QueryMetadata[]>(QUERY_METADATA_KEY, this.constructor);\n // console.group('_setupQueryDecorators')\n // console.log('queries', queries);\n if (queries && Array.isArray(queries)) {\n for (const queryInfo of queries) {\n const elements = this._queryElements(queryInfo.selector, rawSet);\n // console.log('------elements', elements);\n this._applyQueryBinding(queryInfo, elements);\n \n // Setup refresh timer if specified\n this._setupRefreshTimer(queryInfo);\n }\n }\n // console.groupEnd();\n }\n\n private _updateQueryBinding(queryInfo: QueryMetadata, rawSet: RawSet, forceUpdate = false) {\n const newElements = this._queryElements(queryInfo.selector, rawSet);\n \n // Get current bindings for this query\n const currentBindings = this._queryBindings.filter(binding => binding.metadata === queryInfo);\n const currentElements = currentBindings.map(binding => binding.element);\n \n // Check if elements have changed\n const elementsChanged = forceUpdate || !this._arraysEqual(currentElements, newElements);\n \n if (elementsChanged) {\n let addedElements: Element[] = [];\n \n if (forceUpdate) {\n // Force update: cleanup all old bindings, treat all as new\n currentBindings.forEach(({ element, metadata }) => {\n if (metadata.onDestroy) {\n metadata.onDestroy(this, element);\n }\n });\n addedElements = newElements;\n } else {\n // Smart update: only cleanup removed elements, find added elements\n const removedElements = currentElements.filter(element => !newElements.includes(element));\n addedElements = newElements.filter(element => !currentElements.includes(element));\n \n removedElements.forEach(element => {\n if (queryInfo.onDestroy) {\n queryInfo.onDestroy(this, element);\n }\n });\n }\n \n // Remove old bindings\n this._queryBindings = this._queryBindings.filter(binding => binding.metadata !== queryInfo);\n \n // Apply new bindings, but pass only added elements to methods\n this._applyQueryBinding(queryInfo, newElements, addedElements);\n }\n }\n\n private _updateQueryDecorators(rawSet: RawSet) {\n if (!rawSet) return;\n\n const queries = ReflectUtils.getMetadata<QueryMetadata[]>(QUERY_METADATA_KEY, this.constructor);\n if (queries && Array.isArray(queries)) {\n for (const queryInfo of queries) {\n this._updateQueryBinding(queryInfo, rawSet);\n }\n }\n }\n\n private _arraysEqual(arr1: Element[], arr2: Element[]): boolean {\n if (arr1.length !== arr2.length) return false;\n return arr1.every((element, index) => element === arr2[index]);\n }\n\n private _setupRefreshTimer(metadata: QueryMetadata | EventMetadata) {\n if (!metadata.refreshTime || !this._rawSet) return;\n\n const timer = setInterval(() => {\n if (!this._rawSet) return;\n\n if ('selector' in metadata) {\n // QueryMetadata\n this._updateQueryBinding(metadata as QueryMetadata, this._rawSet);\n } else {\n // EventMetadata\n this._updateEventBinding(metadata as EventMetadata, this._rawSet);\n }\n }, metadata.refreshTime);\n\n this._refreshTimers.set(metadata, timer);\n }\n\n private _clearRefreshTimer(metadata: QueryMetadata | EventMetadata) {\n const timer = this._refreshTimers.get(metadata);\n if (timer) {\n clearInterval(timer);\n this._refreshTimers.delete(metadata);\n }\n }\n\n private _clearAllRefreshTimers() {\n for (const timer of Array.from(this._refreshTimers.values())) {\n clearInterval(timer);\n }\n this._refreshTimers.clear();\n }\n\n /**\n * Manually refresh all query and event decorators\n * Useful when DOM elements are dynamically added/removed and you want to update bindings\n */\n refreshDecorators(): void {\n if (this._rawSet) {\n this._updateQueryDecorators(this._rawSet);\n this._updateEventDecorators(this._rawSet);\n }\n }\n\n /**\n * Manually refresh specific query decorators by property key\n * @param propertyKeys - Array of property keys to refresh, or single property key\n */\n refreshQueryDecorators(propertyKeys: (string | symbol) | (string | symbol)[]): void {\n if (!this._rawSet) return;\n\n const keys = Array.isArray(propertyKeys) ? propertyKeys : [propertyKeys];\n const queries = ReflectUtils.getMetadata<QueryMetadata[]>(QUERY_METADATA_KEY, this.constructor);\n \n if (queries && Array.isArray(queries)) {\n for (const queryInfo of queries) {\n if (keys.includes(queryInfo.propertyKey)) {\n this._updateQueryBinding(queryInfo, this._rawSet, true); // Force update\n }\n }\n }\n }\n\n /**\n * Manually refresh specific event decorators by method name\n * @param methodNames - Array of method names to refresh, or single method name\n */\n refreshEventDecorators(methodNames: (string | symbol) | (string | symbol)[]): void {\n if (!this._rawSet) return;\n\n const names = Array.isArray(methodNames) ? methodNames : [methodNames];\n const events = ReflectUtils.getMetadata<EventMetadata[]>(EVENT_METADATA_KEY, this.constructor);\n \n if (events && Array.isArray(events)) {\n for (const eventInfo of events) {\n if (names.includes(eventInfo.methodName)) {\n this._updateEventBinding(eventInfo, this._rawSet, true); // Force update\n }\n }\n }\n }\n\n private _applyEventBinding(eventInfo: EventMetadata, elements: Element[]) {\n elements.forEach(element => {\n const listener = (this as any)[eventInfo.methodName].bind(this);\n // console.log('bind?????', element);\n element.addEventListener(eventInfo.eventName, listener);\n \n // Track bindings for cleanup\n this._eventBindings.push({ element, metadata: eventInfo, listener });\n this._boundEventListeners.push({ element, eventName: eventInfo.eventName, listener });\n });\n }\n\n private _setupEventDecorators(rawSet: RawSet) {\n if (!rawSet) return;\n\n const events = ReflectUtils.getMetadata<EventMetadata[]>(EVENT_METADATA_KEY, this.constructor);\n if (events && Array.isArray(events)) {\n for (const eventInfo of events) {\n const elements = this._queryElements(eventInfo.query, rawSet);\n this._applyEventBinding(eventInfo, elements);\n \n // Setup refresh timer if specified\n this._setupRefreshTimer(eventInfo);\n }\n }\n }\n\n private _updateEventBinding(eventInfo: EventMetadata, rawSet: RawSet, forceUpdate = false) {\n const newElements = this._queryElements(eventInfo.query, rawSet);\n \n // Get current bindings for this event\n const currentBindings = this._eventBindings.filter(binding => binding.metadata === eventInfo);\n const currentElements = currentBindings.map(binding => binding.element);\n \n // Check if elements have changed\n const elementsChanged = forceUpdate || !this._arraysEqual(currentElements, newElements);\n \n if (elementsChanged) {\n if (forceUpdate) {\n // Force update: cleanup all old bindings\n currentBindings.forEach(({ element, metadata, listener }) => {\n element.removeEventListener(metadata.eventName, listener);\n if (metadata.onDestroy) {\n metadata.onDestroy(this, element);\n }\n });\n } else {\n // Smart update: only cleanup removed elements\n const removedElements = currentElements.filter(element => !newElements.includes(element));\n const removedBindings = currentBindings.filter(binding => removedElements.includes(binding.element));\n \n removedBindings.forEach(({ element, metadata, listener }) => {\n element.removeEventListener(metadata.eventName, listener);\n if (metadata.onDestroy) {\n metadata.onDestroy(this, element);\n }\n });\n }\n \n // Remove old bindings from tracking arrays\n this._eventBindings = this._eventBindings.filter(binding => binding.metadata !== eventInfo);\n this._boundEventListeners = this._boundEventListeners.filter(binding => \n !currentBindings.some(cb => cb.element === binding.element && cb.metadata.eventName === binding.eventName)\n );\n \n // Apply new bindings\n this._applyEventBinding(eventInfo, newElements);\n }\n }\n\n private _updateEventDecorators(rawSet: RawSet) {\n if (!rawSet) return;\n\n const events = ReflectUtils.getMetadata<EventMetadata[]>(EVENT_METADATA_KEY, this.constructor);\n if (events && Array.isArray(events)) {\n for (const eventInfo of events) {\n this._updateEventBinding(eventInfo, rawSet);\n }\n }\n }\n\n getAttribute<K extends keyof T>(name: K, attribute = this._attribute): T[K] | null {\n const target = attribute as any;\n if (!target) {\n return null;\n }\n\n const nameString = String(name);\n let p = nameString;\n if (p in target) {\n return target[p];\n }\n p = ConvertUtils.snakeToCamelCase(nameString);\n if (p in target) {\n return target[p];\n }\n p = ConvertUtils.camelToSnakeCase(nameString);\n if (p in target) {\n return target[p];\n }\n p = nameString.toUpperCase()\n if (p in target) {\n return target[p];\n }\n p = nameString.toLowerCase()\n if (p in target) {\n return target[p];\n }\n return null;\n }\n\n hasAttribute(name: keyof T) {\n return this.getAttribute(name) !==null;\n }\n\n equalsAttributeName(n: string, name: keyof T) {\n return n === name ||\n ConvertUtils.snakeToCamelCase(n) === name ||\n ConvertUtils.camelToSnakeCase(n) === name ||\n n.toUpperCase() === (name as string).toUpperCase() ||\n n.toLowerCase() === (name as string).toLowerCase()\n ;\n }\n\n get uuid(): string | undefined {\n return this._rawSet?.uuid;\n }\n\n get childrenSet() {\n return this._children;\n }\n\n get children(): any[] {\n return this._children.map(it=>it.instance);\n }\n\n getElement<T extends Element>(): T | undefined {\n return (this.render ?? this.rawSet?.dataSet?.render)?.getElement?.();\n }\n\n getFirstChild<T>(type: ConstructorType<T>): T | undefined {\n return this._children.find(it => it instanceof type)?.instance;\n }\n\n getParentThis<P>():P {\n return this.render?.parentThis as P;\n }\n\n getChildren<C extends ConstructorType<any>>(type: C): InstanceType<C>[];\n getChildren<C extends ConstructorType<any>[]>(types: C): InstanceType<C[number]>[];\n getChildren(typeOrTypes: ConstructorType<any> | ConstructorType<any>[]): any[] {\n const targets = Array.isArray(typeOrTypes) ? typeOrTypes : [typeOrTypes];\n return this._children.filter(childSet =>\n targets.some(targetConstructor => childSet.instance instanceof targetConstructor)\n )?.map(it=>it.instance);\n }\n\n\n\n private setRawSet(rawSet: RawSet) {\n this._rawSet = rawSet;\n if (this._rawSet) {\n this.setAttribute(this._rawSet.dataSet?.render?.attribute as T);\n }\n }\n\n setAttribute(attribute: T) {\n this._attribute = attribute;\n }\n\n // TODO: rawSet isConnected로 체크해서 들어가있는것만 처리되도록 또는 이미들어가있는것도 뺴야될것같은데.. 적용하긴했음..지켜봐야될듯.\n onCreatedThisChild(child: any, data: OnCreateRenderDataParams) {\n // console.log('------------------------',child, data, data.render?.rawSet?.isConnected)\n const n = [...this._children];\n n.push({instance:child, data});\n this._children = n.filter(it=>it.data.render?.rawSet?.isConnected)\n this.childrenSetSubject.next(this._children);\n \n // Update decorators when children change (DOM might have changed)\n // Only update if elements actually changed\n if (this._rawSet) {\n this._updateQueryDecorators(this._rawSet);\n this._updateEventDecorators(this._rawSet);\n }\n }\n\n onCreatedThisChildDebounce(childrenSet: ChildrenSet[]) {\n\n }\n\n onCreateRenderData(data: OnCreateRenderDataParams): void {\n this._render = data.render;\n if (data.render?.rawSet) {\n this.setRawSet(data.render.rawSet);\n }\n if (this._config?.onlyParentType) {\n const isOk = Array.isArray(this._config?.onlyParentType) ? this._config?.onlyParentType : [this._config?.onlyParentType].some(it => data.render?.parentThis instanceof it);\n if (!isOk) {\n throw new Error('only my parentThis ' + this._config?.onlyParentType);\n }\n }\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData): void {\n if (other.rawSet) {\n this.setRawSet(other.rawSet);\n }\n\n const attributes = ReflectUtils.getMetadata<AttributeMetadata[]>(ATTRIBUTE_METADATA_KEY, this.constructor);\n if (attributes && Array.isArray(attributes)) {\n for (const attrInfo of attributes) {\n if (this.equalsAttributeName(name, attrInfo.name as any)) {\n const finalValue = attrInfo.converter ? attrInfo.converter(value) : value;\n if (attrInfo.isMethod) {\n const method = (this as any)[attrInfo.propertyKey];\n if (typeof method === 'function') {\n method.call(this, finalValue);\n }\n } else {\n (this as any)[attrInfo.propertyKey] = finalValue;\n }\n }\n }\n }\n }\n\n onInitRender(param: any, rawSet: RawSet) {\n this.createChildrenDebounceSubscription = this.childrenSetSubject.pipe(debounceTime(this.componentConfig?.createChildrenDebounce??0)).subscribe(it => {\n this.onCreatedThisChildDebounce(it);\n });\n if (rawSet) {\n this.setRawSet(rawSet);\n\n const e = this.getElement();\n if (e) {\n (e as any).component = this;\n }\n\n // Setup decorators\n this._setupQueryDecorators(rawSet);\n this._setupEventDecorators(rawSet);\n }\n }\n\n onDrThisBind() {\n // Logic moved to onInitRender for robustness\n }\n\n onDrThisUnBind() {\n this.onDestroy();\n }\n\n onDestroyRender(data?: OnDestroyRenderParams): void {\n this.onDestroy();\n }\n\n onDestroy() {\n this._cleanupEventListeners();\n this._cleanupQueryBindings();\n this._cleanupEventBindings();\n this._clearAllRefreshTimers();\n this.createChildrenDebounceSubscription?.unsubscribe();\n }\n\n}\n", "import { ChildrenSet, ComponentBase, ComponentBaseConfig } from './ComponentBase';\nimport { ComponentSet } from './ComponentSet';\nimport { isOnDrThisUnBind } from '../lifecycle/dr-this/OnDrThisUnBind';\n\n\nexport type ComponentRouterBaseConfig = ComponentBaseConfig & { sameRouteNoApply?: boolean };\n\nexport abstract class ComponentRouterBase<T = any>\n extends ComponentBase<T, ComponentRouterBaseConfig>\n{\n // OnDrThisBind\n public child?: ComponentSet;\n\n constructor(_config?: ComponentRouterBaseConfig) {\n super(_config);\n }\n\n // get child() {\n // return this._child;\n // }\n\n setChild(child: ComponentSet) {\n // console.log('setChild!!', child, (this as any).name)\n if (child) {\n this.child = child;\n } else {\n this.child = undefined;\n }\n }\n\n onDrThisUnBind(): void {\n // console.log('--ComponentRouterBase--onDrThisUnBind-')\n super.onDrThisUnBind();\n if (this.child && isOnDrThisUnBind(this.child?.obj)) {\n this.child.obj.onDrThisUnBind();\n }\n }\n\n onCreatedThisChildDebounce(childrenSet: ChildrenSet[]) {\n super.onCreatedThisChildDebounce(childrenSet);\n }\n\n\n}\n", "import { attribute, ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\n\nexport namespace A {\n export const selector = 'dr-a';\n\n export type ClickCallbackData = {\n event: MouseEvent,\n attributes: {\n href: string | null;\n target: string | null;\n style: string | null;\n class: string | null;\n replace?: boolean;\n scrollToTop?: boolean;\n }\n }\n\n export type Attribute = {\n href?: string | null;\n target?: string | null;\n style?: string | null;\n class?: string | null;\n click?: ((data: ClickCallbackData) => void) | null;\n replace?: boolean | null;\n scrollToTop?: boolean | null;\n };\n\n export class A extends ComponentBase<Attribute> {\n @attribute({ converter: v => v || null }) href: string | null = null;\n @attribute({ converter: v => v || null }) target: string | null = null;\n @attribute({ converter: v => v || null }) style: string | null = null;\n @attribute({ name: 'class', converter: v => v || null }) classAttr: string | null = null;\n @attribute() click?: ((data: ClickCallbackData) => void) | null = null;\n @attribute({ converter: v => v !== null && String(v) !== 'false' }) replace = false;\n @attribute({ converter: v => v !== null && String(v) !== 'false' }) scrollToTop = true;\n\n onClick(event: MouseEvent) {\n if (this.click) {\n const attributes = {\n href: this.href,\n target: this.target,\n style: this.style,\n class: this.classAttr,\n replace: this.replace,\n scrollToTop: this.scrollToTop\n };\n this.click({ event, attributes });\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (this.target !== '_blank' && this.href) {\n event.preventDefault();\n // console.log('scrollTop', this.scrollToTop);\n this.domRenderConfig?.router?.go({path: this.href, replace: this.replace, scrollToTop: this.scrollToTop });\n }\n }\n }\n}\n\nexport default {\n a: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: A.selector,\n template: `<a\n href=\"\\${@this@.href}$\"\n target=\"\\${@this@.target}$\"\n style=\"\\${@this@.style}$\"\n class=\"\\${@this@.classAttr}$\"\n dr-event-click=\"@this@.onClick($event)\"\n >#innerHTML#</a>`,\n objFactory: (e, o, r2, constructorParam) => {\n return DomRender.run({ rootObject: new A.A(...constructorParam), config });\n },\n });\n },\n};\n", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { Appender as DomRenderAppender } from '../../operators/Appender';\n\n\nexport namespace Appender {\n export const selector = 'dr-appender';\n // export type AppenderInterface<D> = {\n // push(...data:D[]):void;\n // set(key: string, ...v:D[]):void\n // delete(key: string):void\n // clear():void\n // }\n export type Attribute<D> = {\n value: DomRenderAppender<D>;\n onCreate?: (appender: DomRenderAppender) => void;\n }\n\n // @Component({\n // template: '<div dr-appender=\"@this@.appender\" dr-option-strip=\"true\">#innerHTML#</div>',\n // selector: `${selector}`\n // })\n export class Appender<D> extends ComponentBase<Attribute<D>> implements OnInitRender {\n private value?:DomRenderAppender\n\n // onCreateRender(...param: any) {\n // console.log('--onCreateRender')\n // }\n\n // test() {\n // console.log('t', this.getAttribute('appender'))\n // }\n onInitRender(param: any, rawSet: RawSet) {\n // console.log('--onInitRender onInitRender')\n super.onInitRender(param, rawSet);\n\n\n }\n\n // push(...data:D[]) {\n // console.log('push/////', data);\n // this.appender.push(...data);\n // }\n //\n // set(key: string, v: D): void {\n // this.appender.set(key, v)\n // }\n //\n // delete(key: string): void {\n // this.appender.delete(key);\n // }\n //\n // clear(): void {\n // this.appender.clear();\n // }\n\n\n\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n if(this.equalsAttributeName(name, 'value')) {\n this.value = value;\n }\n // console.log('------>appender', name, value);\n }\n }\n}\n\n\nexport default {\n appender: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: Appender.selector,\n template: '<div dr-appender=\"@this@.value\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Appender.Appender(...counstructorParam), config: config});\n }\n })\n },\n}\n\n\n", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { ComponentSet } from '../../components/ComponentSet';\nimport { OnCreateRenderDataParams } from '../../lifecycle/OnCreateRenderData';\n\nexport namespace CheckBox {\n export const selector = 'dr-checkbox';\n export type Attribute = {\n class?: string;\n }\n export type ChangeOption = { type: 'initialize' | 'event' | 'attributeChange' };\n export type WrapAttribute = {\n class?: string;\n name?: string;\n checked?: boolean;\n change?: (checked: boolean, option: ChangeOption) => void\n }\n\n class CheckBoxBase extends ComponentBase<Attribute> {\n public hidden = true;\n }\n\n // @Component({\n // template: '<div dr-if=\"!@this@.hidden\" dr-strip=\"true\">#innerHTML#</div>',\n // styles: '',\n // selector: `${selector}.Checked`\n // })\n export class Checked extends CheckBoxBase {\n public name = 'checked';\n\n constructor() {\n super({onlyParentType: CheckBox});\n }\n }\n\n // @Component({\n // template: '<div dr-if=\"!@this@.hidden\" dr-strip=\"true\">#innerHTML#</div>',\n // styles: '',\n // selector: `${selector}.UnChecked`\n // })\n export class UnChecked extends CheckBoxBase {\n public name = 'unChecked';\n\n constructor() {\n super({onlyParentType: CheckBox});\n }\n }\n\n // @Component({\n // template: template,\n // styles: style,\n // selector: `${selector}`\n // })\n export class CheckBox extends ComponentBase<WrapAttribute> {\n private checked = false;\n private inputElement?: HTMLInputElement;\n\n change(option: ChangeOption, checked?: boolean) { checked = checked ?? this.checked;\n this.checked = checked;\n this.setChildrenHidden(checked);\n this.getAttribute('change')?.(checked, option);\n }\n\n private setChildrenHidden(checked: boolean) {\n this.getChildren(Checked).forEach(it => {\n it.hidden = !checked;\n });\n this.getChildren(UnChecked).forEach(it => {\n it.hidden = checked;\n });\n }\n\n onCreatedThisChild(child: CheckBoxBase, childData: OnCreateRenderDataParams): void {\n super.onCreatedThisChild(child, childData);\n this.setChildrenHidden(this.checked);\n }\n\n onInitInputElement(element: HTMLInputElement) {\n // console.log('---cr', element)\n this.inputElement = element;\n this.inputElement.checked = !!this.getAttribute('checked');\n this.change({type: 'initialize'}, !!this.getAttribute('checked'));\n }\n\n onChangeAttrRender(name: string, val: any, other: OtherData) {\n super.onChangeAttrRender(name, val, other);\n // console.log('Checkbox ChangeAttr------', name, val, this.inputElement)\n if (this.inputElement && this.getAttribute('checked') !== this.checked) {\n this.inputElement.checked = !!this.getAttribute('checked');\n this.change({type: 'attributeChange'}, !!this.getAttribute('checked'));\n }\n }\n\n }\n}\n\n\n\nexport default {\n checkBoxChecked: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${CheckBox.selector}-checked`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new CheckBox.Checked(), config: config});\n }\n })\n },\n checkBoxUnchecked: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${CheckBox.selector}-unchecked`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\" >#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new CheckBox.UnChecked(), config: config});\n }\n })\n },\n checkBox: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${CheckBox.selector}`,\n template: '<label class=\"${@this@.getAttribute(\\'class\\')}$\">\\n' +\n ' <input\\n' +\n ' name=\"${@this@.getAttribute(\\'name\\')}$\"\\n' +\n ' dr-on-init=\"@this@.onInitInputElement($element)\"\\n' +\n ' dr-event-change=\"@this@.change({type: \\'event\\'},$element.checked);\"\\n' +\n ' type=\"checkbox\" hidden=\"hidden\"/>\\n' +\n ' #innerHTML#\\n' +\n '</label>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new CheckBox.CheckBox(...counstructorParam), config: config});\n }\n })\n },\n}", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { ComponentSet } from '../../components/ComponentSet';\nimport { OnCreateRenderDataParams } from '../../lifecycle/OnCreateRenderData';\n\nexport namespace Choose {\n export const selector = 'dr-choose';\n export type Attribute<D> = {\n data: D;\n }\n export type WhenAttribute<D> = {\n test: (data?: D | null) => boolean;\n }\n\n class ChildOtherWiseBase<A> extends ComponentBase<A> {\n public hidden = true;\n }\n\n class ChildBase<D> extends ChildOtherWiseBase<WhenAttribute<D>> {\n data?: D;\n }\n\n export class When<D> extends ChildBase<D> {\n constructor() {\n super({onlyParentType: Choose<D>});\n }\n }\n\n export class OtherWise<D> extends ChildBase<D> {\n constructor() {\n super({onlyParentType: Choose<D>});\n }\n }\n\n export class Choose<D> extends ComponentBase<Attribute<D>> {\n\n private choose?: When<D> | OtherWise<D>;\n\n onCreatedThisChild(child: any, data: OnCreateRenderDataParams) {\n super.onCreatedThisChild(child, data);\n this.setChange(child);\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n if (this.equalsAttributeName(name, 'data')) {\n this.choose = undefined;\n const children = this.getChildren([When, OtherWise]).sort((a, b) => (a instanceof OtherWise ? 1 : 0) - (b instanceof OtherWise ? 1 : 0));\n children.forEach(it => this.setChange(it as any));\n\n }\n }\n\n private setChange(child: When<D> | OtherWise<D>) {\n child.data = this.getAttribute('data') as any;\n // when.hidden = true;\n\n if (!this.choose && child instanceof When && child.getAttribute('test')?.(this.getAttribute('data'))) {\n // console.log('------------', child.attribute?.test?.(this.attribute?.data))\n this.choose = child;\n if (child.hidden) {\n child.hidden = false;\n }\n // console.log('--------', when)\n } else if (this.choose !== child) {\n child.hidden = true;\n }\n\n if (!this.choose && child instanceof OtherWise) {\n this.choose = child;\n if (child.hidden) {\n child.hidden = false;\n }\n }\n }\n }\n}\n\n\nexport default {\n chooseWhen: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Choose.selector}-when`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\" >#innerHTML#</div>',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({rootObject: new Choose.When(), config: config});\n }\n })\n },\n chooseOtherWise: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Choose.selector}-other-wise`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\" >#innerHTML#</div>',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({rootObject: new Choose.OtherWise(), config: config});\n }\n })\n },\n choose: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Choose.selector}`,\n template: '#innerHTML#',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({rootObject: new Choose.Choose(...counstructorParam), config: config});\n }\n })\n },\n}", "import {ValidUtils as CoreValidUtils} from '@dooboostore/core/valid/ValidUtils';\n\nexport namespace ValidUtils {\n export const coreValidUtils = CoreValidUtils;\n export const isBrowser = (callBack?: (win: Window) => void): boolean => {\n const boolean = (typeof window !== 'undefined') && (typeof Window !== 'undefined');\n if (boolean && callBack) {\n callBack(window);\n }\n return boolean;\n };\n\n export const hasParentWindow = (win: Window) => ValidUtils.isBrowser() && win.parent && win !== win.parent;\n\n //////////////\n /**\n * SNS Inapp Browser Check\n * \uCE74\uCE74\uC624\uD1A1 / \uB124\uC774\uBC84 / \uD398\uC774\uC2A4\uBD81 / \uC778\uC2A4\uD0C0\uADF8\uB7A8 \uC9C0\uC6D0\n */\n export const isSocialNetworkServiceInappBrowser = (): boolean => {\n const userAgent = ValidUtils.isBrowser() ? window.navigator.userAgent.toLowerCase() : 'none';\n return /kakaotalk|naver|facebook|insta|FBAN|FBAV/.test(userAgent);\n };\n\n /**\n * IOS Webview \uC811\uC18D\uC778\uC9C0 \uCCB4\uD06C\n */\n export const isWkWebview = (): boolean =>\n ValidUtils.isBrowser() &&\n (window as any)['webkit'] != null &&\n (window as any)['webkit'].messageHandlers != null &&\n (window as any)['webkit'].messageHandlers['System'] != null;\n export function isiPhone(): boolean {\n return ValidUtils.isBrowser() && /iphone|ipad|ipod/i.test(navigator.userAgent.toLowerCase());\n }\n /**\n * Android Webview \uC811\uC18D\uC778\uC9C0 \uCCB4\uD06C\n */\n export const isAndroidWebview = (): boolean => {\n return ValidUtils.isBrowser() && (window as any)['System'] != null;\n };\n\n export const isMobile = (win?: Window): boolean => {\n const targetWindow = win ?? (isBrowser() ? window : undefined);\n if (!targetWindow) {\n return false;\n }\n return /Mobi/i.test(targetWindow.navigator.userAgent);\n };\n\n\n}\n", "import { Observable } from '@dooboostore/core/message/Observable';\n\nexport namespace EventUtils {\n export const htmlElementEventObservable = <K extends keyof HTMLElementEventMap>(element: HTMLElement | Document, type: K, options?: boolean | AddEventListenerOptions): Observable<HTMLElementEventMap[K]> => {\n return new Observable<HTMLElementEventMap[K]>((subscriber) => {\n const handler = (event: HTMLElementEventMap[K]) => subscriber.next(event);\n element.addEventListener(type, handler, options);\n return () => {\n element.removeEventListener(type, handler as any, options);\n };\n });\n }\n}", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { OnCreateRenderDataParams } from '../../lifecycle/OnCreateRenderData';\nimport { OnCreateRender } from '../../lifecycle/OnCreateRender';\nimport { type Subscription } from '@dooboostore/core/message/Subscription';\nimport { ValidUtils } from '@dooboostore/core-web/valid/ValidUtils';\nimport { EventUtils } from '@dooboostore/core-web/event/EventUtils';\n\n\nexport namespace Details {\n export const selector = 'dr-details';\n\n export type Attribute = {\n class?: string;\n toggle_form_reset?: boolean;\n disableOtherClickClose?: boolean;\n toggle?: (open: boolean) => void;\n }\n export type BodyAttribute = {\n float?: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right'\n } & Attribute\n\n export type FormAttribute = {\n disabledSubmit?: null;\n submit?: (event: SubmitEvent, element: HTMLFormElement)=>void;\n } & BodyAttribute\n\n // @Component({\n // template: '<summary class=\"${`${@this@.getAttribute(\\'class\\')} details-summary-container`}$\">#innerHTML#</summary>',\n // styles: '',\n // selector: `${selector}.Summary`\n // })\n export class Summary extends ComponentBase<Attribute> {\n constructor() {\n super({onlyParentType: [Details]});\n }\n }\n\n // @Component({\n // template: '<div class=\"${`${@this@.getAttribute(\\'class\\')} details-body-container details-body-${@this@.getAttribute(\\'float\\')}-container`}$\" dr-on-init=\"@this@.$element = $element;\">#innerHTML#</div>',\n // selector: `${selector}.Body`\n // })\n export class Body extends ComponentBase<BodyAttribute> {\n private $element?: HTMLDivElement;\n constructor() {\n super({onlyParentType: [Details]});\n }\n }\n\n export const isBody = (instance: any): instance is Body => {\n return instance instanceof Body;\n }\n\n\n\n\n // @Component({\n // template: '<form class=\"${`${@this@.getAttribute(\\'class\\')} details-body-container details-body-${@this@.getAttribute(\\'float\\')}-container details-form-container`}$\" dr-on-init=\"@this@.$element = $element;\" dr-event-submit=\"@this@.submit($element,$event);\">#innerHTML#</form>',\n // styles: detailsFormStyle,\n // selector: `${selector}.Form`\n // })\n export class Form extends ComponentBase<FormAttribute> {\n private $element?: HTMLFormElement;\n constructor() {\n super({onlyParentType: [Details]});\n }\n submit(element: HTMLFormElement, event: SubmitEvent) {\n if (this.hasAttribute('disabledSubmit')) {\n event.preventDefault();\n }\n if (this.hasAttribute('submit')) {\n this.getAttribute('submit')?.(event, element);\n }\n }\n reset() {\n this.$element?.reset();\n }\n }\n export const isForm = (instance: any): instance is Form => {\n return instance instanceof Form;\n }\n\n // @Component({\n // template: template,\n // styles: style,\n // // noStrip: true,\n // selector: `${selector}`\n // })\n export class Details extends ComponentBase<Attribute> implements OnCreateRender, OnInitRender {\n // private detailsElement?: HTMLDetailsElement;\n private documentClickSubscription?: Subscription;\n private toggleSubscription?: Subscription;\n private element?: HTMLDetailsElement;\n onCreateRenderData(data: OnCreateRenderDataParams) {\n super.onCreateRenderData(data);\n }\n\n onCreateRender(...param: any[]): void {\n }\n\n toggle(element: HTMLDetailsElement) {\n const toggleAttribute = this.getAttribute('toggle');\n if (toggleAttribute) {\n toggleAttribute?.(element.open);\n }\n }\n onInitRender(param: any, rawSet: RawSet): void {\n super.onInitRender(param,rawSet);\n\n if (ValidUtils.isBrowser() && this.rawSet?.dataSet.config.window) {\n const detailsElement = this.element;\n\n const document = this.rawSet.dataSet!.config!.window!.document!;\n this.documentClickSubscription = EventUtils.htmlElementEventObservable(document, 'click').subscribe(event => {\n if (this.getAttribute('disableOtherClickClose')) {\n return;\n }\n if (detailsElement && !detailsElement?.contains(event?.target as Node)){\n detailsElement.open = false;\n }\n })\n if (detailsElement) {\n this.toggleSubscription = EventUtils.htmlElementEventObservable(detailsElement, 'toggle').subscribe(it => {\n if (ValidUtils.coreValidUtils.isNotNullUndefined(this.getAttribute('toggle_form_reset'))) {\n this.children?.filter(isForm).forEach(it => {\n it.reset();\n })\n }\n })\n }\n }\n // console.log('aaaaaaaaaaaaaaaaaaaaa', rawSet);\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n }\n\n\n onDestroyRender(...metaData: any[]): void {\n this.toggleSubscription?.unsubscribe();\n this.documentClickSubscription?.unsubscribe();\n // console.log('onDestroyRender', metaData);\n // if (ValidUtils.isBrowser()) {\n // document.removeEventListener('click', this.ccc)\n // }\n }\n\n // changeAttribute(attribute: { className: string } | undefined) {\n // }\n\n }\n}\n\nexport default {\n detailsSummary: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Details.selector}-summary`,\n template: '<summary class=\"${`${@this@.getAttribute(\\'class\\')} details-summary-container`}$\">#innerHTML#</summary>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Details.Summary(), config: config});\n }\n })\n },\n detailsBody: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Details.selector}-body`,\n template: '<div class=\"${`${@this@.getAttribute(\\'class\\')} details-body-container details-body-${@this@.getAttribute(\\'float\\')}-container`}$\" dr-on-init=\"@this@.$element = $element;\">#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Details.Body(), config: config});\n }\n })\n },\n detailsForm: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Details.selector}-form`,\n template: '<form class=\"${`${@this@.getAttribute(\\'class\\')} details-body-container details-body-${@this@.getAttribute(\\'float\\')}-container details-form-container`}$\" dr-on-init=\"@this@.$element = $element;\" dr-event-submit=\"@this@.submit($element,$event);\">#innerHTML#</form>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Details.Form(), config: config});\n }\n })\n },\n details: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Details.selector}`,\n styles: `\n .details-container {\n position: relative;\n }\n\n .details-container .details-body-container {\n position: absolute;\n }\n\n\n .details-container .details-body-bottom-left-container {\n position: absolute;\n left: 0;\n top: 100%;\n /*margin-top: 0px;*/\n /*width: max-content;*/\n }\n\n .details-container .details-body-bottom-right-container {\n position: absolute;\n right: 0;\n top: 100%;\n /*margin-top: 0px;*/\n /*width: max-content;*/\n }\n\n .details-container .details-body-top-left-container {\n position: absolute;\n left: 0;\n bottom: 100%;\n /*margin-bottom: 0px;*/\n /*width: max-content;*/\n }\n\n .details-container .details-body-top-right-container {\n position: absolute;\n right: 0;\n bottom: 100%;\n /*margin-bottom: 0px;*/\n }\n `,\n template: '<details class=\"${`${@this@.getAttribute(\\'class\\')} details-container`}$\" dr-on-init=\"@this@.element = $element;\" dr-event-toggle=\"@this@.toggle($element)\"> #innerHTML# </details>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Details.Details(...counstructorParam), config: config});\n }\n })\n },\n}", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\n\n\nexport namespace ForOf {\n export const selector = 'System:ForOf';\n export type Attribute<D> = {\n value: D;\n }\n\n // @Component({\n // template: '<div dr-for-of=\"@this@.data\" dr-option-strip=\"true\">#innerHTML#</div>',\n // selector: `${selector}`\n // })\n export class ForOf<D> extends ComponentBase<Attribute<D>> {\n private value?: D;\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n if (this.equalsAttributeName(name, 'value')) {\n this.value = value;\n }\n }\n\n }\n}\n\n\nexport default {\n forOf: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: ForOf.selector,\n template: '<div dr-for-of=\"@this@.data\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new ForOf.ForOf(...counstructorParam), config: config});\n }\n })\n },\n}", "import { ComponentBase } from '../ComponentBase';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { DomRenderConfig } from '../../configs/DomRenderConfig';\n\nexport namespace If {\n export const selector = 'dr-if';\n // export type AppenderInterface<D> = {\n // push(...data:D[]):void;\n // set(key: string, ...v:D[]):void\n // delete(key: string):void\n // clear():void\n // }\n export type Attribute<D> = {\n value?: null | boolean;\n }\n\n export class If<D> extends ComponentBase<Attribute<D>> implements OnInitRender {\n private sw: boolean = false;\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n\n if (this.equalsAttributeName(name, 'value')) {\n // console.log('------',this,name, value)\n this.sw = value;\n }\n }\n }\n}\n\n// const iif = DomRender.createComponent({\n// type: If.If,\n// tagName: If.selector,\n// template: '<div dr-if=\"@this@.sw\" dr-option-strip=\"true\">#innerHTML#</div>' });\nexport default {\n if: (config?: DomRenderConfig) => {\n\n\n // if (!customElements.get(If.selector)) {\n // customElements.define(If.selector, class extends HTMLElement {\n // constructor() {\n // super();\n // this.hidden = true;\n // }\n // });\n // }\n\n return RawSet.createComponentTargetElement({\n name: If.selector,\n template: '<div dr-if=\"@this@.sw\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({rootObject: new If.If(...counstructorParam), config: config});\n }\n })\n },\n}\n", "import { Observable } from '../Observable';\n\nexport function map<T, R>(project: (value: T, index: number) => R) {\n return (source: Observable<T, any>): Observable<R, any> => {\n return new Observable(subscriber => {\n let index = 0;\n const subscription = source.subscribe({\n next: (value) => {\n try {\n subscriber.next(project(value, index++));\n } catch (err) {\n subscriber.error(err as any);\n }\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n subscriber.complete();\n }\n });\n return subscription; // Return the subscription for teardown\n });\n };\n}\n", "import { Observable } from '../Observable';\n\nexport function distinctUntilChanged<T>(\n comparator?: (prev: T, curr: T) => boolean\n) {\n return (source: Observable<T, any>): Observable<T, any> => {\n return new Observable(subscriber => {\n let hasValue = false;\n let previousValue: T;\n\n const subscription = source.subscribe({\n next: (value) => {\n const areEqual = hasValue\n ? comparator\n ? comparator(previousValue, value)\n : previousValue === value\n : false;\n\n if (!areEqual) {\n hasValue = true;\n previousValue = value;\n subscriber.next(value);\n }\n },\n error: (err) => {\n subscriber.error(err);\n },\n complete: () => {\n subscriber.complete();\n }\n });\n return subscription; // Return the subscription for teardown\n });\n };\n}\n", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnCreateRender } from '../../lifecycle/OnCreateRender';\nimport { OnDestroyRender, OnDestroyRenderParams } from '../../lifecycle/OnDestroyRender';\nimport { Subscription } from '@dooboostore/core/message/Subscription';\nimport { ValidUtils } from '@dooboostore/core/valid/ValidUtils';\nimport { map } from '@dooboostore/core/message/operators/map';\nimport { EventUtils } from '@dooboostore/core-web/event/EventUtils';\nimport { debounceTime } from '@dooboostore/core/message/operators/debounceTime';\nimport { distinctUntilChanged } from '@dooboostore/core/message/operators/distinctUntilChanged';\n\n\nexport namespace Input {\n export const selector = `dr-input`;\n export type Attribute = {\n name?: string;\n type?: string;\n id?: string;\n class?: string;\n debounceTime?: number;\n distinct?: boolean;\n input?: (value: string, element: Element) => void\n\n }\n\n export class Base extends ComponentBase<any> {\n\n }\n\n // @Component({\n // selector: `${selector}`,\n // template,\n // styles,\n // })\n export class Input extends Base implements OnCreateRender, OnDestroyRender {\n private element?: HTMLInputElement;\n private inputSubscription?: Subscription;\n private resetSubscripton?: Subscription;\n\n onCreateRender(...param: any[]): void {\n }\n\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n // console.log('dr-input, rawSet', rawSet)\n const inputElement = this.element;\n const debounceTimeAttribute = this.getAttribute('debounceTime');\n const debounceTimeValue = ValidUtils.isNotNullUndefined(debounceTimeAttribute) ? Number(debounceTimeAttribute) : 0;\n const distinct = ValidUtils.isNotNullUndefined(this.getAttribute('distinct'));\n\n if (inputElement) {\n const makeDeboundceDistinctUtilChanged = () => {\n // let result$ = EventUtils.htmlElementEventObservable(inputElement,'input');\n\n let result$ = EventUtils.htmlElementEventObservable(inputElement, 'input').pipe(\n map((event: Event) => {\n const target = event.target;\n if (target instanceof HTMLInputElement) {\n return target.value.trim();\n }\n console.warn('Input event target is not an HTMLInputElement:', target);\n return '';\n })\n );\n\n if (ValidUtils.isNotNullUndefined(debounceTimeValue) && debounceTimeValue > 0) {\n result$ = result$.pipe(debounceTime(debounceTimeValue));\n }\n if (ValidUtils.isNotNullUndefined(distinct) && distinct === true) {\n result$ = result$.pipe(distinctUntilChanged());\n }\n return result$;\n };\n this.inputSubscription = makeDeboundceDistinctUtilChanged().subscribe(it => {\n // console.log('change?????????????', it);\n this.getAttribute('input')?.(it, inputElement);\n });\n\n if (inputElement.form) {\n this.resetSubscripton = EventUtils.htmlElementEventObservable(inputElement.form, 'reset').subscribe(it => {\n // console.log('rrrraaa?,', this.inputSubscription, it)\n this.inputSubscription?.unsubscribe();\n this.inputSubscription = makeDeboundceDistinctUtilChanged().subscribe(it => {\n // console.log('rrrr?')\n this.getAttribute('input')?.(it, inputElement);\n });\n })\n }\n }\n\n\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n // console.log('-------->',name, value)\n if (name === 'value') {\n // console.log('changeAttribu', name, value)\n // this.wow = {value: value};\n // this.name = value;\n }\n }\n\n onDestroyRender(metaData?: OnDestroyRenderParams): void {\n this.resetSubscripton?.unsubscribe();\n this.inputSubscription?.unsubscribe();\n }\n\n }\n}\n\nexport default {\n input: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Input.selector}`,\n template: '<Input type=\"${@this@.getAttribute(\\'type\\')}$\" class=\"${@this@.getAttribute(\\'class\\')}$\" id=\"${@this@.getAttribute(\\'id\\')}$\" name=\"${@this@.getAttribute(\\'name\\')}$\" dr-on-init=\"@this@.element=$element\" >#innerHTML#',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({rootObject: new Input.Input(...counstructorParam), config: config});\n }\n })\n },\n}", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\n\n\nimport { ValidUtils } from '@dooboostore/core/valid/ValidUtils';\nimport { Promises } from '@dooboostore/core/promise/Promises';\nimport { OnCreateRenderDataParams } from '../../lifecycle/OnCreateRenderData';\n\nexport namespace PromiseSwitch {\n export const selector = 'dr-promise-switch';\n export type ChangeParams<T> = { status: 'pending' } | { status: 'finally' } | { status: 'fulfilled', data: T } | { status: 'rejected', data: any };\n export type Attribute = {\n // trigger?: boolean;\n data: Promise<any> | (() => Promise<any>);\n change?: <T>(data: ChangeParams<T>) => void;\n }\n\n class ChildBase<T = any> extends ComponentBase<T> {\n public hidden = true;\n }\n\n // @Component({\n // template: '<div dr-if=\"!@this@.hidden\" dr-strip=\"true\">#innerHTML#</div>',\n // selector: `${selector}.Default`\n // })\n export class Default extends ChildBase {\n }\n\n // @Component({\n // template: '<div dr-if=\"!@this@.hidden\" dr-strip=\"true\">#innerHTML#</div>',\n // selector: `${selector}.Pending`\n // // selector: `System-PromiseSwitch.Pending`\n // })\n export class Pending extends ChildBase<{ defaultView?: null }> {\n // onChangeAttrRender(name: string, value: any, other: OtherData) {\n // super.onChangeAttrRender(name, value, other);\n // if (this.equalsAttributeName(name, 'defaultView')) {\n // // console.log('--------------', value)\n // if (value !== null) {\n // this.hidden = false;\n // } else {\n // this.hidden = true;\n // }\n // // console.log('--------------', this.hidden)\n // }\n // }\n }\n\n // @Component({\n // template: '<div dr-if=\"!@this@.hidden\" dr-strip=\"true\">#innerHTML#</div>',\n // selector: `${selector}.Fulfilled`\n // })\n export class Fulfilled<T = any> extends ChildBase {\n private data?: T;\n\n setData(data: T) {\n this.data = data;\n }\n }\n\n // @Component({\n // template: '<div dr-if=\"!@this@.hidden\" dr-strip=\"true\">#innerHTML#</div>',\n // selector: `${selector}.Rejected`\n // })\n export class Rejected<T = any> extends ChildBase {\n private data?: T;\n\n setData(data: T) {\n this.data = data;\n }\n }\n\n\n /*\n <dr-promise-switch data=\"${@this@.pickWorldPromise}$\">\n ${@nearThis@.promiseState.status}$\n <dr-promise-switch-default>\n <button class=\"random-world-button\" dr-event-click=\"@this@.pickWorld()\">\n <i class=\"fa-solid fa-dice\"></i>\n </button>\n </dr-promise-switch-default>\n <dr-promise-switch-pending>\n <button class=\"random-world-button disabled spin\" >\n <i class=\"fa-solid fa-dice\"></i>\n </button>\n </dr-promise-switch-pending>\n </dr-promise-switch>\n */\n // @Component({\n // template: '#innerHTML#',\n // selector: `${selector}`\n // })\n export class PromiseSwitch extends ComponentBase<Attribute> {\n // private promise?: {\n // state: 'reject' | 'resolve',\n //\n // }\n private promiseState?: Promises.Result.PromiseState<any, unknown>;\n private status?: Promises.Result.PromiseState<any, unknown>[\"status\"];\n\n onCreatedThisChild(child: any, data: OnCreateRenderDataParams) {\n super.onCreatedThisChild(child, data);\n this.childStateChange();\n }\n\n childStateChange() {\n const defaults = this.getChildren(Default);\n const pendings = this.getChildren(Pending);\n const fulfilleds = this.getChildren(Fulfilled);\n const rejecteds = this.getChildren(Rejected);\n const full = [...fulfilleds, ...rejecteds, ...pendings, ...defaults]\n // console.log('----!!!!!!-------', this.promiseState, full)\n if (this.promiseState === undefined) {\n this.status = undefined;\n full.filter(it => !it.hidden).forEach(it => it.hidden = true)\n defaults.filter(it => it.hidden).forEach(it => it.hidden = false);\n pendings.filter(it => it.getAttribute('defaultView') && it.hidden).forEach(it => it.hidden = false);\n } else if (this.promiseState.status === 'pending') {\n this.status = 'pending';\n full.filter(it => !it.hidden).forEach(it => it.hidden = true)\n pendings.filter(it => it.hidden).forEach(it => it.hidden = false);\n } else if (this.promiseState.status === 'fulfilled') {\n this.status = 'fulfilled';\n const value = this.promiseState.value;\n // console.log('-----------fulfilled promises', value);\n full.filter(it => !it.hidden).forEach(it => it.hidden = true)\n fulfilleds.forEach(it => {\n it.setData(value)\n })\n fulfilleds.filter(it => it.hidden).forEach(it => it.hidden = false);\n } else if (this.promiseState.status === 'rejected') {\n this.status = 'rejected';\n const value = this.promiseState.reason;\n full.filter(it => !it.hidden).forEach(it => it.hidden = true)\n rejecteds.forEach(it => {\n it.setData(value)\n })\n rejecteds.filter(it => it.hidden).forEach(it => it.hidden = false);\n }\n return this.status;\n // console.log('----!!!!!!-end------', this.promiseState, full.map(it=>it.hidden))\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n // console.log('-----------changer promises', name, value, this.getChildren(Default));\n if (this.equalsAttributeName(name, 'data') && value) {\n // this.childStateChange();\n this.promiseState = undefined;\n this.status = undefined;\n this.promiseState = Promises.Result.wrap(typeof value === 'function' ? value() : value as Promise<any>);\n this.getAttribute('change')?.({status: 'pending'});\n this.childStateChange();\n // console.log('----?', this.promiseState)\n this.promiseState.then(data => {\n // console.log('------------then', data);\n this.childStateChange();\n this.getAttribute('change')?.({status: 'fulfilled', data: data});\n return data;\n }).catch((e) => {\n // console.log('catch', e)\n this.childStateChange();\n this.getAttribute('change')?.({status: 'rejected', data: e});\n throw e;\n }).finally(() => {\n // console.log('-------------finally--------rrrrrrrrrrr', this.promiseState)\n // this.childStateChange();\n this.getAttribute('change')?.({status: 'finally'});\n })\n // await this.promiseState;\n\n\n // console.log('---------------------rrrrrrrrrrr', this.promiseState)\n } else if(this.equalsAttributeName(name, 'data') && ValidUtils.isNullOrUndefined(value)) {\n this.promiseState = undefined;\n this.childStateChange();\n }\n }\n }\n}\n\n\nexport default {\n promiseDefault: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${PromiseSwitch.selector}-default`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new PromiseSwitch.Default(...counstructorParam), config: config});\n }\n })\n },\n promisePending: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${PromiseSwitch.selector}-pending`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new PromiseSwitch.Pending(...counstructorParam), config: config});\n }\n })\n },\n promiseFulfilled: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${PromiseSwitch.selector}-fulfilled`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new PromiseSwitch.Fulfilled(...counstructorParam), config: config});\n }\n })\n },\n promiseRejected: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${PromiseSwitch.selector}-rejected`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new PromiseSwitch.Rejected(...counstructorParam), config: config});\n }\n })\n },\n promiseSwitch: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${PromiseSwitch.selector}`,\n template: '#innerHTML#',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new PromiseSwitch.PromiseSwitch(...counstructorParam), config: config});\n }\n })\n },\n\n}\n", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { ComponentSet } from '../../components/ComponentSet';\nimport { OnCreateRenderDataParams } from '../../lifecycle/OnCreateRenderData';\n\n\n\nexport namespace Radio {\n export const selector = 'System:Radio';\n export type Attribute = {\n class?: string;\n }\n export type LabelAttribute = {\n class?: string;\n name?: string;\n value?: string;\n checked?: boolean;\n on_change_checked?: (checked: boolean, element: HTMLInputElement) => void\n }\n\n class RadioBase extends ComponentBase<Attribute> {\n public hidden = true;\n }\n\n export class Checked extends RadioBase {\n public name = 'Checked';\n\n constructor() {\n super({onlyParentType: Radio});\n }\n }\n\n export class UnChecked extends RadioBase {\n public name = 'unChecked';\n\n constructor() {\n super({onlyParentType: Radio});\n }\n }\n\n export class Radio extends ComponentBase<LabelAttribute> {\n private checked = false;\n private inputElement?: HTMLInputElement;\n\n change(checked?: boolean) { checked = checked ?? this.checked;\n this.checked = checked;\n this.setChildrenHidden(checked);\n console.log('radio checked!!!!!!!', checked, this.checked, this.inputElement?.checked)\n if (this.getAttribute('on_change_checked')) {\n this.getAttribute('on_change_checked')?.(checked, this.inputElement!);\n }\n }\n\n private setChildrenHidden(checked: boolean) {\n this.getChildren(Checked).forEach(it => {\n it.hidden = !checked;\n });\n this.getChildren(UnChecked).forEach(it => {\n it.hidden = checked;\n });\n }\n\n onCreatedThisChild(child: RadioBase, childData: OnCreateRenderDataParams): void {\n super.onCreatedThisChild(child, childData);\n this.setChildrenHidden(this.checked);\n }\n\n onInitInputElement(element: HTMLInputElement) {\n this.inputElement = element;\n }\n\n onChangeAttrRender(name: string, val: any, other: OtherData) {\n super.onChangeAttrRender(name, val, other);\n if (this.inputElement && this.getAttribute('checked') !== this.checked) {\n this.inputElement.checked = !!this.getAttribute('checked');\n console.log('----changeAttribute', this.getAttribute('checked'))\n this.change(!!this.getAttribute('checked'));\n }\n }\n\n }\n}\n\n\n\nexport default {\n radioChecked: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Radio.selector}-checked`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\" >#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Radio.Checked(), config: config});\n }\n })\n },\n radioUnChecked: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Radio.selector}-unchecked`,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\" >#innerHTML#</div>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Radio.UnChecked(), config: config});\n }\n })\n },\n radio: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Radio.selector}`,\n template: '<label class=\"${@this@.getAttribute(\\'class\\')}$\">\\n' +\n ' <input\\n' +\n ' name=\"${@this@.getAttribute(\\'name\\')}$\"\\n' +\n ' checked=\"${@this@.getAttribute(\\'checked\\')}$\"\\n' +\n ' value=\"${@this@.getAttribute(\\'value\\')}$\"\\n' +\n ' dr-on-init=\"@this@.onInitInputElement($element)\"\\n' +\n ' dr-event-change=\"@this@.change($element.checked);\"\\n' +\n ' type=\"radio\"\\n' +\n '\\n' +\n ' />\\n' +\n ' ${@this@.getAttribute(\\'checked\\')}$\\n' +\n ' #innerHTML#\\n' +\n '</label>',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Radio.Radio(...counstructorParam), config: config});\n }\n })\n },\n}", "import { attribute, ComponentBase } from '../ComponentBase';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { DomRender } from '../../DomRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport type { DomRenderConfig } from '../../configs/DomRenderConfig';\nimport { DomRenderNoProxy } from '../../decorators/DomRenderNoProxy';\nimport { OnDestroyRenderParams } from '../../lifecycle/OnDestroyRender';\nimport { Subscription } from '@dooboostore/core/message/Subscription';\nimport { If } from '../if/If';\n\nexport namespace Route {\n export const selector = 'dr-route';\n export type Attribute<D> = {\n value?: null | string;\n }\n\n abstract class CheckerBase<D> extends ComponentBase<Attribute<D>> implements OnInitRender {\n protected sw: boolean = false;\n @attribute({name: 'value'})\n value?: string;\n @DomRenderNoProxy\n private inputDomRenderConfig?: DomRenderConfig;\n private routerSubscription?: Subscription;\n\n constructor(domRenderConfig?: DomRenderConfig) {\n super();\n this.inputDomRenderConfig = domRenderConfig;\n }\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n this.routerSubscription = this.inputDomRenderConfig?.router?.observable.subscribe(it => {\n if (this.value && this.inputDomRenderConfig) {\n this.sw = this.check(this.inputDomRenderConfig);\n } else {\n this.sw = false;\n }\n });\n }\n\n onDrThisBind() {\n super.onDrThisBind();\n }\n\n onDrThisUnBind() {\n super.onDrThisUnBind();\n }\n\n onDestroyRender(data?: OnDestroyRenderParams) {\n super.onDestroyRender(data);\n this.routerSubscription?.unsubscribe();\n }\n\n abstract check(config?: DomRenderConfig): boolean;\n }\n\n\n export class Match<D> extends CheckerBase<D> {\n check(config?: DomRenderConfig): boolean {\n return !!config?.router?.test(this.value);\n }\n }\n\n export class Regexp<D> extends CheckerBase<D> {\n check(config?: DomRenderConfig): boolean {\n return !!config?.router?.testRegexp(this.value);\n }\n }\n}\n\nexport default {\n match: (config?: DomRenderConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Route.selector}-match`,\n template: '<div dr-if=\"@this@.sw\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({rootObject: new Route.Match(config), config: config});\n }\n })\n },\n regexp: (config?: DomRenderConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Route.selector}-regexp`,\n template: '<div dr-if=\"@this@.sw\" dr-option-strip=\"true\">#innerHTML#</div>',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({rootObject: new Route.Regexp(config), config: config});\n }\n })\n },\n}\n", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { ComponentSet } from '../../components/ComponentSet';\nimport { OnDestroyRenderParams } from '../../lifecycle/OnDestroyRender';\nimport { ComponentRouterBase } from '../../components/ComponentRouterBase';\nexport namespace RouterOutlet {\n export const selector = 'dr-router-outlet';\n export type Attribute = {\n value: ComponentSet;\n if: boolean | null;\n createArguments: any[];\n onCreated?: (value: any) => void;\n onDestroyRender?: () => void;\n };\n\n export class RouterOutlet extends ComponentBase<Attribute> implements OnInitRender {\n private value?: ComponentSet;\n private if?: boolean | null = null;\n private createArguments?: any[];\n\n setValue(value: ComponentSet) {\n this.value = value;\n }\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n const c = this.getParentThis();\n if (c instanceof ComponentRouterBase){\n this.value = c.child\n }\n // console.log('------',c);\n }\n\n onDestroyRender(data: OnDestroyRenderParams) {\n super.onDestroyRender(data);\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n if (this.equalsAttributeName(name, 'value')) {\n this.value = value;\n }\n if (this.equalsAttributeName(name, 'if')) {\n this.if = value;\n }\n if (this.equalsAttributeName(name, 'createArguments')) {\n this.createArguments = value;\n }\n }\n\n created(component: any) {\n component ??= this.value?.obj;\n this.getAttribute('onCreated')?.(component);\n }\n }\n}\n\nexport default {\n // TODO: \uC65C \uC774\uB188\uB9CC webpack\uC5D0\uC11C \uC21C\uD658\uCC38\uC870 \uC5D0\uB7EC\uB098\uB294\uC9C0\uBAA8\uB974\uACA0\uB2E4.. \uC65C \uC774\uB188\uB9CC.. \uADF8\uB798\uC11C \uC774\uB807\uAC8C \uD558\uAE34\uD568.\n routerOutlet: (config?: DomRenderRunConfig, executer?: {run: (...data: any[])=>any}) => {\n return RawSet.createComponentTargetElement({\n name: RouterOutlet.selector,\n template:\n '<div dr-this=\"@this@.value\" dr-detect-option-if=\"@this@?.value && @this@?.if\" dr-option-strip=\"true\" dr-on-create:arguments=\"@this@.createArguments\" dr-on-create:callback=\"@this@?.created?.($component)\">#innerHTML#</div>',\n objFactory: (e, o, r2, counstructorParam) => {\n return executer?.run({ rootObject: new RouterOutlet.RouterOutlet(...counstructorParam), config: config });\n }\n });\n }\n};\n", "import { Observable } from '@dooboostore/core/message/Observable';\nimport { Subscription } from '@dooboostore/core/message/Subscription';\n\nexport namespace WindowUtils {\n\n export const eventObservable = <K extends keyof WindowEventMap>(window: Window, type: K, options?: boolean | AddEventListenerOptions): Observable<WindowEventMap[K]> => {\n return new Observable<WindowEventMap[K]>((subscriber) => {\n const handler = (event: WindowEventMap[K]) => subscriber.next(event);\n window.addEventListener(type, handler, options);\n return () => {\n window.removeEventListener(type, handler, options);\n };\n });\n }\n}\n\n", "import { attribute, ChildrenSet, ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OnCreateRenderData, OnCreateRenderDataParams } from '../../lifecycle/OnCreateRenderData';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { OnDestroyRender } from '../../lifecycle/OnDestroyRender';\nimport { EventUtils } from '@dooboostore/core-web/event/EventUtils';\nimport { type Subscription } from '@dooboostore/core/message/Subscription';\nimport { ValidUtils } from '@dooboostore/core-web/valid/ValidUtils';\nimport { DomRenderNoProxy } from '../../decorators/DomRenderNoProxy';\nimport { OnCreateRender } from '../../lifecycle/OnCreateRender';\nimport { DomRenderConfig } from '../../configs/DomRenderConfig';\nimport { WindowUtils } from '@dooboostore/core-web/window/WindowUtils';\n\n/** 사용법\n <dr-select class=\"card-select-container\" changeSelected=\"${(data) => @this@.changeSelected(data)}$\"> <!-- multiple attribute optional-->\n <dr-select-summary class=\"card-select-summary-container\">\n <dr-select-summary-placeholder>\n <div class=\"card-select-summary-placeholder-container\">카드사별 사용처 안내 페이지 선택</div>\n </dr-select-summary-placeholder>\n <dr-select-summary-selected>\n <div dr-if=\"@this@.selectedCard\" class=\"card-select-summary-selected-container\">\n <img dr-attr=\"{src:@this@.selectedCard?.iconImg}\"> ${@this@.selectedCard?.name}$\n </div>\n </dr-select-summary-selected>\n </dr-select-summary>\n\n <dr-select-body float=\"bottom-left\" class=\"card-select-body-container\">\n <dr-select-option dr-for-of=\"@this@.cards\" value=\"${#it#.name}$\" selected=\"${#nearForOfIndex# === 0}$\" class=\"card-select-body-option-container\">\n <img dr-attr=\"{src:#it#.iconImg}\"> ${#it#.name}$\n </dr-select-option>\n </dr-select-body>\n </dr-select>\n */\n\nexport namespace Select {\n export const selector = 'dr-select';\n\n // Base for simple hide/show components\n class StateComponent extends ComponentBase {\n public hidden = true;\n public value: string | null = null;\n\n constructor(config: any) {\n super(config);\n }\n\n setValue(value: string | null) {\n this.value = value;\n }\n }\n\n // --- Option Child Components ---\n export class OptionSelected extends StateComponent {\n constructor() {\n super({onlyParentType: Option});\n }\n }\n\n export class OptionUnselected extends StateComponent {\n constructor() {\n super({onlyParentType: Option});\n }\n }\n\n export class OptionDisabled extends StateComponent {\n constructor() {\n super({onlyParentType: Option});\n }\n }\n\n // --- Summary Child Components ---\n export class SummaryPlaceholder extends StateComponent {\n constructor() {\n super({onlyParentType: Summary});\n }\n }\n\n export class SummarySelected extends StateComponent {\n private selectedOptions: Select.Option[] = [];\n\n constructor() {\n super({onlyParentType: Summary});\n }\n\n setOptions(options: Option[] = []) {\n this.selectedOptions = options.filter(it => it.selected);\n }\n }\n\n export class SummaryDisabled extends StateComponent {\n private selectedOptions: Select.Option[] = [];\n\n constructor() {\n super({onlyParentType: Summary});\n }\n\n setOptions(options: Option[] = []) {\n this.selectedOptions = options.filter(it => it.selected);\n }\n }\n\n // --- Select Body Component ---\n export type SelectBodyAttribute = {\n float?: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right';\n class?: string;\n }\n // --- Option Component ---\n export type OptionAttribute = { value: string; selected?: boolean | null; disabled?: boolean | null; class?: string; };\n\n export class Option extends ComponentBase<OptionAttribute> implements OnInitRender {\n public hidden = true;\n @attribute({name: 'value'}) public value: string | null = null;\n @attribute({name: 'selected', converter: v => v !== null && v === true}) public selected = false;\n @attribute({name: 'disabled', converter: v => v !== null && v === true}) public disabled = false;\n @attribute({name: 'class', converter: v => (v ? v : null)}) public classAttr: string | null = null;\n\n // public status: 'selected' | 'unselected' | 'disabled' = 'unselected';\n\n constructor() {\n super({onlyParentType: SelectBody});\n }\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n // console.log('-----', this.value, this.selected)\n // this.getElement()?.addEventListener('click', (e) => {\n // e.stopPropagation();\n // if (!this.disabled) {\n // this.getParentThis<Select>().handleOptionClick(this);\n // }\n // });\n this.updateStatus();\n }\n\n // onCreatedThisChild(child: any, data: OnCreateRenderDataParams) {\n // super.onCreatedThisChild(child, data);\n // this.updateStatus();\n // }\n onCreatedThisChildDebounce(childrenSet: ChildrenSet[]) {\n super.onCreatedThisChildDebounce(childrenSet);\n this.updateStatus();\n }\n\n toggleSelected(event: Event) {\n // console.log('isMultiple', this.isMultiple())\n if (!this.disabled) {\n this.selected = this.isMultiple()? !this.selected : true;\n // this.selected = !this.selected;\n this.updateStatus();\n this.getParentThis<SelectBody>().changeOptionState(this);\n } else {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n\n isMultiple() {\n return this.getParentThis<Select.SelectBody>()?.getParentThis<Select.Select>().multiple;\n }\n\n updateStatus() {\n if (this.disabled) {\n this.getChildren(OptionSelected).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n this.getChildren(OptionUnselected).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n this.getChildren(OptionDisabled).forEach(c => {\n c.hidden = false;\n c.setValue(this.value)\n });\n return;\n }\n\n if (this.selected) {\n this.getChildren(OptionSelected).forEach(c => {\n c.hidden = false;\n c.setValue(this.value)\n });\n this.getChildren(OptionUnselected).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n this.getChildren(OptionDisabled).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n }\n\n if (!this.selected) {\n this.getChildren(OptionSelected).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n this.getChildren(OptionUnselected).forEach(c => {\n c.hidden = false;\n c.setValue(this.value)\n });\n this.getChildren(OptionDisabled).forEach(c => {\n c.hidden = true;\n c.setValue(this.value)\n });\n }\n }\n }\n\n // --- Summary Component ---\n export class Summary extends ComponentBase implements OnInitRender {\n @attribute({name: 'class', converter: v => (v === '' ? null : v)}) public classAttr: string | null = null;\n private options: Select.Option[] = [];\n private disabled: boolean = false;\n public element?: HTMLElement;\n\n constructor() {\n super({onlyParentType: Select});\n }\n\n\n setDisabled(disabled: boolean) {\n this.disabled = disabled;\n this.getChildren(SummaryPlaceholder).forEach(it => it.hidden = true);\n this.getChildren(SummarySelected).forEach(it => it.hidden = true);\n this.getChildren(SummaryDisabled).forEach(it => it.hidden = false);\n\n }\n\n setOptions(options: Option[] = []): void {\n this.options = options;\n\n const selectedOptions = this.options.filter(it => it.selected && !it.disabled);\n if (!this.disabled) {\n if (selectedOptions.length > 0) {\n this.getChildren(SummaryPlaceholder).forEach(it => it.hidden = true);\n this.getChildren(SummarySelected).forEach(c => {\n c.setOptions(options);\n c.hidden = false;\n });\n this.getChildren(SummaryDisabled).forEach(it => it.hidden = true);\n } else {\n this.getChildren(SummaryDisabled).forEach(it => it.hidden = true);\n this.getChildren(SummaryPlaceholder).forEach(it => it.hidden = false);\n this.getChildren(SummarySelected).forEach(c => c.hidden = true);\n }\n }\n }\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n // this.getElement()?.addEventListener('click', (e) => {\n // e.stopPropagation();\n // this.getParentThis<Select>().toggle();\n // });\n }\n\n onInitSummaryElement(element: HTMLElement, event: Event) {\n this.element = element;\n }\n\n updateView(hasSelection: boolean) {\n this.getChildren(SummaryPlaceholder).forEach(c => c.hidden = hasSelection);\n this.getChildren(SummarySelected).forEach(c => c.hidden = !hasSelection);\n }\n\n // onCreatedThisChild(child: any, data: OnCreateRenderDataParams) {\n // super.onCreatedThisChild(child, data);\n // }\n onCreatedThisChildDebounce(childrenSet: ChildrenSet[]) {\n super.onCreatedThisChildDebounce(childrenSet);\n this.updateView(this.getParentThis<Select>()?.selectedValues.length > 0);\n }\n\n\n onSummaryClick(element: HTMLElement, event: Event) {\n if (this.getParentThis<Select>()?.disabled) {\n event.stopPropagation();\n event.preventDefault();\n return;\n }\n }\n }\n\n\n export class SelectBody extends ComponentBase<SelectBodyAttribute> {\n @attribute({name: 'class', converter: v => (v === '' ? null : v)}) public classAttr: string | null = null;\n @attribute({name: 'float'}) public float: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right' | null = null;\n\n constructor() {\n super({onlyParentType: Select});\n }\n\n onCreatedThisChildDebounce(childrenSet: ChildrenSet[]) {\n this.changeOptionState();\n }\n\n changeOptionState(option?: Option) {\n const options = this.getChildren(Option);\n const select = this.getParentThis<Select>();\n // // 멀티플이 아닐때에는 마지막 선택된값으로 처리\n if (!select.multiple) {\n // 내가 선택한게 있으면\n if (option && option.selected) {\n options.filter(it => it !== option).forEach(it => it.selected = false);\n } else {\n const selectedOptions = options.filter(it => it.selected && !it.disabled)\n selectedOptions.forEach((opt, idx) => {\n const isLast = idx === selectedOptions.length - 1;\n if (!isLast) {\n opt.selected = false;\n }\n });\n }\n }\n // console.log('--------', options.map(it=>it.selected))\n select?.setOptions(options);\n }\n }\n\n\n // --- Main Select Component ---\n export type SelectAttribute = {\n multiple?: boolean | null; class?: string;\n changeSelected?: (value: (string | null)[]) => void;\n name?: string;\n float?: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right';\n disableOtherClickClose?: boolean;\n toggle?: (open: boolean) => void;\n disabled?: boolean | null;\n };\n\n export class Select extends ComponentBase<SelectAttribute> implements OnInitRender, OnCreateRender, OnCreateRenderData, OnDestroyRender {\n @attribute({name: 'multiple', converter: v => v !== null}) public multiple = false;\n @attribute({name: 'disabled', converter: v => v !== null}) public disabled = false;\n @attribute({name: 'class', converter: v => (v === '' ? null : v)}) public classAttr: string | null = null;\n @attribute({name: 'name', converter: v => (v === '' ? null : v)}) public name: string | null = null;\n\n // public isOpen = false;\n public selectedValues: (string | null)[] = [];\n public selectedOptions: Option[] = [];\n public value: string | (string | null)[] | null | undefined;\n\n @DomRenderNoProxy private element?: HTMLDetailsElement;\n @DomRenderNoProxy private documentClickSubscription?: Subscription;\n @DomRenderNoProxy private windowBlurSubscription?: Subscription;\n @DomRenderNoProxy public summaryComponent?: Summary;\n @DomRenderNoProxy public selectBodyComponent?: SelectBody;\n private options?: Select.Option[];\n\n constructor(config?: DomRenderConfig) {\n super();\n // console.log('----Select constructor')\n }\n\n get optionComponents(): Option[] {\n return this.getChildren(Option);\n }\n\n onCreateRender() {\n\n }\n\n onCreateRenderData() {\n\n }\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n // console.log('select onInitRender', this.multiple)\n\n if (ValidUtils.isBrowser() && this.rawSet?.dataSet.config.window) {\n const detailsElement = this.element;\n\n const window = this.rawSet.dataSet!.config!.window!;\n const document = window.document;\n this.documentClickSubscription = EventUtils.htmlElementEventObservable(document, 'click').subscribe(event => {\n const isSummaryClick = this.getChildren(Summary).some(it => event.target && it.element?.contains(event.target as Node) || it.element === event.target)\n if (!isSummaryClick && this.getAttribute('disableOtherClickClose')) {\n return;\n }\n if (!isSummaryClick && !this.multiple && detailsElement) {\n detailsElement.open = false;\n return;\n }\n if (!isSummaryClick && detailsElement && !detailsElement?.contains(event?.target as Node)) {\n detailsElement.open = false;\n }\n })\n\n this.windowBlurSubscription = WindowUtils.eventObservable(window, 'blur').subscribe(() => {\n if (detailsElement?.open && window.document.activeElement?.tagName === 'IFRAME') {\n detailsElement.open = false;\n }\n });\n }\n }\n\n\n toggle(element: HTMLDetailsElement, event: Event) {\n // console.log('------>', this.disabled, event)\n // if (this.disabled) {\n // event.stopPropagation();\n // event.preventDefault();\n // return;\n // }\n const toggleAttribute = this.getAttribute('toggle');\n if (toggleAttribute) {\n toggleAttribute?.(element.open);\n }\n }\n\n setOptions(options: Option[]) {\n const summaries = this.getChildren(Summary);\n\n this.options = options;\n\n const values = this.options.filter(it => it.selected && !it.disabled).map(it => it.value)\n this.getAttribute('changeSelected')?.(values);\n summaries?.forEach(it => {\n it.setDisabled(this.disabled);\n if (!this.disabled) {\n it.setOptions(options);\n }\n })\n }\n\n onInitDetailsElement(detailsElement: HTMLDetailsElement) {\n // console.log('detailsElement oninit', detailsElement);\n this.element = detailsElement;\n }\n\n onDrThisUnBind() {\n super.onDrThisUnBind();\n this.onDestroyRender();\n }\n\n onDestroyRender() {\n super.onDestroyRender();\n this.documentClickSubscription?.unsubscribe();\n this.windowBlurSubscription?.unsubscribe();\n }\n\n test() {\n console.log('tttttttt')\n }\n }\n}\n\nconst stateComponentFactory = (name: string, type: any) => {\n return (config?: DomRenderRunConfig) =>\n RawSet.createComponentTargetElement({\n name,\n template: '<div dr-if=\"!@this@.hidden\" dr-option-strip=\"true\">#innerHTML#</div>\\n',\n objFactory: (e, o, r2, constructorParam) => DomRender.run({ rootObject: new type(), config })\n });\n};\n\nexport default {\n select: (config?: DomRenderConfig) => {\n return RawSet.createComponentTargetElement({\n name: Select.selector,\n styles:\n '.dr-select-container {\\n' +\n ' /*position: relative;*/\\n' +\n '\\n' +\n '}\\n' +\n '.dr-select-options-container {\\n' +\n ' display: none;\\n' +\n ' position: absolute;\\n' +\n ' top: 100%;\\n' +\n ' left: 0;\\n' +\n ' right: 0;\\n' +\n ' z-index: 10;\\n' +\n '}\\n' +\n '.dr-select-container.is-open .dr-select-options-container {\\n' +\n ' display: block;\\n' +\n '}\\n' +\n 'summary::-webkit-details-marker {\\n' +\n ' display: none;\\n' +\n '}\\n' +\n '/* Floating styles for dr-select-body */\\n' +\n '.dr-select-body-container {\\n' +\n ' position: absolute;\\n' +\n '}\\n' +\n '\\n' +\n '.dr-select-body-bottom-left-container {\\n' +\n ' position: absolute;\\n' +\n ' left: 0;\\n' +\n ' top: 100%;\\n' +\n '}\\n' +\n '\\n' +\n '.dr-select-body-bottom-right-container {\\n' +\n ' position: absolute;\\n' +\n ' right: 0;\\n' +\n ' top: 100%;\\n' +\n '}\\n' +\n '\\n' +\n '.dr-select-body-top-left-container {\\n' +\n ' position: absolute;\\n' +\n ' left: 0;\\n' +\n ' bottom: 100%;\\n' +\n '}\\n' +\n '\\n' +\n '.dr-select-body-top-right-container {\\n' +\n ' position: absolute;\\n' +\n ' right: 0;\\n' +\n ' bottom: 100%;\\n' +\n '}\\n' +\n '\\n' +\n '/* Reset default details/summary styles */\\n' +\n '.dr-select-container details {\\n' +\n ' display: block; /* Ensure it behaves like a block element */\\n' +\n '}\\n' +\n '\\n' +\n '.dr-select-container summary {\\n' +\n ' display: block; /* Ensure it behaves like a block element */\\n' +\n ' list-style: none; /* Remove default marker */\\n' +\n \" cursor: pointer; /* Indicate it's clickable */\\n\" +\n '}\\n' +\n '\\n' +\n '.dr-select-container summary::-webkit-details-marker,\\n' +\n '.dr-select-container summary::marker {\\n' +\n ' display: none; /* Hide marker for Webkit and standard */\\n' +\n '}',\n template:\n '<details dr-class=\"{\\n' +\n \" 'dr-select-container': true,\\n\" +\n \" 'is-open': @this@.isOpen,\\n\" +\n ' [@this@.classAttr]: @this@.classAttr\\n' +\n ' }\" dr-on-init=\"@this@.onInitDetailsElement($element)\" dr-option-complete=\"@this@.test()\" dr-event-toggle=\"@this@.toggle($element, $event)\">\\n' +\n '\\n' +\n ' #innerHTML#\\n' +\n '</details>\\n' +\n '<select hidden=\"hidden\" name=\"${@this@.name}$\" disabled=\"${@this@.disabled ? \\'disabled\\' : null}$\" style=\"width: 1500px; height:500px\" multiple>\\n' +\n ' <option dr-for-of=\"@this@.options\" value=\"${#it#.value}$\" selected=\"${#it#.selected ? \\'selected\\' : null}$\">#it# ${#it#.value}$</option>\\n' +\n '</select',\n objFactory: (e, o, r2, constructorParam) => DomRender.run({ rootObject: new Select.Select(config), config })\n });\n },\n selectSummary: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Select.selector}-summary`,\n template:\n '<summary dr-class=\"{[@this@.classAttr]: @this@.classAttr}\"\\n' +\n ' dr-on-init=\"@this@.onInitSummaryElement($element, $event)\"\\n' +\n ' dr-event-click=\"@this@.onSummaryClick($element, $event)\"\\n' +\n '>\\n' +\n '#innerHTML#\\n' +\n '</summary>',\n objFactory: (e, o, r2, constructorParam) => DomRender.run({ rootObject: new Select.Summary(), config })\n });\n },\n selectSummaryPlaceholder: stateComponentFactory(`${Select.selector}-summary-placeholder`, Select.SummaryPlaceholder),\n selectSummarySelected: stateComponentFactory(`${Select.selector}-summary-selected`, Select.SummarySelected),\n selectSummaryDisabled: stateComponentFactory(`${Select.selector}-summary-disabled`, Select.SummaryDisabled),\n\n selectBody: (config?: DomRenderRunConfig) => { // New export\n return RawSet.createComponentTargetElement({\n name: `${Select.selector}-body`,\n template: '<div dr-class=\"{[@this@.classAttr]: @this@.classAttr, \\'dr-select-body-container\\': true, [\\'dr-select-body-\\'+@this@.float+\\'-container\\']: @this@.float}\">#innerHTML#</div>',\n objFactory: (e, o, r2, constructorParam) => {\n return DomRender.run({rootObject: new Select.SelectBody(), config: config});\n }\n })\n },\n\n selectOption: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Select.selector}-option`,\n template:\n '<a dr-class=\"{[@this@.classAttr]: @this@.classAttr}\" dr-event-click=\"@this@.toggleSelected($event)\">#innerHTML#</a>\\n',\n objFactory: (e, o, r2, constructorParam) => DomRender.run({ rootObject: new Select.Option(), config })\n });\n },\n selectOptionSelected: stateComponentFactory(`${Select.selector}-option-selected`, Select.OptionSelected),\n selectOptionUnselected: stateComponentFactory(`${Select.selector}-option-unselected`, Select.OptionUnselected),\n selectOptionDisabled: stateComponentFactory(`${Select.selector}-option-disabled`, Select.OptionDisabled),\n};", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnInitRender } from '../../lifecycle/OnInitRender';\nimport { ComponentSet } from '../../components/ComponentSet';\nimport { OnDestroyRenderParams } from '../../lifecycle/OnDestroyRender';\nexport namespace This {\n export const selector = 'dr-this';\n export type Attribute = {\n value: ComponentSet;\n if: boolean | null;\n createArguments: any[];\n onCreated?: (value: any) => void;\n onDestroyRender?: () => void;\n }\n\n export class This extends ComponentBase<Attribute> implements OnInitRender {\n private value?: ComponentSet\n private if?: boolean | null = null;\n private createArguments?: any[]\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n }\n\n onDestroyRender(data: OnDestroyRenderParams) {\n super.onDestroyRender(data);\n }\n\n onChangeAttrRender(name: string, value: any, other: OtherData) {\n super.onChangeAttrRender(name, value, other);\n if (this.equalsAttributeName(name, 'value')) {\n this.value = value;\n }\n if (this.equalsAttributeName(name, 'if')) {\n this.if = value;\n }\n if (this.equalsAttributeName(name, 'createArguments')) {\n this.createArguments = value;\n }\n }\n\n created(component: any){\n component??=this.value?.obj;\n this.getAttribute('onCreated')?.(component);\n }\n }\n}\n\nexport default {\n this: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: This.selector,\n template: '<div dr-this=\"@this@.value\" dr-detect-option-if=\"@this@?.value && @this@?.if\" dr-option-strip=\"true\" dr-on-create:arguments=\"@this@.createArguments\" dr-on-create:callback=\"@this@?.created?.($component)\">#innerHTML#</div>',\n objFactory: (e, o, r2, counstructorParam) => {\n return DomRender.run({rootObject: new This.This(...counstructorParam), config: config});\n }\n })\n }\n}\n\n", "import { ComponentBase } from '../ComponentBase';\nimport { DomRender, DomRenderRunConfig } from '../../DomRender';\nimport { RawSet } from '../../rawsets/RawSet';\nimport { OtherData } from '../../lifecycle/OnChangeAttrRender';\nimport { OnDestroyRenderParams } from '../../lifecycle/OnDestroyRender';\n\n\nexport namespace Timer {\n export const selector = 'dr-timer';\n export type Attribute = {\n timeSecond?: string;\n }\n\n // class RadioBase extends ComponentBase<Attribute> {\n // public hidden = true;\n //\n // }\n\n // @Component({\n // template: '<div dr-if=\"!@this@.hidden\" dr-strip=\"true\">#innerHTML#</div>',\n // styles: '',\n // selector: `${selector}.Checked`\n // })\n // export class RadioChecked extends RadioBase {\n // public name = 'Checked';\n //\n // constructor() {\n // super({ onlyParentType: Radio });\n // }\n // }\n //\n // @Component({\n // template: '<div dr-if=\"!@this@.hidden\" dr-strip=\"true\">#innerHTML#</div>',\n // styles: '',\n // selector: `${selector}.UnChecked`\n // })\n // export class UnChecked extends RadioBase {\n // public name = 'unChecked';\n //\n // constructor() {\n // super({ onlyParentType: Radio });\n // }\n // }\n\n // @Component({\n // template: '#innerHTML#',\n // selector: `${selector}`,\n // noStrip: true\n // })\n export class Timer extends ComponentBase<Attribute> {\n private interval?: any;\n private timeSecond?: number;\n\n\n onInitRender(param: any, rawSet: RawSet) {\n super.onInitRender(param, rawSet);\n console.log('---2', this.getElement()?.isConnected)\n // const element = this.getElement();\n // if(element){\n // (element as any).component = this;\n // }\n }\n\n isRunning() {\n return this.timeSecond !== undefined;\n }\n\n start() {\n const timeSecond = this.getAttribute('timeSecond');\n if (timeSecond) {\n this.timeSecond = parseInt(timeSecond);\n this.interval = setInterval(() => {\n // console.log('--------->',this.timeSecond)\n if (this.timeSecond) {\n this.timeSecond--;\n } else {\n clearInterval(this.interval);\n this.timeSecond = undefined;\n this.interval = undefined;\n }\n }, 1000)\n }\n }\n\n\n stop() {\n if (this.interval) {\n clearInterval(this.interval);\n this.interval = undefined;\n this.timeSecond = undefined;\n }\n }\n\n onChangeAttrRender(name: string, val: any, other: OtherData) {\n super.onChangeAttrRender(name, val, other);\n console.log('-----', name, val, this.getElement())\n }\n\n onDestroyRender(data: OnDestroyRenderParams) {\n super.onDestroyRender(data);\n if (this.interval){\n clearInterval(this.interval);\n }\n }\n }\n}\n\n\nexport default {\n choose: (config?: DomRenderRunConfig) => {\n return RawSet.createComponentTargetElement({\n name: `${Timer.selector}`,\n template: '#innerHTML#',\n objFactory: (e,o,r2, counstructorParam) => {\n return DomRender.run({rootObject: new Timer.Timer(...counstructorParam), config: config});\n }\n })\n },\n}", "export * from './ComponentBase';\nexport * from './ComponentRouterBase';\nexport * from './ComponentSet';\nexport * from './a';\nexport * from './appender';\nexport * from './checkbox';\nexport * from './choose';\nexport * from './details';\nexport * from './forOf';\nexport * from './if';\nexport * from './input';\nexport * from './promise';\nexport * from './radio';\nexport * from './router';\nexport * from './select';\nexport * from './this';\nexport * from './timer';\n\nimport If from './if/If';\nimport This from './this/This';\nimport Appender from './appender/Appender';\nimport PromiseSwitch from './promise/PromiseSwitch';\nimport Choose from './choose/Choose';\nimport CheckBox from './checkbox/CheckBox';\nimport Radio from './radio/Radio';\nimport RouterOutlet from './router/RouterOutlet';\nimport Select from './select/Select';\nimport Timer from './timer/Timer';\nimport Details from './details/Details';\nimport Input from './input/Input';\nimport Route from './router/Route';\nimport A from './a/A';\n\nexport const drComponent = {\n ...If,\n ...This,\n ...Appender,\n ...PromiseSwitch,\n ...Choose,\n ...CheckBox,\n ...Radio,\n ...Select,\n ...Timer,\n ...Details,\n ...Input,\n ...Route,\n ...RouterOutlet,\n ...A,\n}", "import { DomRenderProxy } from './DomRenderProxy';\nimport { DomRenderConfig } from './configs/DomRenderConfig';\nimport { PathRouter } from './routers/PathRouter';\nimport { HashRouter } from './routers/HashRouter';\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { DomRenderFinalProxy } from './types/Types';\nimport { RawSet } from './rawsets/RawSet';\nimport { DefaultMessenger } from './messenger/DefaultMessenger';\nimport { Router } from './routers/Router';\nimport { drComponent } from './components';\nimport { EventManager } from './events/EventManager';\nimport { RandomUtils } from '@dooboostore/core/random/RandomUtils';\n\nexport type DomRenderRunConfig<T = any> = Omit<DomRenderConfig<T>, 'router' | 'uuid' | 'eventManager' | 'messenger' | 'root' | 'rootElement'> & { routerType?: 'path' | 'hash' | ((obj: T, window: Window) => Router) | Router };\nexport type CreateComponentParam = { type: ConstructorType<any> | any, tagName?: string, noStrip?: boolean, template?: string, styles?: string[] | string };\nlet eventManager: EventManager | null = null;\nexport type DomRenderRunParameter<T extends object> = { rootObject: T | (() => T), target?: Element | null, config?: DomRenderRunConfig | DomRenderConfig };\n\nexport class DomRender<T extends object = any> {\n private _config: DomRenderConfig;\n private _target: Element | null | undefined;\n private _rootObject: T;\n\n constructor(parameter: DomRenderRunParameter<T>, executeConfig?: { autoGo?: string }) {\n const s = DomRender.runSet(parameter);\n this._config = s.config;\n this._target = s.target;\n this._rootObject = s.rootObject;\n if (executeConfig && executeConfig?.autoGo) {\n this._config.router?.go(executeConfig.autoGo);\n }\n }\n\n public get rootObject(): T {\n return this._rootObject;\n }\n\n public get config(): DomRenderConfig {\n return this._config;\n }\n\n public get target(): Element | null |undefined {\n return this._target;\n }\n\n public static run<T extends object>(data: DomRenderRunParameter<T>): T {\n return DomRender.runSet(data).rootObject;\n }\n\n public static runSet<T extends object>({rootObject, target, config}: DomRenderRunParameter<T>): { rootObject: T, target?: Element | null, config: DomRenderConfig } {\n // public static run<T extends object>({rootObject, target, config}: DomRenderRunParameter<T>): T {\n // console.log('runSet')\n rootObject = typeof rootObject === 'function' ? rootObject() : rootObject;\n let targetObject = rootObject;\n if ('_DomRender_isProxy' in rootObject) {\n if (target) {\n ((rootObject as any)._DomRender_proxy as DomRenderProxy<T>).initRender(target);\n }\n targetObject = rootObject;\n // return targetObject;\n return {rootObject: targetObject, target, config: (rootObject as any)._domRender_config};\n }\n const targetConfig = Object.assign({}, config) as DomRenderConfig;\n eventManager ??= new EventManager(targetConfig.window);\n\n targetConfig.uuid = RandomUtils.uuid4();\n targetConfig.messenger = DomRenderFinalProxy.final(targetConfig.messenger ?? new DefaultMessenger(targetConfig));\n targetConfig.proxyExcludeTyps = targetConfig.proxyExcludeTyps ?? [];\n targetConfig.targetElements ??= [];\n\n\n if (typeof Window !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === Window)) {\n targetConfig.proxyExcludeTyps.push(Window);\n }\n if (typeof Map !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === Map)) {\n targetConfig.proxyExcludeTyps.push(Map);\n }\n if (typeof Set !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === Set)) {\n targetConfig.proxyExcludeTyps.push(Set);\n }\n if (typeof Promise !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === Promise)) {\n targetConfig.proxyExcludeTyps.push(Promise);\n }\n if (typeof ResizeObserver !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === ResizeObserver)) {\n targetConfig.proxyExcludeTyps.push(ResizeObserver);\n }\n if (typeof ImageBitmap !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === ImageBitmap)) {\n targetConfig.proxyExcludeTyps.push(ImageBitmap);\n }\n if (typeof CanvasRenderingContext2D !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === CanvasRenderingContext2D)) {\n targetConfig.proxyExcludeTyps.push(CanvasRenderingContext2D);\n }\n if (typeof HTMLCanvasElement !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === HTMLCanvasElement)) {\n targetConfig.proxyExcludeTyps.push(HTMLCanvasElement);\n }\n if (!targetConfig.proxyExcludeTyps.some(it => it === RawSet)) {\n targetConfig.proxyExcludeTyps.push(RawSet);\n }\n if (!targetConfig.proxyExcludeTyps.some(it => it === DomRender)) {\n targetConfig.proxyExcludeTyps.push(DomRender);\n }\n targetConfig.rootElement = target;\n targetConfig.eventManager = eventManager;\n // (targetConfig.window as any).domRender ??= {configs: []};\n // (targetConfig.window as any).domRender.configs.push(targetConfig);\n const domRender = new DomRenderProxy(rootObject, target, targetConfig);\n const dest = new Proxy(rootObject, domRender);\n targetObject = dest;\n targetConfig.root = targetObject;\n\n // proxy \uB41C targetObject\uB97C \uB123\uC5B4\uC918\uC57C\uB418\uC11C \uB4A4\uCABD\uC5D0\uC11C router\uB97C \uC0DD\uC131\uD574\uC57C\uD568\n if (!targetConfig.router) {\n let targetRouter: Router<any> | undefined;\n if ('routerType' in config && config?.routerType === 'hash') {\n targetRouter = new HashRouter({rootObject: targetObject, window: targetConfig.window});\n } else if ('routerType' in config && config?.routerType === 'path') {\n targetRouter = new PathRouter({rootObject: targetObject, window: targetConfig.window});\n } else if ('routerType' in config && typeof config?.routerType === 'function') {\n targetRouter = config.routerType(targetObject, targetConfig.window);\n } else if ('routerType' in config && typeof config?.routerType === 'object') {\n targetRouter = config.routerType;\n }\n targetConfig.router = targetRouter;\n }\n\n for (const value of Object.values(drComponent)) {\n const a = value(targetConfig, DomRender);\n if (!targetConfig.targetElements.some(it => it.name === a.name)) {\n targetConfig.targetElements.push(a);\n }\n }\n // console.log('cccccccccccccccccc', targetRouter)\n // targetRouter.go({path: targetRouter.getUrl()})\n // if (!config.router) {\n // if (config.routerType === 'path') {\n // config.router = new PathRouter(targetObject, config.window);\n // } else if (config.routerType === 'hash') {\n // config.router = new HashRouter(targetObject, config.window);\n // } else { // none\n // config.router = new HashRouter(targetObject, config.window);\n // }\n // }\n domRender.run(targetObject);\n return {rootObject: targetObject, config: targetConfig, target};\n // return targetObject;\n }\n\n public static createComponent(param: CreateComponentParam) {\n // console.log('===>', typeof param.type, param.type.name, param.type.constructor.name)\n const component = RawSet.createComponentTargetElement(\n {\n name: param.tagName ?? (typeof param.type === 'function' ? param.type.name : param.type.constructor.name),\n objFactory: (e, o, r2, counstructorParam) => {\n return typeof param.type === 'function' ? new param.type(...counstructorParam) : param.type;\n },\n noStrip: param.noStrip,\n template: param.template ?? '',\n styles: Array.isArray(param.styles) ? param.styles : (param.styles ? [param.styles] : undefined)\n }\n );\n return component;\n }\n\n // ?? \uC5B8\uC81C \uC4F0\uB294\uAC70\uC9C0?? \uD6D4..\n public static createAttribute(attrName: string, getThisObj: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => any, factory: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => DocumentFragment) {\n const targetAttribute = RawSet.createComponentTargetAttribute(\n attrName,\n getThisObj,\n factory\n );\n return targetAttribute;\n }\n}\n", "// TODO: \uB098\uC911\uC5D0 \uB123\uC5B4\uC57C\uB420\uAE4C \uC790\uC2DDelement\uAC00 \uC644\uB8CC\uB418\uC5C8\uC744\uB54C\uB294 on-rendered..\uBB50\uC774\uB7F0\uAC8C\uC788\uC5B4\uC11C. \uC774\uAC8C \uB2E4\uB978 \uD504\uB808\uC784\uC6CC\uD06C\uCC98\uB7FC \uC790\uC2DD\uB4E4\uC774 \uB2E4 \uB9CC\uB4E4\uC5B4\uC9C0\uACE0 \uB0B4\uAC00 \uB9CC\uB4E4\uC5B4\uC9C0\uB294\uAC8C \uC544\uB2C8\uB77C. \uBE44\uB3D9\uAE30\uC801\uC73C\uB85C \uC774\uB8E8\uC5B4\uC9C0\uB2C8\uAE50 \uC54C\uC218\uAC00\uC5C6\uAE34\uD55C\uB370..\n// \uD6D4.. \uC6B0\uC120 \uBCF4\uB958 \uC544\uBB34\uB3C4 \uC0AC\uC6A9\uD558\uB294\uACF3\uC740 \uC5C6\uC74C\n/**\n * @deprecated \uC544\uC9C1 \uC801\uC6A9\uC548\uB428\n */\nexport interface OnCreateRendered {\n onCreateRendered(...param: any[]): void;\n}\nexport const isOnCreateRendered = (obj: any): obj is OnCreateRendered => {\n return typeof obj?.onCreateRendered === 'function';\n}", "export class Appender<T = any> implements Iterable<T> {\n // eslint-disable-next-line no-undef\n [key: number]: T[] | undefined;\n\n length = 0;\n\n keyMap: Map<string, number> = new Map();\n\n isAppender = true;\n constructor(...defaultDatas: T[]) {\n // console.log('defaultDatas', defaultDatas);\n this.push(...defaultDatas);\n // (this.childs as any).isAppender = true;\n }\n\n [Symbol.iterator](): Iterator<T> {\n const items = this.getAll();\n let idx = 0;\n return {\n next(value?: any): IteratorResult<T, any> {\n let r: IteratorResult<T> = {value: undefined, done: true};\n if (items.length > idx) {\n r = {value: items[idx], done: false};\n }\n idx++;\n return r;\n }\n }\n }\n\n set(key: string, ...v:T[]) {\n const o = this.keyMap.get(key);\n // console.log('set!!', o);\n if (o !== undefined) {\n this[o] = v;\n } else {\n this.keyMap.set(key, this.length);\n // console.log('setPush', v)\n this.push(...v);\n }\n }\n\n delete(key: string) {\n const o = this.keyMap.get(key);\n if (o !== undefined) {\n this[o] = [];\n this.keyMap.delete(key);\n // this.length--;\n }\n }\n\n\n getAll(): T[] {\n return this.getAlls().flat();\n }\n\n getAlls(): T[][] {\n const map = Array.from({length: this.length}).filter((it, idx) => this[idx]).map((it, idx) => this[idx]);\n return map as T[][];\n }\n\n push(...items: T[]): void {\n // console.log('----1>', items, items.length, this.length);\n if (items && items.length > 0) {\n (items as any).index = this.length;\n this[this.length++] = items;\n // this[this.length] = [];\n }\n // console.log('----2>', items, items.length, this.length);\n // console.log('---22->', this.length)\n // const appender = this.childs[this.lastIndex];\n // appender.values = items;\n // this.childs.push(new Appender(appender.index + 1));\n }\n\n // delete(idx: number): void {\n // // if (idx in this) {\n // // console.log('---------dele',idx)\n // // delete this[idx];\n // // this.length = this.length - 1;\n // // }\n // this.length = this.length - 1;\n // }\n\n // \uC778\uB371\uC2A4 \uC811\uADFC\uC744 \uC704\uD55C getter\uC640 setter \uCD94\uAC00\n // get(index: number): T | undefined {\n // return this.storage[index];\n // }\n //\n // set(index: number, value: T): void {\n // this.storage[index] = value;\n // this.length = Math.max(this.length, index + 1);\n // }\n\n\n clear(): void {\n // console.log('length', this.length);\n for (let i = 0; i < this.length; i++) {\n delete this[i];\n }\n this.keyMap.clear();\n this.length = 0;\n }\n}", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class AllCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return !((this.value ?? []).filter(it => !it.checked).length > 0);\n }\n}", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class AllUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return !((this.value ?? []).filter(it => it.checked).length > 0);\n }\n}\n", "import {Validator} from './Validator';\n\nexport class CheckedValidator<T = any, E = HTMLElement> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.getTarget() as any)?.checked ?? false;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountEqualsCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => it.checked).length === this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountEqualsUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length === this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountGreaterThanCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => it.checked).length > this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountGreaterThanEqualsCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => it.checked).length >= this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountGreaterThanEqualsUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length >= this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountGreaterThanUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length > this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountLessThanCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => it.checked).length < this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountLessThanEqualsCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => it.checked).length <= this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountLessThanEqualsUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length <= this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountLessThanUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length < this.count;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class CountUnCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public count: number, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return (this.value ?? []).filter(it => !it.checked).length >= this.count;\n }\n}\n", "import {Validator} from './Validator';\n\nexport class EmptyValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n const value = this.value;\n return value === undefined || value === null || ((value as any)?.length ?? 0) <= 0;\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class ExcludeCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public include: any[], public allRequired: boolean = false, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n const valus = this.value ?? [];\n const unCheckedValue = valus.filter(it => !it.checked).map(it => it.value);\n return unCheckedValue.length > 0 &&\n (!(unCheckedValue.filter(it => !this.include.includes(it)).length > 0)) &&\n (this.allRequired ? unCheckedValue.filter(it => this.include.includes(it)).length === this.include.length : true)\n }\n}\n", "import {Validator} from './Validator';\n\nexport class FormValidator<E = HTMLFormElement> extends Validator<void, E> {\n constructor(target?: E, event?: Event, autoValid = true) {\n super(undefined, target, event, autoValid)\n }\n\n validAction(): boolean {\n return super.childValidAction();\n }\n\n valid(): boolean {\n return this.childValid()\n }\n\n reset() {\n this.targetReset();\n }\n}\n", "import {Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class IncludeCheckedValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public include: any[], public allRequired: boolean = false, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n const valus = this.value ?? [];\n const checkedValue = valus.filter(it => it.checked).map(it => it.value);\n return checkedValue.length > 0 &&\n (!(checkedValue.filter(it => !this.include.includes(it)).length > 0)) &&\n (this.allRequired ? checkedValue.filter(it => this.include.includes(it)).length === this.include.length : true)\n }\n}\n", "import {Validator} from './Validator';\n\nexport class MultipleValidator<T = any, E = Element> extends Validator<T, E> {\n public validators: Validator<T, E>[];\n constructor(validators: Validator<T, E>[], value?: T, target?: E, event?: Event, autoValid: boolean = true) {\n super(value, target, event, autoValid);\n this.validators = validators.map(it => {\n it.setAutoValid(false);\n it.setAutoValidAction(false);\n return it;\n })\n this.validators.forEach(it => {\n it.set(this.value, this.getTarget(), this.getEvent())\n });\n }\n\n changeValue(value: T | undefined) {\n this.validators.forEach(it => it.set(this.value, this.getTarget(), this.getEvent()));\n }\n\n validAction(): boolean {\n return !(this.validators.filter(it => !it.validAction()).length > 0);\n }\n\n valid(): boolean {\n // console.log('mm', this.validators)\n return !(this.validators.filter(it => !it.valid()).length > 0);\n }\n}\n", "import {Validator} from './Validator';\n\nexport class NotEmptyValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n const value = this.value;\n // console.log('NotEmptyValidator', value, value !== undefined && value !== null && ((value as any)?.length ?? 0) > 0)\n return value !== undefined && value !== null && ((value as any)?.length ?? 0) > 0;\n }\n}\n", "import {Validator} from './Validator';\nimport {DomRenderProxy} from '../DomRenderProxy';\n\nexport class NotRegExpTestValidator<T = any, E = Element> extends Validator<T, E> {\n public regexp: RegExp;\n constructor(regexp: RegExp, value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n this.regexp = DomRenderProxy.final(regexp)\n }\n\n valid(): boolean {\n const value = this.value as unknown as string;\n const regExp = (this.regexp as any)._DomRender_origin ?? this.regexp;\n if (value) {\n return !regExp.test(value);\n } else {\n return true;\n }\n }\n}\n", "import {Validator} from './Validator';\n\nexport class PassValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return true;\n }\n}\n", "import {Validator} from './Validator';\nimport {DomRenderProxy} from '../DomRenderProxy';\n\nexport class RegExpTestValidator<T = any, E = Element> extends Validator<T, E> {\n public regexp: RegExp;\n constructor(regexp: RegExp, value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n this.regexp = DomRenderProxy.final(regexp)\n }\n\n valid(): boolean {\n const value = this.value as unknown as string;\n const regExp = (this.regexp as any)._DomRender_origin ?? this.regexp;\n // console.log('regexp-->', value, this.regexp, regExp.test(value))\n if (value) {\n return regExp.test(value);\n } else {\n return false;\n }\n }\n}\n", "import {Validator} from './Validator';\n\nexport class RequiredValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n const value = this.value;\n // console.log('required', value, value !== undefined && value !== null)\n return value !== undefined && value !== null;\n }\n}\n", "import {Validator} from './Validator';\n\nexport class UnCheckedValidator<T = any, E = HTMLElement> extends Validator<T, E> {\n constructor(value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return !((this.getTarget() as any)?.checked ?? false);\n }\n}\n", "import {Validator} from './Validator';\nimport {MultipleValidator} from './MultipleValidator';\n\nexport type ValidMulltiple<T = any, E = Element> = (validators: Validator<T, E>[], value?: T, target?: E, event?: Event) => boolean;\n\nexport class ValidMultipleValidator<T = any, E = Element> extends MultipleValidator<T, E> {\n constructor(public validMultipleCallback: ValidMulltiple<T, E>, public validators: Validator<T, E>[], value?: T, target?: E, event?: Event, autoValid: boolean = true) {\n super(validators, value, target, event, autoValid);\n }\n\n valid(): boolean {\n return this.validMultipleCallback(this.validators, this.value, this.getTarget(), this.getEvent());\n }\n}\n", "import {Valid, Validator} from './Validator';\n\nexport class ValidValidator<T = any, E = Element> extends Validator<T, E> {\n constructor(public validCallBack: Valid<T, E>, value?: T, target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(value?:T, target?:E, event?:Event): boolean {\n return this.validCallBack(value, target, event);\n }\n}\n", "import {Valid, Validator} from './Validator';\nimport {ValidatorArray} from './ValidatorArray';\n\nexport class ValidValidatorArray<T = any, E = Element> extends ValidatorArray<T, E> {\n constructor(public validCallBack: Valid<Validator<T, E>[], E>, value?: Validator<T, E>[], target?: E, event?: Event, autoValid = true) {\n super(value, target, event, autoValid);\n }\n\n valid(): boolean {\n return this.validCallBack(this.value, this.getTarget(), this.getEvent());\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["ValidUtils", "RandomUtils", "uuid", "hex", "StringUtils", "ObjectUtils", "Path", "tokens", "Script", "document", "attribute", "Promises", "Result", "p", "ElementUtils", "attribute", "window", "event", "context", "attribute", "map", "it", "event", "event", "event", "data", "DestroyOptionType", "RawSetType", "RawSetOperatorType", "rawSet", "attribute", "drAttrs", "element", "map", "message", "it", "node", "_a", "template", "e", "DocumentUtils", "document", "event", "it", "_a", "rawSets", "value", "MathUtil", "min", "max", "minMax", "sum", "ratio", "x", "bezier", "ConvertUtils", "map", "obj", "Expression", "Group", "Path", "event", "data", "window", "e", "window", "ReflectUtils", "attribute", "A", "event", "__decorate", "Appender", "CheckBox", "Choose", "ValidUtils", "EventUtils", "event", "Details", "event", "ValidUtils", "document", "it", "ForOf", "If", "Input", "event", "it", "PromiseSwitch", "Radio", "Route", "__decorate", "RouterOutlet", "WindowUtils", "window", "event", "event", "__decorate", "Select", "ValidUtils", "window", "document", "_a", "This", "Timer", "Appender", "map", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event", "event"]
|
|
7
7
|
}
|