@dooboostore/dom-render 1.0.108 → 1.0.109

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/README.MD +27 -1451
  2. package/dist/cjs/DomRender.js +41 -26
  3. package/dist/cjs/DomRender.js.map +2 -2
  4. package/dist/cjs/DomRenderProxy.js +12 -5
  5. package/dist/cjs/DomRenderProxy.js.map +2 -2
  6. package/dist/cjs/bundle-entry.js +32 -21
  7. package/dist/cjs/bundle-entry.js.map +2 -2
  8. package/dist/cjs/components/ComponentBase.js +20 -2
  9. package/dist/cjs/components/ComponentBase.js.map +2 -2
  10. package/dist/cjs/components/ComponentRouterBase.js +11 -1
  11. package/dist/cjs/components/ComponentRouterBase.js.map +2 -2
  12. package/dist/cjs/components/choose/Choose.js +4 -0
  13. package/dist/cjs/components/choose/Choose.js.map +2 -2
  14. package/dist/cjs/components/router/RouterOutlet.js +15 -1
  15. package/dist/cjs/components/router/RouterOutlet.js.map +2 -2
  16. package/dist/cjs/components/select/Select.js +20 -6
  17. package/dist/cjs/components/select/Select.js.map +2 -2
  18. package/dist/cjs/components/timer/Timer.js +14 -11
  19. package/dist/cjs/components/timer/Timer.js.map +2 -2
  20. package/dist/cjs/decorators/DomRenderNoProxy.js +2 -1
  21. package/dist/cjs/decorators/DomRenderNoProxy.js.map +2 -2
  22. package/dist/cjs/lifecycle/OnRawSetRendered.js +26 -0
  23. package/dist/cjs/lifecycle/OnRawSetRendered.js.map +7 -0
  24. package/dist/cjs/lifecycle/index.js +1 -0
  25. package/dist/cjs/lifecycle/index.js.map +2 -2
  26. package/dist/cjs/operators/DrTargetElement.js +2 -0
  27. package/dist/cjs/operators/DrTargetElement.js.map +2 -2
  28. package/dist/cjs/operators/OperatorExecuter.js +1 -2
  29. package/dist/cjs/operators/OperatorExecuter.js.map +2 -2
  30. package/dist/cjs/package.json +5 -0
  31. package/dist/cjs/rawsets/RawSet.js +154 -74
  32. package/dist/cjs/rawsets/RawSet.js.map +3 -3
  33. package/dist/cjs/rawsets/Render.js.map +1 -1
  34. package/dist/cjs/routers/Router.js +31 -15
  35. package/dist/cjs/routers/Router.js.map +3 -3
  36. package/dist/esm/DomRender.js +41 -26
  37. package/dist/esm/DomRender.js.map +2 -2
  38. package/dist/esm/DomRenderProxy.js +12 -5
  39. package/dist/esm/DomRenderProxy.js.map +2 -2
  40. package/dist/esm/bundle-entry.js +22 -21
  41. package/dist/esm/bundle-entry.js.map +2 -2
  42. package/dist/esm/components/ComponentBase.js +20 -2
  43. package/dist/esm/components/ComponentBase.js.map +2 -2
  44. package/dist/esm/components/ComponentRouterBase.js +11 -1
  45. package/dist/esm/components/ComponentRouterBase.js.map +2 -2
  46. package/dist/esm/components/choose/Choose.js +4 -0
  47. package/dist/esm/components/choose/Choose.js.map +2 -2
  48. package/dist/esm/components/router/RouterOutlet.js +16 -2
  49. package/dist/esm/components/router/RouterOutlet.js.map +2 -2
  50. package/dist/esm/components/select/Select.js +20 -6
  51. package/dist/esm/components/select/Select.js.map +2 -2
  52. package/dist/esm/components/timer/Timer.js +14 -11
  53. package/dist/esm/components/timer/Timer.js.map +2 -2
  54. package/dist/esm/decorators/DomRenderNoProxy.js +2 -1
  55. package/dist/esm/decorators/DomRenderNoProxy.js.map +2 -2
  56. package/dist/esm/lifecycle/OnRawSetRendered.js +7 -0
  57. package/dist/esm/lifecycle/OnRawSetRendered.js.map +7 -0
  58. package/dist/esm/lifecycle/index.js +1 -0
  59. package/dist/esm/lifecycle/index.js.map +2 -2
  60. package/dist/esm/operators/DrTargetElement.js +2 -0
  61. package/dist/esm/operators/DrTargetElement.js.map +2 -2
  62. package/dist/esm/operators/OperatorExecuter.js +1 -2
  63. package/dist/esm/operators/OperatorExecuter.js.map +2 -2
  64. package/dist/esm/rawsets/RawSet.js +154 -74
  65. package/dist/esm/rawsets/RawSet.js.map +3 -3
  66. package/dist/esm/routers/Router.js +31 -15
  67. package/dist/esm/routers/Router.js.map +3 -3
  68. package/dist/esm-bundle/dooboostore-dom-render.esm.js +12586 -6496
  69. package/dist/esm-bundle/dooboostore-dom-render.esm.js.map +4 -4
  70. package/dist/types/DomRender.d.ts +11 -5
  71. package/dist/types/DomRender.d.ts.map +1 -1
  72. package/dist/types/DomRenderProxy.d.ts.map +1 -1
  73. package/dist/types/bundle-entry.d.ts +5 -2
  74. package/dist/types/bundle-entry.d.ts.map +1 -1
  75. package/dist/types/components/ComponentBase.d.ts +7 -1
  76. package/dist/types/components/ComponentBase.d.ts.map +1 -1
  77. package/dist/types/components/ComponentRouterBase.d.ts +8 -0
  78. package/dist/types/components/ComponentRouterBase.d.ts.map +1 -1
  79. package/dist/types/components/choose/Choose.d.ts.map +1 -1
  80. package/dist/types/components/index.d.ts +2 -1
  81. package/dist/types/components/index.d.ts.map +1 -1
  82. package/dist/types/components/router/RouterOutlet.d.ts +5 -1
  83. package/dist/types/components/router/RouterOutlet.d.ts.map +1 -1
  84. package/dist/types/components/select/Select.d.ts +2 -2
  85. package/dist/types/components/select/Select.d.ts.map +1 -1
  86. package/dist/types/components/timer/Timer.d.ts +5 -3
  87. package/dist/types/components/timer/Timer.d.ts.map +1 -1
  88. package/dist/types/decorators/DomRenderNoProxy.d.ts.map +1 -1
  89. package/dist/types/index.d.ts +1 -0
  90. package/dist/types/lifecycle/OnRawSetRendered.d.ts +10 -0
  91. package/dist/types/lifecycle/OnRawSetRendered.d.ts.map +1 -0
  92. package/dist/types/lifecycle/index.d.ts +1 -0
  93. package/dist/types/lifecycle/index.d.ts.map +1 -1
  94. package/dist/types/operators/DrTargetElement.d.ts.map +1 -1
  95. package/dist/types/operators/OperatorExecuter.d.ts.map +1 -1
  96. package/dist/types/rawsets/RawSet.d.ts +11 -4
  97. package/dist/types/rawsets/RawSet.d.ts.map +1 -1
  98. package/dist/types/rawsets/Render.d.ts +1 -0
  99. package/dist/types/rawsets/Render.d.ts.map +1 -1
  100. package/dist/types/routers/Router.d.ts +2 -3
  101. package/dist/types/routers/Router.d.ts.map +1 -1
  102. package/dist/umd-bundle/dooboostore-dom-render.umd.js +12600 -6529
  103. package/dist/umd-bundle/dooboostore-dom-render.umd.js.map +4 -4
  104. package/package.json +6 -5
  105. package/src/DomRender.ts +62 -34
  106. package/src/DomRenderProxy.ts +20 -8
  107. package/src/bundle-entry.ts +5 -3
  108. package/src/components/ComponentBase.ts +29 -7
  109. package/src/components/ComponentRouterBase.ts +17 -2
  110. package/src/components/choose/Choose.ts +4 -0
  111. package/src/components/router/RouterOutlet.ts +25 -5
  112. package/src/components/select/Select.ts +40 -26
  113. package/src/components/timer/Timer.ts +19 -51
  114. package/src/decorators/DomRenderNoProxy.ts +3 -1
  115. package/src/lifecycle/OnRawSetRendered.ts +15 -0
  116. package/src/lifecycle/index.ts +1 -0
  117. package/src/operators/DrTargetElement.ts +14 -0
  118. package/src/operators/OperatorExecuter.ts +1 -2
  119. package/src/rawsets/RawSet.ts +572 -257
  120. package/src/rawsets/Render.ts +1 -0
  121. package/src/routers/Router.ts +40 -23
  122. package/types.d.ts +68 -20
@@ -3,6 +3,30 @@ import { BehaviorSubject } from "@dooboostore/core/message/BehaviorSubject";
3
3
  import { Expression } from "@dooboostore/core/expression/Expression";
4
4
  const isPopStateCurrentTargetDomrenderRouter = (obj) => obj?.currentTargetName === "domRenderRouter";
5
5
  class Router {
6
+ constructor(config) {
7
+ this._config = config;
8
+ let routeData;
9
+ if (config?.firstUrl) {
10
+ const path = config.firstUrl.split("?");
11
+ routeData = {
12
+ url: config.firstUrl,
13
+ path: path[0],
14
+ searchParams: new URLSearchParams(path[1] ?? ""),
15
+ router: this
16
+ };
17
+ this.behaviorSubject = new BehaviorSubject(routeData);
18
+ this.go(config.firstUrl);
19
+ } else {
20
+ routeData = this.getRouteData();
21
+ this.behaviorSubject = new BehaviorSubject(routeData);
22
+ }
23
+ this.config.window.addEventListener("popstate", (event) => {
24
+ if (!isPopStateCurrentTargetDomrenderRouter(event.state)) {
25
+ const routeData2 = this.getRouteData();
26
+ this.behaviorSubject.next(routeData2);
27
+ }
28
+ });
29
+ }
6
30
  get observable() {
7
31
  return this.behaviorSubject.asObservable();
8
32
  }
@@ -12,16 +36,6 @@ class Router {
12
36
  get config() {
13
37
  return this._config;
14
38
  }
15
- constructor(config) {
16
- this._config = config;
17
- this.behaviorSubject = new BehaviorSubject(this.getRouteData());
18
- this.config.window.addEventListener("popstate", (event) => {
19
- if (!isPopStateCurrentTargetDomrenderRouter(event.state)) {
20
- const routeData = this.getRouteData();
21
- this.behaviorSubject.next(routeData);
22
- }
23
- });
24
- }
25
39
  getSearchFirstParamsObject(defaultValue) {
26
40
  const a = ConvertUtils.toObject(this.getSearchParams(), { firstValue: true });
27
41
  return Object.assign({}, defaultValue, a);
@@ -29,8 +43,13 @@ class Router {
29
43
  getHashSearchFirstParamsObject() {
30
44
  return ConvertUtils.toObject(this.getHashSearchParams(), { firstValue: true });
31
45
  }
32
- async attach() {
33
- }
46
+ // async attach(): Promise<void> {
47
+ // // const proxy = getDomRenderProxy(this.config.rootObject)
48
+ // // if (proxy) {
49
+ // // const key = `___${EventManager.ROUTER_VARNAME}`;
50
+ // // await proxy.render(key);
51
+ // // }
52
+ // }
34
53
  testRegexp(regexp) {
35
54
  if (regexp) {
36
55
  const b = RegExp(regexp).test(this.getPathName());
@@ -97,9 +116,6 @@ class Router {
97
116
  } else {
98
117
  this.push(config.path, config.data, config.title);
99
118
  }
100
- if (!this.config.disableAttach) {
101
- await this.attach();
102
- }
103
119
  if (config.scrollToTop !== false) {
104
120
  try {
105
121
  this._config.window?.scrollTo?.(0, 0);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/routers/Router.ts"],
4
- "sourcesContent": ["import { ConvertUtils } from '@dooboostore/core/convert/ConvertUtils';\nimport { Observable } from '@dooboostore/core/message/Observable';\nimport { BehaviorSubject } from '@dooboostore/core/message/BehaviorSubject';\nimport { Expression } from '@dooboostore/core/expression/Expression';\nimport ToURLSearchParamsParams = ConvertUtils.ToURLSearchParamsParams;\n\nexport type RouteData = {\n path: string;\n url: string;\n data?: any;\n searchParams: URLSearchParams;\n pathData?: any;\n router: Router;\n currentTarget?:PopCurrentState;\n}\nexport type PopStateCurrentTargetDomrenderRouter = { currentTargetName: 'domRenderRouter' };\nexport type PopCurrentState = PopStateCurrentTargetDomrenderRouter;\nexport const isPopStateCurrentTargetDomrenderRouter = (obj: any): obj is PopStateCurrentTargetDomrenderRouter =>\n obj?.currentTargetName === 'domRenderRouter';\n\nexport type RouterConfig<T = any> = { rootObject?: T, window: Window, disableAttach?: boolean,\n // changeStateConvertDate?:(data: any)=>any\n};\nexport type ChangeStateResult = {data?: any}\nexport type RouteAction = string | { path?: string, searchParams?: ToURLSearchParamsParams };\n\n/*\n this.option.window.addEventListener('popstate', (event) => { // history.back, forward\uC5D0\uB9CC popstate \uBC1C\uC0DD\uB418\uACE0 \uAC12\uC774 \uB3C4\uCD9C\uB41C\uB2E4\n console.log('popstate-------!!', event.state, this.domRenderConfig.window.history.state)\n })\n */\nexport abstract class Router<T = any> {\n private behaviorSubject: BehaviorSubject<RouteData>;\n private _config: RouterConfig<T>;\n\n get observable(): Observable<RouteData> {\n return this.behaviorSubject.asObservable();\n }\n\n get searchParamObject() {\n return ConvertUtils.toObject(this.getSearchParams());\n }\n\n get config() {\n return this._config;\n }\n\n constructor(config: RouterConfig<any>) {\n this._config = config;\n this.behaviorSubject = new BehaviorSubject<RouteData>(this.getRouteData());\n this.config.window.addEventListener('popstate', (event: PopStateEvent) => {\n if(!isPopStateCurrentTargetDomrenderRouter(event.state)) {\n // console.log('-------');\n const routeData = this.getRouteData();\n this.behaviorSubject.next(routeData);\n }\n })\n }\n\n public getSearchFirstParamsObject<T = any>(defaultValue?: T) {\n const a = ConvertUtils.toObject<T>(this.getSearchParams(), {firstValue: true});\n return Object.assign({}, defaultValue, a);\n }\n\n public getHashSearchFirstParamsObject<T = any>() {\n return ConvertUtils.toObject<T>(this.getHashSearchParams(), {firstValue: true});\n }\n\n async attach(): Promise<void> {\n // const proxy = getDomRenderProxy(this.config.rootObject)\n // if (proxy) {\n // const key = `___${EventManager.ROUTER_VARNAME}`;\n // await proxy.render(key);\n // }\n }\n\n testRegexp(regexp?: string): boolean {\n if (regexp) {\n const b = RegExp(regexp).test(this.getPathName());\n return b;\n }else {\n return false;\n }\n }\n\n test(urlExpression?: string): boolean {\n if (urlExpression && this.getPathData(urlExpression)) {\n return true;\n } else {\n return false;\n }\n }\n\n getRouteData(config?: {urlExpression?: string, currentTarget?: PopCurrentState}): RouteData {\n const newVar = {\n path: this.getPathName(),\n url: this.getUrl(),\n searchParams: this.getSearchParams()\n } as RouteData;\n\n const data = this.getData();\n if (data) {\n newVar.data = data;\n }\n if (config?.urlExpression) {\n const data = this.getPathData(config.urlExpression);\n if (data) {\n newVar.pathData = data;\n }\n }\n newVar.router = this;\n newVar.currentTarget = config?.currentTarget;\n return Object.freeze(newVar);\n }\n\n pushState(data: any, title: string | undefined, path: string):ChangeStateResult {\n // data = this.config.changeStateConvertDate?this.config.changeStateConvertDate(data): data;\n // console.log('--->pushState', data);\n this.config.window.history.pushState(data, title??'', path);\n this.behaviorSubject.next(this.getRouteData({currentTarget: {currentTargetName: 'domRenderRouter'}}));\n return {data};\n }\n\n replaceState(data: any, title: string | undefined, path: string):ChangeStateResult {\n // data = this.config.changeStateConvertDate?this.config.changeStateConvertDate(data): data;\n // console.log('--->replaceState', data);\n this.config.window.history.replaceState(data, title??'', path);\n this.behaviorSubject.next(this.getRouteData({currentTarget: {currentTargetName: 'domRenderRouter'}}));\n return {data};\n }\n\n private dispatchPopStateEvent(data?: any) {\n this.config.window.dispatchEvent(new PopStateEvent('popstate', {state: {...data, currentTargetName: 'domRenderRouter'}}));\n }\n\n reload(data?: any) {\n this.config.window.dispatchEvent(new PopStateEvent('popstate', {state: data}));\n }\n\n getData(): any {\n return this.config.window.history.state;\n }\n\n getPathData(urlExpression: string, currentUrl = this.getPathName()): any {\n return Expression.Path.pathNameData(currentUrl, urlExpression);\n }\n\n async go(config: string | { path: RouteAction, data?: any, replace?: boolean, title?: string, disabledPopEvent?: boolean, scrollToTop?: boolean } | string): Promise<void> {\n if (typeof config === 'string') {\n config = { path: config };\n }\n\n // let data: ChangeStateResult | undefined = undefined;\n if (config?.replace) {\n this.replace(config.path, config.data, config.title);\n } else {\n this.push(config.path, config.data, config.title);\n }\n if (!this.config.disableAttach) {\n await this.attach();\n }\n \n // \uC2A4\uD06C\uB864 \uC81C\uC5B4 (\uAE30\uBCF8\uAC12: true - \uB9E8 \uC704\uB85C \uC2A4\uD06C\uB864)\n if (config.scrollToTop !== false) {\n try {\n this._config.window?.scrollTo?.(0, 0);\n }catch (e){}\n }\n \n // console.log('----------', data, config)\n if (!config.disabledPopEvent) {\n this.dispatchPopStateEvent(config?.data);\n }\n }\n\n toUrl(data: RouteAction) {\n let targetPath: string;\n if (typeof data === 'string') {\n targetPath = data;\n } else {\n const tpath = data.path ?? this.getPathName();\n const s = data.searchParams ? ConvertUtils.toURLSearchParams(data.searchParams).toString() : '';\n // data.searchParams\n targetPath = `${tpath}${s.length > 0 ? '?' : ''}${s}`;\n }\n return targetPath;\n }\n\n\n abstract push(path: RouteAction, data?: any, title?: string): void;\n\n abstract replace(path: RouteAction, data?: any, title?: string): void;\n\n abstract pushDeleteSearchParam(name: string | string[], data?: any, title?: string): void;\n\n abstract pushDeleteHashSearchParam(name: string | string[], data?: any, title?: string): void;\n\n abstract pushAddSearchParam(params:[[string, string]], data?: any, title?: string): void;\n\n abstract replaceDeleteSearchParam(name: string | string[], data?: any, title?: string): void;\n\n abstract replaceDeleteHashSearchParam(name: string | string[], data?: any, title?: string): void;\n\n abstract replaceAddSearchParam(params:[[string, string]], data?: any, title?: string): void;\n\n abstract getSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams;\n\n abstract getHashSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams;\n\n abstract getUrl(): string;\n\n abstract getHref(): string;\n\n abstract getPathName(): string;\n}\n"],
5
- "mappings": "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",
6
- "names": ["data"]
4
+ "sourcesContent": ["import { ConvertUtils } from '@dooboostore/core/convert/ConvertUtils';\nimport { Observable } from '@dooboostore/core/message/Observable';\nimport { BehaviorSubject } from '@dooboostore/core/message/BehaviorSubject';\nimport { Expression } from '@dooboostore/core/expression/Expression';\nimport ToURLSearchParamsParams = ConvertUtils.ToURLSearchParamsParams;\n\nexport type RouteData = {\n path: string;\n url: string;\n data?: any;\n searchParams: URLSearchParams;\n pathData?: any;\n router: Router;\n currentTarget?:PopCurrentState;\n}\nexport type PopStateCurrentTargetDomrenderRouter = { currentTargetName: 'domRenderRouter' };\nexport type PopCurrentState = PopStateCurrentTargetDomrenderRouter;\nexport const isPopStateCurrentTargetDomrenderRouter = (obj: any): obj is PopStateCurrentTargetDomrenderRouter =>\n obj?.currentTargetName === 'domRenderRouter';\n\nexport type RouterConfig<T = any> = { rootObject?: T, window: Window, firstUrl?: string,\n // changeStateConvertDate?:(data: any)=>any\n};\nexport type ChangeStateResult = {data?: any}\nexport type RouteAction = string | { path?: string, searchParams?: ToURLSearchParamsParams };\n\n/*\n this.option.window.addEventListener('popstate', (event) => { // history.back, forward\uC5D0\uB9CC popstate \uBC1C\uC0DD\uB418\uACE0 \uAC12\uC774 \uB3C4\uCD9C\uB41C\uB2E4\n console.log('popstate-------!!', event.state, this.domRenderConfig.window.history.state)\n })\n */\nexport abstract class Router<T = any> {\n private behaviorSubject: BehaviorSubject<RouteData>;\n private _config: RouterConfig<T>;\n\n constructor(config: RouterConfig<any>) {\n this._config = config;\n\n let routeData: RouteData;\n if (config?.firstUrl) {\n const path = config.firstUrl.split('?');\n routeData = {\n url: config.firstUrl,\n path: path[0],\n searchParams: new URLSearchParams(path[1]??''),\n router: this,\n }\n this.behaviorSubject = new BehaviorSubject<RouteData>(routeData);\n this.go(config.firstUrl);\n } else {\n routeData = this.getRouteData();\n this.behaviorSubject = new BehaviorSubject<RouteData>(routeData);\n }\n this.config.window.addEventListener('popstate', (event: PopStateEvent) => {\n // domrender\uC5D0\uC11C \uBC1C\uC0DD\uD558\uC9C0 \uC54A\uC740 \uC989 back, previous \uC77C\uB584\uC5D0\uB3C4 \uC774\uBCA4\uD2B8\uAC00\uB3C4\uB85D \uCC98\uB9AC\n if(!isPopStateCurrentTargetDomrenderRouter(event.state)) {\n // console.log('-------');\n const routeData = this.getRouteData();\n this.behaviorSubject.next(routeData);\n }\n })\n }\n\n\n get observable(): Observable<RouteData> {\n return this.behaviorSubject.asObservable();\n }\n\n get searchParamObject() {\n return ConvertUtils.toObject(this.getSearchParams());\n }\n\n get config() {\n return this._config;\n }\n\n public getSearchFirstParamsObject<T = any>(defaultValue?: T) {\n const a = ConvertUtils.toObject<T>(this.getSearchParams(), {firstValue: true});\n return Object.assign({}, defaultValue, a);\n }\n\n public getHashSearchFirstParamsObject<T = any>() {\n return ConvertUtils.toObject<T>(this.getHashSearchParams(), {firstValue: true});\n }\n\n // async attach(): Promise<void> {\n // // const proxy = getDomRenderProxy(this.config.rootObject)\n // // if (proxy) {\n // // const key = `___${EventManager.ROUTER_VARNAME}`;\n // // await proxy.render(key);\n // // }\n // }\n\n testRegexp(regexp?: string): boolean {\n if (regexp) {\n const b = RegExp(regexp).test(this.getPathName());\n return b;\n }else {\n return false;\n }\n }\n\n test(urlExpression?: string): boolean {\n if (urlExpression && this.getPathData(urlExpression)) {\n return true;\n } else {\n return false;\n }\n }\n\n getRouteData(config?: {urlExpression?: string, currentTarget?: PopCurrentState}): RouteData {\n const newVar = {\n path: this.getPathName(),\n url: this.getUrl(),\n searchParams: this.getSearchParams()\n } as RouteData;\n\n const data = this.getData();\n if (data) {\n newVar.data = data;\n }\n if (config?.urlExpression) {\n const data = this.getPathData(config.urlExpression);\n if (data) {\n newVar.pathData = data;\n }\n }\n newVar.router = this;\n newVar.currentTarget = config?.currentTarget;\n return Object.freeze(newVar);\n }\n\n pushState(data: any, title: string | undefined, path: string):ChangeStateResult {\n // data = this.config.changeStateConvertDate?this.config.changeStateConvertDate(data): data;\n // console.log('--->pushState', data);\n this.config.window.history.pushState(data, title??'', path);\n this.behaviorSubject.next(this.getRouteData({currentTarget: {currentTargetName: 'domRenderRouter'}}));\n return {data};\n }\n\n replaceState(data: any, title: string | undefined, path: string):ChangeStateResult {\n // data = this.config.changeStateConvertDate?this.config.changeStateConvertDate(data): data;\n // console.log('--->replaceState', data);\n this.config.window.history.replaceState(data, title??'', path);\n this.behaviorSubject.next(this.getRouteData({currentTarget: {currentTargetName: 'domRenderRouter'}}));\n return {data};\n }\n\n private dispatchPopStateEvent(data?: any) {\n this.config.window.dispatchEvent(new PopStateEvent('popstate', {state: {...data, currentTargetName: 'domRenderRouter'}}));\n }\n\n reload(data?: any) {\n this.config.window.dispatchEvent(new PopStateEvent('popstate', {state: data}));\n }\n\n getData(): any {\n return this.config.window.history.state;\n }\n\n getPathData(urlExpression: string, currentUrl = this.getPathName()): any {\n return Expression.Path.pathNameData(currentUrl, urlExpression);\n }\n\n async go(config: string | { path: RouteAction, data?: any, replace?: boolean, title?: string, disabledPopEvent?: boolean, scrollToTop?: boolean } | string): Promise<void> {\n if (typeof config === 'string') {\n config = { path: config };\n }\n\n // let data: ChangeStateResult | undefined = undefined;\n if (config?.replace) {\n this.replace(config.path, config.data, config.title);\n } else {\n this.push(config.path, config.data, config.title);\n }\n // if (!this.config.disableAttach) {\n // await this.attach();\n // }\n \n // \uC2A4\uD06C\uB864 \uC81C\uC5B4 (\uAE30\uBCF8\uAC12: true - \uB9E8 \uC704\uB85C \uC2A4\uD06C\uB864)\n if (config.scrollToTop !== false) {\n try {\n this._config.window?.scrollTo?.(0, 0);\n }catch (e){}\n }\n \n // console.log('----------', data, config)\n if (!config.disabledPopEvent) {\n this.dispatchPopStateEvent(config?.data);\n }\n }\n\n toUrl(data: RouteAction) {\n let targetPath: string;\n if (typeof data === 'string') {\n targetPath = data;\n } else {\n const tpath = data.path ?? this.getPathName();\n const s = data.searchParams ? ConvertUtils.toURLSearchParams(data.searchParams).toString() : '';\n // data.searchParams\n targetPath = `${tpath}${s.length > 0 ? '?' : ''}${s}`;\n }\n return targetPath;\n }\n\n\n abstract push(path: RouteAction, data?: any, title?: string): void;\n\n abstract replace(path: RouteAction, data?: any, title?: string): void;\n\n abstract pushDeleteSearchParam(name: string | string[], data?: any, title?: string): void;\n\n abstract pushDeleteHashSearchParam(name: string | string[], data?: any, title?: string): void;\n\n abstract pushAddSearchParam(params:[[string, string]], data?: any, title?: string): void;\n\n abstract replaceDeleteSearchParam(name: string | string[], data?: any, title?: string): void;\n\n abstract replaceDeleteHashSearchParam(name: string | string[], data?: any, title?: string): void;\n\n abstract replaceAddSearchParam(params:[[string, string]], data?: any, title?: string): void;\n\n abstract getSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams;\n\n abstract getHashSearchParams(data?:{delete?:string[], append?:[[string, string]]}): URLSearchParams;\n\n abstract getUrl(): string;\n\n abstract getHref(): string;\n\n abstract getPathName(): string;\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["routeData", "data"]
7
7
  }