@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
@@ -4,7 +4,10 @@ class PathRouter extends Router {
4
4
  super(config);
5
5
  }
6
6
  getSearchParams(data) {
7
- const searchParams = new URL(this.config.window.document.location.href).searchParams;
7
+ if (!this.config.window.document?.location?.href) {
8
+ return new URLSearchParams();
9
+ }
10
+ const searchParams = new URL(this.config.window.document.location?.href).searchParams;
8
11
  data?.delete?.forEach((it) => {
9
12
  searchParams.delete(it);
10
13
  });
@@ -26,7 +29,7 @@ class PathRouter extends Router {
26
29
  pushDeleteHashSearchParam(name, data, title) {
27
30
  const s = this.getHashSearchParams({ delete: [name] });
28
31
  const size = Array.from(s.entries()).length;
29
- const href = `${this.config.window.location.pathname}${this.config.window.location.search}${size > 0 ? "#" + s.toString() : ""}`;
32
+ const href = `${this.config.window.location?.pathname ?? "/"}${this.config.window.location?.search}${size > 0 ? "#" + s.toString() : ""}`;
30
33
  super.pushState(data, title, href);
31
34
  }
32
35
  pushAddSearchParam(params, data, title) {
@@ -40,7 +43,7 @@ class PathRouter extends Router {
40
43
  replaceDeleteHashSearchParam(name, data, title) {
41
44
  const s = this.getHashSearchParams({ delete: Array.isArray(name) ? name : [name] });
42
45
  const size = Array.from(s.entries()).length;
43
- const href = `${this.config.window.location.pathname}${this.config.window.location.search}${size > 0 ? "#" + s.toString() : ""}`;
46
+ const href = `${this.config.window.location?.pathname ?? "/"}${this.config.window.location?.search}${size > 0 ? "#" + s.toString() : ""}`;
44
47
  super.replaceState(data, title, href);
45
48
  }
46
49
  replaceAddSearchParam(params, data, title) {
@@ -48,17 +51,20 @@ class PathRouter extends Router {
48
51
  this.replace({ searchParams: s }, data, title);
49
52
  }
50
53
  getUrl() {
51
- const url = new URL(this.config.window.document.location.href);
54
+ if (!this.config.window.document?.location?.href) {
55
+ return "/";
56
+ }
57
+ const url = new URL(this.config.window.document.location?.href);
52
58
  return url.pathname + url.search;
53
59
  }
54
60
  getHref() {
55
- return this.config.window.location.href;
61
+ return this.config.window.location?.href ?? "/";
56
62
  }
57
63
  getPathName() {
58
- return this.config.window.location.pathname;
64
+ return this.config.window.location?.pathname ?? "/";
59
65
  }
60
66
  getHashSearchParams(data) {
61
- const searchParams = new URLSearchParams(this.config.window.location.hash.slice(1));
67
+ const searchParams = new URLSearchParams(this.config.window.location?.hash.slice(1) ?? "");
62
68
  data?.delete?.forEach((it) => {
63
69
  searchParams.delete(it);
64
70
  });
@@ -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": "AAAA,SAAyC,cAA4B;AAE9D,MAAM,mBAAmB,OAAO;AAAA,EACrC,YAAY,QAAsB;AAChC,UAAM,MAAM;AAAA,EACd;AAAA,EAEA,gBAAgB,MAAuE;AACrF,QAAI,CAAC,KAAK,OAAO,OAAO,UAAU,UAAU,MAAM;AAChD,aAAO,IAAI,gBAAgB;AAAA,IAC7B;AAEA,UAAM,eAAiB,IAAI,IAAI,KAAK,OAAO,OAAO,SAAS,UAAU,IAAI,EAAG;AAC5E,UAAM,QAAQ,QAAQ,QAAM;AAC1B,mBAAa,OAAO,EAAE;AAAA,IACxB,CAAC;AAED,UAAM,QAAQ,QAAQ,QAAM;AAC1B,mBAAa,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,IAClC,CAAC;AACD,WAAO;AAAA,EAET;AAAA,EAEA,KAAK,MAAmB,MAAY,QAAgB,IAAuB;AACzE,WAAO,MAAM,UAAU,MAAM,OAAO,KAAK,MAAM,IAAI,CAAC;AAAA,EACtD;AAAA,EAEA,QAAQ,MAAmB,MAAY,QAAgB,IAAuB;AAC5E,WAAO,MAAM,aAAa,MAAM,OAAO,KAAK,MAAM,IAAI,CAAC;AAAA,EACzD;AAAA,EAEA,sBAAsB,MAAc,MAAY,OAAsB;AACpE,UAAM,IAAI,KAAK,gBAAgB,EAAC,QAAQ,CAAC,IAAI,EAAC,CAAC;AAC/C,SAAK,KAAK,EAAC,cAAc,EAAC,GAAG,MAAM,KAAK;AAAA,EAC1C;AAAA,EAEA,0BAA0B,MAAc,MAAY,OAAgB;AAClE,UAAM,IAAI,KAAK,oBAAoB,EAAC,QAAQ,CAAC,IAAI,EAAC,CAAC;AACnD,UAAM,OAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE;AACrC,UAAM,OAAO,GAAG,KAAK,OAAO,OAAO,UAAU,YAAU,GAAG,GAAG,KAAK,OAAO,OAAO,UAAU,MAAM,GAAG,OAAO,IAAI,MAAM,EAAE,SAAS,IAAI,EAAE;AACrI,UAAM,UAAU,MAAM,OAAO,IAAI;AAAA,EACnC;AAAA,EAEA,mBAAmB,QAA2B,MAAY,OAAsB;AAC9E,UAAM,IAAI,KAAK,gBAAgB,EAAC,QAAQ,OAAM,CAAC;AAC/C,SAAK,KAAK,EAAC,cAAc,EAAC,GAAG,MAAM,KAAK;AAAA,EAC1C;AAAA,EACA,yBAAyB,MAAyB,MAAY,OAAsB;AAClF,UAAM,IAAI,KAAK,gBAAgB,EAAC,QAAQ,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI,EAAC,CAAC;AAC5E,SAAK,QAAQ,EAAC,cAAc,EAAC,GAAG,MAAM,KAAK;AAAA,EAC7C;AAAA,EAEA,6BAA6B,MAAyB,MAAY,OAAgB;AAChF,UAAM,IAAI,KAAK,oBAAoB,EAAC,QAAQ,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI,EAAC,CAAC;AAChF,UAAM,OAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE;AACrC,UAAM,OAAO,GAAG,KAAK,OAAO,OAAO,UAAU,YAAU,GAAG,GAAG,KAAK,OAAO,OAAO,UAAU,MAAM,GAAG,OAAO,IAAI,MAAM,EAAE,SAAS,IAAI,EAAE;AACrI,UAAM,aAAa,MAAM,OAAO,IAAI;AAAA,EACtC;AAAA,EAEA,sBAAsB,QAA2B,MAAY,OAAsB;AACjF,UAAM,IAAI,KAAK,gBAAgB,EAAC,QAAQ,OAAM,CAAC;AAC/C,SAAK,QAAQ,EAAC,cAAc,EAAC,GAAG,MAAM,KAAK;AAAA,EAC7C;AAAA,EAGA,SAAiB;AACf,QAAI,CAAC,KAAK,OAAO,OAAO,UAAU,UAAU,MAAM;AAChD,aAAO;AAAA,IACT;AACA,UAAM,MAAM,IAAI,IAAI,KAAK,OAAO,OAAO,SAAS,UAAU,IAAI;AAC9D,WAAO,IAAI,WAAW,IAAI;AAAA,EAC5B;AAAA,EAEA,UAAkB;AAChB,WAAO,KAAK,OAAO,OAAO,UAAU,QAAM;AAAA,EAC5C;AAAA,EAEA,cAAsB;AACpB,WAAO,KAAK,OAAO,OAAO,UAAU,YAAU;AAAA,EAChD;AAAA,EAEA,oBAAoB,MAAuE;AAEzF,UAAM,eAAgB,IAAI,gBAAgB,KAAK,OAAO,OAAO,UAAU,KAAK,MAAM,CAAC,KAAG,EAAE;AAExF,UAAM,QAAQ,QAAQ,QAAM;AAC1B,mBAAa,OAAO,EAAE;AAAA,IACxB,CAAC;AAED,UAAM,QAAQ,QAAQ,QAAM;AAC1B,mBAAa,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAAA,IAClC,CAAC;AACD,WAAO;AAAA,EAGT;AAGF;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,6 @@
1
1
  import { ConvertUtils } from "@dooboostore/core/convert/ConvertUtils";
2
2
  import { BehaviorSubject } from "@dooboostore/core/message/BehaviorSubject";
3
3
  import { Expression } from "@dooboostore/core/expression/Expression";
4
- const isPopStateCurrentTargetDomrenderRouter = (obj) => obj?.currentTargetName === "domRenderRouter";
5
4
  class Router {
6
5
  constructor(config) {
7
6
  this._config = config;
@@ -12,19 +11,18 @@ class Router {
12
11
  url: config.firstUrl,
13
12
  path: path[0],
14
13
  searchParams: new URLSearchParams(path[1] ?? ""),
15
- router: this
14
+ router: this,
15
+ triggerPoint: "end"
16
16
  };
17
17
  this.behaviorSubject = new BehaviorSubject(routeData);
18
18
  this.go(config.firstUrl);
19
19
  } else {
20
- routeData = this.getRouteData();
20
+ routeData = { ...this.getRouteData(), triggerPoint: "end" };
21
21
  this.behaviorSubject = new BehaviorSubject(routeData);
22
22
  }
23
23
  this.config.window.addEventListener("popstate", (event) => {
24
- if (!isPopStateCurrentTargetDomrenderRouter(event.state)) {
25
- const routeData2 = this.getRouteData();
26
- this.behaviorSubject.next(routeData2);
27
- }
24
+ const routeData2 = { ...this.getRouteData(), triggerPoint: "end" };
25
+ this.behaviorSubject.next(routeData2);
28
26
  });
29
27
  }
30
28
  get observable() {
@@ -66,9 +64,30 @@ class Router {
66
64
  }
67
65
  }
68
66
  getRouteData(config) {
67
+ let path = "";
68
+ let url = "";
69
+ if (config?.pathOrUrl) {
70
+ let isUrl = false;
71
+ try {
72
+ new URL(config.pathOrUrl);
73
+ isUrl = true;
74
+ } catch {
75
+ isUrl = false;
76
+ }
77
+ if (isUrl) {
78
+ const u = new URL(config.pathOrUrl);
79
+ path = u.pathname;
80
+ url = u.pathname + u.search;
81
+ } else {
82
+ path = config.pathOrUrl.split("?")[0];
83
+ }
84
+ } else {
85
+ path = this.getPathName();
86
+ url = this.getUrl();
87
+ }
69
88
  const newVar = {
70
- path: this.getPathName(),
71
- url: this.getUrl(),
89
+ path,
90
+ url,
72
91
  searchParams: this.getSearchParams()
73
92
  };
74
93
  const data = this.getData();
@@ -82,32 +101,40 @@ class Router {
82
101
  }
83
102
  }
84
103
  newVar.router = this;
85
- newVar.currentTarget = config?.currentTarget;
86
104
  return Object.freeze(newVar);
87
105
  }
88
106
  pushState(data, title, path) {
89
- this.config.window.history.pushState(data, title ?? "", path);
90
- this.behaviorSubject.next(this.getRouteData({ currentTarget: { currentTargetName: "domRenderRouter" } }));
107
+ this.behaviorSubject.next({ ...this.getRouteData({ pathOrUrl: path }), triggerPoint: "start" });
108
+ this.config.window.history?.pushState(data, title ?? "", path);
109
+ this.behaviorSubject.next({ ...this.getRouteData({ pathOrUrl: path }), triggerPoint: "end" });
91
110
  return { data };
92
111
  }
93
112
  replaceState(data, title, path) {
94
- this.config.window.history.replaceState(data, title ?? "", path);
95
- this.behaviorSubject.next(this.getRouteData({ currentTarget: { currentTargetName: "domRenderRouter" } }));
113
+ this.behaviorSubject.next({ ...this.getRouteData({ pathOrUrl: path }), triggerPoint: "start" });
114
+ this.config.window.history?.replaceState(data, title ?? "", path);
115
+ this.behaviorSubject.next({ ...this.getRouteData({ pathOrUrl: path }), triggerPoint: "end" });
96
116
  return { data };
97
117
  }
98
- dispatchPopStateEvent(data) {
99
- this.config.window.dispatchEvent(new PopStateEvent("popstate", { state: { ...data, currentTargetName: "domRenderRouter" } }));
100
- }
101
- reload(data) {
102
- this.config.window.dispatchEvent(new PopStateEvent("popstate", { state: data }));
103
- }
104
118
  getData() {
105
- return this.config.window.history.state;
119
+ return this.config.window.history?.state;
106
120
  }
107
121
  getPathData(urlExpression, currentUrl = this.getPathName()) {
108
122
  return Expression.Path.pathNameData(currentUrl, urlExpression);
109
123
  }
110
- async go(config) {
124
+ back() {
125
+ this.behaviorSubject.next({ ...this.getRouteData(), triggerPoint: "start" });
126
+ this.config.window.history.back();
127
+ }
128
+ forward() {
129
+ this.behaviorSubject.next({ ...this.getRouteData(), triggerPoint: "start" });
130
+ this.config.window.history?.forward();
131
+ }
132
+ go(config) {
133
+ if (typeof config === "number") {
134
+ this.behaviorSubject.next({ ...this.getRouteData(), triggerPoint: "start" });
135
+ this.config.window.history?.go(config);
136
+ return;
137
+ }
111
138
  if (typeof config === "string") {
112
139
  config = { path: config };
113
140
  }
@@ -122,11 +149,9 @@ class Router {
122
149
  } catch (e) {
123
150
  }
124
151
  }
125
- if (!config.disabledPopEvent) {
126
- this.dispatchPopStateEvent(config?.data);
127
- }
128
152
  }
129
153
  toUrl(data) {
154
+ console.log("toUrl", data);
130
155
  let targetPath;
131
156
  if (typeof data === "string") {
132
157
  targetPath = data;
@@ -139,7 +164,6 @@ class Router {
139
164
  }
140
165
  }
141
166
  export {
142
- Router,
143
- isPopStateCurrentTargetDomrenderRouter
167
+ Router
144
168
  };
145
169
  //# sourceMappingURL=Router.js.map
@@ -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": "AAAA,SAAS,oBAAoB;AAE7B,SAAS,uBAAuB;AAChC,SAAS,kBAAkB;AAkBpB,MAAe,OAAgB;AAAA,EAIpC,YAAY,QAA2B;AACrC,SAAK,UAAU;AAEf,QAAI;AACJ,QAAI,QAAQ,UAAU;AACpB,YAAM,OAAO,OAAO,SAAS,MAAM,GAAG;AACtC,kBAAY;AAAA,QACV,KAAK,OAAO;AAAA,QACZ,MAAM,KAAK,CAAC;AAAA,QACZ,cAAc,IAAI,gBAAgB,KAAK,CAAC,KAAG,EAAE;AAAA,QAC7C,QAAQ;AAAA,QACR,cAAc;AAAA,MAChB;AACA,WAAK,kBAAkB,IAAI,gBAAiC,SAAS;AACrE,WAAK,GAAG,OAAO,QAAQ;AAAA,IACzB,OAAO;AACL,kBAAY,EAAC,GAAG,KAAK,aAAa,GAAG,cAAc,MAAK;AACxD,WAAK,kBAAkB,IAAI,gBAAiC,SAAS;AAAA,IACvE;AACA,SAAK,OAAO,OAAO,iBAAiB,YAAY,CAAC,UAAyB;AAIxE,YAAMA,aAA6B,EAAC,GAAG,KAAK,aAAa,GAAG,cAAc,MAAK;AAC/E,WAAK,gBAAgB,KAAKA,UAAS;AAAA,IAErC,CAAC;AAAA,EACH;AAAA,EAGA,IAAI,aAA0C;AAC5C,WAAO,KAAK,gBAAgB,aAAa;AAAA,EAC3C;AAAA,EAEA,IAAI,oBAAoB;AACtB,WAAO,aAAa,SAAS,KAAK,gBAAgB,CAAC;AAAA,EACrD;AAAA,EAEA,IAAI,SAAS;AACX,WAAO,KAAK;AAAA,EACd;AAAA,EAEO,2BAAoC,cAAkB;AAC3D,UAAM,IAAI,aAAa,SAAY,KAAK,gBAAgB,GAAG,EAAC,YAAY,KAAI,CAAC;AAC7E,WAAO,OAAO,OAAO,CAAC,GAAG,cAAc,CAAC;AAAA,EAC1C;AAAA,EAEO,iCAA0C;AAC/C,WAAO,aAAa,SAAY,KAAK,oBAAoB,GAAG,EAAC,YAAY,KAAI,CAAC;AAAA,EAChF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,WAAW,QAA0B;AACnC,QAAI,QAAQ;AACV,YAAM,IAAI,OAAO,MAAM,EAAE,KAAK,KAAK,YAAY,CAAC;AAChD,aAAO;AAAA,IACT,OAAM;AACJ,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,KAAK,eAAiC;AACpC,QAAI,iBAAiB,KAAK,YAAY,aAAa,GAAG;AACpD,aAAO;AAAA,IACT,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,aAAa,QAAkE;AAE7E,QAAI,OAAO;AACX,QAAI,MAAK;AACT,QAAI,QAAQ,WAAW;AACrB,UAAI,QAAQ;AACZ,UAAI;AACF,YAAI,IAAI,OAAO,SAAS;AACxB,gBAAQ;AAAA,MACV,QAAQ;AACN,gBAAQ;AAAA,MACV;AACA,UAAG,OAAM;AACP,cAAM,IAAI,IAAI,IAAI,OAAO,SAAS;AAClC,eAAO,EAAE;AACT,cAAM,EAAE,WAAW,EAAE;AAAA,MACvB,OAAO;AACL,eAAO,OAAO,UAAU,MAAM,GAAG,EAAE,CAAC;AAAA,MACtC;AAAA,IACF,OAAO;AACL,aAAO,KAAK,YAAY;AACxB,YAAM,KAAK,OAAO;AAAA,IACpB;AACA,UAAM,SAAS;AAAA,MACb;AAAA,MACA;AAAA,MACA,cAAc,KAAK,gBAAgB;AAAA,IACrC;AAEA,UAAM,OAAO,KAAK,QAAQ;AAC1B,QAAI,MAAM;AACR,aAAO,OAAO;AAAA,IAChB;AACA,QAAI,QAAQ,eAAe;AACzB,YAAMC,QAAO,KAAK,YAAY,OAAO,aAAa;AAClD,UAAIA,OAAM;AACR,eAAO,WAAWA;AAAA,MACpB;AAAA,IACF;AACA,WAAO,SAAS;AAEhB,WAAO,OAAO,OAAO,MAAM;AAAA,EAC7B;AAAA,EAEA,UAAU,MAAW,OAA2B,MAAgC;AAG9E,SAAK,gBAAgB,KAAK,EAAE,GAAG,KAAK,aAAa,EAAC,WAAU,KAAI,CAAC,GAAG,cAAc,QAAQ,CAAC;AAC3F,SAAK,OAAO,OAAO,SAAS,UAAU,MAAM,SAAS,IAAI,IAAI;AAC7D,SAAK,gBAAgB,KAAK,EAAE,GAAG,KAAK,aAAa,EAAC,WAAU,KAAI,CAAC,GAAG,cAAc,MAAM,CAAC;AACzF,WAAO,EAAC,KAAI;AAAA,EACd;AAAA,EAEA,aAAa,MAAW,OAA2B,MAAgC;AAGjF,SAAK,gBAAgB,KAAK,EAAE,GAAG,KAAK,aAAa,EAAC,WAAU,KAAI,CAAC,GAAG,cAAc,QAAQ,CAAC;AAC3F,SAAK,OAAO,OAAO,SAAS,aAAa,MAAM,SAAS,IAAI,IAAI;AAChE,SAAK,gBAAgB,KAAK,EAAE,GAAG,KAAK,aAAa,EAAC,WAAU,KAAI,CAAC,GAAG,cAAc,MAAM,CAAC;AACzF,WAAO,EAAC,KAAI;AAAA,EACd;AAAA,EAEA,UAAe;AACb,WAAO,KAAK,OAAO,OAAO,SAAS;AAAA,EACrC;AAAA,EAEA,YAAY,eAAuB,aAAa,KAAK,YAAY,GAAQ;AACvE,WAAO,WAAW,KAAK,aAAa,YAAY,aAAa;AAAA,EAC/D;AAAA,EAEA,OAAa;AACX,SAAK,gBAAgB,KAAK,EAAC,GAAG,KAAK,aAAa,GAAE,cAAa,QAAO,CAAC;AACvE,SAAK,OAAO,OAAO,QAAQ,KAAK;AAAA,EAElC;AAAA,EAEA,UAAgB;AACd,SAAK,gBAAgB,KAAK,EAAC,GAAG,KAAK,aAAa,GAAE,cAAa,QAAO,CAAC;AACvE,SAAK,OAAO,OAAO,SAAS,QAAQ;AAAA,EAEtC;AAAA,EAIA,GAAG,QAAsJ;AACvJ,QAAI,OAAO,WAAW,UAAU;AAC9B,WAAK,gBAAgB,KAAK,EAAC,GAAG,KAAK,aAAa,GAAE,cAAa,QAAO,CAAC;AACvE,WAAK,OAAO,OAAO,SAAS,GAAG,MAAM;AAErC;AAAA,IACF;AAEA,QAAI,OAAO,WAAW,UAAU;AAC9B,eAAS,EAAE,MAAM,OAAO;AAAA,IAC1B;AAGA,QAAI,QAAQ,SAAS;AACnB,WAAK,QAAQ,OAAO,MAAM,OAAO,MAAM,OAAO,KAAK;AAAA,IACrD,OAAO;AACL,WAAK,KAAK,OAAO,MAAM,OAAO,MAAM,OAAO,KAAK;AAAA,IAClD;AAMA,QAAI,OAAO,gBAAgB,OAAO;AAChC,UAAI;AACF,aAAK,QAAQ,QAAQ,WAAW,GAAG,CAAC;AAAA,MACtC,SAAQ,GAAE;AAAA,MAAC;AAAA,IACb;AAAA,EAMF;AAAA,EAEA,MAAM,MAAmB;AACvB,YAAQ,IAAI,SAAS,IAAI;AACzB,QAAI;AACJ,QAAI,OAAO,SAAS,UAAU;AAC5B,mBAAa;AAAA,IACf,OAAO;AACL,YAAM,QAAQ,KAAK,QAAQ,KAAK,YAAY;AAC5C,YAAM,IAAI,KAAK,eAAe,aAAa,kBAAkB,KAAK,YAAY,EAAE,SAAS,IAAI;AAE7F,mBAAa,GAAG,KAAK,GAAG,EAAE,SAAS,IAAI,MAAM,EAAE,GAAG,CAAC;AAAA,IACrD;AACA,WAAO;AAAA,EACT;AA4BF;",
6
6
  "names": ["routeData", "data"]
7
7
  }