@o3r/dynamic-content 13.0.0-next.2 → 13.0.0-next.21

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 (73) hide show
  1. package/fesm2022/o3r-dynamic-content-fixtures-jasmine.mjs.map +1 -1
  2. package/fesm2022/o3r-dynamic-content-fixtures-jest.mjs.map +1 -1
  3. package/fesm2022/o3r-dynamic-content-rules-engine.mjs +12 -12
  4. package/fesm2022/o3r-dynamic-content-rules-engine.mjs.map +1 -1
  5. package/fesm2022/o3r-dynamic-content.mjs +45 -54
  6. package/fesm2022/o3r-dynamic-content.mjs.map +1 -1
  7. package/index.d.ts +405 -4
  8. package/index.d.ts.map +1 -0
  9. package/middlewares/parameter-extractor.middleware.d.ts.map +1 -1
  10. package/middlewares/parameter-extractor.middleware.js +2 -0
  11. package/middlewares/parameter-extractor.middleware.js.map +1 -1
  12. package/package.json +13 -13
  13. package/rules-engine/index.d.ts +35 -4
  14. package/rules-engine/index.d.ts.map +1 -0
  15. package/schematics/ng-add/schema.json +2 -1
  16. package/fixtures/jasmine/o3r-dynamic-content-fixtures-jasmine.d.ts.map +0 -1
  17. package/fixtures/jest/o3r-dynamic-content-fixtures-jest.d.ts.map +0 -1
  18. package/o3r-dynamic-content.d.ts.map +0 -1
  19. package/public_api.d.ts +0 -3
  20. package/public_api.d.ts.map +0 -1
  21. package/rules-engine/asset.handler-action.d.ts +0 -19
  22. package/rules-engine/asset.handler-action.d.ts.map +0 -1
  23. package/rules-engine/asset.interfaces.d.ts +0 -12
  24. package/rules-engine/asset.interfaces.d.ts.map +0 -1
  25. package/rules-engine/asset.rules-engine.module.d.ts +0 -8
  26. package/rules-engine/asset.rules-engine.module.d.ts.map +0 -1
  27. package/rules-engine/o3r-dynamic-content-rules-engine.d.ts.map +0 -1
  28. package/rules-engine/public_api.d.ts +0 -4
  29. package/rules-engine/public_api.d.ts.map +0 -1
  30. package/services/dynamic-content/dynamic-content.module.d.ts +0 -75
  31. package/services/dynamic-content/dynamic-content.module.d.ts.map +0 -1
  32. package/services/dynamic-content/dynamic-content.pipe.d.ts +0 -22
  33. package/services/dynamic-content/dynamic-content.pipe.d.ts.map +0 -1
  34. package/services/dynamic-content/dynamic-content.service.d.ts +0 -40
  35. package/services/dynamic-content/dynamic-content.service.d.ts.map +0 -1
  36. package/services/dynamic-content/dynamic-content.token.d.ts +0 -11
  37. package/services/dynamic-content/dynamic-content.token.d.ts.map +0 -1
  38. package/services/dynamic-content/index.d.ts +0 -5
  39. package/services/dynamic-content/index.d.ts.map +0 -1
  40. package/services/index.d.ts +0 -4
  41. package/services/index.d.ts.map +0 -1
  42. package/services/request-parameters/index.d.ts +0 -4
  43. package/services/request-parameters/index.d.ts.map +0 -1
  44. package/services/request-parameters/request-parameters.config.d.ts +0 -36
  45. package/services/request-parameters/request-parameters.config.d.ts.map +0 -1
  46. package/services/request-parameters/request-parameters.module.d.ts +0 -29
  47. package/services/request-parameters/request-parameters.module.d.ts.map +0 -1
  48. package/services/request-parameters/request-parameters.service.d.ts +0 -100
  49. package/services/request-parameters/request-parameters.service.d.ts.map +0 -1
  50. package/services/request-parameters/request-parameters.token.d.ts +0 -7
  51. package/services/request-parameters/request-parameters.token.d.ts.map +0 -1
  52. package/services/styling/index.d.ts +0 -3
  53. package/services/styling/index.d.ts.map +0 -1
  54. package/services/styling/style-lazy-loader.module.d.ts +0 -8
  55. package/services/styling/style-lazy-loader.module.d.ts.map +0 -1
  56. package/services/styling/style-lazy-loader.service.d.ts +0 -38
  57. package/services/styling/style-lazy-loader.service.d.ts.map +0 -1
  58. package/stores/asset-path-override/asset-path-override.actions.d.ts +0 -7
  59. package/stores/asset-path-override/asset-path-override.actions.d.ts.map +0 -1
  60. package/stores/asset-path-override/asset-path-override.module.d.ts +0 -16
  61. package/stores/asset-path-override/asset-path-override.module.d.ts.map +0 -1
  62. package/stores/asset-path-override/asset-path-override.reducer.d.ts +0 -15
  63. package/stores/asset-path-override/asset-path-override.reducer.d.ts.map +0 -1
  64. package/stores/asset-path-override/asset-path-override.selectors.d.ts +0 -6
  65. package/stores/asset-path-override/asset-path-override.selectors.d.ts.map +0 -1
  66. package/stores/asset-path-override/asset-path-override.state.d.ts +0 -19
  67. package/stores/asset-path-override/asset-path-override.state.d.ts.map +0 -1
  68. package/stores/asset-path-override/asset-path-override.sync.d.ts +0 -9
  69. package/stores/asset-path-override/asset-path-override.sync.d.ts.map +0 -1
  70. package/stores/asset-path-override/index.d.ts +0 -7
  71. package/stores/asset-path-override/index.d.ts.map +0 -1
  72. package/stores/index.d.ts +0 -2
  73. package/stores/index.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"o3r-dynamic-content-fixtures-jasmine.mjs","sources":["../../src/fixtures/jasmine/request-parameters.fixture.jasmine.ts","../../src/fixtures/jasmine/o3r-dynamic-content-fixtures-jasmine.ts"],"sourcesContent":["import type {\n InterfaceOf,\n} from '@o3r/core';\nimport type {\n RequestParametersConfig,\n RequestParametersService,\n} from '@o3r/dynamic-content';\nimport {\n StorageStrategy,\n} from '@o3r/dynamic-content';\n\n/**\n * Fixture file for requestParameters service\n */\nexport class RequestParametersServiceFixture implements InterfaceOf<RequestParametersService> {\n public query: { [key: string]: string } = {};\n public post: { [key: string]: string } = {};\n public config: RequestParametersConfig = {\n strategy: StorageStrategy.Rehydrate,\n storage: (typeof window === 'undefined') ? undefined : window.sessionStorage,\n queryParamsValue: '{}',\n postParamsValue: '{}'\n };\n\n public getQueryParameter: jasmine.Spy;\n public getQueryParameterAsBoolean: jasmine.Spy;\n public getPostParameter: jasmine.Spy;\n public getPostParameterAsBoolean: jasmine.Spy;\n public getParameter: jasmine.Spy;\n public getParameterAsBoolean: jasmine.Spy;\n public clearQueryParameters: jasmine.Spy;\n public clearPostParameters: jasmine.Spy;\n public getFilteredParameters: jasmine.Spy;\n public getParams: jasmine.Spy;\n\n constructor() {\n this.getQueryParameter = jasmine.createSpy('getQueryParameter');\n this.getQueryParameterAsBoolean = jasmine.createSpy('getQueryParameterAsBoolean');\n this.getPostParameter = jasmine.createSpy('getPostParameter');\n this.getPostParameterAsBoolean = jasmine.createSpy('getPostParameterAsBoolean');\n this.getParameter = jasmine.createSpy('getParameter');\n this.getParameterAsBoolean = jasmine.createSpy('getParameterAsBoolean');\n this.clearQueryParameters = jasmine.createSpy('clearQueryParameters');\n this.clearPostParameters = jasmine.createSpy('clearPostParameters');\n this.getParams = jasmine.createSpy('getParams');\n this.getFilteredParameters = jasmine.createSpy('filterParameters');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAWA;;AAEG;MACU,+BAA+B,CAAA;AAqB1C,IAAA,WAAA,GAAA;QApBO,IAAK,CAAA,KAAA,GAA8B,EAAE;QACrC,IAAI,CAAA,IAAA,GAA8B,EAAE;AACpC,QAAA,IAAA,CAAA,MAAM,GAA4B;YACvC,QAAQ,EAAE,eAAe,CAAC,SAAS;AACnC,YAAA,OAAO,EAAE,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,SAAS,GAAG,MAAM,CAAC,cAAc;AAC5E,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,eAAe,EAAE;SAClB;QAcC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC;QAC/D,IAAI,CAAC,0BAA0B,GAAG,OAAO,CAAC,SAAS,CAAC,4BAA4B,CAAC;QACjF,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC;QAC7D,IAAI,CAAC,yBAAyB,GAAG,OAAO,CAAC,SAAS,CAAC,2BAA2B,CAAC;QAC/E,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC;QACrD,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC,uBAAuB,CAAC;QACvE,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,SAAS,CAAC,sBAAsB,CAAC;QACrE,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC;QACnE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC;QAC/C,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC;;AAErE;;AC/CD;;AAEG;;;;"}
1
+ {"version":3,"file":"o3r-dynamic-content-fixtures-jasmine.mjs","sources":["../../src/fixtures/jasmine/request-parameters.fixture.jasmine.ts","../../src/fixtures/jasmine/o3r-dynamic-content-fixtures-jasmine.ts"],"sourcesContent":["import type {\n InterfaceOf,\n} from '@o3r/core';\nimport type {\n RequestParametersConfig,\n RequestParametersService,\n} from '@o3r/dynamic-content';\nimport {\n StorageStrategy,\n} from '@o3r/dynamic-content';\n\n/**\n * Fixture file for requestParameters service\n */\nexport class RequestParametersServiceFixture implements InterfaceOf<RequestParametersService> {\n public query: { [key: string]: string } = {};\n public post: { [key: string]: string } = {};\n public config: RequestParametersConfig = {\n strategy: StorageStrategy.Rehydrate,\n storage: (typeof window === 'undefined') ? undefined : window.sessionStorage,\n queryParamsValue: '{}',\n postParamsValue: '{}'\n };\n\n public getQueryParameter: jasmine.Spy;\n public getQueryParameterAsBoolean: jasmine.Spy;\n public getPostParameter: jasmine.Spy;\n public getPostParameterAsBoolean: jasmine.Spy;\n public getParameter: jasmine.Spy;\n public getParameterAsBoolean: jasmine.Spy;\n public clearQueryParameters: jasmine.Spy;\n public clearPostParameters: jasmine.Spy;\n public getFilteredParameters: jasmine.Spy;\n public getParams: jasmine.Spy;\n\n constructor() {\n this.getQueryParameter = jasmine.createSpy('getQueryParameter');\n this.getQueryParameterAsBoolean = jasmine.createSpy('getQueryParameterAsBoolean');\n this.getPostParameter = jasmine.createSpy('getPostParameter');\n this.getPostParameterAsBoolean = jasmine.createSpy('getPostParameterAsBoolean');\n this.getParameter = jasmine.createSpy('getParameter');\n this.getParameterAsBoolean = jasmine.createSpy('getParameterAsBoolean');\n this.clearQueryParameters = jasmine.createSpy('clearQueryParameters');\n this.clearPostParameters = jasmine.createSpy('clearPostParameters');\n this.getParams = jasmine.createSpy('getParams');\n this.getFilteredParameters = jasmine.createSpy('filterParameters');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAWA;;AAEG;MACU,+BAA+B,CAAA;AAqB1C,IAAA,WAAA,GAAA;QApBO,IAAA,CAAA,KAAK,GAA8B,EAAE;QACrC,IAAA,CAAA,IAAI,GAA8B,EAAE;AACpC,QAAA,IAAA,CAAA,MAAM,GAA4B;YACvC,QAAQ,EAAE,eAAe,CAAC,SAAS;AACnC,YAAA,OAAO,EAAE,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,SAAS,GAAG,MAAM,CAAC,cAAc;AAC5E,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,eAAe,EAAE;SAClB;QAcC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,SAAS,CAAC,mBAAmB,CAAC;QAC/D,IAAI,CAAC,0BAA0B,GAAG,OAAO,CAAC,SAAS,CAAC,4BAA4B,CAAC;QACjF,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC;QAC7D,IAAI,CAAC,yBAAyB,GAAG,OAAO,CAAC,SAAS,CAAC,2BAA2B,CAAC;QAC/E,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC;QACrD,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC,uBAAuB,CAAC;QACvE,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,SAAS,CAAC,sBAAsB,CAAC;QACrE,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,qBAAqB,CAAC;QACnE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC;QAC/C,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC;;AAErE;;AC/CD;;AAEG;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"o3r-dynamic-content-fixtures-jest.mjs","sources":["../../src/fixtures/jest/request-parameters.fixture.jest.ts","../../src/fixtures/jest/o3r-dynamic-content-fixtures-jest.ts"],"sourcesContent":["import type {\n InterfaceOf,\n} from '@o3r/core';\nimport type {\n RequestParametersConfig,\n RequestParametersService,\n} from '@o3r/dynamic-content';\nimport {\n StorageStrategy,\n} from '@o3r/dynamic-content';\n\n/**\n * Fixture file for requestParameters service\n */\nexport class RequestParametersServiceFixture implements InterfaceOf<RequestParametersService> {\n public query: { [key: string]: string } = {};\n public post: { [key: string]: string } = {};\n public config: RequestParametersConfig = {\n strategy: StorageStrategy.Rehydrate,\n storage: (typeof window === 'undefined') ? undefined : window.sessionStorage,\n queryParamsValue: '{}',\n postParamsValue: '{}'\n };\n\n public getQueryParameter: jest.Mock<any, any>;\n public getQueryParameterAsBoolean: jest.Mock<any, any>;\n public getPostParameter: jest.Mock<any, any>;\n public getPostParameterAsBoolean: jest.Mock<any, any>;\n public getParameter: jest.Mock<any, any>;\n public getParameterAsBoolean: jest.Mock<any, any>;\n public clearQueryParameters: jest.Mock<any, any>;\n public clearPostParameters: jest.Mock<any, any>;\n public getFilteredParameters: jest.Mock<any, any>;\n public getParams: jest.Mock<any, any>;\n\n constructor() {\n this.getQueryParameter = jest.fn();\n this.getQueryParameterAsBoolean = jest.fn();\n this.getPostParameter = jest.fn();\n this.getPostParameterAsBoolean = jest.fn();\n this.getParameter = jest.fn();\n this.getParameterAsBoolean = jest.fn();\n this.clearQueryParameters = jest.fn();\n this.clearPostParameters = jest.fn();\n this.getParams = jest.fn();\n this.getFilteredParameters = jest.fn();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAWA;;AAEG;MACU,+BAA+B,CAAA;AAqB1C,IAAA,WAAA,GAAA;QApBO,IAAK,CAAA,KAAA,GAA8B,EAAE;QACrC,IAAI,CAAA,IAAA,GAA8B,EAAE;AACpC,QAAA,IAAA,CAAA,MAAM,GAA4B;YACvC,QAAQ,EAAE,eAAe,CAAC,SAAS;AACnC,YAAA,OAAO,EAAE,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,SAAS,GAAG,MAAM,CAAC,cAAc;AAC5E,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,eAAe,EAAE;SAClB;AAcC,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,EAAE,EAAE;AAClC,QAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,EAAE,EAAE;AAC3C,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,EAAE,EAAE;AACjC,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,EAAE,EAAE;AAC1C,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,EAAE;AAC7B,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,EAAE,EAAE;AACtC,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,EAAE,EAAE;AACrC,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,EAAE,EAAE;AACpC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE;AAC1B,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,EAAE,EAAE;;AAEzC;;AC/CD;;AAEG;;;;"}
1
+ {"version":3,"file":"o3r-dynamic-content-fixtures-jest.mjs","sources":["../../src/fixtures/jest/request-parameters.fixture.jest.ts","../../src/fixtures/jest/o3r-dynamic-content-fixtures-jest.ts"],"sourcesContent":["import type {\n InterfaceOf,\n} from '@o3r/core';\nimport type {\n RequestParametersConfig,\n RequestParametersService,\n} from '@o3r/dynamic-content';\nimport {\n StorageStrategy,\n} from '@o3r/dynamic-content';\n\n/**\n * Fixture file for requestParameters service\n */\nexport class RequestParametersServiceFixture implements InterfaceOf<RequestParametersService> {\n public query: { [key: string]: string } = {};\n public post: { [key: string]: string } = {};\n public config: RequestParametersConfig = {\n strategy: StorageStrategy.Rehydrate,\n storage: (typeof window === 'undefined') ? undefined : window.sessionStorage,\n queryParamsValue: '{}',\n postParamsValue: '{}'\n };\n\n public getQueryParameter: jest.Mock<any, any>;\n public getQueryParameterAsBoolean: jest.Mock<any, any>;\n public getPostParameter: jest.Mock<any, any>;\n public getPostParameterAsBoolean: jest.Mock<any, any>;\n public getParameter: jest.Mock<any, any>;\n public getParameterAsBoolean: jest.Mock<any, any>;\n public clearQueryParameters: jest.Mock<any, any>;\n public clearPostParameters: jest.Mock<any, any>;\n public getFilteredParameters: jest.Mock<any, any>;\n public getParams: jest.Mock<any, any>;\n\n constructor() {\n this.getQueryParameter = jest.fn();\n this.getQueryParameterAsBoolean = jest.fn();\n this.getPostParameter = jest.fn();\n this.getPostParameterAsBoolean = jest.fn();\n this.getParameter = jest.fn();\n this.getParameterAsBoolean = jest.fn();\n this.clearQueryParameters = jest.fn();\n this.clearPostParameters = jest.fn();\n this.getParams = jest.fn();\n this.getFilteredParameters = jest.fn();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAWA;;AAEG;MACU,+BAA+B,CAAA;AAqB1C,IAAA,WAAA,GAAA;QApBO,IAAA,CAAA,KAAK,GAA8B,EAAE;QACrC,IAAA,CAAA,IAAI,GAA8B,EAAE;AACpC,QAAA,IAAA,CAAA,MAAM,GAA4B;YACvC,QAAQ,EAAE,eAAe,CAAC,SAAS;AACnC,YAAA,OAAO,EAAE,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,SAAS,GAAG,MAAM,CAAC,cAAc;AAC5E,YAAA,gBAAgB,EAAE,IAAI;AACtB,YAAA,eAAe,EAAE;SAClB;AAcC,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,EAAE,EAAE;AAClC,QAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,EAAE,EAAE;AAC3C,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,EAAE,EAAE;AACjC,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,EAAE,EAAE;AAC1C,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,EAAE;AAC7B,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,EAAE,EAAE;AACtC,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,EAAE,EAAE;AACrC,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,EAAE,EAAE;AACpC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE;AAC1B,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,EAAE,EAAE;;AAEzC;;AC/CD;;AAEG;;;;"}
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, NgModule } from '@angular/core';
3
- import * as i1 from '@ngrx/store';
2
+ import { inject, Injectable, NgModule } from '@angular/core';
3
+ import { Store } from '@ngrx/store';
4
4
  import { setAssetPathOverride, AssetPathOverrideStoreModule } from '@o3r/dynamic-content';
5
5
 
6
6
  /** ActionUpdateAssetBlock */
@@ -10,8 +10,8 @@ const RULES_ENGINE_ASSET_UPDATE_ACTION_TYPE = 'UPDATE_ASSET';
10
10
  * Service to handle async Asset actions
11
11
  */
12
12
  class AssetRulesEngineActionHandler {
13
- constructor(store) {
14
- this.store = store;
13
+ constructor() {
14
+ this.store = inject(Store);
15
15
  /** @inheritdoc */
16
16
  this.supportingActions = [RULES_ENGINE_ASSET_UPDATE_ACTION_TYPE];
17
17
  }
@@ -23,21 +23,21 @@ class AssetRulesEngineActionHandler {
23
23
  }, {});
24
24
  this.store.dispatch(setAssetPathOverride({ state: { assetPathOverrides } }));
25
25
  }
26
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AssetRulesEngineActionHandler, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Injectable }); }
27
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AssetRulesEngineActionHandler }); }
26
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AssetRulesEngineActionHandler, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
27
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AssetRulesEngineActionHandler }); }
28
28
  }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AssetRulesEngineActionHandler, decorators: [{
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AssetRulesEngineActionHandler, decorators: [{
30
30
  type: Injectable
31
- }], ctorParameters: () => [{ type: i1.Store }] });
31
+ }] });
32
32
 
33
33
  class AssetRulesEngineActionModule {
34
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AssetRulesEngineActionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
35
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.13", ngImport: i0, type: AssetRulesEngineActionModule, imports: [AssetPathOverrideStoreModule] }); }
36
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AssetRulesEngineActionModule, providers: [
34
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AssetRulesEngineActionModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
35
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.4", ngImport: i0, type: AssetRulesEngineActionModule, imports: [AssetPathOverrideStoreModule] }); }
36
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AssetRulesEngineActionModule, providers: [
37
37
  AssetRulesEngineActionHandler
38
38
  ], imports: [AssetPathOverrideStoreModule] }); }
39
39
  }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AssetRulesEngineActionModule, decorators: [{
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AssetRulesEngineActionModule, decorators: [{
41
41
  type: NgModule,
42
42
  args: [{
43
43
  imports: [
@@ -1 +1 @@
1
- {"version":3,"file":"o3r-dynamic-content-rules-engine.mjs","sources":["../../src/rules-engine/asset.interfaces.ts","../../src/rules-engine/asset.handler-action.ts","../../src/rules-engine/asset.rules-engine.module.ts","../../src/rules-engine/o3r-dynamic-content-rules-engine.ts"],"sourcesContent":["import type {\n RulesEngineAction,\n} from '@o3r/core';\n\n/** ActionUpdateAssetBlock */\nexport const RULES_ENGINE_ASSET_UPDATE_ACTION_TYPE = 'UPDATE_ASSET';\n\n/**\n * Content of action that updates asset\n */\nexport interface ActionUpdateAssetBlock extends RulesEngineAction {\n actionType: typeof RULES_ENGINE_ASSET_UPDATE_ACTION_TYPE;\n asset: string;\n value: string;\n}\n","import {\n Injectable,\n} from '@angular/core';\nimport {\n Store,\n} from '@ngrx/store';\nimport type {\n RulesEngineActionHandler,\n} from '@o3r/core';\nimport {\n ActionUpdateAssetBlock,\n RULES_ENGINE_ASSET_UPDATE_ACTION_TYPE,\n} from './asset.interfaces';\nimport {\n AssetPathOverrideStore,\n setAssetPathOverride,\n} from '@o3r/dynamic-content';\n\n/**\n * Service to handle async Asset actions\n */\n@Injectable()\nexport class AssetRulesEngineActionHandler implements RulesEngineActionHandler<ActionUpdateAssetBlock> {\n /** @inheritdoc */\n public readonly supportingActions = [RULES_ENGINE_ASSET_UPDATE_ACTION_TYPE] as const;\n\n constructor(private readonly store: Store<AssetPathOverrideStore>) {}\n\n /** @inheritdoc */\n public executeActions(actions: ActionUpdateAssetBlock[]): void | Promise<void> {\n const assetPathOverrides = actions.reduce<Record<string, string>>((acc, { asset, value }) => {\n acc[asset] = value;\n return acc;\n }, {});\n\n this.store.dispatch(setAssetPathOverride({ state: { assetPathOverrides } }));\n }\n}\n","import {\n NgModule,\n} from '@angular/core';\nimport {\n AssetRulesEngineActionHandler,\n} from './asset.handler-action';\nimport {\n AssetPathOverrideStoreModule,\n} from '@o3r/dynamic-content';\n\n@NgModule({\n imports: [\n AssetPathOverrideStoreModule\n ],\n providers: [\n AssetRulesEngineActionHandler\n ]\n})\nexport class AssetRulesEngineActionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;AAIA;AACO,MAAM,qCAAqC,GAAG;;ACarD;;AAEG;MAEU,6BAA6B,CAAA;AAIxC,IAAA,WAAA,CAA6B,KAAoC,EAAA;QAApC,IAAK,CAAA,KAAA,GAAL,KAAK;;AAFlB,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,qCAAqC,CAAU;;;AAK7E,IAAA,cAAc,CAAC,OAAiC,EAAA;AACrD,QAAA,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAyB,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAI;AAC1F,YAAA,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK;AAClB,YAAA,OAAO,GAAG;SACX,EAAE,EAAE,CAAC;AAEN,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;;kIAbnE,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;sIAA7B,6BAA6B,EAAA,CAAA,CAAA;;4FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBADzC;;;MCHY,4BAA4B,CAAA;kIAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA5B,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,YANrC,4BAA4B,CAAA,EAAA,CAAA,CAAA;AAMnB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,EAJ5B,SAAA,EAAA;YACT;AACD,SAAA,EAAA,OAAA,EAAA,CAJC,4BAA4B,CAAA,EAAA,CAAA,CAAA;;4FAMnB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBARxC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT;AACD;AACF,iBAAA;;;ACjBD;;AAEG;;;;"}
1
+ {"version":3,"file":"o3r-dynamic-content-rules-engine.mjs","sources":["../../src/rules-engine/asset.interfaces.ts","../../src/rules-engine/asset.handler-action.ts","../../src/rules-engine/asset.rules-engine.module.ts","../../src/rules-engine/o3r-dynamic-content-rules-engine.ts"],"sourcesContent":["import type {\n RulesEngineAction,\n} from '@o3r/core';\n\n/** ActionUpdateAssetBlock */\nexport const RULES_ENGINE_ASSET_UPDATE_ACTION_TYPE = 'UPDATE_ASSET';\n\n/**\n * Content of action that updates asset\n */\nexport interface ActionUpdateAssetBlock extends RulesEngineAction {\n actionType: typeof RULES_ENGINE_ASSET_UPDATE_ACTION_TYPE;\n asset: string;\n value: string;\n}\n","import {\n inject,\n Injectable,\n} from '@angular/core';\nimport {\n Store,\n} from '@ngrx/store';\nimport type {\n RulesEngineActionHandler,\n} from '@o3r/core';\nimport {\n ActionUpdateAssetBlock,\n RULES_ENGINE_ASSET_UPDATE_ACTION_TYPE,\n} from './asset.interfaces';\nimport {\n AssetPathOverrideStore,\n setAssetPathOverride,\n} from '@o3r/dynamic-content';\n\n/**\n * Service to handle async Asset actions\n */\n@Injectable()\nexport class AssetRulesEngineActionHandler implements RulesEngineActionHandler<ActionUpdateAssetBlock> {\n private readonly store = inject<Store<AssetPathOverrideStore>>(Store);\n\n /** @inheritdoc */\n public readonly supportingActions = [RULES_ENGINE_ASSET_UPDATE_ACTION_TYPE] as const;\n\n /** @inheritdoc */\n public executeActions(actions: ActionUpdateAssetBlock[]): void | Promise<void> {\n const assetPathOverrides = actions.reduce<Record<string, string>>((acc, { asset, value }) => {\n acc[asset] = value;\n return acc;\n }, {});\n\n this.store.dispatch(setAssetPathOverride({ state: { assetPathOverrides } }));\n }\n}\n","import {\n NgModule,\n} from '@angular/core';\nimport {\n AssetRulesEngineActionHandler,\n} from './asset.handler-action';\nimport {\n AssetPathOverrideStoreModule,\n} from '@o3r/dynamic-content';\n\n@NgModule({\n imports: [\n AssetPathOverrideStoreModule\n ],\n providers: [\n AssetRulesEngineActionHandler\n ]\n})\nexport class AssetRulesEngineActionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;AAIA;AACO,MAAM,qCAAqC,GAAG;;ACcrD;;AAEG;MAEU,6BAA6B,CAAA;AAD1C,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAgC,KAAK,CAAC;;AAGrD,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,qCAAqC,CAAU;AAWrF;;AARQ,IAAA,cAAc,CAAC,OAAiC,EAAA;AACrD,QAAA,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAyB,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAI;AAC1F,YAAA,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK;AAClB,YAAA,OAAO,GAAG;SACX,EAAE,EAAE,CAAC;AAEN,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;;iIAbnE,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;qIAA7B,6BAA6B,EAAA,CAAA,CAAA;;2FAA7B,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBADzC;;;MCJY,4BAA4B,CAAA;iIAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA5B,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,YANrC,4BAA4B,CAAA,EAAA,CAAA,CAAA;AAMnB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,EAAA,SAAA,EAJ5B;YACT;AACD,SAAA,EAAA,OAAA,EAAA,CAJC,4BAA4B,CAAA,EAAA,CAAA,CAAA;;2FAMnB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBARxC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP;AACD,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT;AACD;AACF,iBAAA;;;ACjBD;;AAEG;;;;"}
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, NgModule, Inject, Optional, Injectable, Pipe, makeEnvironmentProviders } from '@angular/core';
2
+ import { InjectionToken, NgModule, inject, Injectable, ChangeDetectorRef, Pipe, makeEnvironmentProviders } from '@angular/core';
3
3
  import * as i1 from '@ngrx/store';
4
- import { createAction, props, on, createReducer, StoreModule, createFeatureSelector, createSelector, select } from '@ngrx/store';
4
+ import { createAction, props, on, createReducer, StoreModule, createFeatureSelector, createSelector, Store, select } from '@ngrx/store';
5
5
  import { of, firstValueFrom } from 'rxjs';
6
6
  import { map, distinctUntilChanged, shareReplay } from 'rxjs/operators';
7
7
 
@@ -47,13 +47,13 @@ class AssetPathOverrideStoreModule {
47
47
  ]
48
48
  };
49
49
  }
50
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AssetPathOverrideStoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
51
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.13", ngImport: i0, type: AssetPathOverrideStoreModule, imports: [i1.StoreFeatureModule] }); }
52
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AssetPathOverrideStoreModule, providers: [
50
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AssetPathOverrideStoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
51
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.4", ngImport: i0, type: AssetPathOverrideStoreModule, imports: [i1.StoreFeatureModule] }); }
52
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AssetPathOverrideStoreModule, providers: [
53
53
  { provide: ASSET_PATH_OVERRIDE_REDUCER_TOKEN, useFactory: getDefaultAssetPathOverrideReducer }
54
54
  ], imports: [StoreModule.forFeature(ASSET_PATH_OVERRIDE_STORE_NAME, ASSET_PATH_OVERRIDE_REDUCER_TOKEN)] }); }
55
55
  }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: AssetPathOverrideStoreModule, decorators: [{
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: AssetPathOverrideStoreModule, decorators: [{
57
57
  type: NgModule,
58
58
  args: [{
59
59
  imports: [
@@ -99,9 +99,10 @@ const MEDIA_FOLDER_NAME = 'assets';
99
99
  * Service for getting dynamic content path
100
100
  */
101
101
  class DynamicContentService {
102
- constructor(dynamicContentPath, cmsOnlyAssetsPath, store) {
103
- this.cmsOnlyAssetsPath = cmsOnlyAssetsPath;
104
- this.store = store;
102
+ constructor() {
103
+ this.cmsOnlyAssetsPath = inject(CMS_ASSETS_PATH_TOKEN);
104
+ this.store = inject(Store, { optional: true });
105
+ const dynamicContentPath = inject(DYNAMIC_CONTENT_BASE_PATH_TOKEN);
105
106
  this.basePath = dynamicContentPath.replace(/\/$/, '');
106
107
  this.mediaFolder = MEDIA_FOLDER_NAME;
107
108
  }
@@ -146,25 +147,17 @@ class DynamicContentService {
146
147
  }
147
148
  return this.store.pipe(select(selectAssetPathOverride), map((entities) => assetPath && entities && entities[assetPath] ? entities[assetPath] : assetPath), map((finalAssetPath) => this.getMediaPath(finalAssetPath)), distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));
148
149
  }
149
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: DynamicContentService, deps: [{ token: DYNAMIC_CONTENT_BASE_PATH_TOKEN }, { token: CMS_ASSETS_PATH_TOKEN }, { token: i1.Store, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
150
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: DynamicContentService }); }
150
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: DynamicContentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
151
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: DynamicContentService }); }
151
152
  }
152
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: DynamicContentService, decorators: [{
153
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: DynamicContentService, decorators: [{
153
154
  type: Injectable
154
- }], ctorParameters: () => [{ type: undefined, decorators: [{
155
- type: Inject,
156
- args: [DYNAMIC_CONTENT_BASE_PATH_TOKEN]
157
- }] }, { type: undefined, decorators: [{
158
- type: Inject,
159
- args: [CMS_ASSETS_PATH_TOKEN]
160
- }] }, { type: i1.Store, decorators: [{
161
- type: Optional
162
- }] }] });
155
+ }], ctorParameters: () => [] });
163
156
 
164
157
  class O3rDynamicContentPipe {
165
- constructor(service, cd) {
166
- this.service = service;
167
- this.cd = cd;
158
+ constructor() {
159
+ this.service = inject(DynamicContentService);
160
+ this.cd = inject(ChangeDetectorRef);
168
161
  /** Path to the media */
169
162
  this.mediaPath = '';
170
163
  }
@@ -188,16 +181,16 @@ class O3rDynamicContentPipe {
188
181
  this.onMediaPathChange.unsubscribe();
189
182
  }
190
183
  }
191
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: O3rDynamicContentPipe, deps: [{ token: DynamicContentService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe }); }
192
- /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.13", ngImport: i0, type: O3rDynamicContentPipe, isStandalone: true, name: "o3rDynamicContent", pure: false }); }
184
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: O3rDynamicContentPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
185
+ /** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.0.4", ngImport: i0, type: O3rDynamicContentPipe, isStandalone: true, name: "o3rDynamicContent", pure: false }); }
193
186
  }
194
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: O3rDynamicContentPipe, decorators: [{
187
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: O3rDynamicContentPipe, decorators: [{
195
188
  type: Pipe,
196
189
  args: [{
197
190
  name: 'o3rDynamicContent',
198
191
  pure: false
199
192
  }]
200
- }], ctorParameters: () => [{ type: DynamicContentService }, { type: i0.ChangeDetectorRef }] });
193
+ }] });
201
194
 
202
195
  /**
203
196
  * Function to get dynamic content from body dataset
@@ -244,9 +237,9 @@ class DynamicContentModule {
244
237
  providers
245
238
  };
246
239
  }
247
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: DynamicContentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
248
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.13", ngImport: i0, type: DynamicContentModule, imports: [O3rDynamicContentPipe], exports: [O3rDynamicContentPipe] }); }
249
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: DynamicContentModule, providers: [
240
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: DynamicContentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
241
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.4", ngImport: i0, type: DynamicContentModule, imports: [O3rDynamicContentPipe], exports: [O3rDynamicContentPipe] }); }
242
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: DynamicContentModule, providers: [
250
243
  {
251
244
  provide: DYNAMIC_CONTENT_BASE_PATH_TOKEN,
252
245
  useFactory: getDynamicContent
@@ -258,7 +251,7 @@ class DynamicContentModule {
258
251
  DynamicContentService
259
252
  ] }); }
260
253
  }
261
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: DynamicContentModule, decorators: [{
254
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: DynamicContentModule, decorators: [{
262
255
  type: NgModule,
263
256
  args: [{
264
257
  providers: [
@@ -376,9 +369,10 @@ const REQUEST_PARAMETERS_CONFIG_TOKEN = new InjectionToken('RequestParametersCon
376
369
  * them.
377
370
  */
378
371
  class RequestParametersService {
379
- constructor(config) {
372
+ constructor() {
380
373
  this._query = {};
381
374
  this._post = {};
375
+ const config = inject(REQUEST_PARAMETERS_CONFIG_TOKEN);
382
376
  this.config = defaultRequestParametersConfig;
383
377
  Object.keys(config)
384
378
  .filter((key) => config[key] !== undefined)
@@ -541,15 +535,12 @@ class RequestParametersService {
541
535
  return acc;
542
536
  }, {});
543
537
  }
544
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: RequestParametersService, deps: [{ token: REQUEST_PARAMETERS_CONFIG_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable }); }
545
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: RequestParametersService }); }
538
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: RequestParametersService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
539
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: RequestParametersService }); }
546
540
  }
547
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: RequestParametersService, decorators: [{
541
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: RequestParametersService, decorators: [{
548
542
  type: Injectable
549
- }], ctorParameters: () => [{ type: undefined, decorators: [{
550
- type: Inject,
551
- args: [REQUEST_PARAMETERS_CONFIG_TOKEN]
552
- }] }] });
543
+ }], ctorParameters: () => [] });
553
544
 
554
545
  /**
555
546
  * Empty configuration factory, used when config is not provided. It needs a separate function for AOT.
@@ -579,9 +570,9 @@ class RequestParametersModule {
579
570
  ]
580
571
  };
581
572
  }
582
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: RequestParametersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
583
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.13", ngImport: i0, type: RequestParametersModule }); }
584
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: RequestParametersModule, providers: [
573
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: RequestParametersModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
574
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.4", ngImport: i0, type: RequestParametersModule }); }
575
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: RequestParametersModule, providers: [
585
576
  {
586
577
  provide: REQUEST_PARAMETERS_CONFIG_TOKEN,
587
578
  useValue: {}
@@ -589,7 +580,7 @@ class RequestParametersModule {
589
580
  RequestParametersService
590
581
  ] }); }
591
582
  }
592
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: RequestParametersModule, decorators: [{
583
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: RequestParametersModule, decorators: [{
593
584
  type: NgModule,
594
585
  args: [{
595
586
  imports: [],
@@ -618,11 +609,11 @@ function provideRequestParameters(config = defaultConfigFactory) {
618
609
  }
619
610
 
620
611
  class StyleLazyLoaderModule {
621
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: StyleLazyLoaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
622
- /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.13", ngImport: i0, type: StyleLazyLoaderModule, imports: [DynamicContentModule] }); }
623
- /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: StyleLazyLoaderModule, imports: [DynamicContentModule] }); }
612
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: StyleLazyLoaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
613
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.0.4", ngImport: i0, type: StyleLazyLoaderModule, imports: [DynamicContentModule] }); }
614
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: StyleLazyLoaderModule, imports: [DynamicContentModule] }); }
624
615
  }
625
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: StyleLazyLoaderModule, decorators: [{
616
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: StyleLazyLoaderModule, decorators: [{
626
617
  type: NgModule,
627
618
  args: [{
628
619
  imports: [DynamicContentModule]
@@ -633,8 +624,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImpo
633
624
  * Service to lazy load a CSS file
634
625
  */
635
626
  class StyleLazyLoader {
636
- constructor(dcService) {
637
- this.dcService = dcService;
627
+ constructor() {
628
+ this.dcService = inject(DynamicContentService);
638
629
  this.DEFAULT_STYLE_ELEMENT_ID = 'external-theme';
639
630
  }
640
631
  /**
@@ -671,15 +662,15 @@ class StyleLazyLoader {
671
662
  styleUrlConfig.href = dynamicContentPath;
672
663
  this.loadStyleFromURL(styleUrlConfig);
673
664
  }
674
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: StyleLazyLoader, deps: [{ token: DynamicContentService }], target: i0.ɵɵFactoryTarget.Injectable }); }
675
- /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: StyleLazyLoader, providedIn: StyleLazyLoaderModule }); }
665
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: StyleLazyLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
666
+ /** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: StyleLazyLoader, providedIn: StyleLazyLoaderModule }); }
676
667
  }
677
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.13", ngImport: i0, type: StyleLazyLoader, decorators: [{
668
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.4", ngImport: i0, type: StyleLazyLoader, decorators: [{
678
669
  type: Injectable,
679
670
  args: [{
680
671
  providedIn: StyleLazyLoaderModule
681
672
  }]
682
- }], ctorParameters: () => [{ type: DynamicContentService }] });
673
+ }] });
683
674
 
684
675
  /**
685
676
  * Generated bundle index. Do not edit.
@@ -1 +1 @@
1
- {"version":3,"file":"o3r-dynamic-content.mjs","sources":["../../src/stores/asset-path-override/asset-path-override.actions.ts","../../src/stores/asset-path-override/asset-path-override.reducer.ts","../../src/stores/asset-path-override/asset-path-override.state.ts","../../src/stores/asset-path-override/asset-path-override.module.ts","../../src/stores/asset-path-override/asset-path-override.selectors.ts","../../src/stores/asset-path-override/asset-path-override.sync.ts","../../src/services/dynamic-content/dynamic-content.token.ts","../../src/services/dynamic-content/dynamic-content.service.ts","../../src/services/dynamic-content/dynamic-content.pipe.ts","../../src/services/dynamic-content/dynamic-content.module.ts","../../src/services/request-parameters/request-parameters.config.ts","../../src/services/request-parameters/request-parameters.token.ts","../../src/services/request-parameters/request-parameters.service.ts","../../src/services/request-parameters/request-parameters.module.ts","../../src/services/styling/style-lazy-loader.module.ts","../../src/services/styling/style-lazy-loader.service.ts","../../src/o3r-dynamic-content.ts"],"sourcesContent":["import {\n createAction,\n props,\n} from '@ngrx/store';\nimport type {\n SetStateActionPayload,\n} from '@o3r/core';\nimport {\n AssetPathOverrideState,\n} from './asset-path-override.state';\n\n/** Actions */\nconst ACTION_SET = '[AssetPathOverride] set entities';\n\n/**\n * Clear all overrides and fill the store with the payload\n */\nexport const setAssetPathOverride = createAction(ACTION_SET, props<SetStateActionPayload<AssetPathOverrideState>>());\n","import {\n ActionCreator,\n createReducer,\n on,\n ReducerTypes,\n} from '@ngrx/store';\nimport * as actions from './asset-path-override.actions';\nimport {\n AssetPathOverrideState,\n} from './asset-path-override.state';\n\n/**\n * AssetPathOverride Store initial value\n */\nexport const assetPathOverrideInitialState: AssetPathOverrideState = { assetPathOverrides: {} };\n\n/**\n * List of basic actions for AssetPathOverride Store\n */\nexport const assetPathOverrideReducerFeatures: ReducerTypes<AssetPathOverrideState, ActionCreator[]>[] = [\n on(actions.setAssetPathOverride, (_state, payload) => ({ ...payload.state }))\n];\n\n/**\n * AssetPathOverride Store reducer\n */\nexport const assetPathOverrideReducer = createReducer(\n assetPathOverrideInitialState,\n ...assetPathOverrideReducerFeatures\n);\n","/**\n * AssetPathOverride store state\n */\nexport interface AssetPathOverrideState {\n /** Mapping of asset path (key) and its override (value)*/\n assetPathOverrides: Record<string, string>;\n}\n\n/**\n * Name of the AssetPathOverride Store\n */\nexport const ASSET_PATH_OVERRIDE_STORE_NAME = 'assetPathOverride';\n\n/**\n * AssetPathOverride Store Interface\n */\nexport interface AssetPathOverrideStore {\n /** AssetPathOverride state */\n [ASSET_PATH_OVERRIDE_STORE_NAME]: AssetPathOverrideState;\n}\n","import {\n InjectionToken,\n ModuleWithProviders,\n NgModule,\n} from '@angular/core';\nimport {\n Action,\n ActionReducer,\n StoreModule,\n} from '@ngrx/store';\nimport {\n assetPathOverrideReducer,\n} from './asset-path-override.reducer';\nimport {\n ASSET_PATH_OVERRIDE_STORE_NAME,\n AssetPathOverrideState,\n} from './asset-path-override.state';\n\n/** Token of the AssetPathOverride reducer */\nexport const ASSET_PATH_OVERRIDE_REDUCER_TOKEN = new InjectionToken<ActionReducer<AssetPathOverrideState, Action>>('Feature AssetPathOverride Reducer');\n\n/** Provide default reducer for AssetPathOverride store */\nexport function getDefaultAssetPathOverrideReducer() {\n return assetPathOverrideReducer;\n}\n\n@NgModule({\n imports: [\n StoreModule.forFeature(ASSET_PATH_OVERRIDE_STORE_NAME, ASSET_PATH_OVERRIDE_REDUCER_TOKEN)\n ],\n providers: [\n { provide: ASSET_PATH_OVERRIDE_REDUCER_TOKEN, useFactory: getDefaultAssetPathOverrideReducer }\n ]\n})\nexport class AssetPathOverrideStoreModule {\n public static forRoot<T extends AssetPathOverrideState>(reducerFactory: () => ActionReducer<T, Action>): ModuleWithProviders<AssetPathOverrideStoreModule> {\n return {\n ngModule: AssetPathOverrideStoreModule,\n providers: [\n { provide: ASSET_PATH_OVERRIDE_REDUCER_TOKEN, useFactory: reducerFactory }\n ]\n };\n }\n}\n","import {\n createFeatureSelector,\n createSelector,\n} from '@ngrx/store';\nimport {\n ASSET_PATH_OVERRIDE_STORE_NAME,\n AssetPathOverrideState,\n} from './asset-path-override.state';\n\n/** Select AssetPathOverride State */\nexport const selectAssetPathOverrideState = createFeatureSelector<AssetPathOverrideState>(ASSET_PATH_OVERRIDE_STORE_NAME);\n\n/** Select all assetPath override map */\nexport const selectAssetPathOverride = createSelector(selectAssetPathOverrideState, (state) => state?.assetPathOverrides || {});\n","import type {\n Serializer,\n} from '@o3r/core';\nimport {\n assetPathOverrideInitialState,\n} from './asset-path-override.reducer';\nimport {\n AssetPathOverrideState,\n} from './asset-path-override.state';\n\n/**\n * Deserializer\n * @param rawObject\n */\nexport const assetPathOverrideStorageDeserializer = (rawObject: any) => {\n if (!rawObject) {\n return assetPathOverrideInitialState;\n }\n return rawObject;\n};\n\nexport const assetPathOverrideStorageSync: Serializer<AssetPathOverrideState> = {\n deserialize: assetPathOverrideStorageDeserializer\n};\n","import {\n InjectionToken,\n} from '@angular/core';\n\n/**\n * Injection token for the rootpath of dynamic content\n */\nexport const DYNAMIC_CONTENT_BASE_PATH_TOKEN: InjectionToken<string> = new InjectionToken('Dynamic content path injection token');\n\n/**\n * Injection token for the assets path injected by the cms\n * This token will be injected only in editor mode\n */\nexport const CMS_ASSETS_PATH_TOKEN: InjectionToken<string> = new InjectionToken('CMS assets path injection token');\n","import {\n Inject,\n Injectable,\n Optional,\n} from '@angular/core';\nimport {\n select,\n Store,\n} from '@ngrx/store';\nimport {\n of,\n} from 'rxjs';\nimport {\n distinctUntilChanged,\n map,\n shareReplay,\n} from 'rxjs/operators';\nimport {\n AssetPathOverrideStore,\n selectAssetPathOverride,\n} from '../../stores/index';\nimport {\n CMS_ASSETS_PATH_TOKEN,\n DYNAMIC_CONTENT_BASE_PATH_TOKEN,\n} from './dynamic-content.token';\n\nconst MEDIA_FOLDER_NAME = 'assets';\n\n/**\n * Service for getting dynamic content path\n */\n@Injectable()\nexport class DynamicContentService {\n public readonly basePath: string;\n\n private readonly mediaFolder: string;\n\n constructor(@Inject(DYNAMIC_CONTENT_BASE_PATH_TOKEN) dynamicContentPath: string,\n @Inject(CMS_ASSETS_PATH_TOKEN) private readonly cmsOnlyAssetsPath: string,\n @Optional() private readonly store?: Store<AssetPathOverrideStore>) {\n this.basePath = dynamicContentPath.replace(/\\/$/, '');\n this.mediaFolder = MEDIA_FOLDER_NAME;\n }\n\n private normalizePath(assetPath?: string) {\n return assetPath ? assetPath.replace(/^\\//, '') : '';\n }\n\n private getContentPath(assetPath?: string) {\n const normalizedAssetPath = this.normalizePath(assetPath);\n return this.basePath === '' ? assetPath || '' : `${this.basePath}/${normalizedAssetPath}`;\n }\n\n private getMediaPath(assetPath?: string) {\n if (this.cmsOnlyAssetsPath && assetPath) {\n return assetPath.startsWith('/') ? assetPath : `${this.cmsOnlyAssetsPath.replace(/\\/$/, '')}/${assetPath}`;\n }\n return this.getContentPath(this.mediaFolder ? `${this.mediaFolder}/${this.normalizePath(assetPath)}` : assetPath);\n }\n\n /**\n * Gets the full path of a content relative to the root\n * Content path doesn't consider any override, you will always get the same file\n * @param assetPath asset location in the root folder\n * @example\n * ```typescript\n * getMediaPath('assets/imgs/my-image.png') // will give you the basePath + 'assets/imgs/my-image.png'\n * ```\n */\n public getContentPathStream(assetPath?: string) {\n return of(this.getContentPath(assetPath));\n }\n\n /**\n * Gets the stream that provides the full path of a media content\n * A Media content is always stored in the 'assets' media folder, no external content will be accessible through this function\n * If any override is applied to the content, returns the override path instead\n * @param assetPath asset location in the media folder (e.g imgs/my-image.png)\n * @example\n * ```typescript\n * getMediaPathStream('imgs/my-image.png') // will give you the basePath + mediaFolder + 'imgs/my-image.png'\n * ```\n */\n public getMediaPathStream(assetPath?: string) {\n if (!this.store) {\n return of(this.getMediaPath(assetPath));\n }\n return this.store.pipe(\n select(selectAssetPathOverride),\n map((entities) => assetPath && entities && entities[assetPath] ? entities[assetPath] : assetPath),\n map((finalAssetPath) => this.getMediaPath(finalAssetPath)),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true })\n );\n }\n}\n","import {\n ChangeDetectorRef,\n OnDestroy,\n Pipe,\n PipeTransform,\n} from '@angular/core';\nimport {\n Subscription,\n} from 'rxjs';\nimport {\n DynamicContentService,\n} from './dynamic-content.service';\n\n@Pipe({\n name: 'o3rDynamicContent',\n pure: false\n})\nexport class O3rDynamicContentPipe implements PipeTransform, OnDestroy {\n /** Last query value */\n protected lastQuery?: string;\n\n /** Subscription to retrieve media path */\n protected onMediaPathChange?: Subscription;\n\n /** Path to the media */\n protected mediaPath = '';\n\n constructor(protected readonly service: DynamicContentService, protected readonly cd: ChangeDetectorRef) {}\n\n /** @inheritDoc */\n public transform(query?: string) {\n if (query !== this.lastQuery) {\n this.lastQuery = query;\n if (this.onMediaPathChange) {\n this.onMediaPathChange.unsubscribe();\n }\n this.onMediaPathChange = this.service.getMediaPathStream(query).subscribe((mediaPath) => {\n this.mediaPath = mediaPath;\n this.cd.markForCheck();\n });\n }\n\n return this.mediaPath;\n }\n\n /** @inheritDoc */\n public ngOnDestroy(): void {\n if (this.onMediaPathChange) {\n this.onMediaPathChange.unsubscribe();\n }\n }\n}\n","import {\n type EnvironmentProviders,\n makeEnvironmentProviders,\n ModuleWithProviders,\n NgModule,\n type Provider,\n} from '@angular/core';\nimport {\n O3rDynamicContentPipe,\n} from './dynamic-content.pipe';\nimport {\n DynamicContentService,\n} from './dynamic-content.service';\nimport {\n CMS_ASSETS_PATH_TOKEN,\n DYNAMIC_CONTENT_BASE_PATH_TOKEN,\n} from './dynamic-content.token';\n\n/**\n * Function to get dynamic content from body dataset\n */\nexport function getDynamicContent() {\n return document.body.dataset.dynamiccontentpath || '';\n}\n\n/**\n * Function to get the cms assets from body dataset\n * This will be used only in a CMS context(not in local or prod) to display correctly the assets in the editor\n */\nexport function getCmsAssets() {\n return document.body.dataset.cmsassetspath || '';\n}\n\n/**\n * DynamicContent module\n * @deprecated Will be removed in v14.\n */\n@NgModule({\n providers: [\n {\n provide: DYNAMIC_CONTENT_BASE_PATH_TOKEN,\n useFactory: getDynamicContent\n },\n {\n provide: CMS_ASSETS_PATH_TOKEN,\n useFactory: getCmsAssets\n },\n DynamicContentService\n ],\n imports: [O3rDynamicContentPipe],\n exports: [O3rDynamicContentPipe]\n})\nexport class DynamicContentModule {\n /**\n * Customize the location where the application will search for the base path of dynamic content\n * @param dynamicPath Configuration for dynamic content path\n * @param dynamicPath.content The string will be used as base path of dynamic content\n * @param dynamicPath.cmsAssets The string will be used for the the base path of cms assets\n * @note The cmsAssets will be used only in the cms editor mode and it will take priority over dynamic content\n * @deprecated Please use {@link provideDynamicContent} instead. Will be removed in v14.\n */\n public static forRoot(dynamicPath: { content: string } | { cmsAssets: string }): ModuleWithProviders<DynamicContentModule> {\n const providers = [];\n if ('content' in dynamicPath) {\n providers.push({\n provide: DYNAMIC_CONTENT_BASE_PATH_TOKEN,\n useValue: dynamicPath.content\n });\n }\n if ('cmsAssets' in dynamicPath) {\n providers.push({\n provide: CMS_ASSETS_PATH_TOKEN,\n useValue: dynamicPath.cmsAssets\n });\n }\n\n return {\n ngModule: DynamicContentModule,\n providers\n };\n }\n}\n\ntype DynamicContentFeatureKind = 'base-path' | 'cms-assets-path';\n\ninterface DynamicContentFeature<FeatureKind extends DynamicContentFeatureKind> {\n ɵkind: FeatureKind;\n ɵproviders: Provider[];\n}\n\ntype BasePathFeature = DynamicContentFeature<'base-path'>;\ntype CmsAssetsPathFeature = DynamicContentFeature<'cms-assets-path'>;\n\ntype DynamicContentFeatures = BasePathFeature | CmsAssetsPathFeature;\n\n/**\n * Specify a custom base path\n * @param basePath\n */\nexport function withBasePath(basePath: string | (() => string)): BasePathFeature {\n return {\n ɵkind: 'base-path',\n ɵproviders: [\n {\n provide: DYNAMIC_CONTENT_BASE_PATH_TOKEN,\n ...(\n typeof basePath === 'string'\n ? { useValue: basePath }\n : { useFactory: basePath }\n )\n }\n ]\n };\n}\n\n/**\n * Specify a custom CMS assets path\n * @param cmsAssetsPath\n */\nexport function withCmsAssetsPath(cmsAssetsPath: string | (() => string)): DynamicContentFeature<'cms-assets-path'> {\n return {\n ɵkind: 'cms-assets-path',\n ɵproviders: [\n {\n provide: CMS_ASSETS_PATH_TOKEN,\n ...(\n typeof cmsAssetsPath === 'string'\n ? { useValue: cmsAssetsPath }\n : { useFactory: cmsAssetsPath }\n )\n }\n ]\n };\n}\n\n/**\n * Provide dynamic content default configuration.\n * To customize the location where the application will search for the base path of dynamic content\n * @see {@link withBasePath}\n * @see {@link withCmsAssetsPath}\n * @note The cmsAssets will be used only in the cms editor mode and it will take priority over dynamic content\n * @param features\n * @example\n * ```typescript\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideDynamicContent(\n * withBasePath('custom/base/path'),\n * withCmsAssetsPath('custom/cms/assets/path'),\n * )\n * ]\n * }\n * );\n */\nexport function provideDynamicContent(...features: DynamicContentFeatures[]) {\n const providers: (Provider | EnvironmentProviders)[] = [\n DynamicContentService\n ];\n\n const basePathFeature = features.find((f) => f.ɵkind === 'base-path') ?? withBasePath(getDynamicContent);\n providers.push(basePathFeature.ɵproviders);\n\n const cmsAssetsPathFeature = features.find((f) => f.ɵkind === 'cms-assets-path') ?? withCmsAssetsPath(getCmsAssets);\n providers.push(cmsAssetsPathFeature.ɵproviders);\n\n return makeEnvironmentProviders(providers);\n}\n","/**\n * Strategies available to read / write data in the RequestParameters service.\n * Rehydrate: if the storage already have data, those will be used by the service, ignoring new data. Otherwise set the storage\n * Merge: storage data will be merged with the ones provided. (provided data has priority)\n * Replace: storage data will be completely replaced by the ones provided\n * ReplaceIfNotEmpty: If no parameters are provided, use the content from storage. Otherwise use the ones provided and update the storage with them.\n */\n\nexport enum StorageStrategy {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- required naming convention\n Rehydrate = 0,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- required naming convention\n Merge = 1,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- required naming convention\n Replace = 2,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- required naming convention\n ReplaceIfNotEmpty = 3\n}\n\n/**\n * Configuration used by a user to feed the request parameters service.\n */\nexport interface RequestParametersConfig {\n /**\n * Strategy used by the RequestParameters Service. See StorageStrategy for more info\n */\n strategy: StorageStrategy;\n /**\n * Storage used by the RequestParameters service\n */\n storage?: Storage;\n /**\n * Value of the DOM element containing your query parameters (e.g. `document.body.dataset.query`)\n */\n queryParamsValue: string;\n /**\n * Value of the DOM element containing your post parameters (e.g. `document.body.dataset.post`)\n */\n postParamsValue: string;\n}\n\nexport const defaultRequestParametersConfig: Readonly<RequestParametersConfig> = {\n storage: (typeof window === 'undefined') ? undefined : window.sessionStorage,\n strategy: StorageStrategy.Rehydrate,\n queryParamsValue: (typeof document !== 'undefined' && document.body?.dataset?.query) || '{}',\n postParamsValue: (typeof document !== 'undefined' && document.body?.dataset?.post) || '{}'\n} as const;\n","import {\n InjectionToken,\n} from '@angular/core';\nimport {\n RequestParametersConfig,\n} from './request-parameters.config';\n\n/**\n * Token to be provided in case of service customization needs.\n */\nexport const REQUEST_PARAMETERS_CONFIG_TOKEN = new InjectionToken<Partial<RequestParametersConfig>>('RequestParametersConfig injection token', { factory: () => ({}) });\n","import {\n Inject,\n Injectable,\n} from '@angular/core';\nimport {\n defaultRequestParametersConfig,\n RequestParametersConfig,\n StorageStrategy,\n} from './request-parameters.config';\nimport {\n REQUEST_PARAMETERS_CONFIG_TOKEN,\n} from './request-parameters.token';\n\nexport type ParamsList = 'query' | 'post';\n\nexport type ParamsType = { [k in ParamsList]: { [key: string]: string } };\n\n/**\n * Partial configuration for RequestParameters Service\n */\nexport interface PartialRequestParametersConfig extends Partial<RequestParametersConfig> {}\n\n/**\n * Service used to store the request parameters of your requests so that subsequent calls or refresh the page will preserve\n * them.\n */\n@Injectable()\nexport class RequestParametersService implements ParamsType {\n private _query: { [key: string]: any } = {};\n private _post: { [key: string]: any } = {};\n\n private readonly config: RequestParametersConfig;\n\n constructor(@Inject(REQUEST_PARAMETERS_CONFIG_TOKEN) config: PartialRequestParametersConfig) {\n this.config = defaultRequestParametersConfig;\n (Object.keys(config) as (keyof RequestParametersConfig)[])\n .filter((key) => config[key] !== undefined)\n .forEach((key) => (this.config as any)[key] = config[key]);\n\n this.setParameters('query', JSON.parse(this.config.queryParamsValue));\n this.setParameters('post', JSON.parse(this.config.postParamsValue));\n }\n\n /**\n * Depending on the strategy, set the internal values for the parameters.\n * See StorageStrategy for more info.\n * @param key\n * @param value\n */\n private setParameters(key: ParamsList, value: { [key: string]: string }) {\n const privateKey: `_${ParamsList}` = `_${key}`;\n if (!this.config.storage) {\n // No storage is available , cannot set items\n return;\n }\n switch (this.config.strategy) {\n case StorageStrategy.Rehydrate: {\n if (!this.config.storage.getItem(privateKey)) {\n this[privateKey] = value;\n this.config.storage.setItem(privateKey, JSON.stringify(value));\n break;\n }\n this[privateKey] = JSON.parse(this.config.storage.getItem(privateKey) || '{}');\n break;\n }\n case StorageStrategy.Replace: {\n this[privateKey] = value;\n this.config.storage.setItem(privateKey, JSON.stringify(value));\n break;\n }\n case StorageStrategy.Merge: {\n const storageData = Object.assign(JSON.parse(this.config.storage.getItem(privateKey) || '{}'), value);\n this[privateKey] = storageData;\n this.config.storage.setItem(privateKey, JSON.stringify(storageData));\n break;\n }\n case StorageStrategy.ReplaceIfNotEmpty: {\n if (Object.keys(value).length > 0) {\n this[privateKey] = value;\n this.config.storage.setItem(privateKey, JSON.stringify(value));\n break;\n }\n this[privateKey] = JSON.parse(this.config.storage.getItem(privateKey) || '{}');\n break;\n }\n }\n }\n\n /**\n * Get all the query parameters in a map.\n */\n public get query() {\n return this._query;\n }\n\n /**\n * Get all the post parameters in a map.\n */\n public get post() {\n return this._post;\n }\n\n /**\n * Get a specific query parameter value, given the key.\n * @param key\n */\n public getQueryParameter(key: string): string | undefined {\n return this._query[key];\n }\n\n /**\n * Get a specific query parameter value as boolean, given the key.\n * @param key\n */\n public getQueryParameterAsBoolean(key: string): boolean | undefined {\n const queryParameter: string | undefined = this.getQueryParameter(key);\n return queryParameter ? queryParameter.toLowerCase() === 'true' : undefined;\n }\n\n /**\n * Get a specific post parameter value, given the key.\n * @param key\n */\n public getPostParameter(key: string): string | undefined {\n return this._post[key];\n }\n\n /**\n * Get a specific post parameter value as boolean, given the key.\n * @param key\n */\n public getPostParameterAsBoolean(key: string): boolean | undefined {\n const postParameter: string | undefined = this.getPostParameter(key);\n return postParameter ? postParameter.toLowerCase() === 'true' : undefined;\n }\n\n /**\n * Get a specific parameter value, given the key.\n * @param key\n */\n public getParameter(key: string): string | undefined {\n return this._query[key] || this._post[key];\n }\n\n /**\n * Get a specific parameter value as boolean, given the key.\n * @param key\n */\n public getParameterAsBoolean(key: string): boolean | undefined {\n const parameter: string | undefined = this.getParameter(key);\n return parameter ? parameter.toLowerCase() === 'true' : undefined;\n }\n\n /**\n * Clear GET parameters from the storage\n * @param paramsToClear the list on key that you want to clear in get parameters\n */\n public clearQueryParameters(paramsToClear?: string[]) {\n const newQuery = (paramsToClear ? Object.keys(this._query).filter((key) => !paramsToClear.includes(key)) : [])\n .reduce<{ [k: string]: string }>((acc, key) => {\n acc[key] = this._query[key];\n return acc;\n }, {});\n if (this.config.storage) {\n this.config.storage.setItem('_query', JSON.stringify(newQuery));\n }\n this._query = newQuery;\n }\n\n /**\n * Clear POST parameters from the storage\n * @param paramsToClear the list on key that you want to clean in post parameters\n */\n public clearPostParameters(paramsToClear?: string[]) {\n const newPost = (paramsToClear ? Object.keys(this._post).filter((key) => !paramsToClear.includes(key)) : [])\n .reduce<{ [k: string]: string }>((acc, key) => {\n acc[key] = this._post[key];\n return acc;\n }, {});\n if (this.config.storage) {\n this.config.storage.setItem('_post', JSON.stringify(newPost));\n }\n this._post = newPost;\n }\n\n /**\n * Get all the parameters in a map.\n * @param priority the parameter to be given priority in case same key is in get and post params.\n */\n public getParams(priority: ParamsList = 'query') {\n return priority === 'query' ? { ...this._post, ...this._query } : { ...this._query, ...this._post };\n }\n\n /**\n * Filter Parameters(both Query/POST) from the storage\n * @param paramstoFilter the list on key that you want to filter from parameters\n * @param priority the priorty of the parameter type(POST/Query)\n */\n public getFilteredParameters(paramstoFilter?: string[], priority: ParamsList = 'query') {\n const params = this.getParams(priority);\n if (!paramstoFilter) {\n return params;\n }\n return Object.keys(params)\n .filter((key) => !paramstoFilter.includes(key))\n .reduce<{ [k: string]: string }>((acc, key) => {\n acc[key] = params[key];\n return acc;\n }, {});\n }\n}\n","import {\n makeEnvironmentProviders,\n ModuleWithProviders,\n NgModule,\n} from '@angular/core';\nimport {\n RequestParametersConfig,\n} from './request-parameters.config';\nimport {\n RequestParametersService,\n} from './request-parameters.service';\nimport {\n REQUEST_PARAMETERS_CONFIG_TOKEN,\n} from './request-parameters.token';\n\n/**\n * Empty configuration factory, used when config is not provided. It needs a separate function for AOT.\n */\nexport function defaultConfigFactory() {\n return {};\n}\n/**\n * RequestParametersService Module\n * @deprecated Will be removed in v14.\n */\n@NgModule({\n imports: [],\n providers: [\n {\n provide: REQUEST_PARAMETERS_CONFIG_TOKEN,\n useValue: {}\n },\n RequestParametersService\n ]\n})\nexport class RequestParametersModule {\n /**\n * Provide request parameters config\n * @param config\n * @deprecated Please use {@link provideRequestParameters} instead. Will be removed in v14.\n */\n public static forRoot(config: () => Partial<RequestParametersConfig> = defaultConfigFactory): ModuleWithProviders<RequestParametersModule> {\n return {\n ngModule: RequestParametersModule,\n providers: [\n {\n provide: REQUEST_PARAMETERS_CONFIG_TOKEN,\n useFactory: config\n },\n RequestParametersService\n ]\n };\n }\n}\n\n/**\n * Provide request parameters config\n * We don't provide directly the value and use a factory because otherwise AOT compilation will resolve to undefined whatever is taken from window\n * @param config\n */\nexport function provideRequestParameters(config: () => Partial<RequestParametersConfig> = defaultConfigFactory) {\n return makeEnvironmentProviders([\n {\n provide: REQUEST_PARAMETERS_CONFIG_TOKEN,\n useFactory: config\n },\n RequestParametersService\n ]);\n}\n","import {\n NgModule,\n} from '@angular/core';\nimport {\n DynamicContentModule,\n} from '../dynamic-content/index';\n\n@NgModule({\n imports: [DynamicContentModule]\n})\nexport class StyleLazyLoaderModule {}\n","import {\n Injectable,\n} from '@angular/core';\nimport {\n firstValueFrom,\n} from 'rxjs';\nimport {\n DynamicContentService,\n} from '../dynamic-content/index';\nimport {\n StyleLazyLoaderModule,\n} from './style-lazy-loader.module';\n\n/**\n * Interface to describe a style to lazy load from a url.\n */\nexport interface StyleURL {\n /** url to file */\n href: string;\n /** id of the HTML element */\n id?: string;\n /** html integrity attribute to verify fetched resources */\n integrity?: string;\n /** html crossOrigin attribute for CORS support. */\n crossOrigin?: 'anonymous' | 'use-credentials' | '';\n}\n\n/**\n * Service to lazy load a CSS file\n */\n@Injectable({\n providedIn: StyleLazyLoaderModule\n})\nexport class StyleLazyLoader {\n private readonly DEFAULT_STYLE_ELEMENT_ID = 'external-theme';\n\n constructor(private readonly dcService: DynamicContentService) {}\n\n /**\n * Load a new CSS from an absolute URL, if we already HTML element exists with the url, otherwise\n * @param styleUrlConfig object containing CSS File absolute URL to load, integrity and crossOrigin attributes\n * and the styleId id of the dynamic style in the body tag.\n */\n public loadStyleFromURL(styleUrlConfig: StyleURL) {\n const elementId = styleUrlConfig.id || this.DEFAULT_STYLE_ELEMENT_ID;\n let style = document.querySelector<HTMLLinkElement>(`#${elementId}`);\n\n if (style === null) {\n style = document.createElement('link');\n style.rel = 'stylesheet';\n style.type = 'text/css';\n const head = document.querySelectorAll('head')[0];\n head.append(style);\n }\n if (styleUrlConfig.integrity) {\n style.integrity = styleUrlConfig.integrity;\n }\n if (styleUrlConfig.crossOrigin !== undefined) {\n style.crossOrigin = styleUrlConfig.crossOrigin;\n }\n style.href = styleUrlConfig.href;\n\n return style;\n }\n\n /**\n * Load a new CSS File\n * @param styleUrlConfig CSS File config containing URL to load, integrity and crossOrigin attributes\n * and the styleId id of the dynamic style in the body tag\n */\n public async asyncLoadStyleFromDynamicContent(styleUrlConfig: StyleURL) {\n const dynamicContentPath = await firstValueFrom(\n this.dcService.getContentPathStream(styleUrlConfig.href)\n );\n styleUrlConfig.href = dynamicContentPath;\n this.loadStyleFromURL(styleUrlConfig);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["actions.setAssetPathOverride","i1.DynamicContentService"],"mappings":";;;;;;;AAWA;AACA,MAAM,UAAU,GAAG,kCAAkC;AAErD;;AAEG;AACU,MAAA,oBAAoB,GAAG,YAAY,CAAC,UAAU,EAAE,KAAK,EAAiD;;ACNnH;;AAEG;MACU,6BAA6B,GAA2B,EAAE,kBAAkB,EAAE,EAAE;AAE7F;;AAEG;AACU,MAAA,gCAAgC,GAA4D;IACvG,EAAE,CAACA,oBAA4B,EAAE,CAAC,MAAM,EAAE,OAAO,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;;AAG9E;;AAEG;AACU,MAAA,wBAAwB,GAAG,aAAa,CACnD,6BAA6B,EAC7B,GAAG,gCAAgC;;ACpBrC;;AAEG;AACI,MAAM,8BAA8B,GAAG;;ACO9C;MACa,iCAAiC,GAAG,IAAI,cAAc,CAAgD,mCAAmC;AAEtJ;SACgB,kCAAkC,GAAA;AAChD,IAAA,OAAO,wBAAwB;AACjC;MAUa,4BAA4B,CAAA;IAChC,OAAO,OAAO,CAAmC,cAA8C,EAAA;QACpG,OAAO;AACL,YAAA,QAAQ,EAAE,4BAA4B;AACtC,YAAA,SAAS,EAAE;AACT,gBAAA,EAAE,OAAO,EAAE,iCAAiC,EAAE,UAAU,EAAE,cAAc;AACzE;SACF;;kIAPQ,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;mIAA5B,4BAA4B,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,CAAA;AAA5B,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,EAJ5B,SAAA,EAAA;AACT,YAAA,EAAE,OAAO,EAAE,iCAAiC,EAAE,UAAU,EAAE,kCAAkC;AAC7F,SAAA,EAAA,OAAA,EAAA,CAJC,WAAW,CAAC,UAAU,CAAC,8BAA8B,EAAE,iCAAiC,CAAC,CAAA,EAAA,CAAA,CAAA;;4FAMhF,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBARxC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;AACP,wBAAA,WAAW,CAAC,UAAU,CAAC,8BAA8B,EAAE,iCAAiC;AACzF,qBAAA;AACD,oBAAA,SAAS,EAAE;AACT,wBAAA,EAAE,OAAO,EAAE,iCAAiC,EAAE,UAAU,EAAE,kCAAkC;AAC7F;AACF,iBAAA;;;ACxBD;MACa,4BAA4B,GAAG,qBAAqB,CAAyB,8BAA8B;AAExH;AACa,MAAA,uBAAuB,GAAG,cAAc,CAAC,4BAA4B,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,kBAAkB,IAAI,EAAE;;ACH9H;;;AAGG;AACU,MAAA,oCAAoC,GAAG,CAAC,SAAc,KAAI;IACrE,IAAI,CAAC,SAAS,EAAE;AACd,QAAA,OAAO,6BAA6B;;AAEtC,IAAA,OAAO,SAAS;AAClB;AAEa,MAAA,4BAA4B,GAAuC;AAC9E,IAAA,WAAW,EAAE;;;AClBf;;AAEG;MACU,+BAA+B,GAA2B,IAAI,cAAc,CAAC,sCAAsC;AAEhI;;;AAGG;MACU,qBAAqB,GAA2B,IAAI,cAAc,CAAC,iCAAiC;;ACajH,MAAM,iBAAiB,GAAG,QAAQ;AAElC;;AAEG;MAEU,qBAAqB,CAAA;AAKhC,IAAA,WAAA,CAAqD,kBAA0B,EAC7B,iBAAyB,EAC5C,KAAqC,EAAA;QADlB,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;QACpC,IAAK,CAAA,KAAA,GAAL,KAAK;QAClC,IAAI,CAAC,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AACrD,QAAA,IAAI,CAAC,WAAW,GAAG,iBAAiB;;AAG9B,IAAA,aAAa,CAAC,SAAkB,EAAA;AACtC,QAAA,OAAO,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE;;AAG9C,IAAA,cAAc,CAAC,SAAkB,EAAA;QACvC,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;QACzD,OAAO,IAAI,CAAC,QAAQ,KAAK,EAAE,GAAG,SAAS,IAAI,EAAE,GAAG,CAAG,EAAA,IAAI,CAAC,QAAQ,CAAA,CAAA,EAAI,mBAAmB,CAAA,CAAE;;AAGnF,IAAA,YAAY,CAAC,SAAkB,EAAA;AACrC,QAAA,IAAI,IAAI,CAAC,iBAAiB,IAAI,SAAS,EAAE;YACvC,OAAO,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,CAAG,EAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA,CAAA,EAAI,SAAS,CAAA,CAAE;;QAE5G,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,GAAG,CAAA,EAAG,IAAI,CAAC,WAAW,CAAA,CAAA,EAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAE,CAAA,GAAG,SAAS,CAAC;;AAGnH;;;;;;;;AAQG;AACI,IAAA,oBAAoB,CAAC,SAAkB,EAAA;QAC5C,OAAO,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;;AAG3C;;;;;;;;;AASG;AACI,IAAA,kBAAkB,CAAC,SAAkB,EAAA;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,OAAO,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;;AAEzC,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CACpB,MAAM,CAAC,uBAAuB,CAAC,EAC/B,GAAG,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,IAAI,QAAQ,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,EACjG,GAAG,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,EAC1D,oBAAoB,EAAE,EACtB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAC/C;;kIA7DQ,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAKZ,+BAA+B,EAAA,EAAA,EAAA,KAAA,EACzC,qBAAqB,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;sIANpB,qBAAqB,EAAA,CAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC;;0BAMc,MAAM;2BAAC,+BAA+B;;0BAChD,MAAM;2BAAC,qBAAqB;;0BAC5B;;;MCtBQ,qBAAqB,CAAA;IAUhC,WAA+B,CAAA,OAA8B,EAAqB,EAAqB,EAAA;QAAxE,IAAO,CAAA,OAAA,GAAP,OAAO;QAA4C,IAAE,CAAA,EAAA,GAAF,EAAE;;QAF1E,IAAS,CAAA,SAAA,GAAG,EAAE;;;AAKjB,IAAA,SAAS,CAAC,KAAc,EAAA;AAC7B,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE;AAC5B,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,YAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;;AAEtC,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,KAAI;AACtF,gBAAA,IAAI,CAAC,SAAS,GAAG,SAAS;AAC1B,gBAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;AACxB,aAAC,CAAC;;QAGJ,OAAO,IAAI,CAAC,SAAS;;;IAIhB,WAAW,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE;;;kIA/B7B,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;gIAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,mBAAmB;AACzB,oBAAA,IAAI,EAAE;AACP,iBAAA;;;ACED;;AAEG;SACa,iBAAiB,GAAA;IAC/B,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,EAAE;AACvD;AAEA;;;AAGG;SACa,YAAY,GAAA;IAC1B,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE;AAClD;AAEA;;;AAGG;MAgBU,oBAAoB,CAAA;AAC/B;;;;;;;AAOG;IACI,OAAO,OAAO,CAAC,WAAwD,EAAA;QAC5E,MAAM,SAAS,GAAG,EAAE;AACpB,QAAA,IAAI,SAAS,IAAI,WAAW,EAAE;YAC5B,SAAS,CAAC,IAAI,CAAC;AACb,gBAAA,OAAO,EAAE,+BAA+B;gBACxC,QAAQ,EAAE,WAAW,CAAC;AACvB,aAAA,CAAC;;AAEJ,QAAA,IAAI,WAAW,IAAI,WAAW,EAAE;YAC9B,SAAS,CAAC,IAAI,CAAC;AACb,gBAAA,OAAO,EAAE,qBAAqB;gBAC9B,QAAQ,EAAE,WAAW,CAAC;AACvB,aAAA,CAAC;;QAGJ,OAAO;AACL,YAAA,QAAQ,EAAE,oBAAoB;YAC9B;SACD;;kIA3BQ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;mIAApB,oBAAoB,EAAA,OAAA,EAAA,CAHrB,qBAAqB,CAAA,EAAA,OAAA,EAAA,CACrB,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAEpB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAdpB,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,+BAA+B;AACxC,gBAAA,UAAU,EAAE;AACb,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,qBAAqB;AAC9B,gBAAA,UAAU,EAAE;AACb,aAAA;YACD;AACD,SAAA,EAAA,CAAA,CAAA;;4FAIU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAfhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,+BAA+B;AACxC,4BAAA,UAAU,EAAE;AACb,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,qBAAqB;AAC9B,4BAAA,UAAU,EAAE;AACb,yBAAA;wBACD;AACD,qBAAA;oBACD,OAAO,EAAE,CAAC,qBAAqB,CAAC;oBAChC,OAAO,EAAE,CAAC,qBAAqB;AAChC,iBAAA;;AA4CD;;;AAGG;AACG,SAAU,YAAY,CAAC,QAAiC,EAAA;IAC5D,OAAO;AACL,QAAA,KAAK,EAAE,WAAW;AAClB,QAAA,UAAU,EAAE;AACV,YAAA;AACE,gBAAA,OAAO,EAAE,+BAA+B;AACxC,gBAAA,IACE,OAAO,QAAQ,KAAK;AAClB,sBAAE,EAAE,QAAQ,EAAE,QAAQ;AACtB,sBAAE,EAAE,UAAU,EAAE,QAAQ,EAAE;AAE/B;AACF;KACF;AACH;AAEA;;;AAGG;AACG,SAAU,iBAAiB,CAAC,aAAsC,EAAA;IACtE,OAAO;AACL,QAAA,KAAK,EAAE,iBAAiB;AACxB,QAAA,UAAU,EAAE;AACV,YAAA;AACE,gBAAA,OAAO,EAAE,qBAAqB;AAC9B,gBAAA,IACE,OAAO,aAAa,KAAK;AACvB,sBAAE,EAAE,QAAQ,EAAE,aAAa;AAC3B,sBAAE,EAAE,UAAU,EAAE,aAAa,EAAE;AAEpC;AACF;KACF;AACH;AAEA;;;;;;;;;;;;;;;;;;;AAmBG;AACa,SAAA,qBAAqB,CAAC,GAAG,QAAkC,EAAA;AACzE,IAAA,MAAM,SAAS,GAAwC;QACrD;KACD;IAED,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,IAAI,YAAY,CAAC,iBAAiB,CAAC;AACxG,IAAA,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;IAE1C,MAAM,oBAAoB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,iBAAiB,CAAC,IAAI,iBAAiB,CAAC,YAAY,CAAC;AACnH,IAAA,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;AAE/C,IAAA,OAAO,wBAAwB,CAAC,SAAS,CAAC;AAC5C;;ACvKA;;;;;;AAMG;IAES;AAAZ,CAAA,UAAY,eAAe,EAAA;;AAEzB,IAAA,eAAA,CAAA,eAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAa;;AAEb,IAAA,eAAA,CAAA,eAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS;;AAET,IAAA,eAAA,CAAA,eAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAW;;AAEX,IAAA,eAAA,CAAA,eAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAqB;AACvB,CAAC,EATW,eAAe,KAAf,eAAe,GAS1B,EAAA,CAAA,CAAA;AAwBY,MAAA,8BAA8B,GAAsC;AAC/E,IAAA,OAAO,EAAE,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,SAAS,GAAG,MAAM,CAAC,cAAc;IAC5E,QAAQ,EAAE,eAAe,CAAC,SAAS;AACnC,IAAA,gBAAgB,EAAE,CAAC,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,KAAK,IAAI;AAC5F,IAAA,eAAe,EAAE,CAAC,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,KAAK;;;ACtCxF;;AAEG;AACI,MAAM,+BAA+B,GAAG,IAAI,cAAc,CAAmC,yCAAyC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;ACYvK;;;AAGG;MAEU,wBAAwB,CAAA;AAMnC,IAAA,WAAA,CAAqD,MAAsC,EAAA;QALnF,IAAM,CAAA,MAAA,GAA2B,EAAE;QACnC,IAAK,CAAA,KAAA,GAA2B,EAAE;AAKxC,QAAA,IAAI,CAAC,MAAM,GAAG,8BAA8B;AAC3C,QAAA,MAAM,CAAC,IAAI,CAAC,MAAM;AAChB,aAAA,MAAM,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS;AACzC,aAAA,OAAO,CAAC,CAAC,GAAG,KAAM,IAAI,CAAC,MAAc,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AAE5D,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACrE,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;;AAGrE;;;;;AAKG;IACK,aAAa,CAAC,GAAe,EAAE,KAAgC,EAAA;AACrE,QAAA,MAAM,UAAU,GAAqB,CAAI,CAAA,EAAA,GAAG,EAAE;AAC9C,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;;YAExB;;AAEF,QAAA,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ;AAC1B,YAAA,KAAK,eAAe,CAAC,SAAS,EAAE;AAC9B,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAC5C,oBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK;AACxB,oBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oBAC9D;;gBAEF,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;gBAC9E;;AAEF,YAAA,KAAK,eAAe,CAAC,OAAO,EAAE;AAC5B,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK;AACxB,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAC9D;;AAEF,YAAA,KAAK,eAAe,CAAC,KAAK,EAAE;gBAC1B,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC;AACrG,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,WAAW;AAC9B,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBACpE;;AAEF,YAAA,KAAK,eAAe,CAAC,iBAAiB,EAAE;gBACtC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;AACjC,oBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,KAAK;AACxB,oBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oBAC9D;;gBAEF,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;gBAC9E;;;;AAKN;;AAEG;AACH,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,IAAI,CAAC,MAAM;;AAGpB;;AAEG;AACH,IAAA,IAAW,IAAI,GAAA;QACb,OAAO,IAAI,CAAC,KAAK;;AAGnB;;;AAGG;AACI,IAAA,iBAAiB,CAAC,GAAW,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;;AAGzB;;;AAGG;AACI,IAAA,0BAA0B,CAAC,GAAW,EAAA;QAC3C,MAAM,cAAc,GAAuB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;AACtE,QAAA,OAAO,cAAc,GAAG,cAAc,CAAC,WAAW,EAAE,KAAK,MAAM,GAAG,SAAS;;AAG7E;;;AAGG;AACI,IAAA,gBAAgB,CAAC,GAAW,EAAA;AACjC,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;;AAGxB;;;AAGG;AACI,IAAA,yBAAyB,CAAC,GAAW,EAAA;QAC1C,MAAM,aAAa,GAAuB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;AACpE,QAAA,OAAO,aAAa,GAAG,aAAa,CAAC,WAAW,EAAE,KAAK,MAAM,GAAG,SAAS;;AAG3E;;;AAGG;AACI,IAAA,YAAY,CAAC,GAAW,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;;AAG5C;;;AAGG;AACI,IAAA,qBAAqB,CAAC,GAAW,EAAA;QACtC,MAAM,SAAS,GAAuB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;AAC5D,QAAA,OAAO,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,KAAK,MAAM,GAAG,SAAS;;AAGnE;;;AAGG;AACI,IAAA,oBAAoB,CAAC,aAAwB,EAAA;AAClD,QAAA,MAAM,QAAQ,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;AAC1G,aAAA,MAAM,CAA0B,CAAC,GAAG,EAAE,GAAG,KAAI;YAC5C,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAC3B,YAAA,OAAO,GAAG;SACX,EAAE,EAAE,CAAC;AACR,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;;AAEjE,QAAA,IAAI,CAAC,MAAM,GAAG,QAAQ;;AAGxB;;;AAGG;AACI,IAAA,mBAAmB,CAAC,aAAwB,EAAA;AACjD,QAAA,MAAM,OAAO,GAAG,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE;AACxG,aAAA,MAAM,CAA0B,CAAC,GAAG,EAAE,GAAG,KAAI;YAC5C,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC1B,YAAA,OAAO,GAAG;SACX,EAAE,EAAE,CAAC;AACR,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACvB,YAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;;AAE/D,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO;;AAGtB;;;AAGG;IACI,SAAS,CAAC,WAAuB,OAAO,EAAA;AAC7C,QAAA,OAAO,QAAQ,KAAK,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE;;AAGrG;;;;AAIG;AACI,IAAA,qBAAqB,CAAC,cAAyB,EAAE,QAAA,GAAuB,OAAO,EAAA;QACpF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QACvC,IAAI,CAAC,cAAc,EAAE;AACnB,YAAA,OAAO,MAAM;;AAEf,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM;AACtB,aAAA,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC7C,aAAA,MAAM,CAA0B,CAAC,GAAG,EAAE,GAAG,KAAI;YAC5C,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;AACtB,YAAA,OAAO,GAAG;SACX,EAAE,EAAE,CAAC;;AArLC,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,kBAMf,+BAA+B,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;sIANxC,wBAAwB,EAAA,CAAA,CAAA;;4FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC;;0BAOc,MAAM;2BAAC,+BAA+B;;;AClBrD;;AAEG;SACa,oBAAoB,GAAA;AAClC,IAAA,OAAO,EAAE;AACX;AACA;;;AAGG;MAWU,uBAAuB,CAAA;AAClC;;;;AAIG;AACI,IAAA,OAAO,OAAO,CAAC,MAAA,GAAiD,oBAAoB,EAAA;QACzF,OAAO;AACL,YAAA,QAAQ,EAAE,uBAAuB;AACjC,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,+BAA+B;AACxC,oBAAA,UAAU,EAAE;AACb,iBAAA;gBACD;AACD;SACF;;kIAhBQ,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;mIAAvB,uBAAuB,EAAA,CAAA,CAAA;AAAvB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,EARvB,SAAA,EAAA;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,+BAA+B;AACxC,gBAAA,QAAQ,EAAE;AACX,aAAA;YACD;AACD,SAAA,EAAA,CAAA,CAAA;;4FAEU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAVnC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,SAAS,EAAE;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,+BAA+B;AACxC,4BAAA,QAAQ,EAAE;AACX,yBAAA;wBACD;AACD;AACF,iBAAA;;AAqBD;;;;AAIG;AACa,SAAA,wBAAwB,CAAC,MAAA,GAAiD,oBAAoB,EAAA;AAC5G,IAAA,OAAO,wBAAwB,CAAC;AAC9B,QAAA;AACE,YAAA,OAAO,EAAE,+BAA+B;AACxC,YAAA,UAAU,EAAE;AACb,SAAA;QACD;AACD,KAAA,CAAC;AACJ;;MC1Da,qBAAqB,CAAA;kIAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAFtB,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAEnB,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAFtB,oBAAoB,CAAA,EAAA,CAAA,CAAA;;4FAEnB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,oBAAoB;AAC/B,iBAAA;;;ACkBD;;AAEG;MAIU,eAAe,CAAA;AAG1B,IAAA,WAAA,CAA6B,SAAgC,EAAA;QAAhC,IAAS,CAAA,SAAA,GAAT,SAAS;QAFrB,IAAwB,CAAA,wBAAA,GAAG,gBAAgB;;AAI5D;;;;AAIG;AACI,IAAA,gBAAgB,CAAC,cAAwB,EAAA;QAC9C,MAAM,SAAS,GAAG,cAAc,CAAC,EAAE,IAAI,IAAI,CAAC,wBAAwB;QACpE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAkB,CAAI,CAAA,EAAA,SAAS,CAAE,CAAA,CAAC;AAEpE,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,YAAA,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AACtC,YAAA,KAAK,CAAC,GAAG,GAAG,YAAY;AACxB,YAAA,KAAK,CAAC,IAAI,GAAG,UAAU;YACvB,MAAM,IAAI,GAAG,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjD,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;;AAEpB,QAAA,IAAI,cAAc,CAAC,SAAS,EAAE;AAC5B,YAAA,KAAK,CAAC,SAAS,GAAG,cAAc,CAAC,SAAS;;AAE5C,QAAA,IAAI,cAAc,CAAC,WAAW,KAAK,SAAS,EAAE;AAC5C,YAAA,KAAK,CAAC,WAAW,GAAG,cAAc,CAAC,WAAW;;AAEhD,QAAA,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC,IAAI;AAEhC,QAAA,OAAO,KAAK;;AAGd;;;;AAIG;IACI,MAAM,gCAAgC,CAAC,cAAwB,EAAA;AACpE,QAAA,MAAM,kBAAkB,GAAG,MAAM,cAAc,CAC7C,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,CACzD;AACD,QAAA,cAAc,CAAC,IAAI,GAAG,kBAAkB;AACxC,QAAA,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC;;kIA1C5B,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,uBAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,qBAAqB,EAAA,CAAA,CAAA;;4FAEtB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;AChCD;;AAEG;;;;"}
1
+ {"version":3,"file":"o3r-dynamic-content.mjs","sources":["../../src/stores/asset-path-override/asset-path-override.actions.ts","../../src/stores/asset-path-override/asset-path-override.reducer.ts","../../src/stores/asset-path-override/asset-path-override.state.ts","../../src/stores/asset-path-override/asset-path-override.module.ts","../../src/stores/asset-path-override/asset-path-override.selectors.ts","../../src/stores/asset-path-override/asset-path-override.sync.ts","../../src/services/dynamic-content/dynamic-content.token.ts","../../src/services/dynamic-content/dynamic-content.service.ts","../../src/services/dynamic-content/dynamic-content.pipe.ts","../../src/services/dynamic-content/dynamic-content.module.ts","../../src/services/request-parameters/request-parameters.config.ts","../../src/services/request-parameters/request-parameters.token.ts","../../src/services/request-parameters/request-parameters.service.ts","../../src/services/request-parameters/request-parameters.module.ts","../../src/services/styling/style-lazy-loader.module.ts","../../src/services/styling/style-lazy-loader.service.ts","../../src/o3r-dynamic-content.ts"],"sourcesContent":["import {\n createAction,\n props,\n} from '@ngrx/store';\nimport type {\n SetStateActionPayload,\n} from '@o3r/core';\nimport {\n AssetPathOverrideState,\n} from './asset-path-override.state';\n\n/** Actions */\nconst ACTION_SET = '[AssetPathOverride] set entities';\n\n/**\n * Clear all overrides and fill the store with the payload\n */\nexport const setAssetPathOverride = createAction(ACTION_SET, props<SetStateActionPayload<AssetPathOverrideState>>());\n","import {\n ActionCreator,\n createReducer,\n on,\n ReducerTypes,\n} from '@ngrx/store';\nimport * as actions from './asset-path-override.actions';\nimport {\n AssetPathOverrideState,\n} from './asset-path-override.state';\n\n/**\n * AssetPathOverride Store initial value\n */\nexport const assetPathOverrideInitialState: AssetPathOverrideState = { assetPathOverrides: {} };\n\n/**\n * List of basic actions for AssetPathOverride Store\n */\nexport const assetPathOverrideReducerFeatures: ReducerTypes<AssetPathOverrideState, ActionCreator[]>[] = [\n on(actions.setAssetPathOverride, (_state, payload) => ({ ...payload.state }))\n];\n\n/**\n * AssetPathOverride Store reducer\n */\nexport const assetPathOverrideReducer = createReducer(\n assetPathOverrideInitialState,\n ...assetPathOverrideReducerFeatures\n);\n","/**\n * AssetPathOverride store state\n */\nexport interface AssetPathOverrideState {\n /** Mapping of asset path (key) and its override (value)*/\n assetPathOverrides: Record<string, string>;\n}\n\n/**\n * Name of the AssetPathOverride Store\n */\nexport const ASSET_PATH_OVERRIDE_STORE_NAME = 'assetPathOverride';\n\n/**\n * AssetPathOverride Store Interface\n */\nexport interface AssetPathOverrideStore {\n /** AssetPathOverride state */\n [ASSET_PATH_OVERRIDE_STORE_NAME]: AssetPathOverrideState;\n}\n","import {\n InjectionToken,\n ModuleWithProviders,\n NgModule,\n} from '@angular/core';\nimport {\n Action,\n ActionReducer,\n StoreModule,\n} from '@ngrx/store';\nimport {\n assetPathOverrideReducer,\n} from './asset-path-override.reducer';\nimport {\n ASSET_PATH_OVERRIDE_STORE_NAME,\n AssetPathOverrideState,\n} from './asset-path-override.state';\n\n/** Token of the AssetPathOverride reducer */\nexport const ASSET_PATH_OVERRIDE_REDUCER_TOKEN = new InjectionToken<ActionReducer<AssetPathOverrideState, Action>>('Feature AssetPathOverride Reducer');\n\n/** Provide default reducer for AssetPathOverride store */\nexport function getDefaultAssetPathOverrideReducer() {\n return assetPathOverrideReducer;\n}\n\n@NgModule({\n imports: [\n StoreModule.forFeature(ASSET_PATH_OVERRIDE_STORE_NAME, ASSET_PATH_OVERRIDE_REDUCER_TOKEN)\n ],\n providers: [\n { provide: ASSET_PATH_OVERRIDE_REDUCER_TOKEN, useFactory: getDefaultAssetPathOverrideReducer }\n ]\n})\nexport class AssetPathOverrideStoreModule {\n public static forRoot<T extends AssetPathOverrideState>(reducerFactory: () => ActionReducer<T, Action>): ModuleWithProviders<AssetPathOverrideStoreModule> {\n return {\n ngModule: AssetPathOverrideStoreModule,\n providers: [\n { provide: ASSET_PATH_OVERRIDE_REDUCER_TOKEN, useFactory: reducerFactory }\n ]\n };\n }\n}\n","import {\n createFeatureSelector,\n createSelector,\n} from '@ngrx/store';\nimport {\n ASSET_PATH_OVERRIDE_STORE_NAME,\n AssetPathOverrideState,\n} from './asset-path-override.state';\n\n/** Select AssetPathOverride State */\nexport const selectAssetPathOverrideState = createFeatureSelector<AssetPathOverrideState>(ASSET_PATH_OVERRIDE_STORE_NAME);\n\n/** Select all assetPath override map */\nexport const selectAssetPathOverride = createSelector(selectAssetPathOverrideState, (state) => state?.assetPathOverrides || {});\n","import type {\n Serializer,\n} from '@o3r/core';\nimport {\n assetPathOverrideInitialState,\n} from './asset-path-override.reducer';\nimport {\n AssetPathOverrideState,\n} from './asset-path-override.state';\n\n/**\n * Deserializer\n * @param rawObject\n */\nexport const assetPathOverrideStorageDeserializer = (rawObject: any) => {\n if (!rawObject) {\n return assetPathOverrideInitialState;\n }\n return rawObject;\n};\n\nexport const assetPathOverrideStorageSync: Serializer<AssetPathOverrideState> = {\n deserialize: assetPathOverrideStorageDeserializer\n};\n","import {\n InjectionToken,\n} from '@angular/core';\n\n/**\n * Injection token for the rootpath of dynamic content\n */\nexport const DYNAMIC_CONTENT_BASE_PATH_TOKEN: InjectionToken<string> = new InjectionToken('Dynamic content path injection token');\n\n/**\n * Injection token for the assets path injected by the cms\n * This token will be injected only in editor mode\n */\nexport const CMS_ASSETS_PATH_TOKEN: InjectionToken<string> = new InjectionToken('CMS assets path injection token');\n","import {\n inject,\n Injectable,\n} from '@angular/core';\nimport {\n select,\n Store,\n} from '@ngrx/store';\nimport {\n of,\n} from 'rxjs';\nimport {\n distinctUntilChanged,\n map,\n shareReplay,\n} from 'rxjs/operators';\nimport {\n AssetPathOverrideStore,\n selectAssetPathOverride,\n} from '../../stores/index';\nimport {\n CMS_ASSETS_PATH_TOKEN,\n DYNAMIC_CONTENT_BASE_PATH_TOKEN,\n} from './dynamic-content.token';\n\nconst MEDIA_FOLDER_NAME = 'assets';\n\n/**\n * Service for getting dynamic content path\n */\n@Injectable()\nexport class DynamicContentService {\n private readonly cmsOnlyAssetsPath = inject(CMS_ASSETS_PATH_TOKEN);\n private readonly store = inject<Store<AssetPathOverrideStore>>(Store, { optional: true });\n\n public readonly basePath: string;\n\n private readonly mediaFolder: string;\n\n constructor() {\n const dynamicContentPath = inject(DYNAMIC_CONTENT_BASE_PATH_TOKEN);\n\n this.basePath = dynamicContentPath.replace(/\\/$/, '');\n this.mediaFolder = MEDIA_FOLDER_NAME;\n }\n\n private normalizePath(assetPath?: string) {\n return assetPath ? assetPath.replace(/^\\//, '') : '';\n }\n\n private getContentPath(assetPath?: string) {\n const normalizedAssetPath = this.normalizePath(assetPath);\n return this.basePath === '' ? assetPath || '' : `${this.basePath}/${normalizedAssetPath}`;\n }\n\n private getMediaPath(assetPath?: string) {\n if (this.cmsOnlyAssetsPath && assetPath) {\n return assetPath.startsWith('/') ? assetPath : `${this.cmsOnlyAssetsPath.replace(/\\/$/, '')}/${assetPath}`;\n }\n return this.getContentPath(this.mediaFolder ? `${this.mediaFolder}/${this.normalizePath(assetPath)}` : assetPath);\n }\n\n /**\n * Gets the full path of a content relative to the root\n * Content path doesn't consider any override, you will always get the same file\n * @param assetPath asset location in the root folder\n * @example\n * ```typescript\n * getMediaPath('assets/imgs/my-image.png') // will give you the basePath + 'assets/imgs/my-image.png'\n * ```\n */\n public getContentPathStream(assetPath?: string) {\n return of(this.getContentPath(assetPath));\n }\n\n /**\n * Gets the stream that provides the full path of a media content\n * A Media content is always stored in the 'assets' media folder, no external content will be accessible through this function\n * If any override is applied to the content, returns the override path instead\n * @param assetPath asset location in the media folder (e.g imgs/my-image.png)\n * @example\n * ```typescript\n * getMediaPathStream('imgs/my-image.png') // will give you the basePath + mediaFolder + 'imgs/my-image.png'\n * ```\n */\n public getMediaPathStream(assetPath?: string) {\n if (!this.store) {\n return of(this.getMediaPath(assetPath));\n }\n return this.store.pipe(\n select(selectAssetPathOverride),\n map((entities) => assetPath && entities && entities[assetPath] ? entities[assetPath] : assetPath),\n map((finalAssetPath) => this.getMediaPath(finalAssetPath)),\n distinctUntilChanged(),\n shareReplay({ bufferSize: 1, refCount: true })\n );\n }\n}\n","import {\n ChangeDetectorRef,\n inject,\n OnDestroy,\n Pipe,\n PipeTransform,\n} from '@angular/core';\nimport {\n Subscription,\n} from 'rxjs';\nimport {\n DynamicContentService,\n} from './dynamic-content.service';\n\n@Pipe({\n name: 'o3rDynamicContent',\n pure: false\n})\nexport class O3rDynamicContentPipe implements PipeTransform, OnDestroy {\n protected readonly service = inject(DynamicContentService);\n protected readonly cd = inject(ChangeDetectorRef);\n\n /** Last query value */\n protected lastQuery?: string;\n\n /** Subscription to retrieve media path */\n protected onMediaPathChange?: Subscription;\n\n /** Path to the media */\n protected mediaPath = '';\n\n /** @inheritDoc */\n public transform(query?: string) {\n if (query !== this.lastQuery) {\n this.lastQuery = query;\n if (this.onMediaPathChange) {\n this.onMediaPathChange.unsubscribe();\n }\n this.onMediaPathChange = this.service.getMediaPathStream(query).subscribe((mediaPath) => {\n this.mediaPath = mediaPath;\n this.cd.markForCheck();\n });\n }\n\n return this.mediaPath;\n }\n\n /** @inheritDoc */\n public ngOnDestroy(): void {\n if (this.onMediaPathChange) {\n this.onMediaPathChange.unsubscribe();\n }\n }\n}\n","import {\n type EnvironmentProviders,\n makeEnvironmentProviders,\n ModuleWithProviders,\n NgModule,\n type Provider,\n} from '@angular/core';\nimport {\n O3rDynamicContentPipe,\n} from './dynamic-content.pipe';\nimport {\n DynamicContentService,\n} from './dynamic-content.service';\nimport {\n CMS_ASSETS_PATH_TOKEN,\n DYNAMIC_CONTENT_BASE_PATH_TOKEN,\n} from './dynamic-content.token';\n\n/**\n * Function to get dynamic content from body dataset\n */\nexport function getDynamicContent() {\n return document.body.dataset.dynamiccontentpath || '';\n}\n\n/**\n * Function to get the cms assets from body dataset\n * This will be used only in a CMS context(not in local or prod) to display correctly the assets in the editor\n */\nexport function getCmsAssets() {\n return document.body.dataset.cmsassetspath || '';\n}\n\n/**\n * DynamicContent module\n * @deprecated Will be removed in v14.\n */\n@NgModule({\n providers: [\n {\n provide: DYNAMIC_CONTENT_BASE_PATH_TOKEN,\n useFactory: getDynamicContent\n },\n {\n provide: CMS_ASSETS_PATH_TOKEN,\n useFactory: getCmsAssets\n },\n DynamicContentService\n ],\n imports: [O3rDynamicContentPipe],\n exports: [O3rDynamicContentPipe]\n})\nexport class DynamicContentModule {\n /**\n * Customize the location where the application will search for the base path of dynamic content\n * @param dynamicPath Configuration for dynamic content path\n * @param dynamicPath.content The string will be used as base path of dynamic content\n * @param dynamicPath.cmsAssets The string will be used for the the base path of cms assets\n * @note The cmsAssets will be used only in the cms editor mode and it will take priority over dynamic content\n * @deprecated Please use {@link provideDynamicContent} instead. Will be removed in v14.\n */\n public static forRoot(dynamicPath: { content: string } | { cmsAssets: string }): ModuleWithProviders<DynamicContentModule> {\n const providers = [];\n if ('content' in dynamicPath) {\n providers.push({\n provide: DYNAMIC_CONTENT_BASE_PATH_TOKEN,\n useValue: dynamicPath.content\n });\n }\n if ('cmsAssets' in dynamicPath) {\n providers.push({\n provide: CMS_ASSETS_PATH_TOKEN,\n useValue: dynamicPath.cmsAssets\n });\n }\n\n return {\n ngModule: DynamicContentModule,\n providers\n };\n }\n}\n\ntype DynamicContentFeatureKind = 'base-path' | 'cms-assets-path';\n\ninterface DynamicContentFeature<FeatureKind extends DynamicContentFeatureKind> {\n ɵkind: FeatureKind;\n ɵproviders: Provider[];\n}\n\ntype BasePathFeature = DynamicContentFeature<'base-path'>;\ntype CmsAssetsPathFeature = DynamicContentFeature<'cms-assets-path'>;\n\ntype DynamicContentFeatures = BasePathFeature | CmsAssetsPathFeature;\n\n/**\n * Specify a custom base path\n * @param basePath\n */\nexport function withBasePath(basePath: string | (() => string)): BasePathFeature {\n return {\n ɵkind: 'base-path',\n ɵproviders: [\n {\n provide: DYNAMIC_CONTENT_BASE_PATH_TOKEN,\n ...(\n typeof basePath === 'string'\n ? { useValue: basePath }\n : { useFactory: basePath }\n )\n }\n ]\n };\n}\n\n/**\n * Specify a custom CMS assets path\n * @param cmsAssetsPath\n */\nexport function withCmsAssetsPath(cmsAssetsPath: string | (() => string)): DynamicContentFeature<'cms-assets-path'> {\n return {\n ɵkind: 'cms-assets-path',\n ɵproviders: [\n {\n provide: CMS_ASSETS_PATH_TOKEN,\n ...(\n typeof cmsAssetsPath === 'string'\n ? { useValue: cmsAssetsPath }\n : { useFactory: cmsAssetsPath }\n )\n }\n ]\n };\n}\n\n/**\n * Provide dynamic content default configuration.\n * To customize the location where the application will search for the base path of dynamic content\n * @see {@link withBasePath}\n * @see {@link withCmsAssetsPath}\n * @note The cmsAssets will be used only in the cms editor mode and it will take priority over dynamic content\n * @param features\n * @example\n * ```typescript\n * bootstrapApplication(AppComponent,\n * {\n * providers: [\n * provideDynamicContent(\n * withBasePath('custom/base/path'),\n * withCmsAssetsPath('custom/cms/assets/path'),\n * )\n * ]\n * }\n * );\n */\nexport function provideDynamicContent(...features: DynamicContentFeatures[]) {\n const providers: (Provider | EnvironmentProviders)[] = [\n DynamicContentService\n ];\n\n const basePathFeature = features.find((f) => f.ɵkind === 'base-path') ?? withBasePath(getDynamicContent);\n providers.push(basePathFeature.ɵproviders);\n\n const cmsAssetsPathFeature = features.find((f) => f.ɵkind === 'cms-assets-path') ?? withCmsAssetsPath(getCmsAssets);\n providers.push(cmsAssetsPathFeature.ɵproviders);\n\n return makeEnvironmentProviders(providers);\n}\n","/**\n * Strategies available to read / write data in the RequestParameters service.\n * Rehydrate: if the storage already have data, those will be used by the service, ignoring new data. Otherwise set the storage\n * Merge: storage data will be merged with the ones provided. (provided data has priority)\n * Replace: storage data will be completely replaced by the ones provided\n * ReplaceIfNotEmpty: If no parameters are provided, use the content from storage. Otherwise use the ones provided and update the storage with them.\n */\n\nexport enum StorageStrategy {\n // eslint-disable-next-line @typescript-eslint/naming-convention -- required naming convention\n Rehydrate = 0,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- required naming convention\n Merge = 1,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- required naming convention\n Replace = 2,\n // eslint-disable-next-line @typescript-eslint/naming-convention -- required naming convention\n ReplaceIfNotEmpty = 3\n}\n\n/**\n * Configuration used by a user to feed the request parameters service.\n */\nexport interface RequestParametersConfig {\n /**\n * Strategy used by the RequestParameters Service. See StorageStrategy for more info\n */\n strategy: StorageStrategy;\n /**\n * Storage used by the RequestParameters service\n */\n storage?: Storage;\n /**\n * Value of the DOM element containing your query parameters (e.g. `document.body.dataset.query`)\n */\n queryParamsValue: string;\n /**\n * Value of the DOM element containing your post parameters (e.g. `document.body.dataset.post`)\n */\n postParamsValue: string;\n}\n\nexport const defaultRequestParametersConfig: Readonly<RequestParametersConfig> = {\n storage: (typeof window === 'undefined') ? undefined : window.sessionStorage,\n strategy: StorageStrategy.Rehydrate,\n queryParamsValue: (typeof document !== 'undefined' && document.body?.dataset?.query) || '{}',\n postParamsValue: (typeof document !== 'undefined' && document.body?.dataset?.post) || '{}'\n} as const;\n","import {\n InjectionToken,\n} from '@angular/core';\nimport {\n RequestParametersConfig,\n} from './request-parameters.config';\n\n/**\n * Token to be provided in case of service customization needs.\n */\nexport const REQUEST_PARAMETERS_CONFIG_TOKEN = new InjectionToken<Partial<RequestParametersConfig>>('RequestParametersConfig injection token', { factory: () => ({}) });\n","import {\n inject,\n Injectable,\n} from '@angular/core';\nimport {\n defaultRequestParametersConfig,\n RequestParametersConfig,\n StorageStrategy,\n} from './request-parameters.config';\nimport {\n REQUEST_PARAMETERS_CONFIG_TOKEN,\n} from './request-parameters.token';\n\nexport type ParamsList = 'query' | 'post';\n\nexport type ParamsType = { [k in ParamsList]: { [key: string]: string } };\n\n/**\n * Partial configuration for RequestParameters Service\n */\nexport interface PartialRequestParametersConfig extends Partial<RequestParametersConfig> {}\n\n/**\n * Service used to store the request parameters of your requests so that subsequent calls or refresh the page will preserve\n * them.\n */\n@Injectable()\nexport class RequestParametersService implements ParamsType {\n private _query: { [key: string]: any } = {};\n private _post: { [key: string]: any } = {};\n\n private readonly config: RequestParametersConfig;\n\n constructor() {\n const config = inject<PartialRequestParametersConfig>(REQUEST_PARAMETERS_CONFIG_TOKEN);\n\n this.config = defaultRequestParametersConfig;\n (Object.keys(config) as (keyof RequestParametersConfig)[])\n .filter((key) => config[key] !== undefined)\n .forEach((key) => (this.config as any)[key] = config[key]);\n\n this.setParameters('query', JSON.parse(this.config.queryParamsValue));\n this.setParameters('post', JSON.parse(this.config.postParamsValue));\n }\n\n /**\n * Depending on the strategy, set the internal values for the parameters.\n * See StorageStrategy for more info.\n * @param key\n * @param value\n */\n private setParameters(key: ParamsList, value: { [key: string]: string }) {\n const privateKey: `_${ParamsList}` = `_${key}`;\n if (!this.config.storage) {\n // No storage is available , cannot set items\n return;\n }\n switch (this.config.strategy) {\n case StorageStrategy.Rehydrate: {\n if (!this.config.storage.getItem(privateKey)) {\n this[privateKey] = value;\n this.config.storage.setItem(privateKey, JSON.stringify(value));\n break;\n }\n this[privateKey] = JSON.parse(this.config.storage.getItem(privateKey) || '{}');\n break;\n }\n case StorageStrategy.Replace: {\n this[privateKey] = value;\n this.config.storage.setItem(privateKey, JSON.stringify(value));\n break;\n }\n case StorageStrategy.Merge: {\n const storageData = Object.assign(JSON.parse(this.config.storage.getItem(privateKey) || '{}'), value);\n this[privateKey] = storageData;\n this.config.storage.setItem(privateKey, JSON.stringify(storageData));\n break;\n }\n case StorageStrategy.ReplaceIfNotEmpty: {\n if (Object.keys(value).length > 0) {\n this[privateKey] = value;\n this.config.storage.setItem(privateKey, JSON.stringify(value));\n break;\n }\n this[privateKey] = JSON.parse(this.config.storage.getItem(privateKey) || '{}');\n break;\n }\n }\n }\n\n /**\n * Get all the query parameters in a map.\n */\n public get query() {\n return this._query;\n }\n\n /**\n * Get all the post parameters in a map.\n */\n public get post() {\n return this._post;\n }\n\n /**\n * Get a specific query parameter value, given the key.\n * @param key\n */\n public getQueryParameter(key: string): string | undefined {\n return this._query[key];\n }\n\n /**\n * Get a specific query parameter value as boolean, given the key.\n * @param key\n */\n public getQueryParameterAsBoolean(key: string): boolean | undefined {\n const queryParameter: string | undefined = this.getQueryParameter(key);\n return queryParameter ? queryParameter.toLowerCase() === 'true' : undefined;\n }\n\n /**\n * Get a specific post parameter value, given the key.\n * @param key\n */\n public getPostParameter(key: string): string | undefined {\n return this._post[key];\n }\n\n /**\n * Get a specific post parameter value as boolean, given the key.\n * @param key\n */\n public getPostParameterAsBoolean(key: string): boolean | undefined {\n const postParameter: string | undefined = this.getPostParameter(key);\n return postParameter ? postParameter.toLowerCase() === 'true' : undefined;\n }\n\n /**\n * Get a specific parameter value, given the key.\n * @param key\n */\n public getParameter(key: string): string | undefined {\n return this._query[key] || this._post[key];\n }\n\n /**\n * Get a specific parameter value as boolean, given the key.\n * @param key\n */\n public getParameterAsBoolean(key: string): boolean | undefined {\n const parameter: string | undefined = this.getParameter(key);\n return parameter ? parameter.toLowerCase() === 'true' : undefined;\n }\n\n /**\n * Clear GET parameters from the storage\n * @param paramsToClear the list on key that you want to clear in get parameters\n */\n public clearQueryParameters(paramsToClear?: string[]) {\n const newQuery = (paramsToClear ? Object.keys(this._query).filter((key) => !paramsToClear.includes(key)) : [])\n .reduce<{ [k: string]: string }>((acc, key) => {\n acc[key] = this._query[key];\n return acc;\n }, {});\n if (this.config.storage) {\n this.config.storage.setItem('_query', JSON.stringify(newQuery));\n }\n this._query = newQuery;\n }\n\n /**\n * Clear POST parameters from the storage\n * @param paramsToClear the list on key that you want to clean in post parameters\n */\n public clearPostParameters(paramsToClear?: string[]) {\n const newPost = (paramsToClear ? Object.keys(this._post).filter((key) => !paramsToClear.includes(key)) : [])\n .reduce<{ [k: string]: string }>((acc, key) => {\n acc[key] = this._post[key];\n return acc;\n }, {});\n if (this.config.storage) {\n this.config.storage.setItem('_post', JSON.stringify(newPost));\n }\n this._post = newPost;\n }\n\n /**\n * Get all the parameters in a map.\n * @param priority the parameter to be given priority in case same key is in get and post params.\n */\n public getParams(priority: ParamsList = 'query') {\n return priority === 'query' ? { ...this._post, ...this._query } : { ...this._query, ...this._post };\n }\n\n /**\n * Filter Parameters(both Query/POST) from the storage\n * @param paramstoFilter the list on key that you want to filter from parameters\n * @param priority the priorty of the parameter type(POST/Query)\n */\n public getFilteredParameters(paramstoFilter?: string[], priority: ParamsList = 'query') {\n const params = this.getParams(priority);\n if (!paramstoFilter) {\n return params;\n }\n return Object.keys(params)\n .filter((key) => !paramstoFilter.includes(key))\n .reduce<{ [k: string]: string }>((acc, key) => {\n acc[key] = params[key];\n return acc;\n }, {});\n }\n}\n","import {\n makeEnvironmentProviders,\n ModuleWithProviders,\n NgModule,\n} from '@angular/core';\nimport {\n RequestParametersConfig,\n} from './request-parameters.config';\nimport {\n RequestParametersService,\n} from './request-parameters.service';\nimport {\n REQUEST_PARAMETERS_CONFIG_TOKEN,\n} from './request-parameters.token';\n\n/**\n * Empty configuration factory, used when config is not provided. It needs a separate function for AOT.\n */\nexport function defaultConfigFactory() {\n return {};\n}\n/**\n * RequestParametersService Module\n * @deprecated Will be removed in v14.\n */\n@NgModule({\n imports: [],\n providers: [\n {\n provide: REQUEST_PARAMETERS_CONFIG_TOKEN,\n useValue: {}\n },\n RequestParametersService\n ]\n})\nexport class RequestParametersModule {\n /**\n * Provide request parameters config\n * @param config\n * @deprecated Please use {@link provideRequestParameters} instead. Will be removed in v14.\n */\n public static forRoot(config: () => Partial<RequestParametersConfig> = defaultConfigFactory): ModuleWithProviders<RequestParametersModule> {\n return {\n ngModule: RequestParametersModule,\n providers: [\n {\n provide: REQUEST_PARAMETERS_CONFIG_TOKEN,\n useFactory: config\n },\n RequestParametersService\n ]\n };\n }\n}\n\n/**\n * Provide request parameters config\n * We don't provide directly the value and use a factory because otherwise AOT compilation will resolve to undefined whatever is taken from window\n * @param config\n */\nexport function provideRequestParameters(config: () => Partial<RequestParametersConfig> = defaultConfigFactory) {\n return makeEnvironmentProviders([\n {\n provide: REQUEST_PARAMETERS_CONFIG_TOKEN,\n useFactory: config\n },\n RequestParametersService\n ]);\n}\n","import {\n NgModule,\n} from '@angular/core';\nimport {\n DynamicContentModule,\n} from '../dynamic-content/index';\n\n@NgModule({\n imports: [DynamicContentModule]\n})\nexport class StyleLazyLoaderModule {}\n","import {\n inject,\n Injectable,\n} from '@angular/core';\nimport {\n firstValueFrom,\n} from 'rxjs';\nimport {\n DynamicContentService,\n} from '../dynamic-content/index';\nimport {\n StyleLazyLoaderModule,\n} from './style-lazy-loader.module';\n\n/**\n * Interface to describe a style to lazy load from a url.\n */\nexport interface StyleURL {\n /** url to file */\n href: string;\n /** id of the HTML element */\n id?: string;\n /** html integrity attribute to verify fetched resources */\n integrity?: string;\n /** html crossOrigin attribute for CORS support. */\n crossOrigin?: 'anonymous' | 'use-credentials' | '';\n}\n\n/**\n * Service to lazy load a CSS file\n */\n@Injectable({\n providedIn: StyleLazyLoaderModule\n})\nexport class StyleLazyLoader {\n private readonly dcService = inject(DynamicContentService);\n\n private readonly DEFAULT_STYLE_ELEMENT_ID = 'external-theme';\n\n /**\n * Load a new CSS from an absolute URL, if we already HTML element exists with the url, otherwise\n * @param styleUrlConfig object containing CSS File absolute URL to load, integrity and crossOrigin attributes\n * and the styleId id of the dynamic style in the body tag.\n */\n public loadStyleFromURL(styleUrlConfig: StyleURL) {\n const elementId = styleUrlConfig.id || this.DEFAULT_STYLE_ELEMENT_ID;\n let style = document.querySelector<HTMLLinkElement>(`#${elementId}`);\n\n if (style === null) {\n style = document.createElement('link');\n style.rel = 'stylesheet';\n style.type = 'text/css';\n const head = document.querySelectorAll('head')[0];\n head.append(style);\n }\n if (styleUrlConfig.integrity) {\n style.integrity = styleUrlConfig.integrity;\n }\n if (styleUrlConfig.crossOrigin !== undefined) {\n style.crossOrigin = styleUrlConfig.crossOrigin;\n }\n style.href = styleUrlConfig.href;\n\n return style;\n }\n\n /**\n * Load a new CSS File\n * @param styleUrlConfig CSS File config containing URL to load, integrity and crossOrigin attributes\n * and the styleId id of the dynamic style in the body tag\n */\n public async asyncLoadStyleFromDynamicContent(styleUrlConfig: StyleURL) {\n const dynamicContentPath = await firstValueFrom(\n this.dcService.getContentPathStream(styleUrlConfig.href)\n );\n styleUrlConfig.href = dynamicContentPath;\n this.loadStyleFromURL(styleUrlConfig);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["actions.setAssetPathOverride"],"mappings":"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"}