@dooboostore/dom-render 1.0.106 → 1.0.107
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.d.js +16 -0
- package/dist/cjs/DomRender.d.js.map +7 -0
- package/dist/cjs/DomRender.js +5 -0
- package/dist/cjs/DomRender.js.map +1 -1
- package/dist/cjs/DomRenderProxy.d.js +17 -0
- package/dist/cjs/DomRenderProxy.d.js.map +7 -0
- package/dist/cjs/DomRenderProxy.d.ts +0 -1
- package/dist/cjs/DomRenderProxy.d.ts.map +1 -1
- package/dist/cjs/DomRenderProxy.js +6 -4
- package/dist/cjs/DomRenderProxy.js.map +2 -2
- package/dist/cjs/components/ComponentBase.d.js +17 -0
- package/dist/cjs/components/ComponentBase.d.js.map +7 -0
- package/dist/cjs/components/ComponentBase.d.ts +0 -1
- package/dist/cjs/components/ComponentBase.d.ts.map +1 -1
- package/dist/cjs/components/ComponentBase.js +71 -54
- package/dist/cjs/components/ComponentBase.js.map +2 -2
- package/dist/cjs/components/ComponentRouterBase.d.js +16 -0
- package/dist/cjs/components/ComponentRouterBase.d.js.map +7 -0
- package/dist/cjs/components/ComponentRouterBase.js +4 -0
- package/dist/cjs/components/ComponentRouterBase.js.map +1 -1
- package/dist/cjs/components/ComponentSet.d.js +16 -0
- package/dist/cjs/components/ComponentSet.d.js.map +7 -0
- package/dist/cjs/components/ComponentSet.js +5 -0
- package/dist/cjs/components/ComponentSet.js.map +1 -1
- package/dist/cjs/components/a/A.d.js +24 -0
- package/dist/cjs/components/a/A.d.js.map +7 -0
- package/dist/cjs/components/a/A.d.ts +1 -1
- package/dist/cjs/components/a/A.js +40 -32
- package/dist/cjs/components/a/A.js.map +1 -1
- package/dist/cjs/components/a/index.d.js +18 -0
- package/dist/cjs/components/a/index.d.js.map +7 -0
- package/dist/cjs/components/appender/Appender.d.js +24 -0
- package/dist/cjs/components/appender/Appender.d.js.map +7 -0
- package/dist/cjs/components/appender/Appender.d.ts +1 -1
- package/dist/cjs/components/appender/Appender.js +6 -0
- package/dist/cjs/components/appender/Appender.js.map +1 -1
- package/dist/cjs/components/appender/index.d.js +18 -0
- package/dist/cjs/components/appender/index.d.js.map +7 -0
- package/dist/cjs/components/checkbox/CheckBox.d.js +24 -0
- package/dist/cjs/components/checkbox/CheckBox.d.js.map +7 -0
- package/dist/cjs/components/checkbox/CheckBox.d.ts +3 -3
- package/dist/cjs/components/checkbox/CheckBox.js +7 -4
- package/dist/cjs/components/checkbox/CheckBox.js.map +1 -1
- package/dist/cjs/components/checkbox/index.d.js +18 -0
- package/dist/cjs/components/checkbox/index.d.js.map +7 -0
- package/dist/cjs/components/choose/Choose.d.js +24 -0
- package/dist/cjs/components/choose/Choose.d.js.map +7 -0
- package/dist/cjs/components/choose/Choose.d.ts +3 -3
- package/dist/cjs/components/choose/Choose.js +11 -1
- package/dist/cjs/components/choose/Choose.js.map +1 -1
- package/dist/cjs/components/choose/index.d.js +18 -0
- package/dist/cjs/components/choose/index.d.js.map +7 -0
- package/dist/cjs/components/details/Details.d.js +24 -0
- package/dist/cjs/components/details/Details.d.js.map +7 -0
- package/dist/cjs/components/details/Details.d.ts +4 -4
- package/dist/cjs/components/details/Details.js +11 -0
- package/dist/cjs/components/details/Details.js.map +1 -1
- package/dist/cjs/components/details/index.d.js +18 -0
- package/dist/cjs/components/details/index.d.js.map +7 -0
- package/dist/cjs/components/forOf/ForOf.d.js +24 -0
- package/dist/cjs/components/forOf/ForOf.d.js.map +7 -0
- package/dist/cjs/components/forOf/ForOf.d.ts +1 -1
- package/dist/cjs/components/forOf/ForOf.js +6 -0
- package/dist/cjs/components/forOf/ForOf.js.map +1 -1
- package/dist/cjs/components/forOf/index.d.js +18 -0
- package/dist/cjs/components/forOf/index.d.js.map +7 -0
- package/dist/cjs/components/if/If.d.js +24 -0
- package/dist/cjs/components/if/If.d.js.map +7 -0
- package/dist/cjs/components/if/If.d.ts +1 -1
- package/dist/cjs/components/if/If.js +3 -1
- package/dist/cjs/components/if/If.js.map +1 -1
- package/dist/cjs/components/if/index.d.js +18 -0
- package/dist/cjs/components/if/index.d.js.map +7 -0
- package/dist/cjs/components/index.d.js +34 -0
- package/dist/cjs/components/index.d.js.map +7 -0
- package/dist/cjs/components/index.d.ts +37 -37
- package/dist/cjs/components/input/Input.d.js +24 -0
- package/dist/cjs/components/input/Input.d.js.map +7 -0
- package/dist/cjs/components/input/Input.d.ts +1 -1
- package/dist/cjs/components/input/Input.js +8 -0
- package/dist/cjs/components/input/Input.js.map +1 -1
- package/dist/cjs/components/input/index.d.js +18 -0
- package/dist/cjs/components/input/index.d.js.map +7 -0
- package/dist/cjs/components/promise/PromiseSwitch.d.js +24 -0
- package/dist/cjs/components/promise/PromiseSwitch.d.js.map +7 -0
- package/dist/cjs/components/promise/PromiseSwitch.d.ts +5 -5
- package/dist/cjs/components/promise/PromiseSwitch.js +20 -1
- package/dist/cjs/components/promise/PromiseSwitch.js.map +1 -1
- package/dist/cjs/components/promise/index.d.js +18 -0
- package/dist/cjs/components/promise/index.d.js.map +7 -0
- package/dist/cjs/components/radio/Radio.d.js +24 -0
- package/dist/cjs/components/radio/Radio.d.js.map +7 -0
- package/dist/cjs/components/radio/Radio.d.ts +3 -3
- package/dist/cjs/components/radio/Radio.js +7 -4
- package/dist/cjs/components/radio/Radio.js.map +1 -1
- package/dist/cjs/components/radio/index.d.js +18 -0
- package/dist/cjs/components/radio/index.d.js.map +7 -0
- package/dist/cjs/components/router/Route.d.js +24 -0
- package/dist/cjs/components/router/Route.d.js.map +7 -0
- package/dist/cjs/components/router/Route.d.ts +2 -2
- package/dist/cjs/components/router/Route.js +18 -15
- package/dist/cjs/components/router/Route.js.map +1 -1
- package/dist/cjs/components/router/RouterOutlet.d.js +24 -0
- package/dist/cjs/components/router/RouterOutlet.d.js.map +7 -0
- package/dist/cjs/components/router/RouterOutlet.d.ts +1 -1
- package/dist/cjs/components/router/RouterOutlet.js +5 -1
- package/dist/cjs/components/router/RouterOutlet.js.map +1 -1
- package/dist/cjs/components/router/index.d.js +19 -0
- package/dist/cjs/components/router/index.d.js.map +7 -0
- package/dist/cjs/components/select/Select.d.js +24 -0
- package/dist/cjs/components/select/Select.d.js.map +7 -0
- package/dist/cjs/components/select/Select.d.ts +10 -10
- package/dist/cjs/components/select/Select.js +86 -69
- package/dist/cjs/components/select/Select.js.map +2 -2
- package/dist/cjs/components/select/index.d.js +18 -0
- package/dist/cjs/components/select/index.d.js.map +7 -0
- package/dist/cjs/components/this/This.d.js +24 -0
- package/dist/cjs/components/this/This.d.js.map +7 -0
- package/dist/cjs/components/this/This.d.ts +1 -1
- package/dist/cjs/components/this/This.js +5 -1
- package/dist/cjs/components/this/This.js.map +1 -1
- package/dist/cjs/components/this/index.d.js +18 -0
- package/dist/cjs/components/this/index.d.js.map +7 -0
- package/dist/cjs/components/timer/Timer.d.js +24 -0
- package/dist/cjs/components/timer/Timer.d.js.map +7 -0
- package/dist/cjs/components/timer/Timer.d.ts +1 -1
- package/dist/cjs/components/timer/Timer.js +7 -0
- package/dist/cjs/components/timer/Timer.js.map +1 -1
- package/dist/cjs/components/timer/index.d.js +18 -0
- package/dist/cjs/components/timer/index.d.js.map +7 -0
- package/dist/cjs/configs/DomRenderConfig.d.js +16 -0
- package/dist/cjs/configs/DomRenderConfig.d.js.map +7 -0
- package/dist/cjs/configs/TargetAttr.d.js +16 -0
- package/dist/cjs/configs/TargetAttr.d.js.map +7 -0
- package/dist/cjs/configs/TargetElement.d.js +16 -0
- package/dist/cjs/configs/TargetElement.d.js.map +7 -0
- package/dist/cjs/decorators/DomRenderNoProxy.d.js +17 -0
- package/dist/cjs/decorators/DomRenderNoProxy.d.js.map +7 -0
- package/dist/cjs/decorators/DomRenderNoProxy.d.ts +0 -1
- package/dist/cjs/decorators/DomRenderNoProxy.d.ts.map +1 -1
- package/dist/cjs/decorators/DomRenderNoProxy.js +0 -1
- package/dist/cjs/decorators/DomRenderNoProxy.js.map +2 -2
- package/dist/cjs/events/EventManager.d.js +16 -0
- package/dist/cjs/events/EventManager.d.js.map +7 -0
- package/dist/cjs/events/EventManager.js +58 -56
- package/dist/cjs/events/EventManager.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -15
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +2 -41
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/iterators/Range.d.js +16 -0
- package/dist/cjs/iterators/Range.d.js.map +7 -0
- package/dist/cjs/iterators/Range.js +9 -1
- package/dist/cjs/iterators/Range.js.map +1 -1
- package/dist/cjs/lifecycle/OnBeforeReturnSet.d.js +16 -0
- package/dist/cjs/lifecycle/OnBeforeReturnSet.d.js.map +7 -0
- package/dist/cjs/lifecycle/OnChangeAttrRender.d.js +16 -0
- package/dist/cjs/lifecycle/OnChangeAttrRender.d.js.map +7 -0
- package/dist/cjs/lifecycle/OnChildRenderedByProperty.d.js +16 -0
- package/dist/cjs/lifecycle/OnChildRenderedByProperty.d.js.map +7 -0
- package/dist/cjs/lifecycle/OnCreateRender.d.js +16 -0
- package/dist/cjs/lifecycle/OnCreateRender.d.js.map +7 -0
- package/dist/cjs/lifecycle/OnCreateRenderData.d.js +16 -0
- package/dist/cjs/lifecycle/OnCreateRenderData.d.js.map +7 -0
- package/dist/cjs/lifecycle/OnCreatedThisChild.d.js +16 -0
- package/dist/cjs/lifecycle/OnCreatedThisChild.d.js.map +7 -0
- package/dist/cjs/lifecycle/OnDestroyRender.d.js +16 -0
- package/dist/cjs/lifecycle/OnDestroyRender.d.js.map +7 -0
- package/dist/cjs/lifecycle/OnInitRender.d.js +16 -0
- package/dist/cjs/lifecycle/OnInitRender.d.js.map +7 -0
- package/dist/cjs/lifecycle/OnProxyDomRender.d.js +16 -0
- package/dist/cjs/lifecycle/OnProxyDomRender.d.js.map +7 -0
- package/dist/cjs/lifecycle/dr-this/OnDrThisBind.d.js +16 -0
- package/dist/cjs/lifecycle/dr-this/OnDrThisBind.d.js.map +7 -0
- package/dist/cjs/lifecycle/dr-this/OnDrThisUnBind.d.js +16 -0
- package/dist/cjs/lifecycle/dr-this/OnDrThisUnBind.d.js.map +7 -0
- package/dist/cjs/messenger/DefaultMessenger.d.js +16 -0
- package/dist/cjs/messenger/DefaultMessenger.d.js.map +7 -0
- package/dist/cjs/messenger/Messenger.d.js +16 -0
- package/dist/cjs/messenger/Messenger.d.js.map +7 -0
- package/dist/cjs/messenger/Messenger.js +8 -5
- package/dist/cjs/messenger/Messenger.js.map +1 -1
- package/dist/cjs/operators/Appender.d.js +16 -0
- package/dist/cjs/operators/Appender.d.js.map +7 -0
- package/dist/cjs/operators/Appender.js +5 -3
- package/dist/cjs/operators/Appender.js.map +1 -1
- package/dist/cjs/operators/Dr.d.js +16 -0
- package/dist/cjs/operators/Dr.d.js.map +7 -0
- package/dist/cjs/operators/DrAppender.d.js +16 -0
- package/dist/cjs/operators/DrAppender.d.js.map +7 -0
- package/dist/cjs/operators/DrFor.d.js +16 -0
- package/dist/cjs/operators/DrFor.d.js.map +7 -0
- package/dist/cjs/operators/DrForOf.d.js +16 -0
- package/dist/cjs/operators/DrForOf.d.js.map +7 -0
- package/dist/cjs/operators/DrForOf.js +2 -2
- package/dist/cjs/operators/DrForOf.js.map +2 -2
- package/dist/cjs/operators/DrForm.d.js +16 -0
- package/dist/cjs/operators/DrForm.d.js.map +7 -0
- package/dist/cjs/operators/DrIf.d.js +16 -0
- package/dist/cjs/operators/DrIf.d.js.map +7 -0
- package/dist/cjs/operators/DrIf.js +3 -3
- package/dist/cjs/operators/DrIf.js.map +2 -2
- package/dist/cjs/operators/DrInnerHTML.d.js +16 -0
- package/dist/cjs/operators/DrInnerHTML.d.js.map +7 -0
- package/dist/cjs/operators/DrInnerText.d.js +16 -0
- package/dist/cjs/operators/DrInnerText.d.js.map +7 -0
- package/dist/cjs/operators/DrPre.d.js +16 -0
- package/dist/cjs/operators/DrPre.d.js.map +7 -0
- package/dist/cjs/operators/DrRepeat.d.js +16 -0
- package/dist/cjs/operators/DrRepeat.d.js.map +7 -0
- package/dist/cjs/operators/DrStripElement.d.js +16 -0
- package/dist/cjs/operators/DrStripElement.d.js.map +7 -0
- package/dist/cjs/operators/DrTargetAttr.d.js +16 -0
- package/dist/cjs/operators/DrTargetAttr.d.js.map +7 -0
- package/dist/cjs/operators/DrTargetElement.d.js +16 -0
- package/dist/cjs/operators/DrTargetElement.d.js.map +7 -0
- package/dist/cjs/operators/DrTargetElementIsElement.d.js +16 -0
- package/dist/cjs/operators/DrTargetElementIsElement.d.js.map +7 -0
- package/dist/cjs/operators/DrThis.d.js +16 -0
- package/dist/cjs/operators/DrThis.d.js.map +7 -0
- package/dist/cjs/operators/DrThisProperty.d.js +16 -0
- package/dist/cjs/operators/DrThisProperty.d.js.map +7 -0
- package/dist/cjs/operators/OperatorExecuter.d.js +16 -0
- package/dist/cjs/operators/OperatorExecuter.d.js.map +7 -0
- package/dist/cjs/operators/OperatorExecuter.js +2 -2
- package/dist/cjs/operators/OperatorExecuter.js.map +2 -2
- package/dist/cjs/operators/OperatorExecuterAttrRequire.d.js +16 -0
- package/dist/cjs/operators/OperatorExecuterAttrRequire.d.js.map +7 -0
- package/dist/cjs/rawsets/AttrInitCallBack.d.js +16 -0
- package/dist/cjs/rawsets/AttrInitCallBack.d.js.map +7 -0
- package/dist/cjs/rawsets/Attrs.d.js +16 -0
- package/dist/cjs/rawsets/Attrs.d.js.map +7 -0
- package/dist/cjs/rawsets/CreatorMetaData.d.js +16 -0
- package/dist/cjs/rawsets/CreatorMetaData.d.js.map +7 -0
- package/dist/cjs/rawsets/DestroyOptionType.d.js +16 -0
- package/dist/cjs/rawsets/DestroyOptionType.d.js.map +7 -0
- package/dist/cjs/rawsets/ElementInitCallBack.d.js +16 -0
- package/dist/cjs/rawsets/ElementInitCallBack.d.js.map +7 -0
- package/dist/cjs/rawsets/RawSet.d.js +16 -0
- package/dist/cjs/rawsets/RawSet.d.js.map +7 -0
- package/dist/cjs/rawsets/RawSet.js +64 -62
- package/dist/cjs/rawsets/RawSet.js.map +2 -2
- package/dist/cjs/rawsets/RawSetOperatorType.d.js +16 -0
- package/dist/cjs/rawsets/RawSetOperatorType.d.js.map +7 -0
- package/dist/cjs/rawsets/RawSetType.d.js +16 -0
- package/dist/cjs/rawsets/RawSetType.d.js.map +7 -0
- package/dist/cjs/rawsets/Render.d.js +16 -0
- package/dist/cjs/rawsets/Render.d.js.map +7 -0
- package/dist/cjs/routers/HashRouter.d.js +16 -0
- package/dist/cjs/routers/HashRouter.d.js.map +7 -0
- package/dist/cjs/routers/PathRouter.d.js +16 -0
- package/dist/cjs/routers/PathRouter.d.js.map +7 -0
- package/dist/cjs/routers/PathRouter.d.ts.map +1 -1
- package/dist/cjs/routers/PathRouter.js +0 -1
- package/dist/cjs/routers/PathRouter.js.map +2 -2
- package/dist/cjs/routers/Router.d.js +17 -0
- package/dist/cjs/routers/Router.d.js.map +7 -0
- package/dist/cjs/routers/Router.js +13 -9
- package/dist/cjs/routers/Router.js.map +1 -1
- package/dist/cjs/types/Types.d.js +16 -0
- package/dist/cjs/types/Types.d.js.map +7 -0
- package/dist/cjs/validators/MultipleValidator.js +3 -0
- package/dist/cjs/validators/MultipleValidator.js.map +1 -1
- package/dist/cjs/validators/NonPassValidator.d.js +16 -0
- package/dist/cjs/validators/NonPassValidator.d.js.map +7 -0
- package/dist/cjs/validators/NotRegExpTestValidator.js +3 -0
- package/dist/cjs/validators/NotRegExpTestValidator.js.map +1 -1
- package/dist/cjs/validators/RegExpTestValidator.js +3 -0
- package/dist/cjs/validators/RegExpTestValidator.js.map +1 -1
- package/dist/cjs/validators/Validator.d.js +16 -0
- package/dist/cjs/validators/Validator.d.js.map +7 -0
- package/dist/cjs/validators/Validator.js +7 -0
- package/dist/cjs/validators/Validator.js.map +1 -1
- package/dist/cjs/validators/ValidatorArray.d.js +16 -0
- package/dist/cjs/validators/ValidatorArray.d.js.map +7 -0
- package/dist/cjs/validators/ValidatorArray.js +4 -2
- package/dist/cjs/validators/ValidatorArray.js.map +1 -1
- package/dist/esm/DomRender.d.js +1 -0
- package/dist/esm/DomRender.d.js.map +7 -0
- package/dist/esm/DomRender.js +14 -8
- package/dist/esm/DomRender.js.map +1 -1
- package/dist/esm/DomRenderProxy.d.js +2 -0
- package/dist/esm/DomRenderProxy.d.js.map +7 -0
- package/dist/esm/DomRenderProxy.d.ts +0 -1
- package/dist/esm/DomRenderProxy.d.ts.map +1 -1
- package/dist/esm/DomRenderProxy.js +22 -19
- package/dist/esm/DomRenderProxy.js.map +2 -2
- package/dist/esm/components/ComponentBase.d.js +2 -0
- package/dist/esm/components/ComponentBase.d.js.map +7 -0
- package/dist/esm/components/ComponentBase.d.ts +0 -1
- package/dist/esm/components/ComponentBase.d.ts.map +1 -1
- package/dist/esm/components/ComponentBase.js +71 -56
- package/dist/esm/components/ComponentBase.js.map +2 -2
- package/dist/esm/components/ComponentRouterBase.d.js +1 -0
- package/dist/esm/components/ComponentRouterBase.d.js.map +7 -0
- package/dist/esm/components/ComponentRouterBase.js +7 -2
- package/dist/esm/components/ComponentRouterBase.js.map +1 -1
- package/dist/esm/components/ComponentSet.d.js +1 -0
- package/dist/esm/components/ComponentSet.d.js.map +7 -0
- package/dist/esm/components/ComponentSet.js +7 -1
- package/dist/esm/components/ComponentSet.js.map +1 -1
- package/dist/esm/components/a/A.d.js +5 -0
- package/dist/esm/components/a/A.d.js.map +7 -0
- package/dist/esm/components/a/A.d.ts +1 -1
- package/dist/esm/components/a/A.js +42 -36
- package/dist/esm/components/a/A.js.map +1 -1
- package/dist/esm/components/a/index.d.js +2 -0
- package/dist/esm/components/a/index.d.js.map +7 -0
- package/dist/esm/components/a/index.js +1 -1
- package/dist/esm/components/appender/Appender.d.js +5 -0
- package/dist/esm/components/appender/Appender.d.js.map +7 -0
- package/dist/esm/components/appender/Appender.d.ts +1 -1
- package/dist/esm/components/appender/Appender.js +10 -3
- package/dist/esm/components/appender/Appender.js.map +1 -1
- package/dist/esm/components/appender/index.d.js +2 -0
- package/dist/esm/components/appender/index.d.js.map +7 -0
- package/dist/esm/components/appender/index.js +1 -1
- package/dist/esm/components/checkbox/CheckBox.d.js +5 -0
- package/dist/esm/components/checkbox/CheckBox.d.js.map +7 -0
- package/dist/esm/components/checkbox/CheckBox.d.ts +3 -3
- package/dist/esm/components/checkbox/CheckBox.js +11 -7
- package/dist/esm/components/checkbox/CheckBox.js.map +1 -1
- package/dist/esm/components/checkbox/index.d.js +2 -0
- package/dist/esm/components/checkbox/index.d.js.map +7 -0
- package/dist/esm/components/checkbox/index.js +1 -1
- package/dist/esm/components/choose/Choose.d.js +5 -0
- package/dist/esm/components/choose/Choose.d.js.map +7 -0
- package/dist/esm/components/choose/Choose.d.ts +3 -3
- package/dist/esm/components/choose/Choose.js +15 -4
- package/dist/esm/components/choose/Choose.js.map +1 -1
- package/dist/esm/components/choose/index.d.js +2 -0
- package/dist/esm/components/choose/index.d.js.map +7 -0
- package/dist/esm/components/choose/index.js +1 -1
- package/dist/esm/components/details/Details.d.js +5 -0
- package/dist/esm/components/details/Details.d.js.map +7 -0
- package/dist/esm/components/details/Details.d.ts +4 -4
- package/dist/esm/components/details/Details.js +15 -3
- package/dist/esm/components/details/Details.js.map +1 -1
- package/dist/esm/components/details/index.d.js +2 -0
- package/dist/esm/components/details/index.d.js.map +7 -0
- package/dist/esm/components/details/index.js +1 -1
- package/dist/esm/components/forOf/ForOf.d.js +5 -0
- package/dist/esm/components/forOf/ForOf.d.js.map +7 -0
- package/dist/esm/components/forOf/ForOf.d.ts +1 -1
- package/dist/esm/components/forOf/ForOf.js +10 -3
- package/dist/esm/components/forOf/ForOf.js.map +1 -1
- package/dist/esm/components/forOf/index.d.js +2 -0
- package/dist/esm/components/forOf/index.d.js.map +7 -0
- package/dist/esm/components/forOf/index.js +1 -1
- package/dist/esm/components/if/If.d.js +5 -0
- package/dist/esm/components/if/If.d.js.map +7 -0
- package/dist/esm/components/if/If.d.ts +1 -1
- package/dist/esm/components/if/If.js +7 -4
- package/dist/esm/components/if/If.js.map +1 -1
- package/dist/esm/components/if/index.d.js +2 -0
- package/dist/esm/components/if/index.d.js.map +7 -0
- package/dist/esm/components/if/index.js +1 -1
- package/dist/esm/components/index.d.js +18 -0
- package/dist/esm/components/index.d.js.map +7 -0
- package/dist/esm/components/index.d.ts +37 -37
- package/dist/esm/components/index.js +31 -31
- package/dist/esm/components/input/Input.d.js +5 -0
- package/dist/esm/components/input/Input.d.js.map +7 -0
- package/dist/esm/components/input/Input.d.ts +1 -1
- package/dist/esm/components/input/Input.js +12 -3
- package/dist/esm/components/input/Input.js.map +1 -1
- package/dist/esm/components/input/index.d.js +2 -0
- package/dist/esm/components/input/index.d.js.map +7 -0
- package/dist/esm/components/input/index.js +1 -1
- package/dist/esm/components/promise/PromiseSwitch.d.js +5 -0
- package/dist/esm/components/promise/PromiseSwitch.d.js.map +7 -0
- package/dist/esm/components/promise/PromiseSwitch.d.ts +5 -5
- package/dist/esm/components/promise/PromiseSwitch.js +24 -4
- package/dist/esm/components/promise/PromiseSwitch.js.map +1 -1
- package/dist/esm/components/promise/index.d.js +2 -0
- package/dist/esm/components/promise/index.d.js.map +7 -0
- package/dist/esm/components/promise/index.js +1 -1
- package/dist/esm/components/radio/Radio.d.js +5 -0
- package/dist/esm/components/radio/Radio.d.js.map +7 -0
- package/dist/esm/components/radio/Radio.d.ts +3 -3
- package/dist/esm/components/radio/Radio.js +11 -7
- package/dist/esm/components/radio/Radio.js.map +1 -1
- package/dist/esm/components/radio/index.d.js +2 -0
- package/dist/esm/components/radio/index.d.js.map +7 -0
- package/dist/esm/components/radio/index.js +1 -1
- package/dist/esm/components/router/Route.d.js +5 -0
- package/dist/esm/components/router/Route.d.js.map +7 -0
- package/dist/esm/components/router/Route.d.ts +2 -2
- package/dist/esm/components/router/Route.js +21 -20
- package/dist/esm/components/router/Route.js.map +1 -1
- package/dist/esm/components/router/RouterOutlet.d.js +5 -0
- package/dist/esm/components/router/RouterOutlet.d.js.map +7 -0
- package/dist/esm/components/router/RouterOutlet.d.ts +1 -1
- package/dist/esm/components/router/RouterOutlet.js +9 -4
- package/dist/esm/components/router/RouterOutlet.js.map +1 -1
- package/dist/esm/components/router/index.d.js +3 -0
- package/dist/esm/components/router/index.d.js.map +7 -0
- package/dist/esm/components/router/index.js +2 -2
- package/dist/esm/components/select/Select.d.js +5 -0
- package/dist/esm/components/select/Select.d.js.map +7 -0
- package/dist/esm/components/select/Select.d.ts +10 -10
- package/dist/esm/components/select/Select.js +89 -74
- package/dist/esm/components/select/Select.js.map +2 -2
- package/dist/esm/components/select/index.d.js +2 -0
- package/dist/esm/components/select/index.d.js.map +7 -0
- package/dist/esm/components/select/index.js +1 -1
- package/dist/esm/components/this/This.d.js +5 -0
- package/dist/esm/components/this/This.d.js.map +7 -0
- package/dist/esm/components/this/This.d.ts +1 -1
- package/dist/esm/components/this/This.js +9 -4
- package/dist/esm/components/this/This.js.map +1 -1
- package/dist/esm/components/this/index.d.js +2 -0
- package/dist/esm/components/this/index.d.js.map +7 -0
- package/dist/esm/components/this/index.js +1 -1
- package/dist/esm/components/timer/Timer.d.js +5 -0
- package/dist/esm/components/timer/Timer.d.js.map +7 -0
- package/dist/esm/components/timer/Timer.d.ts +1 -1
- package/dist/esm/components/timer/Timer.js +11 -3
- package/dist/esm/components/timer/Timer.js.map +1 -1
- package/dist/esm/components/timer/index.d.js +2 -0
- package/dist/esm/components/timer/index.d.js.map +7 -0
- package/dist/esm/components/timer/index.js +1 -1
- package/dist/esm/configs/DomRenderConfig.d.js +1 -0
- package/dist/esm/configs/DomRenderConfig.d.js.map +7 -0
- package/dist/esm/configs/TargetAttr.d.js +1 -0
- package/dist/esm/configs/TargetAttr.d.js.map +7 -0
- package/dist/esm/configs/TargetElement.d.js +1 -0
- package/dist/esm/configs/TargetElement.d.js.map +7 -0
- package/dist/esm/configs/index.js +3 -3
- package/dist/esm/decorators/DomRenderNoProxy.d.js +2 -0
- package/dist/esm/decorators/DomRenderNoProxy.d.js.map +7 -0
- package/dist/esm/decorators/DomRenderNoProxy.d.ts +0 -1
- package/dist/esm/decorators/DomRenderNoProxy.d.ts.map +1 -1
- package/dist/esm/decorators/DomRenderNoProxy.js +0 -1
- package/dist/esm/decorators/DomRenderNoProxy.js.map +2 -2
- package/dist/esm/decorators/index.js +1 -1
- package/dist/esm/events/EventManager.d.js +1 -0
- package/dist/esm/events/EventManager.d.js.map +7 -0
- package/dist/esm/events/EventManager.js +61 -58
- package/dist/esm/events/EventManager.js.map +1 -1
- package/dist/esm/events/index.js +1 -1
- package/dist/esm/index.d.ts +2 -15
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -40
- package/dist/esm/index.js.map +2 -2
- package/dist/esm/iterators/Range.d.js +1 -0
- package/dist/esm/iterators/Range.d.js.map +7 -0
- package/dist/esm/iterators/Range.js +10 -1
- package/dist/esm/iterators/Range.js.map +1 -1
- package/dist/esm/iterators/index.js +1 -1
- package/dist/esm/lifecycle/OnBeforeReturnSet.d.js +1 -0
- package/dist/esm/lifecycle/OnBeforeReturnSet.d.js.map +7 -0
- package/dist/esm/lifecycle/OnChangeAttrRender.d.js +1 -0
- package/dist/esm/lifecycle/OnChangeAttrRender.d.js.map +7 -0
- package/dist/esm/lifecycle/OnChildRenderedByProperty.d.js +1 -0
- package/dist/esm/lifecycle/OnChildRenderedByProperty.d.js.map +7 -0
- package/dist/esm/lifecycle/OnCreateRender.d.js +1 -0
- package/dist/esm/lifecycle/OnCreateRender.d.js.map +7 -0
- package/dist/esm/lifecycle/OnCreateRenderData.d.js +1 -0
- package/dist/esm/lifecycle/OnCreateRenderData.d.js.map +7 -0
- package/dist/esm/lifecycle/OnCreatedThisChild.d.js +1 -0
- package/dist/esm/lifecycle/OnCreatedThisChild.d.js.map +7 -0
- package/dist/esm/lifecycle/OnDestroyRender.d.js +1 -0
- package/dist/esm/lifecycle/OnDestroyRender.d.js.map +7 -0
- package/dist/esm/lifecycle/OnInitRender.d.js +1 -0
- package/dist/esm/lifecycle/OnInitRender.d.js.map +7 -0
- package/dist/esm/lifecycle/OnProxyDomRender.d.js +1 -0
- package/dist/esm/lifecycle/OnProxyDomRender.d.js.map +7 -0
- package/dist/esm/lifecycle/dr-this/OnDrThisBind.d.js +1 -0
- package/dist/esm/lifecycle/dr-this/OnDrThisBind.d.js.map +7 -0
- package/dist/esm/lifecycle/dr-this/OnDrThisUnBind.d.js +1 -0
- package/dist/esm/lifecycle/dr-this/OnDrThisUnBind.d.js.map +7 -0
- package/dist/esm/lifecycle/dr-this/index.js +2 -2
- package/dist/esm/lifecycle/index.js +12 -12
- package/dist/esm/managers/index.js +1 -1
- package/dist/esm/messenger/DefaultMessenger.d.js +1 -0
- package/dist/esm/messenger/DefaultMessenger.d.js.map +7 -0
- package/dist/esm/messenger/DefaultMessenger.js +1 -1
- package/dist/esm/messenger/Messenger.d.js +1 -0
- package/dist/esm/messenger/Messenger.d.js.map +7 -0
- package/dist/esm/messenger/Messenger.js +10 -6
- package/dist/esm/messenger/Messenger.js.map +1 -1
- package/dist/esm/messenger/index.js +2 -2
- package/dist/esm/operators/Appender.d.js +1 -0
- package/dist/esm/operators/Appender.d.js.map +7 -0
- package/dist/esm/operators/Appender.js +6 -3
- package/dist/esm/operators/Appender.js.map +1 -1
- package/dist/esm/operators/Dr.d.js +1 -0
- package/dist/esm/operators/Dr.d.js.map +7 -0
- package/dist/esm/operators/Dr.js +3 -3
- package/dist/esm/operators/DrAppender.d.js +1 -0
- package/dist/esm/operators/DrAppender.d.js.map +7 -0
- package/dist/esm/operators/DrAppender.js +3 -3
- package/dist/esm/operators/DrFor.d.js +1 -0
- package/dist/esm/operators/DrFor.d.js.map +7 -0
- package/dist/esm/operators/DrFor.js +3 -3
- package/dist/esm/operators/DrForOf.d.js +1 -0
- package/dist/esm/operators/DrForOf.d.js.map +7 -0
- package/dist/esm/operators/DrForOf.js +4 -4
- package/dist/esm/operators/DrForOf.js.map +1 -1
- package/dist/esm/operators/DrForm.d.js +1 -0
- package/dist/esm/operators/DrForm.d.js.map +7 -0
- package/dist/esm/operators/DrForm.js +6 -6
- package/dist/esm/operators/DrIf.d.js +1 -0
- package/dist/esm/operators/DrIf.d.js.map +7 -0
- package/dist/esm/operators/DrIf.js +4 -4
- package/dist/esm/operators/DrIf.js.map +1 -1
- package/dist/esm/operators/DrInnerHTML.d.js +1 -0
- package/dist/esm/operators/DrInnerHTML.d.js.map +7 -0
- package/dist/esm/operators/DrInnerHTML.js +3 -3
- package/dist/esm/operators/DrInnerText.d.js +1 -0
- package/dist/esm/operators/DrInnerText.d.js.map +7 -0
- package/dist/esm/operators/DrInnerText.js +3 -3
- package/dist/esm/operators/DrPre.d.js +1 -0
- package/dist/esm/operators/DrPre.d.js.map +7 -0
- package/dist/esm/operators/DrPre.js +1 -1
- package/dist/esm/operators/DrRepeat.d.js +1 -0
- package/dist/esm/operators/DrRepeat.d.js.map +7 -0
- package/dist/esm/operators/DrRepeat.js +4 -4
- package/dist/esm/operators/DrStripElement.d.js +1 -0
- package/dist/esm/operators/DrStripElement.d.js.map +7 -0
- package/dist/esm/operators/DrStripElement.js +3 -3
- package/dist/esm/operators/DrTargetAttr.d.js +1 -0
- package/dist/esm/operators/DrTargetAttr.d.js.map +7 -0
- package/dist/esm/operators/DrTargetAttr.js +2 -2
- package/dist/esm/operators/DrTargetElement.d.js +1 -0
- package/dist/esm/operators/DrTargetElement.d.js.map +7 -0
- package/dist/esm/operators/DrTargetElement.js +2 -2
- package/dist/esm/operators/DrTargetElementIsElement.d.js +1 -0
- package/dist/esm/operators/DrTargetElementIsElement.d.js.map +7 -0
- package/dist/esm/operators/DrTargetElementIsElement.js +2 -2
- package/dist/esm/operators/DrThis.d.js +1 -0
- package/dist/esm/operators/DrThis.d.js.map +7 -0
- package/dist/esm/operators/DrThis.js +6 -6
- package/dist/esm/operators/DrThisProperty.d.js +1 -0
- package/dist/esm/operators/DrThisProperty.d.js.map +7 -0
- package/dist/esm/operators/DrThisProperty.js +3 -3
- package/dist/esm/operators/OperatorExecuter.d.js +1 -0
- package/dist/esm/operators/OperatorExecuter.d.js.map +7 -0
- package/dist/esm/operators/OperatorExecuter.js +1 -1
- package/dist/esm/operators/OperatorExecuter.js.map +1 -1
- package/dist/esm/operators/OperatorExecuterAttrRequire.d.js +1 -0
- package/dist/esm/operators/OperatorExecuterAttrRequire.d.js.map +7 -0
- package/dist/esm/operators/OperatorExecuterAttrRequire.js +1 -1
- package/dist/esm/operators/index.js +19 -19
- package/dist/esm/rawsets/AttrInitCallBack.d.js +1 -0
- package/dist/esm/rawsets/AttrInitCallBack.d.js.map +7 -0
- package/dist/esm/rawsets/Attrs.d.js +1 -0
- package/dist/esm/rawsets/Attrs.d.js.map +7 -0
- package/dist/esm/rawsets/CreatorMetaData.d.js +1 -0
- package/dist/esm/rawsets/CreatorMetaData.d.js.map +7 -0
- package/dist/esm/rawsets/DestroyOptionType.d.js +1 -0
- package/dist/esm/rawsets/DestroyOptionType.d.js.map +7 -0
- package/dist/esm/rawsets/ElementInitCallBack.d.js +1 -0
- package/dist/esm/rawsets/ElementInitCallBack.d.js.map +7 -0
- package/dist/esm/rawsets/RawSet.d.js +1 -0
- package/dist/esm/rawsets/RawSet.d.js.map +7 -0
- package/dist/esm/rawsets/RawSet.js +85 -82
- package/dist/esm/rawsets/RawSet.js.map +2 -2
- package/dist/esm/rawsets/RawSetOperatorType.d.js +1 -0
- package/dist/esm/rawsets/RawSetOperatorType.d.js.map +7 -0
- package/dist/esm/rawsets/RawSetType.d.js +1 -0
- package/dist/esm/rawsets/RawSetType.d.js.map +7 -0
- package/dist/esm/rawsets/Render.d.js +1 -0
- package/dist/esm/rawsets/Render.d.js.map +7 -0
- package/dist/esm/rawsets/index.js +9 -9
- package/dist/esm/routers/HashRouter.d.js +1 -0
- package/dist/esm/routers/HashRouter.d.js.map +7 -0
- package/dist/esm/routers/HashRouter.js +1 -1
- package/dist/esm/routers/PathRouter.d.js +1 -0
- package/dist/esm/routers/PathRouter.d.js.map +7 -0
- package/dist/esm/routers/PathRouter.d.ts.map +1 -1
- package/dist/esm/routers/PathRouter.js +1 -2
- package/dist/esm/routers/PathRouter.js.map +2 -2
- package/dist/esm/routers/Router.d.js +2 -0
- package/dist/esm/routers/Router.d.js.map +7 -0
- package/dist/esm/routers/Router.js +14 -9
- package/dist/esm/routers/Router.js.map +1 -1
- package/dist/esm/routers/index.js +3 -3
- package/dist/esm/types/Types.d.js +1 -0
- package/dist/esm/types/Types.d.js.map +7 -0
- package/dist/esm/types/index.js +1 -1
- package/dist/esm/validators/AllCheckedValidatorArray.js +1 -1
- package/dist/esm/validators/AllUnCheckedValidatorArray.js +1 -1
- package/dist/esm/validators/CheckedValidator.js +1 -1
- package/dist/esm/validators/CountEqualsCheckedValidatorArray.js +1 -1
- package/dist/esm/validators/CountEqualsUnCheckedValidatorArray.js +1 -1
- package/dist/esm/validators/CountGreaterThanCheckedValidatorArray.js +1 -1
- package/dist/esm/validators/CountGreaterThanEqualsCheckedValidatorArray.js +1 -1
- package/dist/esm/validators/CountGreaterThanEqualsUnCheckedValidatorArray.js +1 -1
- package/dist/esm/validators/CountGreaterThanUnCheckedValidatorArray.js +1 -1
- package/dist/esm/validators/CountLessThanCheckedValidatorArray.js +1 -1
- package/dist/esm/validators/CountLessThanEqualsCheckedValidatorArray.js +1 -1
- package/dist/esm/validators/CountLessThanEqualsUnCheckedValidatorArray.js +1 -1
- package/dist/esm/validators/CountLessThanUnCheckedValidatorArray.js +1 -1
- package/dist/esm/validators/CountUnCheckedValidatorArray.js +1 -1
- package/dist/esm/validators/EmptyValidator.js +1 -1
- package/dist/esm/validators/ExcludeCheckedValidatorArray.js +1 -1
- package/dist/esm/validators/FormValidator.js +1 -1
- package/dist/esm/validators/IncludeCheckedValidatorArray.js +1 -1
- package/dist/esm/validators/MultipleValidator.js +5 -1
- package/dist/esm/validators/MultipleValidator.js.map +1 -1
- package/dist/esm/validators/NonPassValidator.d.js +1 -0
- package/dist/esm/validators/NonPassValidator.d.js.map +7 -0
- package/dist/esm/validators/NonPassValidator.js +1 -1
- package/dist/esm/validators/NotEmptyValidator.js +1 -1
- package/dist/esm/validators/NotRegExpTestValidator.js +6 -2
- package/dist/esm/validators/NotRegExpTestValidator.js.map +1 -1
- package/dist/esm/validators/PassValidator.js +1 -1
- package/dist/esm/validators/RegExpTestValidator.js +6 -2
- package/dist/esm/validators/RegExpTestValidator.js.map +1 -1
- package/dist/esm/validators/RequiredValidator.js +1 -1
- package/dist/esm/validators/UnCheckedValidator.js +1 -1
- package/dist/esm/validators/ValidMultipleValidator.js +1 -1
- package/dist/esm/validators/ValidValidator.js +1 -1
- package/dist/esm/validators/ValidValidatorArray.js +1 -1
- package/dist/esm/validators/Validator.d.js +1 -0
- package/dist/esm/validators/Validator.d.js.map +7 -0
- package/dist/esm/validators/Validator.js +8 -0
- package/dist/esm/validators/Validator.js.map +1 -1
- package/dist/esm/validators/ValidatorArray.d.js +1 -0
- package/dist/esm/validators/ValidatorArray.d.js.map +7 -0
- package/dist/esm/validators/ValidatorArray.js +7 -4
- package/dist/esm/validators/ValidatorArray.js.map +1 -1
- package/dist/esm/validators/ValueEqualsValidator.js +1 -1
- package/dist/esm/validators/ValueNotEqualsValidator.js +1 -1
- package/dist/esm/validators/index.js +31 -31
- package/dist/esm-bundle/dooboostore-dom-render.esm.js +3 -6757
- package/dist/esm-bundle/dooboostore-dom-render.esm.js.map +4 -4
- package/dist/umd-bundle/dooboostore-dom-render.umd.js +2 -6761
- package/dist/umd-bundle/dooboostore-dom-render.umd.js.map +4 -4
- package/package.json +10 -9
|
@@ -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';\nexport { DomRenderProxy, getDomRenderConfig, getDomRenderOriginObject, getDomRenderProxy, isWrapProxyDomRenderProxy } from './DomRenderProxy';\n\nexport * from './configs';\nexport * from './decorators';\nexport * from './events';\nexport * from './iterators';\nexport * from './lifecycle';\nexport * from './managers';\nexport * from './messenger';\nexport { Appender as AppenderArray, Dr, DrAppender, DrFor, DrForOf, DrForm, DrIf, DrInnerHTML, DrInnerText, DrPre, DrRepeat, DrStripElement, DrTargetAttr, DrTargetElement, DrTargetElementIsElement, DrThis, DrThisProperty, OperatorExecuter, OperatorExecuterAttrRequire } from './operators';\nexport * from './rawsets';\nexport * from './routers';\nexport * from './types';\nexport * from './validators';\nexport * from './components';", "import 'reflect-metadata';\nimport { 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 { 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';\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", "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", "// 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 { 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';\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';\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", "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", "\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 {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';\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}", "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 'reflect-metadata'\nimport { ConstructorType } from '@dooboostore/core/types';\nimport { ValidUtils } from '@dooboostore/core/valid/ValidUtils';\n\n// export type ReflectField = (target: Object|{constructor: ConstructorType<any>, [key: string]: Function}, propertyKey: string | symbol) => void;\nexport 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}", "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 { 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';\nimport { ConvertUtils } from '@dooboostore/core/convert/ConvertUtils';\nimport ToURLSearchParamsParams = ConvertUtils.ToURLSearchParamsParams;\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", "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 'reflect-metadata';\nimport { 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\uB85C \uCCB4\uD06C\uD574\uC11C \uB4E4\uC5B4\uAC00\uC788\uB294\uAC83\uB9CC \uCC98\uB9AC\uB418\uB3C4\uB85D \uB610\uB294 \uC774\uBBF8\uB4E4\uC5B4\uAC00\uC788\uB294\uAC83\uB3C4 \uBEB4\uC57C\uB420\uAC83\uAC19\uC740\uB370.. \uC801\uC6A9\uD558\uAE34\uD588\uC74C..\uC9C0\uCF1C\uBD10\uC57C\uB420\uB4EF.\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 { 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 { 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 { 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/** \uC0AC\uC6A9\uBC95\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\">\uCE74\uB4DC\uC0AC\uBCC4 \uC0AC\uC6A9\uCC98 \uC548\uB0B4 \uD398\uC774\uC9C0 \uC120\uD0DD</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 // // \uBA40\uD2F0\uD50C\uC774 \uC544\uB2D0\uB54C\uC5D0\uB294 \uB9C8\uC9C0\uB9C9 \uC120\uD0DD\uB41C\uAC12\uC73C\uB85C \uCC98\uB9AC\n if (!select.multiple) {\n // \uB0B4\uAC00 \uC120\uD0DD\uD55C\uAC8C \uC788\uC73C\uBA74\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": [
|
|
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": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAgBA,MAAO,cAAQ,CAAC;",
|
|
6
|
+
"names": []
|
|
7
7
|
}
|