@dooboostore/dom-render 1.0.109 → 1.0.110

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 (176) hide show
  1. package/dist/cjs/DomRenderProxy.js +122 -57
  2. package/dist/cjs/DomRenderProxy.js.map +2 -2
  3. package/dist/cjs/components/ComponentBase.js +4 -4
  4. package/dist/cjs/components/ComponentBase.js.map +2 -2
  5. package/dist/cjs/components/appender/Appender.js +0 -3
  6. package/dist/cjs/components/appender/Appender.js.map +2 -2
  7. package/dist/cjs/components/checkbox/CheckBox.js.map +2 -2
  8. package/dist/cjs/components/choose/Choose.js +3 -1
  9. package/dist/cjs/components/choose/Choose.js.map +2 -2
  10. package/dist/cjs/components/details/Details.js +2 -2
  11. package/dist/cjs/components/details/Details.js.map +2 -2
  12. package/dist/cjs/components/forOf/ForOf.js.map +2 -2
  13. package/dist/cjs/components/if/If.js +2 -2
  14. package/dist/cjs/components/if/If.js.map +2 -2
  15. package/dist/cjs/components/input/Input.js +2 -2
  16. package/dist/cjs/components/input/Input.js.map +2 -2
  17. package/dist/cjs/components/promise/PromiseSwitch.js +6 -6
  18. package/dist/cjs/components/promise/PromiseSwitch.js.map +2 -2
  19. package/dist/cjs/components/radio/Radio.js.map +2 -2
  20. package/dist/cjs/components/router/Route.js +2 -2
  21. package/dist/cjs/components/router/Route.js.map +2 -2
  22. package/dist/cjs/components/router/RouterOutlet.js +2 -2
  23. package/dist/cjs/components/router/RouterOutlet.js.map +2 -2
  24. package/dist/cjs/components/select/Select.js +6 -6
  25. package/dist/cjs/components/select/Select.js.map +2 -2
  26. package/dist/cjs/components/this/This.js +2 -2
  27. package/dist/cjs/components/this/This.js.map +2 -2
  28. package/dist/cjs/components/timer/Timer.js +2 -3
  29. package/dist/cjs/components/timer/Timer.js.map +2 -2
  30. package/dist/cjs/events/EventManager.js +9 -2
  31. package/dist/cjs/events/EventManager.js.map +2 -2
  32. package/dist/cjs/lifecycle/OnInitRender.js.map +1 -1
  33. package/dist/cjs/operators/DrForOf.js +24 -11
  34. package/dist/cjs/operators/DrForOf.js.map +2 -2
  35. package/dist/cjs/operators/DrIf.js +1 -2
  36. package/dist/cjs/operators/DrIf.js.map +2 -2
  37. package/dist/cjs/operators/DrInnerText.js +2 -2
  38. package/dist/cjs/operators/DrInnerText.js.map +2 -2
  39. package/dist/cjs/rawsets/RawSet.js +243 -46
  40. package/dist/cjs/rawsets/RawSet.js.map +3 -3
  41. package/dist/cjs/routers/PathRouter.js +13 -7
  42. package/dist/cjs/routers/PathRouter.js.map +2 -2
  43. package/dist/cjs/routers/Router.js +51 -27
  44. package/dist/cjs/routers/Router.js.map +2 -2
  45. package/dist/esm/DomRenderProxy.js +122 -57
  46. package/dist/esm/DomRenderProxy.js.map +2 -2
  47. package/dist/esm/components/ComponentBase.js +4 -4
  48. package/dist/esm/components/ComponentBase.js.map +2 -2
  49. package/dist/esm/components/appender/Appender.js +0 -3
  50. package/dist/esm/components/appender/Appender.js.map +2 -2
  51. package/dist/esm/components/checkbox/CheckBox.js.map +2 -2
  52. package/dist/esm/components/choose/Choose.js +3 -1
  53. package/dist/esm/components/choose/Choose.js.map +2 -2
  54. package/dist/esm/components/details/Details.js +2 -2
  55. package/dist/esm/components/details/Details.js.map +2 -2
  56. package/dist/esm/components/forOf/ForOf.js.map +2 -2
  57. package/dist/esm/components/if/If.js +2 -2
  58. package/dist/esm/components/if/If.js.map +2 -2
  59. package/dist/esm/components/input/Input.js +2 -2
  60. package/dist/esm/components/input/Input.js.map +2 -2
  61. package/dist/esm/components/promise/PromiseSwitch.js +6 -6
  62. package/dist/esm/components/promise/PromiseSwitch.js.map +2 -2
  63. package/dist/esm/components/radio/Radio.js.map +2 -2
  64. package/dist/esm/components/router/Route.js +2 -2
  65. package/dist/esm/components/router/Route.js.map +2 -2
  66. package/dist/esm/components/router/RouterOutlet.js +2 -2
  67. package/dist/esm/components/router/RouterOutlet.js.map +2 -2
  68. package/dist/esm/components/select/Select.js +6 -6
  69. package/dist/esm/components/select/Select.js.map +2 -2
  70. package/dist/esm/components/this/This.js +2 -2
  71. package/dist/esm/components/this/This.js.map +2 -2
  72. package/dist/esm/components/timer/Timer.js +2 -3
  73. package/dist/esm/components/timer/Timer.js.map +2 -2
  74. package/dist/esm/events/EventManager.js +9 -2
  75. package/dist/esm/events/EventManager.js.map +2 -2
  76. package/dist/esm/lifecycle/OnInitRender.js.map +1 -1
  77. package/dist/esm/operators/DrForOf.js +24 -11
  78. package/dist/esm/operators/DrForOf.js.map +2 -2
  79. package/dist/esm/operators/DrIf.js +1 -2
  80. package/dist/esm/operators/DrIf.js.map +2 -2
  81. package/dist/esm/operators/DrInnerText.js +2 -2
  82. package/dist/esm/operators/DrInnerText.js.map +2 -2
  83. package/dist/esm/rawsets/RawSet.js +243 -46
  84. package/dist/esm/rawsets/RawSet.js.map +3 -3
  85. package/dist/esm/routers/PathRouter.js +13 -7
  86. package/dist/esm/routers/PathRouter.js.map +2 -2
  87. package/dist/esm/routers/Router.js +51 -27
  88. package/dist/esm/routers/Router.js.map +2 -2
  89. package/dist/esm-bundle/dooboostore-dom-render.esm.js +1850 -319
  90. package/dist/esm-bundle/dooboostore-dom-render.esm.js.map +4 -4
  91. package/dist/types/DomRenderProxy.d.ts +2 -2
  92. package/dist/types/DomRenderProxy.d.ts.map +1 -1
  93. package/dist/types/components/ComponentBase.d.ts +1 -1
  94. package/dist/types/components/ComponentBase.d.ts.map +1 -1
  95. package/dist/types/components/appender/Appender.d.ts +0 -2
  96. package/dist/types/components/appender/Appender.d.ts.map +1 -1
  97. package/dist/types/components/checkbox/CheckBox.d.ts.map +1 -1
  98. package/dist/types/components/choose/Choose.d.ts.map +1 -1
  99. package/dist/types/components/details/Details.d.ts +1 -1
  100. package/dist/types/components/details/Details.d.ts.map +1 -1
  101. package/dist/types/components/forOf/ForOf.d.ts.map +1 -1
  102. package/dist/types/components/if/If.d.ts +1 -1
  103. package/dist/types/components/if/If.d.ts.map +1 -1
  104. package/dist/types/components/index.d.ts.map +1 -1
  105. package/dist/types/components/input/Input.d.ts +1 -1
  106. package/dist/types/components/input/Input.d.ts.map +1 -1
  107. package/dist/types/components/promise/PromiseSwitch.d.ts +1 -1
  108. package/dist/types/components/promise/PromiseSwitch.d.ts.map +1 -1
  109. package/dist/types/components/radio/Radio.d.ts.map +1 -1
  110. package/dist/types/components/router/Route.d.ts +1 -1
  111. package/dist/types/components/router/Route.d.ts.map +1 -1
  112. package/dist/types/components/router/RouterOutlet.d.ts +1 -1
  113. package/dist/types/components/router/RouterOutlet.d.ts.map +1 -1
  114. package/dist/types/components/select/Select.d.ts +3 -3
  115. package/dist/types/components/select/Select.d.ts.map +1 -1
  116. package/dist/types/components/this/This.d.ts +1 -1
  117. package/dist/types/components/this/This.d.ts.map +1 -1
  118. package/dist/types/components/timer/Timer.d.ts +1 -1
  119. package/dist/types/components/timer/Timer.d.ts.map +1 -1
  120. package/dist/types/events/EventManager.d.ts +8 -0
  121. package/dist/types/events/EventManager.d.ts.map +1 -1
  122. package/dist/types/index.d.ts +0 -101
  123. package/dist/types/lifecycle/OnInitRender.d.ts +1 -1
  124. package/dist/types/lifecycle/OnInitRender.d.ts.map +1 -1
  125. package/dist/types/operators/DrForOf.d.ts.map +1 -1
  126. package/dist/types/operators/DrInnerText.d.ts.map +1 -1
  127. package/dist/types/rawsets/RawSet.d.ts +6 -5
  128. package/dist/types/rawsets/RawSet.d.ts.map +1 -1
  129. package/dist/types/routers/PathRouter.d.ts.map +1 -1
  130. package/dist/types/routers/Router.d.ts +9 -11
  131. package/dist/types/routers/Router.d.ts.map +1 -1
  132. package/dist/umd-bundle/dooboostore-dom-render.umd.js +1850 -319
  133. package/dist/umd-bundle/dooboostore-dom-render.umd.js.map +4 -4
  134. package/package.json +7 -7
  135. package/src/DomRenderProxy.ts +258 -137
  136. package/src/components/ComponentBase.ts +4 -4
  137. package/src/components/appender/Appender.ts +0 -5
  138. package/src/components/checkbox/CheckBox.ts +22 -25
  139. package/src/components/choose/Choose.ts +16 -19
  140. package/src/components/details/Details.ts +40 -43
  141. package/src/components/forOf/ForOf.ts +6 -9
  142. package/src/components/if/If.ts +9 -11
  143. package/src/components/input/Input.ts +16 -22
  144. package/src/components/promise/PromiseSwitch.ts +67 -66
  145. package/src/components/radio/Radio.ts +23 -28
  146. package/src/components/router/Route.ts +10 -13
  147. package/src/components/router/RouterOutlet.ts +5 -4
  148. package/src/components/select/Select.ts +7 -7
  149. package/src/components/this/This.ts +13 -12
  150. package/src/components/timer/Timer.ts +12 -16
  151. package/src/events/EventManager.ts +15 -4
  152. package/src/lifecycle/OnInitRender.ts +1 -1
  153. package/src/node_modules/.bin/acorn +17 -0
  154. package/src/node_modules/.bin/browserslist +17 -0
  155. package/src/node_modules/.bin/eslint +17 -0
  156. package/src/node_modules/.bin/sbf +17 -0
  157. package/src/node_modules/.bin/ts-node +17 -0
  158. package/src/node_modules/.bin/ts-node-cwd +17 -0
  159. package/src/node_modules/.bin/ts-node-dev +17 -0
  160. package/src/node_modules/.bin/ts-node-esm +17 -0
  161. package/src/node_modules/.bin/ts-node-script +17 -0
  162. package/src/node_modules/.bin/ts-node-transpile-only +17 -0
  163. package/src/node_modules/.bin/ts-script +17 -0
  164. package/src/node_modules/.bin/tsc +17 -0
  165. package/src/node_modules/.bin/tsnd +17 -0
  166. package/src/node_modules/.bin/tsserver +17 -0
  167. package/src/node_modules/.bin/webpack +17 -0
  168. package/src/node_modules/.bin/webpack-cli +17 -0
  169. package/src/node_modules/.bin/webpack-dev-server +17 -0
  170. package/src/operators/DrForOf.ts +25 -10
  171. package/src/operators/DrIf.ts +1 -1
  172. package/src/operators/DrInnerText.ts +2 -1
  173. package/src/rawsets/RawSet.ts +387 -288
  174. package/src/routers/PathRouter.ts +14 -7
  175. package/src/routers/Router.ts +77 -48
  176. package/types.d.ts +0 -2873
@@ -26,7 +26,10 @@ class PathRouter extends import_Router.Router {
26
26
  super(config);
27
27
  }
28
28
  getSearchParams(data) {
29
- const searchParams = new URL(this.config.window.document.location.href).searchParams;
29
+ if (!this.config.window.document?.location?.href) {
30
+ return new URLSearchParams();
31
+ }
32
+ const searchParams = new URL(this.config.window.document.location?.href).searchParams;
30
33
  data?.delete?.forEach((it) => {
31
34
  searchParams.delete(it);
32
35
  });
@@ -48,7 +51,7 @@ class PathRouter extends import_Router.Router {
48
51
  pushDeleteHashSearchParam(name, data, title) {
49
52
  const s = this.getHashSearchParams({ delete: [name] });
50
53
  const size = Array.from(s.entries()).length;
51
- const href = `${this.config.window.location.pathname}${this.config.window.location.search}${size > 0 ? "#" + s.toString() : ""}`;
54
+ const href = `${this.config.window.location?.pathname ?? "/"}${this.config.window.location?.search}${size > 0 ? "#" + s.toString() : ""}`;
52
55
  super.pushState(data, title, href);
53
56
  }
54
57
  pushAddSearchParam(params, data, title) {
@@ -62,7 +65,7 @@ class PathRouter extends import_Router.Router {
62
65
  replaceDeleteHashSearchParam(name, data, title) {
63
66
  const s = this.getHashSearchParams({ delete: Array.isArray(name) ? name : [name] });
64
67
  const size = Array.from(s.entries()).length;
65
- const href = `${this.config.window.location.pathname}${this.config.window.location.search}${size > 0 ? "#" + s.toString() : ""}`;
68
+ const href = `${this.config.window.location?.pathname ?? "/"}${this.config.window.location?.search}${size > 0 ? "#" + s.toString() : ""}`;
66
69
  super.replaceState(data, title, href);
67
70
  }
68
71
  replaceAddSearchParam(params, data, title) {
@@ -70,17 +73,20 @@ class PathRouter extends import_Router.Router {
70
73
  this.replace({ searchParams: s }, data, title);
71
74
  }
72
75
  getUrl() {
73
- const url = new URL(this.config.window.document.location.href);
76
+ if (!this.config.window.document?.location?.href) {
77
+ return "/";
78
+ }
79
+ const url = new URL(this.config.window.document.location?.href);
74
80
  return url.pathname + url.search;
75
81
  }
76
82
  getHref() {
77
- return this.config.window.location.href;
83
+ return this.config.window.location?.href ?? "/";
78
84
  }
79
85
  getPathName() {
80
- return this.config.window.location.pathname;
86
+ return this.config.window.location?.pathname ?? "/";
81
87
  }
82
88
  getHashSearchParams(data) {
83
- const searchParams = new URLSearchParams(this.config.window.location.hash.slice(1));
89
+ const searchParams = new URLSearchParams(this.config.window.location?.hash.slice(1) ?? "");
84
90
  data?.delete?.forEach((it) => {
85
91
  searchParams.delete(it);
86
92
  });
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/routers/PathRouter.ts"],
4
- "sourcesContent": ["import { ChangeStateResult, RouteAction, Router, RouterConfig } from './Router';\n\nexport class PathRouter extends Router {\n constructor(config: RouterConfig) {\n super(config);\n }\n\n getSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams {\n const searchParams = (new URL(this.config.window.document.location.href)).searchParams;\n data?.delete?.forEach(it => {\n searchParams.delete(it);\n })\n\n data?.append?.forEach(it => {\n searchParams.append(it[0], it[1]);\n })\n return searchParams;\n\n }\n\n push(path: RouteAction, data?: any, title: string = ''): ChangeStateResult {\n return super.pushState(data, title, this.toUrl(path));\n }\n\n replace(path: RouteAction, data?: any, title: string = ''): ChangeStateResult {\n return super.replaceState(data, title, this.toUrl(path));\n }\n\n pushDeleteSearchParam(name: string, data?: any, title?: string): void {\n const s = this.getSearchParams({delete: [name]});\n this.push({searchParams: s}, data, title);\n }\n\n pushDeleteHashSearchParam(name: string, data?: any, title?: string) {\n const s = this.getHashSearchParams({delete: [name]});\n const size = Array.from(s.entries()).length;\n const href = `${this.config.window.location.pathname}${this.config.window.location.search}${size > 0 ? '#' + s.toString() : ''}`;\n super.pushState(data, title, href);\n }\n\n pushAddSearchParam(params:[[string, string]], data?: any, title?: string): void {\n const s = this.getSearchParams({append: params});\n this.push({searchParams: s}, data, title);\n }\n replaceDeleteSearchParam(name: string | string[], data?: any, title?: string): void {\n const s = this.getSearchParams({delete: Array.isArray(name) ? name : [name]});\n this.replace({searchParams: s}, data, title);\n }\n\n replaceDeleteHashSearchParam(name: string | string[], data?: any, title?: string) {\n const s = this.getHashSearchParams({delete: Array.isArray(name) ? name : [name]});\n const size = Array.from(s.entries()).length;\n const href = `${this.config.window.location.pathname}${this.config.window.location.search}${size > 0 ? '#' + s.toString() : ''}`;\n super.replaceState(data, title, href);\n }\n\n replaceAddSearchParam(params:[[string, string]], data?: any, title?: string): void {\n const s = this.getSearchParams({append: params});\n this.replace({searchParams: s}, data, title);\n }\n\n\n getUrl(): string {\n const url = new URL(this.config.window.document.location.href);\n return url.pathname + url.search;\n }\n\n getHref(): string {\n return this.config.window.location.href;\n }\n\n getPathName(): string {\n return this.config.window.location.pathname;\n }\n\n getHashSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams {\n // http://local.com/#wow=222&wow=bb&z=2\n const searchParams = new URLSearchParams(this.config.window.location.hash.slice(1));\n\n data?.delete?.forEach(it => {\n searchParams.delete(it);\n })\n\n data?.append?.forEach(it => {\n searchParams.append(it[0], it[1]);\n })\n return searchParams;\n\n // return undefined;\n }\n\n\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { ChangeStateResult, RouteAction, Router, RouterConfig } from './Router';\n\nexport class PathRouter extends Router {\n constructor(config: RouterConfig) {\n super(config);\n }\n\n getSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams {\n if (!this.config.window.document?.location?.href) {\n return new URLSearchParams();\n }\n\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 if (!this.config.window.document?.location?.href) {\n return '/';\n }\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"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -17,14 +17,12 @@ var __copyProps = (to, from, except, desc) => {
17
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
18
  var Router_exports = {};
19
19
  __export(Router_exports, {
20
- Router: () => Router,
21
- isPopStateCurrentTargetDomrenderRouter: () => isPopStateCurrentTargetDomrenderRouter
20
+ Router: () => Router
22
21
  });
23
22
  module.exports = __toCommonJS(Router_exports);
24
23
  var import_ConvertUtils = require("@dooboostore/core/convert/ConvertUtils");
25
24
  var import_BehaviorSubject = require("@dooboostore/core/message/BehaviorSubject");
26
25
  var import_Expression = require("@dooboostore/core/expression/Expression");
27
- const isPopStateCurrentTargetDomrenderRouter = (obj) => obj?.currentTargetName === "domRenderRouter";
28
26
  class Router {
29
27
  constructor(config) {
30
28
  this._config = config;
@@ -35,19 +33,18 @@ class Router {
35
33
  url: config.firstUrl,
36
34
  path: path[0],
37
35
  searchParams: new URLSearchParams(path[1] ?? ""),
38
- router: this
36
+ router: this,
37
+ triggerPoint: "end"
39
38
  };
40
39
  this.behaviorSubject = new import_BehaviorSubject.BehaviorSubject(routeData);
41
40
  this.go(config.firstUrl);
42
41
  } else {
43
- routeData = this.getRouteData();
42
+ routeData = { ...this.getRouteData(), triggerPoint: "end" };
44
43
  this.behaviorSubject = new import_BehaviorSubject.BehaviorSubject(routeData);
45
44
  }
46
45
  this.config.window.addEventListener("popstate", (event) => {
47
- if (!isPopStateCurrentTargetDomrenderRouter(event.state)) {
48
- const routeData2 = this.getRouteData();
49
- this.behaviorSubject.next(routeData2);
50
- }
46
+ const routeData2 = { ...this.getRouteData(), triggerPoint: "end" };
47
+ this.behaviorSubject.next(routeData2);
51
48
  });
52
49
  }
53
50
  get observable() {
@@ -89,9 +86,30 @@ class Router {
89
86
  }
90
87
  }
91
88
  getRouteData(config) {
89
+ let path = "";
90
+ let url = "";
91
+ if (config?.pathOrUrl) {
92
+ let isUrl = false;
93
+ try {
94
+ new URL(config.pathOrUrl);
95
+ isUrl = true;
96
+ } catch {
97
+ isUrl = false;
98
+ }
99
+ if (isUrl) {
100
+ const u = new URL(config.pathOrUrl);
101
+ path = u.pathname;
102
+ url = u.pathname + u.search;
103
+ } else {
104
+ path = config.pathOrUrl.split("?")[0];
105
+ }
106
+ } else {
107
+ path = this.getPathName();
108
+ url = this.getUrl();
109
+ }
92
110
  const newVar = {
93
- path: this.getPathName(),
94
- url: this.getUrl(),
111
+ path,
112
+ url,
95
113
  searchParams: this.getSearchParams()
96
114
  };
97
115
  const data = this.getData();
@@ -105,32 +123,40 @@ class Router {
105
123
  }
106
124
  }
107
125
  newVar.router = this;
108
- newVar.currentTarget = config?.currentTarget;
109
126
  return Object.freeze(newVar);
110
127
  }
111
128
  pushState(data, title, path) {
112
- this.config.window.history.pushState(data, title ?? "", path);
113
- this.behaviorSubject.next(this.getRouteData({ currentTarget: { currentTargetName: "domRenderRouter" } }));
129
+ this.behaviorSubject.next({ ...this.getRouteData({ pathOrUrl: path }), triggerPoint: "start" });
130
+ this.config.window.history?.pushState(data, title ?? "", path);
131
+ this.behaviorSubject.next({ ...this.getRouteData({ pathOrUrl: path }), triggerPoint: "end" });
114
132
  return { data };
115
133
  }
116
134
  replaceState(data, title, path) {
117
- this.config.window.history.replaceState(data, title ?? "", path);
118
- this.behaviorSubject.next(this.getRouteData({ currentTarget: { currentTargetName: "domRenderRouter" } }));
135
+ this.behaviorSubject.next({ ...this.getRouteData({ pathOrUrl: path }), triggerPoint: "start" });
136
+ this.config.window.history?.replaceState(data, title ?? "", path);
137
+ this.behaviorSubject.next({ ...this.getRouteData({ pathOrUrl: path }), triggerPoint: "end" });
119
138
  return { data };
120
139
  }
121
- dispatchPopStateEvent(data) {
122
- this.config.window.dispatchEvent(new PopStateEvent("popstate", { state: { ...data, currentTargetName: "domRenderRouter" } }));
123
- }
124
- reload(data) {
125
- this.config.window.dispatchEvent(new PopStateEvent("popstate", { state: data }));
126
- }
127
140
  getData() {
128
- return this.config.window.history.state;
141
+ return this.config.window.history?.state;
129
142
  }
130
143
  getPathData(urlExpression, currentUrl = this.getPathName()) {
131
144
  return import_Expression.Expression.Path.pathNameData(currentUrl, urlExpression);
132
145
  }
133
- async go(config) {
146
+ back() {
147
+ this.behaviorSubject.next({ ...this.getRouteData(), triggerPoint: "start" });
148
+ this.config.window.history.back();
149
+ }
150
+ forward() {
151
+ this.behaviorSubject.next({ ...this.getRouteData(), triggerPoint: "start" });
152
+ this.config.window.history?.forward();
153
+ }
154
+ go(config) {
155
+ if (typeof config === "number") {
156
+ this.behaviorSubject.next({ ...this.getRouteData(), triggerPoint: "start" });
157
+ this.config.window.history?.go(config);
158
+ return;
159
+ }
134
160
  if (typeof config === "string") {
135
161
  config = { path: config };
136
162
  }
@@ -145,11 +171,9 @@ class Router {
145
171
  } catch (e) {
146
172
  }
147
173
  }
148
- if (!config.disabledPopEvent) {
149
- this.dispatchPopStateEvent(config?.data);
150
- }
151
174
  }
152
175
  toUrl(data) {
176
+ console.log("toUrl", data);
153
177
  let targetPath;
154
178
  if (typeof data === "string") {
155
179
  targetPath = data;
@@ -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, 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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",
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}\n\nexport type RouterConfig<T = any> = { rootObject?: T, window: Window, firstUrl?: string};\nexport type ChangeStateResult = {data?: any}\nexport type RouteAction = string | { path?: string, searchParams?: ToURLSearchParamsParams };\n\ntype RouterEventType = RouteData & { triggerPoint: 'start' | 'end' };\n\nexport abstract class Router<T = any> {\n private behaviorSubject: BehaviorSubject<RouterEventType>;\n private _config: RouterConfig<T>;\n\n constructor(config: RouterConfig<any>) {\n this._config = config;\n\n let routeData: RouterEventType;\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 triggerPoint: 'end'\n }\n this.behaviorSubject = new BehaviorSubject<RouterEventType>(routeData);\n this.go(config.firstUrl);\n } else {\n routeData = {...this.getRouteData(), triggerPoint: 'end'};\n this.behaviorSubject = new BehaviorSubject<RouterEventType>(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: RouterEventType = {...this.getRouteData(), triggerPoint: 'end'};\n this.behaviorSubject.next(routeData);\n // }\n })\n }\n\n\n get observable(): Observable<RouterEventType> {\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?: {pathOrUrl?: string, urlExpression?: string}): RouteData {\n\n let path = '';\n let url ='';\n if (config?.pathOrUrl) {\n let isUrl = false;\n try {\n new URL(config.pathOrUrl);\n isUrl = true;\n } catch {\n isUrl = false;\n }\n if(isUrl){\n const u = new URL(config.pathOrUrl);\n path = u.pathname;\n url = u.pathname + u.search;\n } else {\n path = config.pathOrUrl.split('?')[0];\n }\n } else {\n path = this.getPathName();\n url = this.getUrl();\n }\n const newVar = {\n path: path,\n url: url,\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.behaviorSubject.next({ ...this.getRouteData({pathOrUrl:path}), triggerPoint: 'start' });\n this.config.window.history?.pushState(data, title ?? '', path);\n this.behaviorSubject.next({ ...this.getRouteData({pathOrUrl:path}), triggerPoint: 'end' });\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.behaviorSubject.next({ ...this.getRouteData({pathOrUrl:path}), triggerPoint: 'start' });\n this.config.window.history?.replaceState(data, title ?? '', path);\n this.behaviorSubject.next({ ...this.getRouteData({pathOrUrl:path}), triggerPoint: 'end' });\n return {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 back(): void {\n this.behaviorSubject.next({...this.getRouteData(),triggerPoint:'start'});\n this.config.window.history.back();\n //en\uBD80\uBD84\uC740 constructo\uC758 this.config.window.addEventListener('popstate' \uC5D0\uC11C \uBC1B\uC544\uC11C \uCC98\uB9AC\uB41C\uB2E4 \uD638\uCD9C\uB41C\uB2E4.\n }\n\n forward(): void {\n this.behaviorSubject.next({...this.getRouteData(),triggerPoint:'start'});\n this.config.window.history?.forward();\n //end\uBD80\uBD84\uC740 constructor\uC758 this.config.window.addEventListener('popstate' \uC5D0\uC11C \uBC1B\uC544\uC11C \uCC98\uB9AC\uB41C\uB2E4 \uD638\uCD9C\uB41C\uB2E4.\n }\n\n go(i: number): void;\n async go(config: string | { path: RouteAction, data?: any, replace?: boolean, title?: string, scrollToTop?: boolean } | string): Promise<void> ;\n go(config: number | string | { path: RouteAction, data?: any, replace?: boolean, title?: string, scrollToTop?: boolean } | string): Promise<void> | void {\n if (typeof config === 'number') {\n this.behaviorSubject.next({...this.getRouteData(),triggerPoint:'start'});\n this.config.window.history?.go(config);\n //end\uBD80\uBD84\uC740 constructor\uC758 this.config.window.addEventListener('popstate' \uC5D0\uC11C \uBC1B\uC544\uC11C \uCC98\uB9AC\uB41C\uB2E4 \uD638\uCD9C\uB41C\uB2E4.\n return;\n }\n\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 console.log('toUrl', data);\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
6
  "names": ["routeData", "data"]
7
7
  }
@@ -19,7 +19,20 @@ 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
21
  import { isOnRawSetRendered } from "./lifecycle/OnRawSetRendered.js";
22
- const excludeGetSetPropertys = ["onBeforeReturnGet", "onBeforeReturnSet", "__domrender_components", "__render", "_DomRender_isFinal", "_domRender_ref", "_rawSets", "_domRender_proxy", "_targets", "_DomRender_origin", "_DomRender_ref", "_DomRender_proxy"];
22
+ const excludeGetSetPropertys = [
23
+ "onBeforeReturnGet",
24
+ "onBeforeReturnSet",
25
+ "__domrender_components",
26
+ "__render",
27
+ "_DomRender_isFinal",
28
+ "_domRender_ref",
29
+ "_rawSets",
30
+ "_domRender_proxy",
31
+ "_targets",
32
+ "_DomRender_origin",
33
+ "_DomRender_ref",
34
+ "_DomRender_proxy"
35
+ ];
23
36
  const isWrapProxyDomRenderProxy = (obj) => {
24
37
  return obj && typeof obj === "object" && "_DomRender_isProxy" in obj;
25
38
  };
@@ -62,7 +75,7 @@ class DomRenderProxy {
62
75
  static isFinal(obj) {
63
76
  return ValidUtils.isNull(obj) || DomRenderFinalProxy.isFinal(obj);
64
77
  }
65
- run(objProxy) {
78
+ async run(objProxy) {
66
79
  this._domRender_proxy = objProxy;
67
80
  if (isOnProxyDomRender(objProxy)) {
68
81
  objProxy.onProxyDomRender(this._domRender_config);
@@ -87,18 +100,18 @@ class DomRenderProxy {
87
100
  }
88
101
  });
89
102
  }
90
- this._targets.forEach((target) => {
91
- this.initRender(target);
92
- });
103
+ for (let target of this._targets) {
104
+ await this.initRender(target);
105
+ }
93
106
  }
94
- initRender(target, rawSet) {
107
+ async initRender(target, rawSet) {
95
108
  if (target instanceof Element) {
96
109
  target.innerHTML = target.innerHTML.replace(/@this@/g, "this");
97
110
  }
98
111
  const onCreate = target.getAttribute?.(RawSet.DR_ON_CREATE_ARGUMENTS_OPTIONNAME);
99
112
  let createParam = [];
100
113
  if (onCreate) {
101
- createParam = ScriptUtils.evaluateReturn(onCreate, this._domRender_proxy);
114
+ createParam = ObjectUtils.Script.evaluateReturn(onCreate, this._domRender_proxy);
102
115
  if (!Array.isArray(createParam)) {
103
116
  createParam = [createParam];
104
117
  }
@@ -111,7 +124,11 @@ class DomRenderProxy {
111
124
  }
112
125
  this._targets.add(target);
113
126
  const rawSets = RawSet.checkPointCreates(target, this._domRender_proxy, this._domRender_config);
114
- this._domRender_config.eventManager.applyEvent(this._domRender_proxy, this._domRender_config.eventManager.findAttrElements(target, this._domRender_config), this._domRender_config);
127
+ this._domRender_config.eventManager.applyEvent(
128
+ this._domRender_proxy,
129
+ this._domRender_config.eventManager.findAttrElements(target, this._domRender_config),
130
+ this._domRender_config
131
+ );
115
132
  rawSets.forEach((it) => {
116
133
  const variables = it.getUsingTriggerVariables(this._domRender_config);
117
134
  if (variables.size <= 0) {
@@ -122,16 +139,20 @@ class DomRenderProxy {
122
139
  });
123
140
  }
124
141
  });
125
- this.render(this.getRawSets()).then((it) => {
142
+ const targetRawSets = await this.render(this.getRawSets());
143
+ for (let targetRawSet of targetRawSets) {
126
144
  const onInit = target.getAttribute?.(RawSet.DR_ON_INIT_ARGUMENTS_OPTIONNAME);
127
145
  let initParam;
128
146
  if (onCreate) {
129
147
  initParam = ScriptUtils.evaluateReturn(onCreate, this._domRender_proxy);
130
148
  }
131
149
  if (isOnInitRender(this._domRender_proxy)) {
132
- this._domRender_proxy.onInitRender(initParam, rawSet ?? { dataSet: { config: this._domRender_config } });
150
+ await this._domRender_proxy.onInitRender(
151
+ initParam,
152
+ rawSet ?? { dataSet: { config: this._domRender_config } }
153
+ );
133
154
  }
134
- });
155
+ }
135
156
  }
136
157
  getRawSets() {
137
158
  const set = /* @__PURE__ */ new Set();
@@ -164,9 +185,12 @@ class DomRenderProxy {
164
185
  } else if (it.type === RawSetType.TARGET_ELEMENT && it.dataSet?.render?.currentThis && fullPathStr && targetAttrMap) {
165
186
  new Map(JSON.parse(targetAttrMap)).forEach((v, k) => {
166
187
  var _a;
167
- const isUsing = EventManager.isUsingThisVar(v, `this.${fullPathStr}`);
188
+ const isUsing = v.variablePaths.some((it2) => EventManager.isUsingThisVar(it2.inner, `this.${fullPathStr}`));
168
189
  if (isUsing) {
169
- const targetAttrObject = RawSet.getAttributeObject(it.point.node, { script: it.dataSet?.render?.renderScript ?? "", obj: Object.assign(this._domRender_proxy ?? {}, { __render: it.dataSet?.render }) });
190
+ const targetAttrObject = RawSet.getAttributeObject(it.point.node, {
191
+ script: it.dataSet?.render?.renderScript ?? "",
192
+ obj: Object.assign(this._domRender_proxy ?? {}, { __render: it.dataSet?.render })
193
+ });
170
194
  (_a = it.dataSet).render ?? (_a.render = {});
171
195
  it.dataSet.render.attribute = targetAttrObject;
172
196
  if (isOnChangeAttrRender(it.dataSet?.render?.currentThis)) {
@@ -210,7 +234,11 @@ class DomRenderProxy {
210
234
  it.forEach((sit) => {
211
235
  try {
212
236
  const concat = pathInfos.concat([[{ path: sit, obj: key }]]);
213
- const items = key._DomRender_proxy?.root(concat, value, lastDoneExecute);
237
+ const items = key._DomRender_proxy?.root(
238
+ concat,
239
+ value,
240
+ lastDoneExecute
241
+ );
214
242
  fullPaths.push(items.flat());
215
243
  } catch (e) {
216
244
  }
@@ -246,10 +274,19 @@ class DomRenderProxy {
246
274
  if (value === void 0) {
247
275
  const rawSet = it.getHasRawSet(lastPropertyName);
248
276
  rawSet?.remove();
249
- startElement.setAttribute(RawSet.DR_HAS_KEYS_OPTIONNAME, keys.filter((it2) => it2 !== lastPropertyName).join(","));
277
+ startElement.setAttribute(
278
+ RawSet.DR_HAS_KEYS_OPTIONNAME,
279
+ keys.filter((it2) => it2 !== lastPropertyName).join(",")
280
+ );
250
281
  }
251
282
  if (!keys.includes(lastPropertyName)) {
252
- const raws = DrThisProperty.append(this._domRender_proxy, fullPathStr, lastPropertyName, it, this._domRender_config);
283
+ const raws = DrThisProperty.append(
284
+ this._domRender_proxy,
285
+ fullPathStr,
286
+ lastPropertyName,
287
+ it,
288
+ this._domRender_config
289
+ );
253
290
  if (raws) {
254
291
  rawSets.push(...raws);
255
292
  }
@@ -269,10 +306,19 @@ class DomRenderProxy {
269
306
  } else if (iterable) {
270
307
  rData = await this.render(Array.from(iterable), fullPathStr);
271
308
  }
309
+ const Node = this._domRender_config.window.Node;
272
310
  this._targets.forEach((it) => {
273
311
  if (it.nodeType === Node.DOCUMENT_FRAGMENT_NODE || it.nodeType === Node.ELEMENT_NODE) {
274
- const targets = this._domRender_config.eventManager.findAttrElements(it, this._domRender_config);
275
- this._domRender_config.eventManager.changeVar(this._domRender_proxy, targets, `this.${fullPathStr}`, this._domRender_config);
312
+ const targets = this._domRender_config.eventManager.findAttrElements(
313
+ it,
314
+ this._domRender_config
315
+ );
316
+ this._domRender_config.eventManager.changeVar(
317
+ this._domRender_proxy,
318
+ targets,
319
+ `this.${fullPathStr}`,
320
+ this._domRender_config
321
+ );
276
322
  }
277
323
  });
278
324
  if (rData?.length > 0 && isOnChildRenderedByProperty(data)) {
@@ -304,49 +350,64 @@ class DomRenderProxy {
304
350
  fullPathInfo = this.root([[{ path: p, obj: this._domRender_proxy }]], value);
305
351
  }
306
352
  const rootElement = this._domRender_config.rootElement ?? this._domRender_config.window.document;
307
- DocumentUtils.querySelectorAllByAttributeName(rootElement, EventManager.normalAttrMapAttrName)?.forEach((elementInfo) => {
308
- const targets = new Map(ScriptUtils.evaluateReturn(elementInfo.value));
309
- Array.from(targets.entries()).filter(([key, value2]) => value2.trim()).filter(isDefined).flatMap(([key, valueScript]) => {
310
- return fullPathInfo.flat().filter((it) => valueScript.includes(`this.${it.path}`)).flatMap((it) => ({ key, valueScript, pathInfo: it }));
311
- }).forEach((it) => {
312
- const optionalPath = ObjectUtils.Path.toOptionalChainPath(it.valueScript);
313
- const value1 = ScriptUtils.evaluateReturn(optionalPath, it.pathInfo.obj);
314
- if (value1 === null) {
315
- elementInfo.element.removeAttribute(it.key);
316
- elementInfo.element[it.key] = null;
317
- } else {
318
- elementInfo.element.setAttribute(it.key, value1);
319
- elementInfo.element[it.key] = value1;
320
- }
321
- });
322
- });
323
- DocumentUtils.querySelectorAllByAttributeName(rootElement, EventManager.linkTargetMapAttrName)?.forEach((elementInfo) => {
324
- const targets = new Map(ScriptUtils.evaluateReturn(elementInfo.value));
325
- Array.from(targets.entries()).filter(([key, value2]) => value2.trim()).filter(isDefined).flatMap(([key, valueScript]) => {
326
- return fullPathInfo.flat().filter((it) => valueScript.includes(`this.${it.path}`)).flatMap((it) => ({ key, valueScript, pathInfo: it }));
327
- }).forEach((info) => {
328
- const value1 = ScriptUtils.evaluateReturn(info.valueScript, info.pathInfo.obj);
329
- const applyAttributeName = EventManager.linkAttrs.find((it) => it.name === info.key);
330
- if (applyAttributeName) {
353
+ DocumentUtils.querySelectorAllByAttributeName(rootElement, EventManager.normalAttrMapAttrName)?.forEach(
354
+ (elementInfo) => {
355
+ const targets = new Map(
356
+ ObjectUtils.Script.evaluateReturn(elementInfo.value)
357
+ );
358
+ Array.from(targets.entries()).filter(isDefined).flatMap(([key, valueScript]) => {
359
+ return fullPathInfo.flat().filter((it) => valueScript.variablePaths?.some((vit) => vit.inner.includes(`this.${it.path}`))).flatMap((it) => ({ key, valueScript, pathInfo: it }));
360
+ }).forEach((it) => {
361
+ const variablePaths = it.valueScript.variablePaths;
362
+ let targetScript = it.valueScript.originalAttrValue;
363
+ variablePaths.forEach((it2) => {
364
+ let r = ObjectUtils.Path.toOptionalChainPath(it2.inner);
365
+ targetScript = targetScript.replaceAll(it2.origin, `\${${r}}`);
366
+ });
367
+ const value1 = ObjectUtils.Script.evaluateReturn("`" + targetScript + "`", it.pathInfo.obj);
331
368
  if (value1 === null) {
332
- elementInfo.element.removeAttribute(applyAttributeName.property);
369
+ elementInfo.element.removeAttribute(it.key);
370
+ elementInfo.element[it.key] = null;
333
371
  } else {
334
- elementInfo.element.setAttribute(applyAttributeName.property, value1);
372
+ elementInfo.element.setAttribute(it.key, value1);
373
+ elementInfo.element[it.key] = value1;
335
374
  }
336
- }
337
- });
338
- Array.from(targets.entries()).filter(([key, value2]) => value2.trim()).filter(isDefined).flatMap(([key, valueScript]) => {
339
- return fullPathInfo.flat().filter((it) => valueScript.includes(`this.${it.path}`)).flatMap((it) => ({ key, valueScript, pathInfo: it }));
340
- }).forEach((info) => {
341
- const linkInfo = EventManager.linkAttrs.find((it) => it.name === info.key);
342
- if (linkInfo) {
343
- elementInfo.element[linkInfo.property] = value;
344
- }
345
- });
346
- });
375
+ });
376
+ }
377
+ );
378
+ DocumentUtils.querySelectorAllByAttributeName(rootElement, EventManager.linkTargetMapAttrName)?.forEach(
379
+ (elementInfo) => {
380
+ const targets = new Map(ScriptUtils.evaluateReturn(elementInfo.value));
381
+ Array.from(targets.entries()).filter(([key, value2]) => value2.trim()).filter(isDefined).flatMap(([key, valueScript]) => {
382
+ return fullPathInfo.flat().filter((it) => valueScript.includes(`this.${it.path}`)).flatMap((it) => ({ key, valueScript, pathInfo: it }));
383
+ }).forEach((info) => {
384
+ const value1 = ScriptUtils.evaluateReturn(info.valueScript, info.pathInfo.obj);
385
+ const applyAttributeName = EventManager.linkAttrs.find((it) => it.name === info.key);
386
+ if (applyAttributeName) {
387
+ if (value1 === null) {
388
+ elementInfo.element.removeAttribute(applyAttributeName.property);
389
+ } else {
390
+ elementInfo.element.setAttribute(applyAttributeName.property, value1);
391
+ }
392
+ }
393
+ });
394
+ Array.from(targets.entries()).filter(([key, value2]) => value2.trim()).filter(isDefined).flatMap(([key, valueScript]) => {
395
+ return fullPathInfo.flat().filter((it) => valueScript.includes(`this.${it.path}`)).flatMap((it) => ({ key, valueScript, pathInfo: it }));
396
+ }).forEach((info) => {
397
+ const linkInfo = EventManager.linkAttrs.find((it) => it.name === info.key);
398
+ if (linkInfo) {
399
+ elementInfo.element[linkInfo.property] = value;
400
+ }
401
+ });
402
+ }
403
+ );
347
404
  if ("onBeforeReturnSet" in receiver && typeof p === "string" && !(this._domRender_config.proxyExcludeOnBeforeReturnSets ?? []).concat(excludeGetSetPropertys).includes(p)) {
348
405
  if (isOnBeforeReturnSet(receiver)) {
349
- receiver.onBeforeReturnSet?.(p, value, fullPathInfo.map((it) => it.map((it2) => it2.path).join()));
406
+ receiver.onBeforeReturnSet?.(
407
+ p,
408
+ value,
409
+ fullPathInfo.map((it) => it.map((it2) => it2.path).join())
410
+ );
350
411
  }
351
412
  }
352
413
  return true;
@@ -366,7 +427,11 @@ class DomRenderProxy {
366
427
  it = it._DomRender_origin;
367
428
  }
368
429
  if ("onBeforeReturnGet" in receiver && typeof p === "string" && !(this._domRender_config.proxyExcludeOnBeforeReturnGets ?? []).concat(excludeGetSetPropertys).includes(p)) {
369
- receiver?.onBeforeReturnGet?.(p, it, this.root([[{ path: p, obj: this._domRender_proxy }]], it, false));
430
+ receiver?.onBeforeReturnGet?.(
431
+ p,
432
+ it,
433
+ this.root([[{ path: p, obj: this._domRender_proxy }]], it, false)
434
+ );
370
435
  }
371
436
  return it;
372
437
  }