@dooboostore/dom-render 1.0.108 → 1.0.109

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.
Files changed (122) hide show
  1. package/README.MD +27 -1451
  2. package/dist/cjs/DomRender.js +41 -26
  3. package/dist/cjs/DomRender.js.map +2 -2
  4. package/dist/cjs/DomRenderProxy.js +12 -5
  5. package/dist/cjs/DomRenderProxy.js.map +2 -2
  6. package/dist/cjs/bundle-entry.js +32 -21
  7. package/dist/cjs/bundle-entry.js.map +2 -2
  8. package/dist/cjs/components/ComponentBase.js +20 -2
  9. package/dist/cjs/components/ComponentBase.js.map +2 -2
  10. package/dist/cjs/components/ComponentRouterBase.js +11 -1
  11. package/dist/cjs/components/ComponentRouterBase.js.map +2 -2
  12. package/dist/cjs/components/choose/Choose.js +4 -0
  13. package/dist/cjs/components/choose/Choose.js.map +2 -2
  14. package/dist/cjs/components/router/RouterOutlet.js +15 -1
  15. package/dist/cjs/components/router/RouterOutlet.js.map +2 -2
  16. package/dist/cjs/components/select/Select.js +20 -6
  17. package/dist/cjs/components/select/Select.js.map +2 -2
  18. package/dist/cjs/components/timer/Timer.js +14 -11
  19. package/dist/cjs/components/timer/Timer.js.map +2 -2
  20. package/dist/cjs/decorators/DomRenderNoProxy.js +2 -1
  21. package/dist/cjs/decorators/DomRenderNoProxy.js.map +2 -2
  22. package/dist/cjs/lifecycle/OnRawSetRendered.js +26 -0
  23. package/dist/cjs/lifecycle/OnRawSetRendered.js.map +7 -0
  24. package/dist/cjs/lifecycle/index.js +1 -0
  25. package/dist/cjs/lifecycle/index.js.map +2 -2
  26. package/dist/cjs/operators/DrTargetElement.js +2 -0
  27. package/dist/cjs/operators/DrTargetElement.js.map +2 -2
  28. package/dist/cjs/operators/OperatorExecuter.js +1 -2
  29. package/dist/cjs/operators/OperatorExecuter.js.map +2 -2
  30. package/dist/cjs/package.json +5 -0
  31. package/dist/cjs/rawsets/RawSet.js +154 -74
  32. package/dist/cjs/rawsets/RawSet.js.map +3 -3
  33. package/dist/cjs/rawsets/Render.js.map +1 -1
  34. package/dist/cjs/routers/Router.js +31 -15
  35. package/dist/cjs/routers/Router.js.map +3 -3
  36. package/dist/esm/DomRender.js +41 -26
  37. package/dist/esm/DomRender.js.map +2 -2
  38. package/dist/esm/DomRenderProxy.js +12 -5
  39. package/dist/esm/DomRenderProxy.js.map +2 -2
  40. package/dist/esm/bundle-entry.js +22 -21
  41. package/dist/esm/bundle-entry.js.map +2 -2
  42. package/dist/esm/components/ComponentBase.js +20 -2
  43. package/dist/esm/components/ComponentBase.js.map +2 -2
  44. package/dist/esm/components/ComponentRouterBase.js +11 -1
  45. package/dist/esm/components/ComponentRouterBase.js.map +2 -2
  46. package/dist/esm/components/choose/Choose.js +4 -0
  47. package/dist/esm/components/choose/Choose.js.map +2 -2
  48. package/dist/esm/components/router/RouterOutlet.js +16 -2
  49. package/dist/esm/components/router/RouterOutlet.js.map +2 -2
  50. package/dist/esm/components/select/Select.js +20 -6
  51. package/dist/esm/components/select/Select.js.map +2 -2
  52. package/dist/esm/components/timer/Timer.js +14 -11
  53. package/dist/esm/components/timer/Timer.js.map +2 -2
  54. package/dist/esm/decorators/DomRenderNoProxy.js +2 -1
  55. package/dist/esm/decorators/DomRenderNoProxy.js.map +2 -2
  56. package/dist/esm/lifecycle/OnRawSetRendered.js +7 -0
  57. package/dist/esm/lifecycle/OnRawSetRendered.js.map +7 -0
  58. package/dist/esm/lifecycle/index.js +1 -0
  59. package/dist/esm/lifecycle/index.js.map +2 -2
  60. package/dist/esm/operators/DrTargetElement.js +2 -0
  61. package/dist/esm/operators/DrTargetElement.js.map +2 -2
  62. package/dist/esm/operators/OperatorExecuter.js +1 -2
  63. package/dist/esm/operators/OperatorExecuter.js.map +2 -2
  64. package/dist/esm/rawsets/RawSet.js +154 -74
  65. package/dist/esm/rawsets/RawSet.js.map +3 -3
  66. package/dist/esm/routers/Router.js +31 -15
  67. package/dist/esm/routers/Router.js.map +3 -3
  68. package/dist/esm-bundle/dooboostore-dom-render.esm.js +12586 -6496
  69. package/dist/esm-bundle/dooboostore-dom-render.esm.js.map +4 -4
  70. package/dist/types/DomRender.d.ts +11 -5
  71. package/dist/types/DomRender.d.ts.map +1 -1
  72. package/dist/types/DomRenderProxy.d.ts.map +1 -1
  73. package/dist/types/bundle-entry.d.ts +5 -2
  74. package/dist/types/bundle-entry.d.ts.map +1 -1
  75. package/dist/types/components/ComponentBase.d.ts +7 -1
  76. package/dist/types/components/ComponentBase.d.ts.map +1 -1
  77. package/dist/types/components/ComponentRouterBase.d.ts +8 -0
  78. package/dist/types/components/ComponentRouterBase.d.ts.map +1 -1
  79. package/dist/types/components/choose/Choose.d.ts.map +1 -1
  80. package/dist/types/components/index.d.ts +2 -1
  81. package/dist/types/components/index.d.ts.map +1 -1
  82. package/dist/types/components/router/RouterOutlet.d.ts +5 -1
  83. package/dist/types/components/router/RouterOutlet.d.ts.map +1 -1
  84. package/dist/types/components/select/Select.d.ts +2 -2
  85. package/dist/types/components/select/Select.d.ts.map +1 -1
  86. package/dist/types/components/timer/Timer.d.ts +5 -3
  87. package/dist/types/components/timer/Timer.d.ts.map +1 -1
  88. package/dist/types/decorators/DomRenderNoProxy.d.ts.map +1 -1
  89. package/dist/types/index.d.ts +1 -0
  90. package/dist/types/lifecycle/OnRawSetRendered.d.ts +10 -0
  91. package/dist/types/lifecycle/OnRawSetRendered.d.ts.map +1 -0
  92. package/dist/types/lifecycle/index.d.ts +1 -0
  93. package/dist/types/lifecycle/index.d.ts.map +1 -1
  94. package/dist/types/operators/DrTargetElement.d.ts.map +1 -1
  95. package/dist/types/operators/OperatorExecuter.d.ts.map +1 -1
  96. package/dist/types/rawsets/RawSet.d.ts +11 -4
  97. package/dist/types/rawsets/RawSet.d.ts.map +1 -1
  98. package/dist/types/rawsets/Render.d.ts +1 -0
  99. package/dist/types/rawsets/Render.d.ts.map +1 -1
  100. package/dist/types/routers/Router.d.ts +2 -3
  101. package/dist/types/routers/Router.d.ts.map +1 -1
  102. package/dist/umd-bundle/dooboostore-dom-render.umd.js +12600 -6529
  103. package/dist/umd-bundle/dooboostore-dom-render.umd.js.map +4 -4
  104. package/package.json +6 -5
  105. package/src/DomRender.ts +62 -34
  106. package/src/DomRenderProxy.ts +20 -8
  107. package/src/bundle-entry.ts +5 -3
  108. package/src/components/ComponentBase.ts +29 -7
  109. package/src/components/ComponentRouterBase.ts +17 -2
  110. package/src/components/choose/Choose.ts +4 -0
  111. package/src/components/router/RouterOutlet.ts +25 -5
  112. package/src/components/select/Select.ts +40 -26
  113. package/src/components/timer/Timer.ts +19 -51
  114. package/src/decorators/DomRenderNoProxy.ts +3 -1
  115. package/src/lifecycle/OnRawSetRendered.ts +15 -0
  116. package/src/lifecycle/index.ts +1 -0
  117. package/src/operators/DrTargetElement.ts +14 -0
  118. package/src/operators/OperatorExecuter.ts +1 -2
  119. package/src/rawsets/RawSet.ts +572 -257
  120. package/src/rawsets/Render.ts +1 -0
  121. package/src/routers/Router.ts +40 -23
  122. package/types.d.ts +68 -20
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/rawsets/Render.ts"],
4
- "sourcesContent": ["import { CreatorMetaData } from './CreatorMetaData';\nimport { Router } from '../routers/Router';\nimport { RawSet } from './RawSet';\n\nexport type Render = {\n rawSet?: RawSet;\n scripts?: { [n: string]: any };\n bindScript?: string;\n renderScript?: string;\n element?: any;\n getElement?: <T extends Element>()=>T;\n attribute?: any;\n creatorMetaData?: CreatorMetaData;\n router?: Router;\n range?: any;\n value?: any;\n currentThis?: any;\n currentThisPath?: any;\n nearThisPath?: string,\n nearThis?: any;\n parentThisPath?: string,\n parentThis?: any,\n rootObject?: any,\n [n: string]: any; // component?: any; //component instance\n}\n"],
4
+ "sourcesContent": ["import { CreatorMetaData } from './CreatorMetaData';\nimport { Router } from '../routers/Router';\nimport { RawSet } from './RawSet';\n\nexport type Render = {\n rawSet?: RawSet;\n scripts?: { [n: string]: any };\n bindScript?: string;\n renderScript?: string;\n element?: any;\n getElement?: <T extends Element>()=>T;\n attribute?: any;\n creatorMetaData?: CreatorMetaData;\n router?: Router;\n range?: any;\n value?: any;\n innerHTML?: string;\n currentThis?: any;\n currentThisPath?: any;\n nearThisPath?: string,\n nearThis?: any;\n parentThisPath?: string,\n parentThis?: any,\n rootObject?: any,\n [n: string]: any; // component?: any; //component instance\n}\n"],
5
5
  "mappings": ";;;;;;;;;;;;;AAAA;AAAA;",
6
6
  "names": []
7
7
  }
@@ -26,6 +26,30 @@ var import_BehaviorSubject = require("@dooboostore/core/message/BehaviorSubject"
26
26
  var import_Expression = require("@dooboostore/core/expression/Expression");
27
27
  const isPopStateCurrentTargetDomrenderRouter = (obj) => obj?.currentTargetName === "domRenderRouter";
28
28
  class Router {
29
+ constructor(config) {
30
+ this._config = config;
31
+ let routeData;
32
+ if (config?.firstUrl) {
33
+ const path = config.firstUrl.split("?");
34
+ routeData = {
35
+ url: config.firstUrl,
36
+ path: path[0],
37
+ searchParams: new URLSearchParams(path[1] ?? ""),
38
+ router: this
39
+ };
40
+ this.behaviorSubject = new import_BehaviorSubject.BehaviorSubject(routeData);
41
+ this.go(config.firstUrl);
42
+ } else {
43
+ routeData = this.getRouteData();
44
+ this.behaviorSubject = new import_BehaviorSubject.BehaviorSubject(routeData);
45
+ }
46
+ this.config.window.addEventListener("popstate", (event) => {
47
+ if (!isPopStateCurrentTargetDomrenderRouter(event.state)) {
48
+ const routeData2 = this.getRouteData();
49
+ this.behaviorSubject.next(routeData2);
50
+ }
51
+ });
52
+ }
29
53
  get observable() {
30
54
  return this.behaviorSubject.asObservable();
31
55
  }
@@ -35,16 +59,6 @@ class Router {
35
59
  get config() {
36
60
  return this._config;
37
61
  }
38
- constructor(config) {
39
- this._config = config;
40
- this.behaviorSubject = new import_BehaviorSubject.BehaviorSubject(this.getRouteData());
41
- this.config.window.addEventListener("popstate", (event) => {
42
- if (!isPopStateCurrentTargetDomrenderRouter(event.state)) {
43
- const routeData = this.getRouteData();
44
- this.behaviorSubject.next(routeData);
45
- }
46
- });
47
- }
48
62
  getSearchFirstParamsObject(defaultValue) {
49
63
  const a = import_ConvertUtils.ConvertUtils.toObject(this.getSearchParams(), { firstValue: true });
50
64
  return Object.assign({}, defaultValue, a);
@@ -52,8 +66,13 @@ class Router {
52
66
  getHashSearchFirstParamsObject() {
53
67
  return import_ConvertUtils.ConvertUtils.toObject(this.getHashSearchParams(), { firstValue: true });
54
68
  }
55
- async attach() {
56
- }
69
+ // async attach(): Promise<void> {
70
+ // // const proxy = getDomRenderProxy(this.config.rootObject)
71
+ // // if (proxy) {
72
+ // // const key = `___${EventManager.ROUTER_VARNAME}`;
73
+ // // await proxy.render(key);
74
+ // // }
75
+ // }
57
76
  testRegexp(regexp) {
58
77
  if (regexp) {
59
78
  const b = RegExp(regexp).test(this.getPathName());
@@ -120,9 +139,6 @@ class Router {
120
139
  } else {
121
140
  this.push(config.path, config.data, config.title);
122
141
  }
123
- if (!this.config.disableAttach) {
124
- await this.attach();
125
- }
126
142
  if (config.scrollToTop !== false) {
127
143
  try {
128
144
  this._config.window?.scrollTo?.(0, 0);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/routers/Router.ts"],
4
- "sourcesContent": ["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"],
5
- "mappings": "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",
6
- "names": ["data"]
4
+ "sourcesContent": ["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, firstUrl?: string,\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 constructor(config: RouterConfig<any>) {\n this._config = config;\n\n let routeData: RouteData;\n if (config?.firstUrl) {\n const path = config.firstUrl.split('?');\n routeData = {\n url: config.firstUrl,\n path: path[0],\n searchParams: new URLSearchParams(path[1]??''),\n router: this,\n }\n this.behaviorSubject = new BehaviorSubject<RouteData>(routeData);\n this.go(config.firstUrl);\n } else {\n routeData = this.getRouteData();\n this.behaviorSubject = new BehaviorSubject<RouteData>(routeData);\n }\n this.config.window.addEventListener('popstate', (event: PopStateEvent) => {\n // domrender\uC5D0\uC11C \uBC1C\uC0DD\uD558\uC9C0 \uC54A\uC740 \uC989 back, previous \uC77C\uB584\uC5D0\uB3C4 \uC774\uBCA4\uD2B8\uAC00\uB3C4\uB85D \uCC98\uB9AC\n if(!isPopStateCurrentTargetDomrenderRouter(event.state)) {\n // console.log('-------');\n const routeData = this.getRouteData();\n this.behaviorSubject.next(routeData);\n }\n })\n }\n\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 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"],
5
+ "mappings": "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",
6
+ "names": ["routeData", "data"]
7
7
  }
@@ -10,13 +10,12 @@ import { RandomUtils } from "@dooboostore/core/random/RandomUtils";
10
10
  let eventManager = null;
11
11
  class DomRender {
12
12
  constructor(parameter, executeConfig) {
13
- const s = DomRender.runSet(parameter);
13
+ const s = DomRender.runSet(parameter, executeConfig);
14
14
  this._config = s.config;
15
15
  this._target = s.target;
16
16
  this._rootObject = s.rootObject;
17
- if (executeConfig && executeConfig?.autoGo) {
18
- this._config.router?.go(executeConfig.autoGo);
19
- }
17
+ this._router = s.config.router;
18
+ this._eventManager = s.config.eventManager;
20
19
  }
21
20
  get rootObject() {
22
21
  return this._rootObject;
@@ -24,13 +23,23 @@ class DomRender {
24
23
  get config() {
25
24
  return this._config;
26
25
  }
26
+ get router() {
27
+ return this._router;
28
+ }
29
+ get eventManager() {
30
+ return this._eventManager;
31
+ }
27
32
  get target() {
28
33
  return this._target;
29
34
  }
30
35
  static run(data) {
31
36
  return DomRender.runSet(data).rootObject;
32
37
  }
33
- static runSet({ rootObject, target, config }) {
38
+ static runSet({
39
+ rootObject,
40
+ target,
41
+ config
42
+ }, executeConfig) {
34
43
  rootObject = typeof rootObject === "function" ? rootObject() : rootObject;
35
44
  let targetObject = rootObject;
36
45
  if ("_DomRender_isProxy" in rootObject) {
@@ -67,8 +76,20 @@ class DomRender {
67
76
  if (typeof CanvasRenderingContext2D !== "undefined" && !targetConfig.proxyExcludeTyps.some((it) => it === CanvasRenderingContext2D)) {
68
77
  targetConfig.proxyExcludeTyps.push(CanvasRenderingContext2D);
69
78
  }
70
- if (typeof HTMLCanvasElement !== "undefined" && !targetConfig.proxyExcludeTyps.some((it) => it === HTMLCanvasElement)) {
71
- targetConfig.proxyExcludeTyps.push(HTMLCanvasElement);
79
+ if (typeof CSSStyleDeclaration !== "undefined" && !targetConfig.proxyExcludeTyps.some((it) => it === CSSStyleDeclaration)) {
80
+ targetConfig.proxyExcludeTyps.push(CSSStyleDeclaration);
81
+ }
82
+ if (typeof Date !== "undefined" && !targetConfig.proxyExcludeTyps.some((it) => it === Date)) {
83
+ targetConfig.proxyExcludeTyps.push(Date);
84
+ }
85
+ if (typeof MutationObserver !== "undefined" && !targetConfig.proxyExcludeTyps.some((it) => it === IntersectionObserver)) {
86
+ targetConfig.proxyExcludeTyps.push(IntersectionObserver);
87
+ }
88
+ if (typeof IntersectionObserver !== "undefined" && !targetConfig.proxyExcludeTyps.some((it) => it === IntersectionObserver)) {
89
+ targetConfig.proxyExcludeTyps.push(IntersectionObserver);
90
+ }
91
+ if (typeof HTMLElement !== "undefined" && !targetConfig.proxyExcludeTyps.some((it) => it === HTMLElement)) {
92
+ targetConfig.proxyExcludeTyps.push(HTMLElement);
72
93
  }
73
94
  if (!targetConfig.proxyExcludeTyps.some((it) => it === RawSet)) {
74
95
  targetConfig.proxyExcludeTyps.push(RawSet);
@@ -85,11 +106,11 @@ class DomRender {
85
106
  if (!targetConfig.router) {
86
107
  let targetRouter;
87
108
  if ("routerType" in config && config?.routerType === "hash") {
88
- targetRouter = new HashRouter({ rootObject: targetObject, window: targetConfig.window });
109
+ targetRouter = new HashRouter({ rootObject: targetObject, window: targetConfig.window, firstUrl: executeConfig?.firstUrl });
89
110
  } else if ("routerType" in config && config?.routerType === "path") {
90
- targetRouter = new PathRouter({ rootObject: targetObject, window: targetConfig.window });
111
+ targetRouter = new PathRouter({ rootObject: targetObject, window: targetConfig.window, firstUrl: executeConfig?.firstUrl });
91
112
  } else if ("routerType" in config && typeof config?.routerType === "function") {
92
- targetRouter = config.routerType(targetObject, targetConfig.window);
113
+ targetRouter = config.routerType(targetObject, targetConfig);
93
114
  } else if ("routerType" in config && typeof config?.routerType === "object") {
94
115
  targetRouter = config.routerType;
95
116
  }
@@ -105,26 +126,20 @@ class DomRender {
105
126
  return { rootObject: targetObject, config: targetConfig, target };
106
127
  }
107
128
  static createComponent(param) {
108
- const component = RawSet.createComponentTargetElement(
109
- {
110
- name: param.tagName ?? (typeof param.type === "function" ? param.type.name : param.type.constructor.name),
111
- objFactory: (e, o, r2, counstructorParam) => {
112
- return typeof param.type === "function" ? new param.type(...counstructorParam) : param.type;
113
- },
114
- noStrip: param.noStrip,
115
- template: param.template ?? "",
116
- styles: Array.isArray(param.styles) ? param.styles : param.styles ? [param.styles] : void 0
117
- }
118
- );
129
+ const component = RawSet.createComponentTargetElement({
130
+ name: param.tagName ?? (typeof param.type === "function" ? param.type.name : param.type.constructor.name),
131
+ objFactory: (e, o, r2, counstructorParam) => {
132
+ return typeof param.type === "function" ? new param.type(...counstructorParam) : param.type;
133
+ },
134
+ noStrip: param.noStrip,
135
+ template: param.template ?? "",
136
+ styles: Array.isArray(param.styles) ? param.styles : param.styles ? [param.styles] : void 0
137
+ });
119
138
  return component;
120
139
  }
121
140
  // ?? 언제 쓰는거지?? 훔..
122
141
  static createAttribute(attrName, getThisObj, factory) {
123
- const targetAttribute = RawSet.createComponentTargetAttribute(
124
- attrName,
125
- getThisObj,
126
- factory
127
- );
142
+ const targetAttribute = RawSet.createComponentTargetAttribute(attrName, getThisObj, factory);
128
143
  return targetAttribute;
129
144
  }
130
145
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/DomRender.ts"],
4
- "sourcesContent": ["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"],
5
- "mappings": "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",
4
+ "sourcesContent": ["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, targetConfig: DomRenderConfig) => 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 type ExecuteConfig = { firstUrl?: string };\n\nexport class DomRender<T extends object = any> {\n private _config: DomRenderConfig;\n private _target: Element | null | undefined;\n private _rootObject: T;\n private _router: Router;\n private _eventManager: EventManager;\n\n constructor(parameter: DomRenderRunParameter<T>, executeConfig?: ExecuteConfig) {\n const s = DomRender.runSet(parameter,executeConfig);\n this._config = s.config;\n this._target = s.target;\n this._rootObject = s.rootObject;\n this._router = s.config.router;\n this._eventManager = s.config.eventManager;\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 public get router(): Router {\n return this._router;\n }\n\n public get eventManager(): EventManager {\n return this._eventManager;\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>({\n rootObject,\n target,\n config\n }: DomRenderRunParameter<T>, executeConfig?: ExecuteConfig): { 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 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 CSSStyleDeclaration !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === CSSStyleDeclaration) ) {\n targetConfig.proxyExcludeTyps.push(CSSStyleDeclaration);\n }\n if ( typeof Date !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === Date) ) {\n targetConfig.proxyExcludeTyps.push(Date);\n }\n if ( typeof MutationObserver !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === IntersectionObserver) ) {\n targetConfig.proxyExcludeTyps.push(IntersectionObserver);\n }\n if ( typeof IntersectionObserver !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === IntersectionObserver) ) {\n targetConfig.proxyExcludeTyps.push(IntersectionObserver);\n }\n if (typeof HTMLElement !== 'undefined' && !targetConfig.proxyExcludeTyps.some(it => it === HTMLElement)) {\n targetConfig.proxyExcludeTyps.push(HTMLElement);\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, firstUrl: executeConfig?.firstUrl });\n } else if ('routerType' in config && config?.routerType === 'path') {\n targetRouter = new PathRouter({ rootObject: targetObject, window: targetConfig.window, firstUrl: executeConfig?.firstUrl });\n } else if ('routerType' in config && typeof config?.routerType === 'function') {\n targetRouter = config.routerType(targetObject, targetConfig);\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 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 return component;\n }\n\n // ?? \uC5B8\uC81C \uC4F0\uB294\uAC70\uC9C0?? \uD6D4..\n public static createAttribute(\n attrName: string,\n getThisObj: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => any,\n factory: (element: Element, attrValue: string, obj: any, rawSet: RawSet) => DocumentFragment\n ) {\n const targetAttribute = RawSet.createComponentTargetAttribute(attrName, getThisObj, factory);\n return targetAttribute;\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -18,6 +18,7 @@ import { isOnChildRenderedByProperty } from "./lifecycle/OnChildRenderedByProper
18
18
  import { ObjectUtils } from "@dooboostore/core/object/ObjectUtils";
19
19
  import { ValidUtils } from "@dooboostore/core/valid/ValidUtils";
20
20
  import { isOnProxyDomRender } from "./lifecycle/OnProxyDomRender.js";
21
+ import { isOnRawSetRendered } from "./lifecycle/OnRawSetRendered.js";
21
22
  const excludeGetSetPropertys = ["onBeforeReturnGet", "onBeforeReturnSet", "__domrender_components", "__render", "_DomRender_isFinal", "_domRender_ref", "_rawSets", "_domRender_proxy", "_targets", "_DomRender_origin", "_DomRender_ref", "_DomRender_proxy"];
22
23
  const isWrapProxyDomRenderProxy = (obj) => {
23
24
  return obj && typeof obj === "object" && "_DomRender_isProxy" in obj;
@@ -59,7 +60,7 @@ class DomRenderProxy {
59
60
  return DomRenderFinalProxy.final(obj);
60
61
  }
61
62
  static isFinal(obj) {
62
- return DomRenderFinalProxy.isFinal(obj);
63
+ return ValidUtils.isNull(obj) || DomRenderFinalProxy.isFinal(obj);
63
64
  }
64
65
  run(objProxy) {
65
66
  this._domRender_proxy = objProxy;
@@ -155,6 +156,7 @@ class DomRenderProxy {
155
156
  it.getUsingTriggerVariables(this._domRender_config).forEach((path) => {
156
157
  this.addRawSet(path, it);
157
158
  });
159
+ let renderResult;
158
160
  if (it.isConnected) {
159
161
  const targetAttrMap = it.point.node?.getAttribute?.(EventManager.normalAttrMapAttrName);
160
162
  if (it.detect?.action) {
@@ -174,13 +176,18 @@ class DomRenderProxy {
174
176
  });
175
177
  } else {
176
178
  const rawSets2 = await it.render(this._domRender_proxy, this._domRender_config);
177
- if (rawSets2 && rawSets2.length > 0) {
178
- await this.render(rawSets2);
179
+ renderResult = rawSets2;
180
+ if (rawSets2 && rawSets2.raws.length > 0) {
181
+ await this.render(rawSets2.raws);
179
182
  }
180
183
  }
181
184
  } else {
182
185
  removeRawSets.push(it);
183
186
  }
187
+ const t = it.findNearThis(this._domRender_proxy);
188
+ if (isOnRawSetRendered(t)) {
189
+ await t.onRawSetRendered(it, { path: fullPathStr, renderResult });
190
+ }
184
191
  }
185
192
  if (removeRawSets.length > 0) {
186
193
  this.removeRawSet(...removeRawSets);
@@ -225,7 +232,7 @@ class DomRenderProxy {
225
232
  const firstTargets = this._rawSets.get(firstPathStr);
226
233
  const firstTargetDictionary = [];
227
234
  firstTargets?.forEach((it) => {
228
- const type = it.point.start.getAttribute?.("type");
235
+ const type = it.point.start?.getAttribute?.("type");
229
236
  if (type === RawSetOperatorType.DR_THIS_PROPERTY) {
230
237
  firstTargetDictionary.push(it);
231
238
  }
@@ -382,7 +389,7 @@ class DomRenderProxy {
382
389
  const isFinal = isObject && DomRenderProxy.isFinal(obj);
383
390
  const isFrozen = Object.isFrozen(obj);
384
391
  const isShield = obj instanceof Shield;
385
- if (isNoProxy || isExclude || ValidUtils.isNullOrUndefined(obj) || !isObject || isFinal || isFrozen || isShield) {
392
+ if (obj === void 0 || obj === null || isNoProxy || isExclude || ValidUtils.isNullOrUndefined(obj) || !isObject || isFinal || isFrozen || isShield) {
386
393
  return obj;
387
394
  }
388
395
  } catch (e) {