@pepperi-addons/ngx-lib 0.4.0-angular14.5 → 0.4.0-angular14.52

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 (227) hide show
  1. package/chips/chips.component.d.ts +88 -0
  2. package/chips/chips.component.theme.scss +58 -0
  3. package/chips/chips.model.d.ts +9 -0
  4. package/chips/chips.module.d.ts +20 -0
  5. package/chips/chips.service.d.ts +14 -0
  6. package/chips/index.d.ts +5 -0
  7. package/chips/public-api.d.ts +3 -0
  8. package/color/color-picker.component.d.ts +1 -1
  9. package/core/common/model/wapi.model.d.ts +1 -0
  10. package/core/common/services/addon.service.d.ts +6 -9
  11. package/core/common/services/utilities.service.d.ts +5 -4
  12. package/core/customization/customization.model.d.ts +5 -0
  13. package/esm2020/address/address.component.mjs +1 -1
  14. package/esm2020/attachment/attachment.component.mjs +1 -1
  15. package/esm2020/checkbox/checkbox.component.mjs +1 -1
  16. package/esm2020/chips/chips.component.mjs +139 -0
  17. package/esm2020/chips/chips.model.mjs +2 -0
  18. package/esm2020/chips/chips.module.mjs +81 -0
  19. package/esm2020/chips/chips.service.mjs +40 -0
  20. package/esm2020/chips/pepperi-addons-ngx-lib-chips.mjs +5 -0
  21. package/esm2020/chips/public-api.mjs +7 -0
  22. package/esm2020/color/color-picker.component.mjs +4 -4
  23. package/esm2020/color/color.component.mjs +1 -1
  24. package/esm2020/core/common/model/wapi.model.mjs +1 -1
  25. package/esm2020/core/common/services/addon.service.mjs +44 -39
  26. package/esm2020/core/common/services/utilities.service.mjs +63 -12
  27. package/esm2020/core/customization/customization.model.mjs +6 -1
  28. package/esm2020/core/http/interceptors/loader.interceptor.mjs +4 -5
  29. package/esm2020/core/http/services/loader.service.mjs +4 -4
  30. package/esm2020/date/date.component.mjs +3 -3
  31. package/esm2020/field-title/field-title.component.mjs +6 -3
  32. package/esm2020/form/field-generator.component.mjs +7 -7
  33. package/esm2020/form/form.component.mjs +12 -3
  34. package/esm2020/form/form.module.mjs +8 -3
  35. package/esm2020/form/internal-button.component.mjs +1 -1
  36. package/esm2020/form/internal-carusel.component.mjs +11 -13
  37. package/esm2020/form/internal-field-generator.component.mjs +3 -3
  38. package/esm2020/form/internal-form.component.mjs +4 -2
  39. package/esm2020/form/internal-page.component.mjs +15 -18
  40. package/esm2020/group-buttons/group-buttons.component.mjs +8 -4
  41. package/esm2020/icon/icon-generated-all.model.mjs +7 -1
  42. package/esm2020/icon/icon-generated.model.mjs +25 -1
  43. package/esm2020/image/image.component.mjs +1 -1
  44. package/esm2020/images-filmstrip/images-filmstrip.component.mjs +3 -91
  45. package/esm2020/images-filmstrip/images-filmstrip.module.mjs +1 -56
  46. package/esm2020/link/link.component.mjs +10 -11
  47. package/esm2020/list/list-pager.component.mjs +1 -1
  48. package/esm2020/menu/menu.component.mjs +11 -3
  49. package/esm2020/ngx-lib.module.mjs +4 -2
  50. package/esm2020/page-layout/page-layout.component.mjs +3 -3
  51. package/esm2020/profile-data-views-list/profile-data-views-list.component.mjs +1 -1
  52. package/esm2020/quantity-selector/quantity-selector.component.mjs +24 -4
  53. package/esm2020/query-builder/common/services/query-structure.service.mjs +12 -10
  54. package/esm2020/query-builder/query-builder-item/query-builder-item.component.mjs +1 -1
  55. package/esm2020/query-builder/query-builder-section/query-builder-section.component.mjs +1 -1
  56. package/esm2020/query-builder/query-builder.module.mjs +8 -3
  57. package/esm2020/remote-loader/addon-block-loader.component.mjs +10 -5
  58. package/esm2020/remote-loader/addon-block-loader.service.mjs +6 -7
  59. package/esm2020/remote-loader/public-api.mjs +2 -1
  60. package/esm2020/remote-loader/remote-loader-element.component.mjs +79 -0
  61. package/esm2020/remote-loader/remote-loader.component.mjs +38 -47
  62. package/esm2020/remote-loader/remote-loader.model.mjs +1 -1
  63. package/esm2020/remote-loader/remote-loader.module.mjs +12 -3
  64. package/esm2020/remote-loader/remote-loader.service.mjs +34 -28
  65. package/esm2020/rich-html-textarea/rich-html-textarea.component.mjs +1 -1
  66. package/esm2020/select/select.component.mjs +33 -7
  67. package/esm2020/side-bar/side-bar.component.mjs +11 -27
  68. package/esm2020/side-bar/side-bar.module.mjs +7 -3
  69. package/esm2020/signature/signature.component.mjs +1 -1
  70. package/esm2020/slider/slider.component.mjs +1 -1
  71. package/esm2020/smart-filters/boolean-filter/boolean-filter.component.mjs +1 -1
  72. package/esm2020/smart-filters/common/model/base-filter-component.mjs +1 -1
  73. package/esm2020/smart-filters/date-filter/date-filter.component.mjs +1 -1
  74. package/esm2020/smart-filters/multi-select-filter/multi-select-filter.component.mjs +1 -1
  75. package/esm2020/smart-filters/number-filter/number-filter.component.mjs +3 -3
  76. package/esm2020/smart-filters/smart-filters.module.mjs +8 -3
  77. package/esm2020/smart-filters/text-filter/text-filter.component.mjs +1 -1
  78. package/esm2020/textarea/textarea.component.mjs +1 -1
  79. package/esm2020/textbox/textbox.component.mjs +33 -14
  80. package/esm2020/textbox-icon/textbox-icon.component.mjs +2 -2
  81. package/fesm2015/pepperi-addons-ngx-lib-address.mjs +1 -1
  82. package/fesm2015/pepperi-addons-ngx-lib-address.mjs.map +1 -1
  83. package/fesm2015/pepperi-addons-ngx-lib-attachment.mjs +1 -1
  84. package/fesm2015/pepperi-addons-ngx-lib-attachment.mjs.map +1 -1
  85. package/fesm2015/pepperi-addons-ngx-lib-checkbox.mjs +1 -1
  86. package/fesm2015/pepperi-addons-ngx-lib-checkbox.mjs.map +1 -1
  87. package/fesm2015/pepperi-addons-ngx-lib-chips.mjs +264 -0
  88. package/fesm2015/pepperi-addons-ngx-lib-chips.mjs.map +1 -0
  89. package/fesm2015/pepperi-addons-ngx-lib-color.mjs +4 -4
  90. package/fesm2015/pepperi-addons-ngx-lib-color.mjs.map +1 -1
  91. package/fesm2015/pepperi-addons-ngx-lib-date.mjs +2 -2
  92. package/fesm2015/pepperi-addons-ngx-lib-date.mjs.map +1 -1
  93. package/fesm2015/pepperi-addons-ngx-lib-field-title.mjs +5 -2
  94. package/fesm2015/pepperi-addons-ngx-lib-field-title.mjs.map +1 -1
  95. package/fesm2015/pepperi-addons-ngx-lib-form.mjs +49 -39
  96. package/fesm2015/pepperi-addons-ngx-lib-form.mjs.map +1 -1
  97. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.mjs +7 -3
  98. package/fesm2015/pepperi-addons-ngx-lib-group-buttons.mjs.map +1 -1
  99. package/fesm2015/pepperi-addons-ngx-lib-icon.mjs +31 -1
  100. package/fesm2015/pepperi-addons-ngx-lib-icon.mjs.map +1 -1
  101. package/fesm2015/pepperi-addons-ngx-lib-image.mjs +1 -1
  102. package/fesm2015/pepperi-addons-ngx-lib-image.mjs.map +1 -1
  103. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.mjs +2 -129
  104. package/fesm2015/pepperi-addons-ngx-lib-images-filmstrip.mjs.map +1 -1
  105. package/fesm2015/pepperi-addons-ngx-lib-link.mjs +8 -9
  106. package/fesm2015/pepperi-addons-ngx-lib-link.mjs.map +1 -1
  107. package/fesm2015/pepperi-addons-ngx-lib-list.mjs +1 -1
  108. package/fesm2015/pepperi-addons-ngx-lib-list.mjs.map +1 -1
  109. package/fesm2015/pepperi-addons-ngx-lib-menu.mjs +10 -2
  110. package/fesm2015/pepperi-addons-ngx-lib-menu.mjs.map +1 -1
  111. package/fesm2015/pepperi-addons-ngx-lib-page-layout.mjs +2 -2
  112. package/fesm2015/pepperi-addons-ngx-lib-page-layout.mjs.map +1 -1
  113. package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.mjs +1 -1
  114. package/fesm2015/pepperi-addons-ngx-lib-profile-data-views-list.mjs.map +1 -1
  115. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.mjs +23 -3
  116. package/fesm2015/pepperi-addons-ngx-lib-quantity-selector.mjs.map +1 -1
  117. package/fesm2015/pepperi-addons-ngx-lib-query-builder.mjs +17 -10
  118. package/fesm2015/pepperi-addons-ngx-lib-query-builder.mjs.map +1 -1
  119. package/fesm2015/pepperi-addons-ngx-lib-remote-loader.mjs +180 -92
  120. package/fesm2015/pepperi-addons-ngx-lib-remote-loader.mjs.map +1 -1
  121. package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.mjs +1 -1
  122. package/fesm2015/pepperi-addons-ngx-lib-rich-html-textarea.mjs.map +1 -1
  123. package/fesm2015/pepperi-addons-ngx-lib-select.mjs +32 -6
  124. package/fesm2015/pepperi-addons-ngx-lib-select.mjs.map +1 -1
  125. package/fesm2015/pepperi-addons-ngx-lib-side-bar.mjs +15 -27
  126. package/fesm2015/pepperi-addons-ngx-lib-side-bar.mjs.map +1 -1
  127. package/fesm2015/pepperi-addons-ngx-lib-signature.mjs +1 -1
  128. package/fesm2015/pepperi-addons-ngx-lib-signature.mjs.map +1 -1
  129. package/fesm2015/pepperi-addons-ngx-lib-slider.mjs +1 -1
  130. package/fesm2015/pepperi-addons-ngx-lib-slider.mjs.map +1 -1
  131. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.mjs +13 -8
  132. package/fesm2015/pepperi-addons-ngx-lib-smart-filters.mjs.map +1 -1
  133. package/fesm2015/pepperi-addons-ngx-lib-textarea.mjs +1 -1
  134. package/fesm2015/pepperi-addons-ngx-lib-textarea.mjs.map +1 -1
  135. package/fesm2015/pepperi-addons-ngx-lib-textbox-icon.mjs +1 -1
  136. package/fesm2015/pepperi-addons-ngx-lib-textbox-icon.mjs.map +1 -1
  137. package/fesm2015/pepperi-addons-ngx-lib-textbox.mjs +34 -15
  138. package/fesm2015/pepperi-addons-ngx-lib-textbox.mjs.map +1 -1
  139. package/fesm2015/pepperi-addons-ngx-lib.mjs +125 -58
  140. package/fesm2015/pepperi-addons-ngx-lib.mjs.map +1 -1
  141. package/fesm2020/pepperi-addons-ngx-lib-address.mjs +1 -1
  142. package/fesm2020/pepperi-addons-ngx-lib-address.mjs.map +1 -1
  143. package/fesm2020/pepperi-addons-ngx-lib-attachment.mjs +1 -1
  144. package/fesm2020/pepperi-addons-ngx-lib-attachment.mjs.map +1 -1
  145. package/fesm2020/pepperi-addons-ngx-lib-checkbox.mjs +1 -1
  146. package/fesm2020/pepperi-addons-ngx-lib-checkbox.mjs.map +1 -1
  147. package/fesm2020/pepperi-addons-ngx-lib-chips.mjs +264 -0
  148. package/fesm2020/pepperi-addons-ngx-lib-chips.mjs.map +1 -0
  149. package/fesm2020/pepperi-addons-ngx-lib-color.mjs +4 -4
  150. package/fesm2020/pepperi-addons-ngx-lib-color.mjs.map +1 -1
  151. package/fesm2020/pepperi-addons-ngx-lib-date.mjs +2 -2
  152. package/fesm2020/pepperi-addons-ngx-lib-date.mjs.map +1 -1
  153. package/fesm2020/pepperi-addons-ngx-lib-field-title.mjs +5 -2
  154. package/fesm2020/pepperi-addons-ngx-lib-field-title.mjs.map +1 -1
  155. package/fesm2020/pepperi-addons-ngx-lib-form.mjs +52 -39
  156. package/fesm2020/pepperi-addons-ngx-lib-form.mjs.map +1 -1
  157. package/fesm2020/pepperi-addons-ngx-lib-group-buttons.mjs +7 -3
  158. package/fesm2020/pepperi-addons-ngx-lib-group-buttons.mjs.map +1 -1
  159. package/fesm2020/pepperi-addons-ngx-lib-icon.mjs +31 -1
  160. package/fesm2020/pepperi-addons-ngx-lib-icon.mjs.map +1 -1
  161. package/fesm2020/pepperi-addons-ngx-lib-image.mjs +1 -1
  162. package/fesm2020/pepperi-addons-ngx-lib-image.mjs.map +1 -1
  163. package/fesm2020/pepperi-addons-ngx-lib-images-filmstrip.mjs +2 -129
  164. package/fesm2020/pepperi-addons-ngx-lib-images-filmstrip.mjs.map +1 -1
  165. package/fesm2020/pepperi-addons-ngx-lib-link.mjs +8 -9
  166. package/fesm2020/pepperi-addons-ngx-lib-link.mjs.map +1 -1
  167. package/fesm2020/pepperi-addons-ngx-lib-list.mjs +1 -1
  168. package/fesm2020/pepperi-addons-ngx-lib-list.mjs.map +1 -1
  169. package/fesm2020/pepperi-addons-ngx-lib-menu.mjs +10 -2
  170. package/fesm2020/pepperi-addons-ngx-lib-menu.mjs.map +1 -1
  171. package/fesm2020/pepperi-addons-ngx-lib-page-layout.mjs +2 -2
  172. package/fesm2020/pepperi-addons-ngx-lib-page-layout.mjs.map +1 -1
  173. package/fesm2020/pepperi-addons-ngx-lib-profile-data-views-list.mjs +1 -1
  174. package/fesm2020/pepperi-addons-ngx-lib-profile-data-views-list.mjs.map +1 -1
  175. package/fesm2020/pepperi-addons-ngx-lib-quantity-selector.mjs +23 -3
  176. package/fesm2020/pepperi-addons-ngx-lib-quantity-selector.mjs.map +1 -1
  177. package/fesm2020/pepperi-addons-ngx-lib-query-builder.mjs +17 -10
  178. package/fesm2020/pepperi-addons-ngx-lib-query-builder.mjs.map +1 -1
  179. package/fesm2020/pepperi-addons-ngx-lib-remote-loader.mjs +169 -86
  180. package/fesm2020/pepperi-addons-ngx-lib-remote-loader.mjs.map +1 -1
  181. package/fesm2020/pepperi-addons-ngx-lib-rich-html-textarea.mjs +1 -1
  182. package/fesm2020/pepperi-addons-ngx-lib-rich-html-textarea.mjs.map +1 -1
  183. package/fesm2020/pepperi-addons-ngx-lib-select.mjs +32 -6
  184. package/fesm2020/pepperi-addons-ngx-lib-select.mjs.map +1 -1
  185. package/fesm2020/pepperi-addons-ngx-lib-side-bar.mjs +15 -27
  186. package/fesm2020/pepperi-addons-ngx-lib-side-bar.mjs.map +1 -1
  187. package/fesm2020/pepperi-addons-ngx-lib-signature.mjs +1 -1
  188. package/fesm2020/pepperi-addons-ngx-lib-signature.mjs.map +1 -1
  189. package/fesm2020/pepperi-addons-ngx-lib-slider.mjs +1 -1
  190. package/fesm2020/pepperi-addons-ngx-lib-slider.mjs.map +1 -1
  191. package/fesm2020/pepperi-addons-ngx-lib-smart-filters.mjs +13 -8
  192. package/fesm2020/pepperi-addons-ngx-lib-smart-filters.mjs.map +1 -1
  193. package/fesm2020/pepperi-addons-ngx-lib-textarea.mjs +1 -1
  194. package/fesm2020/pepperi-addons-ngx-lib-textarea.mjs.map +1 -1
  195. package/fesm2020/pepperi-addons-ngx-lib-textbox-icon.mjs +1 -1
  196. package/fesm2020/pepperi-addons-ngx-lib-textbox-icon.mjs.map +1 -1
  197. package/fesm2020/pepperi-addons-ngx-lib-textbox.mjs +34 -15
  198. package/fesm2020/pepperi-addons-ngx-lib-textbox.mjs.map +1 -1
  199. package/fesm2020/pepperi-addons-ngx-lib.mjs +122 -59
  200. package/fesm2020/pepperi-addons-ngx-lib.mjs.map +1 -1
  201. package/field-title/field-title.component.d.ts +2 -1
  202. package/form/field-generator.component.d.ts +1 -1
  203. package/form/internal-carusel.component.d.ts +1 -3
  204. package/form/internal-page.component.d.ts +2 -4
  205. package/group-buttons/group-buttons.component.d.ts +2 -1
  206. package/icon/icon-generated-all.model.d.ts +6 -0
  207. package/icon/icon-generated.model.d.ts +25 -1
  208. package/link/link.component.d.ts +2 -3
  209. package/menu/menu.component.d.ts +2 -0
  210. package/package.json +9 -1
  211. package/page-layout/page-layout.component.d.ts +1 -1
  212. package/quantity-selector/quantity-selector.component.d.ts +7 -1
  213. package/query-builder/common/services/query-structure.service.d.ts +3 -4
  214. package/remote-loader/addon-block-loader.component.d.ts +4 -2
  215. package/remote-loader/addon-block-loader.service.d.ts +2 -3
  216. package/remote-loader/public-api.d.ts +1 -0
  217. package/remote-loader/remote-loader-element.component.d.ts +27 -0
  218. package/remote-loader/remote-loader.component.d.ts +3 -5
  219. package/remote-loader/remote-loader.model.d.ts +5 -6
  220. package/remote-loader/remote-loader.module.d.ts +8 -6
  221. package/remote-loader/remote-loader.service.d.ts +4 -6
  222. package/select/select.component.d.ts +10 -4
  223. package/side-bar/side-bar.component.d.ts +3 -3
  224. package/src/assets/i18n/en.ngx-lib.json +3 -0
  225. package/src/core/style/components/checkbox.scss +20 -1
  226. package/src/core/style/components/general.scss +5 -4
  227. package/textbox/textbox.component.d.ts +9 -4
@@ -1,74 +1,80 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, EventEmitter, ViewContainerRef, Component, ViewChild, Input, Output, TemplateRef, NgModule } from '@angular/core';
2
+ import { Injectable, EventEmitter, createNgModuleRef, ViewContainerRef, Component, ViewChild, Input, Output, Optional, TemplateRef, NgModule } from '@angular/core';
3
3
  import * as i1 from '@pepperi-addons/ngx-lib';
4
4
  import { PepNgxLibModule } from '@pepperi-addons/ngx-lib';
5
- import * as i2 from '@angular/router';
6
5
  import * as i2$1 from '@angular/common';
7
6
  import { CommonModule } from '@angular/common';
8
7
  import * as i1$1 from '@pepperi-addons/ngx-lib/dialog';
9
8
  import { PepDialogModule } from '@pepperi-addons/ngx-lib/dialog';
10
9
  import { loadRemoteModule } from '@angular-architects/module-federation';
10
+ import * as i2 from '@angular/router';
11
11
  import { HttpClientModule } from '@angular/common/http';
12
12
  import { MatDialogModule } from '@angular/material/dialog';
13
+ import { ModuleFederationToolsModule } from '@angular-architects/module-federation-tools';
13
14
 
14
15
  class PepRemoteLoaderService {
15
- constructor(httpService, sessionService, addonService, route) {
16
+ constructor(httpService, sessionService, addonService) {
16
17
  this.httpService = httpService;
17
18
  this.sessionService = sessionService;
18
19
  this.addonService = addonService;
19
- this.route = route;
20
20
  //
21
21
  }
22
- getRemoteLoaderOptions(blockLoaderData, remoteEntry = '') {
23
- return {
24
- addonId: blockLoaderData.relation.AddonUUID,
25
- remoteEntry: remoteEntry.length > 0 ? remoteEntry : `${blockLoaderData.addonPublicBaseURL}${blockLoaderData.relation.AddonRelativeURL}.js`,
22
+ getRemoteLoaderOptions(blockLoaderData, blockRemoteEntry = '', type = 'module') {
23
+ const exposedModule = blockLoaderData.relation.ElementsModule?.length > 0 ? blockLoaderData.relation.ElementsModule : blockLoaderData.relation.ModuleName;
24
+ const res = {
25
+ type: type,
26
+ remoteEntry: blockRemoteEntry.length > 0 ? blockRemoteEntry : `${blockLoaderData.addonPublicBaseURL}${blockLoaderData.relation.AddonRelativeURL}.js`,
26
27
  remoteName: blockLoaderData.relation.AddonRelativeURL,
27
- exposedModule: `./${blockLoaderData.relation.ModuleName}`,
28
- componentName: blockLoaderData.relation.ComponentName,
28
+ exposedModule: `./${exposedModule}`,
29
+ addonId: blockLoaderData.relation.AddonUUID, // For local use (adding the relative path to the assets).
29
30
  };
31
+ // If it's web components
32
+ if (blockLoaderData.relation.ElementsModule?.length > 0) {
33
+ res['elementName'] = blockLoaderData.relation.ElementName;
34
+ }
35
+ else { // For load the component from the module.
36
+ res['componentName'] = blockLoaderData.relation.ComponentName;
37
+ }
38
+ return res;
30
39
  }
31
- getAddonBaseUrl(addonUUID, fileName = 'api') {
40
+ getBlockLoaderDataUrl(name, blockType = 'AddonBlock', addonUUID = '', pagesDevServer = '') {
41
+ const fileName = 'addon_blocks';
42
+ const pagesAddonUuid = this.addonService.getPagesAddonUUID();
43
+ let pagesBaseUrl;
32
44
  // For devServer run server on localhost.
33
- const devServer = this.route.snapshot.queryParamMap.get('devServer') === 'true';
34
- if (devServer) {
35
- return `http://localhost:4500/${fileName}`;
45
+ if (pagesDevServer.length > 0) {
46
+ pagesBaseUrl = `${pagesDevServer}/${fileName}`;
36
47
  }
37
48
  else {
38
49
  const baseUrl = this.sessionService.getPapiBaseUrl();
39
- return `${baseUrl}/addons/api/${addonUUID}/${fileName}`;
50
+ pagesBaseUrl = `${baseUrl}/addons/api/${pagesAddonUuid}/${fileName}`;
40
51
  }
52
+ const url = `${pagesBaseUrl}/get_addon_block_loader_data?name=${name}&blockType=${blockType}&addonUUID=${addonUUID}`;
53
+ return url;
41
54
  }
42
- async getBlockRemoteLoaderOptions(name, blockType = 'AddonBlock', remoteEntry = '') {
55
+ async getBlockRemoteLoaderOptions(name, blockType = 'AddonBlock', addonUUID = '', blockRemoteEntry = '', pagesDevServer = '') {
43
56
  return new Promise((resolve, reject) => {
44
- const pagesAddonUuid = this.addonService.getPagesAddonUUID();
45
- const pagesBaseUrl = this.getAddonBaseUrl(pagesAddonUuid, 'addon_blocks');
46
- const url = `${pagesBaseUrl}/get_addon_block_loader_data?name=${name}&blockType=${blockType}`;
47
- this.httpService.getHttpCall(url).toPromise().then((data) => {
48
- if (data) {
49
- resolve(this.getRemoteLoaderOptions(data, remoteEntry));
50
- }
51
- else {
52
- reject(`Addon block with name - ${name} is not found for type - ${blockType}`);
53
- }
57
+ const blockLoaderDataUrl = this.getBlockLoaderDataUrl(name, blockType, addonUUID, pagesDevServer);
58
+ this.httpService.getHttpCall(blockLoaderDataUrl).toPromise().then((data) => {
59
+ resolve(this.getRemoteLoaderOptions(data, blockRemoteEntry));
60
+ }).catch(err => {
61
+ reject(`Addon block with name - ${name} is not found for type - ${blockType}`);
54
62
  });
55
63
  });
56
64
  }
57
65
  }
58
- PepRemoteLoaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepRemoteLoaderService, deps: [{ token: i1.PepHttpService }, { token: i1.PepSessionService }, { token: i1.PepAddonService }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Injectable });
66
+ PepRemoteLoaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepRemoteLoaderService, deps: [{ token: i1.PepHttpService }, { token: i1.PepSessionService }, { token: i1.PepAddonService }], target: i0.ɵɵFactoryTarget.Injectable });
59
67
  PepRemoteLoaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepRemoteLoaderService, providedIn: 'root' });
60
68
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepRemoteLoaderService, decorators: [{
61
69
  type: Injectable,
62
70
  args: [{
63
71
  providedIn: 'root'
64
72
  }]
65
- }], ctorParameters: function () { return [{ type: i1.PepHttpService }, { type: i1.PepSessionService }, { type: i1.PepAddonService }, { type: i2.ActivatedRoute }]; } });
73
+ }], ctorParameters: function () { return [{ type: i1.PepHttpService }, { type: i1.PepSessionService }, { type: i1.PepAddonService }]; } });
66
74
 
67
75
  class PepRemoteLoaderComponent {
68
- constructor(injector, cfr, compiler, pepAddonService) {
76
+ constructor(injector, pepAddonService) {
69
77
  this.injector = injector;
70
- this.cfr = cfr;
71
- this.compiler = compiler;
72
78
  this.pepAddonService = pepAddonService;
73
79
  this._options = null;
74
80
  // This is the data passed by the API Design documentation.
@@ -96,60 +102,53 @@ class PepRemoteLoaderComponent {
96
102
  if (this.hostObject && this.compRef?.instance) {
97
103
  this.compRef.instance.hostObject = this.hostObject;
98
104
  // TODO: Check if this is needed?? if not remove this.
99
- if (this.compRef?.instance?.ngOnChanges) {
100
- this.compRef.instance.ngOnChanges(this.hostObject);
101
- }
105
+ // if (this.compRef?.instance?.ngOnChanges) {
106
+ // this.compRef.instance.ngOnChanges(this.hostObject);
107
+ // }
102
108
  }
103
109
  }
104
- async ngOnChanges(changes) {
110
+ ngOnChanges(changes) {
105
111
  // if (changes?.options?.currentValue) {
106
112
  // this.loadModule(changes?.options?.currentValue);
107
113
  // }
108
114
  }
109
115
  async loadModule() {
110
- const t0 = performance.now();
111
- // Check if only need update
112
- if (!this.options?.update) {
116
+ try {
117
+ const t0 = performance.now();
113
118
  this.viewContainer?.clear();
114
- // Load Component
115
- if (this.options?.noModule) {
116
- const component = await loadRemoteModule(this.options).then(m => m[this.options.componentName]);
117
- // New code
118
- // this.compRef = this.viewContainer.createComponent(component, { injector: this.injector });
119
- // Old code
120
- const componentFactory = this.cfr.resolveComponentFactory(component);
121
- this.compRef = this.viewContainer.createComponent(componentFactory, null, this.injector);
122
- }
123
- // Load Module
124
- else {
125
- const publicPathArr = this.options.remoteEntry.split('/');
126
- const publicPath = publicPathArr.slice(0, publicPathArr.length - 1).join('/') + '/';
127
- __webpack_public_path__ = publicPath;
128
- this.pepAddonService.setAddonStaticFolder(publicPath, this.options.addonId);
119
+ if (this.options.exposedModule?.length > 0) { // Load module
120
+ if (this.options?.addonId && (this.options.type === 'module' || this.options.type === 'script')) {
121
+ const lastSlashIndex = this.options.remoteEntry?.lastIndexOf('/') || -1;
122
+ if (lastSlashIndex > 0) {
123
+ const publicPath = this.options.remoteEntry.substring(0, lastSlashIndex + 1);
124
+ this.pepAddonService.setAddonStaticFolder(publicPath, this.options.addonId);
125
+ }
126
+ }
129
127
  const module = await loadRemoteModule(this.options).then(m => m);
130
- // New code
131
- // const moduleRef = createNgModuleRef(module, this.injector);
132
- // const component = module[this.options.componentName];
133
- // this.compRef = this.viewContainer.createComponent(component, { injector: this.injector, ngModuleRef: moduleRef });
134
- // Old code
135
- const moduleFactory = this.compiler.compileModuleSync(module[this.options.exposedModule.replace('./', '')]);
136
- const moduleRef = moduleFactory.create(this.injector);
137
- const componentFactory = moduleRef?.componentFactoryResolver?.resolveComponentFactory(module[this.options.componentName]);
138
- this.compRef = this.viewContainer.createComponent(componentFactory, null, this.injector, null, moduleRef);
128
+ const moduleRef = createNgModuleRef(module[this.options.exposedModule.replace('./', '')], this.injector);
129
+ this.compRef = this.viewContainer.createComponent(module[this.options.componentName], { injector: this.injector, ngModuleRef: moduleRef });
139
130
  const t1 = performance.now();
140
131
  console.log('remote module load performance: ' + (t1 - t0) / 1000);
141
132
  }
133
+ // Check if this is in use??? (comment out in Angular 14 version)
134
+ // else { // Load Component
135
+ // const componentType = await loadRemoteModule(this.options).then(m => m[this.options.componentName]);
136
+ // this.compRef = this.viewContainer.createComponent(componentType, { injector: this.injector });
137
+ // }
142
138
  this.load.emit();
139
+ if (this.compRef) {
140
+ this.setHostComponentIntoComponentRef();
141
+ this.compRef?.instance['hostEvents']?.subscribe(e => {
142
+ // switch(e.action){
143
+ // case 'addon-loaded':
144
+ // this.showSpinner = false;
145
+ // }
146
+ this.hostEvents.emit(e);
147
+ });
148
+ }
143
149
  }
144
- if (this.compRef) {
145
- this.setHostComponentIntoComponentRef();
146
- this.compRef?.instance['hostEvents']?.subscribe(e => {
147
- // switch(e.action){
148
- // case 'addon-loaded':
149
- // this.showSpinner = false;
150
- // }
151
- this.hostEvents.emit(e);
152
- });
150
+ catch (error) {
151
+ console.error(error);
153
152
  }
154
153
  }
155
154
  ngOnDestroy() {
@@ -157,7 +156,7 @@ class PepRemoteLoaderComponent {
157
156
  this.viewContainer?.clear();
158
157
  }
159
158
  }
160
- PepRemoteLoaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepRemoteLoaderComponent, deps: [{ token: i0.Injector }, { token: i0.ComponentFactoryResolver }, { token: i0.Compiler }, { token: i1.PepAddonService }], target: i0.ɵɵFactoryTarget.Component });
159
+ PepRemoteLoaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepRemoteLoaderComponent, deps: [{ token: i0.Injector }, { token: i1.PepAddonService }], target: i0.ɵɵFactoryTarget.Component });
161
160
  PepRemoteLoaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepRemoteLoaderComponent, selector: "pep-remote-loader", inputs: { options: "options", hostObject: "hostObject" }, outputs: { hostEvents: "hostEvents", load: "load" }, viewQueries: [{ propertyName: "viewContainer", first: true, predicate: ["placeHolder"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: `
162
161
  <!-- <mat-spinner *ngIf="showSpinner; else placeHolder"></mat-spinner> -->
163
162
  <ng-template #placeHolder></ng-template>
@@ -171,7 +170,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
171
170
  <ng-template #placeHolder></ng-template>
172
171
  `
173
172
  }]
174
- }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ComponentFactoryResolver }, { type: i0.Compiler }, { type: i1.PepAddonService }]; }, propDecorators: { viewContainer: [{
173
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.PepAddonService }]; }, propDecorators: { viewContainer: [{
175
174
  type: ViewChild,
176
175
  args: ['placeHolder', { read: ViewContainerRef, static: true }]
177
176
  }], options: [{
@@ -184,6 +183,80 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
184
183
  type: Output
185
184
  }] } });
186
185
 
186
+ class PepRemoteLoaderElementComponent {
187
+ constructor(renderer, el, pepAddonService, route) {
188
+ this.renderer = renderer;
189
+ this.el = el;
190
+ this.pepAddonService = pepAddonService;
191
+ this.route = route;
192
+ this.load = new EventEmitter();
193
+ this.element = null;
194
+ }
195
+ ngOnChanges() {
196
+ if (!this.element)
197
+ return;
198
+ this.populateProps();
199
+ }
200
+ populateProps() {
201
+ for (const prop in this.props) {
202
+ this.element[prop] = this.props[prop];
203
+ }
204
+ }
205
+ setupEvents() {
206
+ for (const event in this.events) {
207
+ this.element.addEventListener(event, this.events[event]);
208
+ }
209
+ }
210
+ async ngAfterContentInit() {
211
+ try {
212
+ const t0 = performance.now();
213
+ // When this implemented in ngAfterContentInit function this code is unnecessary.
214
+ // if (this.element) {
215
+ // this.renderer.removeChild(this.el.nativeElement, this.element);
216
+ // }
217
+ const options = this.options ?? this.route.snapshot.data;
218
+ if (this.options?.addonId && (this.options.type === 'module' || this.options.type === 'script')) {
219
+ const lastSlashIndex = this.options.remoteEntry?.lastIndexOf('/') || -1;
220
+ if (lastSlashIndex > 0) {
221
+ const publicPath = this.options.remoteEntry.substring(0, lastSlashIndex + 1);
222
+ this.pepAddonService.setAddonStaticFolder(publicPath, this.options.addonId);
223
+ }
224
+ }
225
+ await loadRemoteModule(options);
226
+ this.element = this.renderer.createElement(options.elementName);
227
+ this.populateProps();
228
+ this.setupEvents();
229
+ this.renderer.appendChild(this.el.nativeElement, this.element);
230
+ const t1 = performance.now();
231
+ console.log('remote module wc load performance: ' + (t1 - t0) / 1000);
232
+ this.load.emit();
233
+ }
234
+ catch (error) {
235
+ console.error(error);
236
+ }
237
+ }
238
+ }
239
+ PepRemoteLoaderElementComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepRemoteLoaderElementComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i1.PepAddonService }, { token: i2.ActivatedRoute, optional: true }], target: i0.ɵɵFactoryTarget.Component });
240
+ PepRemoteLoaderElementComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepRemoteLoaderElementComponent, selector: "pep-remote-loader-element", inputs: { options: "options", props: "props", events: "events" }, outputs: { load: "load" }, usesOnChanges: true, ngImport: i0, template: `
241
+ <!--<div #vc style="height: inherit;"></div>-->
242
+ `, isInline: true, styles: [":host{width:100%;height:inherit}:host::ng-deep>*{height:inherit}\n"] });
243
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepRemoteLoaderElementComponent, decorators: [{
244
+ type: Component,
245
+ args: [{ selector: 'pep-remote-loader-element', template: `
246
+ <!--<div #vc style="height: inherit;"></div>-->
247
+ `, styles: [":host{width:100%;height:inherit}:host::ng-deep>*{height:inherit}\n"] }]
248
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i1.PepAddonService }, { type: i2.ActivatedRoute, decorators: [{
249
+ type: Optional
250
+ }] }]; }, propDecorators: { options: [{
251
+ type: Input
252
+ }], props: [{
253
+ type: Input
254
+ }], events: [{
255
+ type: Input
256
+ }], load: [{
257
+ type: Output
258
+ }] } });
259
+
187
260
  class PepAddonBlockLoaderComponent {
188
261
  constructor(remoteLoaderService) {
189
262
  this.remoteLoaderService = remoteLoaderService;
@@ -196,7 +269,10 @@ class PepAddonBlockLoaderComponent {
196
269
  this.blockLoad = new EventEmitter();
197
270
  this.inDialog = false;
198
271
  this.remotePathOptions = null;
199
- //
272
+ this.loadElement = false;
273
+ this.onHostEventsCallback = (event) => {
274
+ this.onHostEvents(event.detail);
275
+ };
200
276
  }
201
277
  set blockType(value) {
202
278
  this._blockType = value;
@@ -218,7 +294,8 @@ class PepAddonBlockLoaderComponent {
218
294
  return this._dialogRef;
219
295
  }
220
296
  ngOnInit() {
221
- this.remoteLoaderService.getBlockRemoteLoaderOptions(this.name, this.blockType, this.remoteEntry).then(options => {
297
+ this.remoteLoaderService.getBlockRemoteLoaderOptions(this.name, this.blockType, this.remoteEntry).then((options) => {
298
+ this.loadElement = options.elementName?.length > 0;
222
299
  this.remotePathOptions = options;
223
300
  });
224
301
  }
@@ -239,10 +316,10 @@ class PepAddonBlockLoaderComponent {
239
316
  }
240
317
  }
241
318
  PepAddonBlockLoaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepAddonBlockLoaderComponent, deps: [{ token: PepRemoteLoaderService }], target: i0.ɵɵFactoryTarget.Component });
242
- PepAddonBlockLoaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepAddonBlockLoaderComponent, selector: "pep-addon-block-loader", inputs: { remoteEntry: "remoteEntry", blockType: "blockType", name: "name", hostObject: "hostObject", dialogRef: "dialogRef" }, outputs: { hostEvents: "hostEvents", blockLoad: "blockLoad" }, viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<ng-container *ngIf=\"!inDialog\">\n <ng-container *ngTemplateOutlet=\"remoteLoaderTemplate\"></ng-container>\n</ng-container>\n\n<ng-template #dialogTemplate let-data>\n <pep-dialog [showClose]=\"data?.showClose\" [showHeader]=\"data?.showHeader\" [showFooter]=\"data?.showFooter\" [title]=\"data?.title\" (close)=\"closeDialog($event)\">\n <ng-container pep-dialog-content>\n <ng-container *ngTemplateOutlet=\"remoteLoaderTemplate\"></ng-container>\n </ng-container>\n </pep-dialog>\n</ng-template>\n\n<ng-template #remoteLoaderTemplate>\n <pep-remote-loader *ngIf=\"remotePathOptions\"\n [options]=\"remotePathOptions\"\n [hostObject]=\"hostObject\"\n (hostEvents)=\"onHostEvents($event);\"\n (load)=\"onBlockLoad()\">\n </pep-remote-loader>\n</ng-template>", styles: [""], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$1.PepDialogComponent, selector: "pep-dialog", inputs: ["title", "showClose", "showHeader", "showFooter"], outputs: ["close"] }, { kind: "component", type: PepRemoteLoaderComponent, selector: "pep-remote-loader", inputs: ["options", "hostObject"], outputs: ["hostEvents", "load"] }] });
319
+ PepAddonBlockLoaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.2", type: PepAddonBlockLoaderComponent, selector: "pep-addon-block-loader", inputs: { remoteEntry: "remoteEntry", blockType: "blockType", name: "name", hostObject: "hostObject", dialogRef: "dialogRef" }, outputs: { hostEvents: "hostEvents", blockLoad: "blockLoad" }, viewQueries: [{ propertyName: "dialogTemplate", first: true, predicate: ["dialogTemplate"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<ng-container *ngIf=\"!inDialog\">\n <ng-container *ngTemplateOutlet=\"remoteLoaderTemplate\"></ng-container>\n</ng-container>\n\n<ng-template #dialogTemplate let-data>\n <pep-dialog [showClose]=\"data?.showClose\" [showHeader]=\"data?.showHeader\" [showFooter]=\"data?.showFooter\" [title]=\"data?.title\" (close)=\"closeDialog($event)\">\n <ng-container pep-dialog-content>\n <ng-container *ngTemplateOutlet=\"remoteLoaderTemplate\"></ng-container>\n </ng-container>\n </pep-dialog>\n</ng-template>\n\n<ng-template #remoteLoaderTemplate>\n <pep-remote-loader *ngIf=\"remotePathOptions && !loadElement\"\n [options]=\"remotePathOptions\"\n [hostObject]=\"hostObject\"\n (hostEvents)=\"onHostEvents($event);\"\n (load)=\"onBlockLoad()\">\n </pep-remote-loader>\n\n <pep-remote-loader-element *ngIf=\"remotePathOptions && loadElement\" \n [options]=\"remotePathOptions\"\n [props]=\"{ hostObject: hostObject }\"\n [events]=\"{ hostEvents: onHostEventsCallback }\"\n (load)=\"onBlockLoad()\">\n </pep-remote-loader-element>\n\n</ng-template>", styles: [""], dependencies: [{ kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1$1.PepDialogComponent, selector: "pep-dialog", inputs: ["title", "showClose", "showHeader", "showFooter"], outputs: ["close"] }, { kind: "component", type: PepRemoteLoaderComponent, selector: "pep-remote-loader", inputs: ["options", "hostObject"], outputs: ["hostEvents", "load"] }, { kind: "component", type: PepRemoteLoaderElementComponent, selector: "pep-remote-loader-element", inputs: ["options", "props", "events"], outputs: ["load"] }] });
243
320
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepAddonBlockLoaderComponent, decorators: [{
244
321
  type: Component,
245
- args: [{ selector: 'pep-addon-block-loader', template: "<ng-container *ngIf=\"!inDialog\">\n <ng-container *ngTemplateOutlet=\"remoteLoaderTemplate\"></ng-container>\n</ng-container>\n\n<ng-template #dialogTemplate let-data>\n <pep-dialog [showClose]=\"data?.showClose\" [showHeader]=\"data?.showHeader\" [showFooter]=\"data?.showFooter\" [title]=\"data?.title\" (close)=\"closeDialog($event)\">\n <ng-container pep-dialog-content>\n <ng-container *ngTemplateOutlet=\"remoteLoaderTemplate\"></ng-container>\n </ng-container>\n </pep-dialog>\n</ng-template>\n\n<ng-template #remoteLoaderTemplate>\n <pep-remote-loader *ngIf=\"remotePathOptions\"\n [options]=\"remotePathOptions\"\n [hostObject]=\"hostObject\"\n (hostEvents)=\"onHostEvents($event);\"\n (load)=\"onBlockLoad()\">\n </pep-remote-loader>\n</ng-template>" }]
322
+ args: [{ selector: 'pep-addon-block-loader', template: "<ng-container *ngIf=\"!inDialog\">\n <ng-container *ngTemplateOutlet=\"remoteLoaderTemplate\"></ng-container>\n</ng-container>\n\n<ng-template #dialogTemplate let-data>\n <pep-dialog [showClose]=\"data?.showClose\" [showHeader]=\"data?.showHeader\" [showFooter]=\"data?.showFooter\" [title]=\"data?.title\" (close)=\"closeDialog($event)\">\n <ng-container pep-dialog-content>\n <ng-container *ngTemplateOutlet=\"remoteLoaderTemplate\"></ng-container>\n </ng-container>\n </pep-dialog>\n</ng-template>\n\n<ng-template #remoteLoaderTemplate>\n <pep-remote-loader *ngIf=\"remotePathOptions && !loadElement\"\n [options]=\"remotePathOptions\"\n [hostObject]=\"hostObject\"\n (hostEvents)=\"onHostEvents($event);\"\n (load)=\"onBlockLoad()\">\n </pep-remote-loader>\n\n <pep-remote-loader-element *ngIf=\"remotePathOptions && loadElement\" \n [options]=\"remotePathOptions\"\n [props]=\"{ hostObject: hostObject }\"\n [events]=\"{ hostEvents: onHostEventsCallback }\"\n (load)=\"onBlockLoad()\">\n </pep-remote-loader-element>\n\n</ng-template>" }]
246
323
  }], ctorParameters: function () { return [{ type: PepRemoteLoaderService }]; }, propDecorators: { dialogTemplate: [{
247
324
  type: ViewChild,
248
325
  args: ['dialogTemplate', { static: true, read: TemplateRef }]
@@ -263,15 +340,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
263
340
  }] } });
264
341
 
265
342
  class PepAddonBlockLoaderService {
266
- constructor(resolver, dialogService) {
267
- this.resolver = resolver;
343
+ constructor(dialogService) {
268
344
  this.dialogService = dialogService;
269
345
  //
270
346
  }
271
347
  loadAddonBlockInternal(options) {
272
348
  if (options.container !== null) {
273
- const factory = this.resolver.resolveComponentFactory(PepAddonBlockLoaderComponent);
274
- const componentRef = options.container.createComponent(factory);
349
+ // const factory = this.resolver.resolveComponentFactory(PepAddonBlockLoaderComponent);
350
+ const componentRef = options.container.createComponent(PepAddonBlockLoaderComponent);
275
351
  const addonBlockInstance = componentRef.instance;
276
352
  addonBlockInstance.blockType = options.blockType || 'AddonBlock';
277
353
  addonBlockInstance.name = options.name;
@@ -310,32 +386,36 @@ class PepAddonBlockLoaderService {
310
386
  }
311
387
  }
312
388
  }
313
- PepAddonBlockLoaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepAddonBlockLoaderService, deps: [{ token: i0.ComponentFactoryResolver }, { token: i1$1.PepDialogService }], target: i0.ɵɵFactoryTarget.Injectable });
389
+ PepAddonBlockLoaderService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepAddonBlockLoaderService, deps: [{ token: i1$1.PepDialogService }], target: i0.ɵɵFactoryTarget.Injectable });
314
390
  PepAddonBlockLoaderService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepAddonBlockLoaderService, providedIn: 'root' });
315
391
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepAddonBlockLoaderService, decorators: [{
316
392
  type: Injectable,
317
393
  args: [{
318
394
  providedIn: 'root'
319
395
  }]
320
- }], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i1$1.PepDialogService }]; } });
396
+ }], ctorParameters: function () { return [{ type: i1$1.PepDialogService }]; } });
321
397
 
322
398
  class PepRemoteLoaderModule {
323
399
  }
324
400
  PepRemoteLoaderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepRemoteLoaderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
325
401
  PepRemoteLoaderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: PepRemoteLoaderModule, declarations: [PepAddonBlockLoaderComponent,
326
- PepRemoteLoaderComponent], imports: [CommonModule,
402
+ PepRemoteLoaderComponent,
403
+ PepRemoteLoaderElementComponent], imports: [CommonModule,
327
404
  HttpClientModule,
405
+ ModuleFederationToolsModule,
328
406
  // Material modules,
329
407
  MatDialogModule,
330
408
  // ngx-lib modules
331
409
  PepNgxLibModule,
332
410
  PepDialogModule], exports: [PepAddonBlockLoaderComponent,
333
- PepRemoteLoaderComponent] });
411
+ PepRemoteLoaderComponent,
412
+ PepRemoteLoaderElementComponent] });
334
413
  PepRemoteLoaderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: PepRemoteLoaderModule, providers: [
335
414
  PepAddonBlockLoaderService,
336
415
  PepRemoteLoaderService
337
416
  ], imports: [CommonModule,
338
417
  HttpClientModule,
418
+ ModuleFederationToolsModule,
339
419
  // Material modules,
340
420
  MatDialogModule,
341
421
  // ngx-lib modules
@@ -347,10 +427,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
347
427
  declarations: [
348
428
  PepAddonBlockLoaderComponent,
349
429
  PepRemoteLoaderComponent,
430
+ PepRemoteLoaderElementComponent,
350
431
  ],
351
432
  imports: [
352
433
  CommonModule,
353
434
  HttpClientModule,
435
+ ModuleFederationToolsModule,
354
436
  // Material modules,
355
437
  MatDialogModule,
356
438
  // ngx-lib modules
@@ -360,6 +442,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
360
442
  exports: [
361
443
  PepAddonBlockLoaderComponent,
362
444
  PepRemoteLoaderComponent,
445
+ PepRemoteLoaderElementComponent
363
446
  ],
364
447
  providers: [
365
448
  PepAddonBlockLoaderService,
@@ -376,5 +459,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
376
459
  * Generated bundle index. Do not edit.
377
460
  */
378
461
 
379
- export { PepAddonBlockLoaderComponent, PepAddonBlockLoaderService, PepRemoteLoaderComponent, PepRemoteLoaderModule, PepRemoteLoaderService };
462
+ export { PepAddonBlockLoaderComponent, PepAddonBlockLoaderService, PepRemoteLoaderComponent, PepRemoteLoaderElementComponent, PepRemoteLoaderModule, PepRemoteLoaderService };
380
463
  //# sourceMappingURL=pepperi-addons-ngx-lib-remote-loader.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"pepperi-addons-ngx-lib-remote-loader.mjs","sources":["../../../projects/ngx-lib/remote-loader/remote-loader.service.ts","../../../projects/ngx-lib/remote-loader/remote-loader.component.ts","../../../projects/ngx-lib/remote-loader/addon-block-loader.component.ts","../../../projects/ngx-lib/remote-loader/addon-block-loader.component.html","../../../projects/ngx-lib/remote-loader/addon-block-loader.service.ts","../../../projects/ngx-lib/remote-loader/remote-loader.module.ts","../../../projects/ngx-lib/remote-loader/public-api.ts","../../../projects/ngx-lib/remote-loader/pepperi-addons-ngx-lib-remote-loader.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { PepAddonService, PepHttpService, PepSessionService} from '@pepperi-addons/ngx-lib';\nimport { PepBlockDataType, PepRemoteLoaderOptions } from './remote-loader.model';\nimport { IBlockLoaderData } from './remote-loader.model';\nimport { ActivatedRoute } from '@angular/router';\n\n@Injectable({ \n providedIn: 'root' \n})\nexport class PepRemoteLoaderService {\n \n constructor(\n private httpService: PepHttpService,\n private sessionService: PepSessionService,\n private addonService: PepAddonService,\n private route: ActivatedRoute,\n ) {\n //\n }\n\n getRemoteLoaderOptions(blockLoaderData: IBlockLoaderData, remoteEntry = ''): PepRemoteLoaderOptions {\n return {\n addonId: blockLoaderData.relation.AddonUUID,\n remoteEntry: remoteEntry.length > 0 ? remoteEntry : `${blockLoaderData.addonPublicBaseURL}${blockLoaderData.relation.AddonRelativeURL}.js`,\n remoteName: blockLoaderData.relation.AddonRelativeURL,\n exposedModule: `./${blockLoaderData.relation.ModuleName}`,\n componentName: blockLoaderData.relation.ComponentName, \n }\n }\n\n private getAddonBaseUrl(addonUUID: string, fileName = 'api'): string {\n // For devServer run server on localhost.\n const devServer = this.route.snapshot.queryParamMap.get('devServer') === 'true';\n if(devServer) {\n return `http://localhost:4500/${fileName}`;\n } else {\n const baseUrl = this.sessionService.getPapiBaseUrl();\n return `${baseUrl}/addons/api/${addonUUID}/${fileName}`;\n }\n }\n \n async getBlockRemoteLoaderOptions(name: string, blockType: PepBlockDataType = 'AddonBlock', remoteEntry = ''): Promise<PepRemoteLoaderOptions> {\n return new Promise((resolve, reject) => {\n const pagesAddonUuid = this.addonService.getPagesAddonUUID();\n const pagesBaseUrl = this.getAddonBaseUrl(pagesAddonUuid, 'addon_blocks');\n const url = `${pagesBaseUrl}/get_addon_block_loader_data?name=${name}&blockType=${blockType}`;\n this.httpService.getHttpCall(url).toPromise().then((data: IBlockLoaderData) => {\n if (data) {\n resolve(this.getRemoteLoaderOptions(data, remoteEntry));\n } else {\n reject(`Addon block with name - ${name} is not found for type - ${blockType}`);\n }\n }); \n });\n }\n}\n","import { PepAddonService } from '@pepperi-addons/ngx-lib';\nimport { Component, Input, OnChanges, ViewChild, ViewContainerRef, ComponentFactoryResolver,\n Injector, NgModuleFactory, Compiler, EventEmitter, Output, ComponentRef, SimpleChanges, NgZone, createNgModuleRef } from '@angular/core';\nimport { loadRemoteModule } from '@angular-architects/module-federation';\nimport { PepRemoteLoaderOptions } from './remote-loader.model';\ndeclare let __webpack_public_path__;\n\n@Component({\n selector: 'pep-remote-loader',\n template: `\n <!-- <mat-spinner *ngIf=\"showSpinner; else placeHolder\"></mat-spinner> -->\n <ng-template #placeHolder></ng-template>\n `\n})\nexport class PepRemoteLoaderComponent implements OnChanges {\n @ViewChild('placeHolder', { read: ViewContainerRef, static: true }) viewContainer: ViewContainerRef;\n \n private _options: PepRemoteLoaderOptions = null;\n @Input()\n set options(value: PepRemoteLoaderOptions) {\n this._options = value;\n if (value) {\n this.loadModule();\n }\n }\n get options(): PepRemoteLoaderOptions {\n return this._options;\n }\n \n // This is the data passed by the API Design documentation.\n private _hostObject: any = null;\n @Input()\n set hostObject(value: any) { \n this._hostObject = value;\n this.setHostComponentIntoComponentRef();\n }\n get hostObject(): any {\n return this._hostObject;\n }\n\n @Output() hostEvents: EventEmitter<any> = new EventEmitter();\n @Output() load: EventEmitter<any> = new EventEmitter();\n // showSpinner = true;\n \n private compRef: ComponentRef<any>;\n\n constructor(\n private injector: Injector,\n private cfr: ComponentFactoryResolver,\n private compiler: Compiler,\n private pepAddonService: PepAddonService,\n // private zone: NgZone,\n ) { }\n\n private setHostComponentIntoComponentRef() {\n if (this.hostObject && this.compRef?.instance) {\n this.compRef.instance.hostObject = this.hostObject;\n\n // TODO: Check if this is needed?? if not remove this.\n if (this.compRef?.instance?.ngOnChanges) {\n this.compRef.instance.ngOnChanges(this.hostObject);\n }\n }\n }\n\n async ngOnChanges(changes: SimpleChanges) {\n // if (changes?.options?.currentValue) {\n // this.loadModule(changes?.options?.currentValue);\n // }\n }\n\n private async loadModule() {\n const t0 = performance.now();\n \n // Check if only need update\n if (!this.options?.update) {\n this.viewContainer?.clear();\n // Load Component\n if (this.options?.noModule) {\n const component = await loadRemoteModule(this.options).then(m => m[this.options.componentName]);\n \n // New code\n // this.compRef = this.viewContainer.createComponent(component, { injector: this.injector });\n\n // Old code\n const componentFactory = this.cfr.resolveComponentFactory(component);\n this.compRef = this.viewContainer.createComponent(componentFactory, null, this.injector);\n }\n // Load Module\n else {\n const publicPathArr = this.options.remoteEntry.split('/');\n const publicPath = publicPathArr.slice(0, publicPathArr.length - 1).join('/')+'/';\n __webpack_public_path__ = publicPath;\n this.pepAddonService.setAddonStaticFolder(publicPath, this.options.addonId);\n\n const module = await loadRemoteModule(this.options).then(m => m);\n \n // New code\n // const moduleRef = createNgModuleRef(module, this.injector);\n // const component = module[this.options.componentName];\n // this.compRef = this.viewContainer.createComponent(component, { injector: this.injector, ngModuleRef: moduleRef });\n \n // Old code\n const moduleFactory: NgModuleFactory<any> = this.compiler.compileModuleSync(module[this.options.exposedModule.replace('./','')]);\n const moduleRef = moduleFactory.create(this.injector);\n \n const componentFactory = moduleRef?.componentFactoryResolver?.resolveComponentFactory(module[this.options.componentName]);\n this.compRef = this.viewContainer.createComponent(componentFactory, null, this.injector, null, moduleRef);\n\n const t1 = performance.now();\n console.log('remote module load performance: ' + (t1-t0)/1000);\n }\n\n this.load.emit();\n }\n\n if (this.compRef) {\n this.setHostComponentIntoComponentRef();\n \n this.compRef?.instance['hostEvents']?.subscribe(e => {\n // switch(e.action){\n // case 'addon-loaded':\n // this.showSpinner = false;\n // }\n this.hostEvents.emit(e)\n });\n }\n }\n\n ngOnDestroy(): void {\n this.compRef?.destroy();\n this.viewContainer?.clear();\n }\n}\n\n","import { Component, OnInit, Input, Output, EventEmitter, TemplateRef, ViewChild, OnDestroy } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { PepBlockDataType, PepRemoteLoaderOptions } from './remote-loader.model';\nimport { PepRemoteLoaderService } from './remote-loader.service';\n\n@Component({\n selector: 'pep-addon-block-loader',\n templateUrl: './addon-block-loader.component.html',\n styleUrls: ['./addon-block-loader.component.scss']\n})\nexport class PepAddonBlockLoaderComponent implements OnInit, OnDestroy {\n @ViewChild('dialogTemplate', { static: true, read: TemplateRef }) dialogTemplate!: TemplateRef<any>;\n \n @Input() remoteEntry: string = '';\n\n private _blockType: PepBlockDataType = 'AddonBlock';\n @Input() \n set blockType(value: PepBlockDataType) {\n this._blockType = value;\n }\n get blockType(): PepBlockDataType {\n return this._blockType;\n }\n\n private _name = '';\n @Input() \n set name(value: string) {\n this._name = value;\n }\n get name(): string {\n return this._name;\n }\n\n @Input() hostObject = null;\n \n private _dialogRef: MatDialogRef<any> = null;\n @Input()\n set dialogRef(value: MatDialogRef<any>) {\n this._dialogRef = value;\n this.inDialog = this._dialogRef != null;\n }\n get dialogRef(): MatDialogRef<any> {\n return this._dialogRef;\n }\n \n @Output() hostEvents: EventEmitter<any> = new EventEmitter<any>();\n @Output() blockLoad: EventEmitter<void> = new EventEmitter<void>();\n \n inDialog = false;\n remotePathOptions: PepRemoteLoaderOptions = null;\n \n constructor(private remoteLoaderService: PepRemoteLoaderService) {\n //\n }\n \n ngOnInit() {\n this.remoteLoaderService.getBlockRemoteLoaderOptions(this.name, this.blockType, this.remoteEntry).then(options => {\n this.remotePathOptions = options;\n });\n }\n\n ngOnDestroy(): void {\n if (this.dialogRef) {\n this.dialogRef = null;\n }\n\n this.remotePathOptions = null;\n }\n\n onBlockLoad() {\n this.blockLoad.emit();\n }\n\n onHostEvents(event: any) {\n this.hostEvents.emit(event);\n }\n\n closeDialog(event) {\n this.dialogRef?.close(event);\n }\n}","<ng-container *ngIf=\"!inDialog\">\n <ng-container *ngTemplateOutlet=\"remoteLoaderTemplate\"></ng-container>\n</ng-container>\n\n<ng-template #dialogTemplate let-data>\n <pep-dialog [showClose]=\"data?.showClose\" [showHeader]=\"data?.showHeader\" [showFooter]=\"data?.showFooter\" [title]=\"data?.title\" (close)=\"closeDialog($event)\">\n <ng-container pep-dialog-content>\n <ng-container *ngTemplateOutlet=\"remoteLoaderTemplate\"></ng-container>\n </ng-container>\n </pep-dialog>\n</ng-template>\n\n<ng-template #remoteLoaderTemplate>\n <pep-remote-loader *ngIf=\"remotePathOptions\"\n [options]=\"remotePathOptions\"\n [hostObject]=\"hostObject\"\n (hostEvents)=\"onHostEvents($event);\"\n (load)=\"onBlockLoad()\">\n </pep-remote-loader>\n</ng-template>","import { ComponentFactoryResolver, ComponentRef, Injectable, Injector } from '@angular/core';\nimport { IAddonBlockLoaderDialogOptions, IAddonBlockLoaderOptions, IBlockLoaderData } from './remote-loader.model';\nimport { PepAddonBlockLoaderComponent } from './addon-block-loader.component';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { PepDialogService } from '@pepperi-addons/ngx-lib/dialog';\n\n@Injectable({ \n providedIn: 'root' \n})\nexport class PepAddonBlockLoaderService {\n \n constructor(\n private resolver: ComponentFactoryResolver,\n private dialogService: PepDialogService,\n ) {\n //\n }\n\n private loadAddonBlockInternal(options: IAddonBlockLoaderDialogOptions): ComponentRef<PepAddonBlockLoaderComponent> | null {\n if (options.container !== null) {\n const factory = this.resolver.resolveComponentFactory(PepAddonBlockLoaderComponent);\n const componentRef = options.container.createComponent(factory);\n const addonBlockInstance = componentRef.instance;\n\n addonBlockInstance.blockType = options.blockType || 'AddonBlock';\n addonBlockInstance.name = options.name;\n addonBlockInstance.hostObject = options.hostObject;\n\n addonBlockInstance.hostEvents.subscribe((event) => {\n if (options.hostEventsCallback) {\n options.hostEventsCallback(event);\n }\n });\n\n return componentRef;\n } else {\n return null;\n }\n }\n\n loadAddonBlockInContainer(options: IAddonBlockLoaderOptions): ComponentRef<PepAddonBlockLoaderComponent> | null {\n return this.loadAddonBlockInternal(options);\n }\n\n loadAddonBlockInDialog(options: IAddonBlockLoaderDialogOptions): MatDialogRef<any> | null {\n const componentRef = this.loadAddonBlockInternal(options);\n \n if (componentRef) {\n const addonBlockInstance = componentRef.instance;\n const pepConfig = this.dialogService.getDialogConfig({ disableClose: false, panelClass: 'remote-loader-dialog' }, options.size || 'full-screen');\n const mergeConfig = {...options.config, ...pepConfig}; \n const data = options.data || null;\n addonBlockInstance.dialogRef = this.dialogService.openDialog(addonBlockInstance.dialogTemplate, data, mergeConfig);\n addonBlockInstance.dialogRef.afterClosed().subscribe(() => {\n componentRef.hostView.detach();\n componentRef.hostView.destroy();\n componentRef.destroy();\n });\n return addonBlockInstance.dialogRef;\n\n } else {\n return null;\n }\n }\n}\n","import { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatDialogModule } from '@angular/material/dialog';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport { PepDialogModule } from '@pepperi-addons/ngx-lib/dialog';\n\nimport { PepAddonBlockLoaderComponent } from './addon-block-loader.component';\nimport { PepAddonBlockLoaderService } from './addon-block-loader.service';\n\nimport { PepRemoteLoaderComponent } from './remote-loader.component';\nimport { PepRemoteLoaderService } from './remote-loader.service';\n\n@NgModule({\n declarations: [\n PepAddonBlockLoaderComponent,\n PepRemoteLoaderComponent,\n ],\n imports: [\n CommonModule,\n HttpClientModule,\n // Material modules,\n MatDialogModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepDialogModule,\n ],\n exports: [\n PepAddonBlockLoaderComponent,\n PepRemoteLoaderComponent,\n ],\n providers: [\n PepAddonBlockLoaderService,\n PepRemoteLoaderService\n ]\n})\nexport class PepRemoteLoaderModule {\n\n\n}\n","/*\n * Public API Surface of remote-loader\n */\nexport * from './addon-block-loader.component';\nexport * from './addon-block-loader.service';\nexport * from './remote-loader.component';\nexport * from './remote-loader.module';\nexport * from './remote-loader.model';\nexport * from './remote-loader.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.PepRemoteLoaderService","i2","i3","i4.PepRemoteLoaderComponent","i1"],"mappings":";;;;;;;;;;;;;MASa,sBAAsB,CAAA;AAE/B,IAAA,WAAA,CACY,WAA2B,EAC3B,cAAiC,EACjC,YAA6B,EAC7B,KAAqB,EAAA;QAHrB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAgB;QAC3B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAmB;QACjC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAiB;QAC7B,IAAK,CAAA,KAAA,GAAL,KAAK,CAAgB;;KAGhC;AAED,IAAA,sBAAsB,CAAC,eAAiC,EAAE,WAAW,GAAG,EAAE,EAAA;QACtE,OAAO;AACH,YAAA,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,SAAS;YAC3C,WAAW,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,GAAG,WAAW,GAAG,CAAA,EAAG,eAAe,CAAC,kBAAkB,CAAA,EAAG,eAAe,CAAC,QAAQ,CAAC,gBAAgB,CAAK,GAAA,CAAA;AAC1I,YAAA,UAAU,EAAE,eAAe,CAAC,QAAQ,CAAC,gBAAgB;AACrD,YAAA,aAAa,EAAE,CAAK,EAAA,EAAA,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAE,CAAA;AACzD,YAAA,aAAa,EAAE,eAAe,CAAC,QAAQ,CAAC,aAAa;SACxD,CAAA;KACJ;AAEO,IAAA,eAAe,CAAC,SAAiB,EAAE,QAAQ,GAAG,KAAK,EAAA;;AAEvD,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,MAAM,CAAC;AAChF,QAAA,IAAG,SAAS,EAAE;YACV,OAAO,CAAA,sBAAA,EAAyB,QAAQ,CAAA,CAAE,CAAC;AAC9C,SAAA;AAAM,aAAA;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;AACrD,YAAA,OAAO,GAAG,OAAO,CAAA,YAAA,EAAe,SAAS,CAAI,CAAA,EAAA,QAAQ,EAAE,CAAC;AAC3D,SAAA;KACJ;IAED,MAAM,2BAA2B,CAAC,IAAY,EAAE,YAA8B,YAAY,EAAE,WAAW,GAAG,EAAE,EAAA;QACxG,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;YACnC,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;YAC7D,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;YAC1E,MAAM,GAAG,GAAG,CAAG,EAAA,YAAY,qCAAqC,IAAI,CAAA,WAAA,EAAc,SAAS,CAAA,CAAE,CAAC;AAC9F,YAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,IAAsB,KAAI;AAC1E,gBAAA,IAAI,IAAI,EAAE;oBACN,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;AAC3D,iBAAA;AAAM,qBAAA;AACH,oBAAA,MAAM,CAAC,CAA2B,wBAAA,EAAA,IAAI,4BAA4B,SAAS,CAAA,CAAE,CAAC,CAAC;AAClF,iBAAA;AACL,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACN;;mHA7CQ,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,cAFnB,MAAM,EAAA,CAAA,CAAA;2FAET,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCMY,wBAAwB,CAAA;AAgCjC,IAAA,WAAA,CACY,QAAkB,EAClB,GAA6B,EAC7B,QAAkB,EAClB,eAAgC,EAAA;QAHhC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAG,CAAA,GAAA,GAAH,GAAG,CAA0B;QAC7B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAjCpC,IAAQ,CAAA,QAAA,GAA2B,IAAI,CAAC;;QAaxC,IAAW,CAAA,WAAA,GAAQ,IAAI,CAAC;AAUtB,QAAA,IAAA,CAAA,UAAU,GAAuB,IAAI,YAAY,EAAE,CAAC;AACpD,QAAA,IAAA,CAAA,IAAI,GAAuB,IAAI,YAAY,EAAE,CAAC;KAWnD;IAlCL,IACI,OAAO,CAAC,KAA6B,EAAA;AACrC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,UAAU,EAAE,CAAC;AACrB,SAAA;KACJ;AACD,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;IAID,IACI,UAAU,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,gCAAgC,EAAE,CAAC;KAC3C;AACD,IAAA,IAAI,UAAU,GAAA;QACV,OAAO,IAAI,CAAC,WAAW,CAAC;KAC3B;IAgBO,gCAAgC,GAAA;QACpC,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE;YAC3C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;;AAGnD,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE;gBACrC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACtD,aAAA;AACJ,SAAA;KACJ;IAED,MAAM,WAAW,CAAC,OAAsB,EAAA;;;;KAIvC;AAEO,IAAA,MAAM,UAAU,GAAA;AACpB,QAAA,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;;AAG7B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE;AACvB,YAAA,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC;;AAE5B,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE;gBACxB,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;;;;gBAMhG,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;AACrE,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC5F,aAAA;;AAEI,iBAAA;AACD,gBAAA,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC1D,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAC,GAAG,CAAC;gBAClF,uBAAuB,GAAG,UAAU,CAAC;AACrC,gBAAA,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAE5E,gBAAA,MAAM,MAAM,GAAI,MAAM,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;;;;;;gBAQlE,MAAM,aAAa,GAAyB,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,EAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACjI,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAEtD,gBAAA,MAAM,gBAAgB,GAAG,SAAS,EAAE,wBAAwB,EAAE,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;gBAC1H,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AAE1G,gBAAA,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;AAC7B,gBAAA,OAAO,CAAC,GAAG,CAAC,kCAAkC,GAAG,CAAC,EAAE,GAAC,EAAE,IAAE,IAAI,CAAC,CAAC;AAClE,aAAA;AAED,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;AACpB,SAAA;QAED,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,gCAAgC,EAAE,CAAC;AAExC,YAAA,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC,CAAC,IAAG;;;;;AAKhD,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAC3B,aAAC,CAAC,CAAC;AACN,SAAA;KACJ;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC;KAC/B;;qHAtHQ,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;yGAAxB,wBAAwB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACC,gBAAgB,EANxC,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;AAGT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAEQ,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,CAAA;;;AAGT,IAAA,CAAA;AACJ,iBAAA,CAAA;2LAEuE,aAAa,EAAA,CAAA;sBAAhF,SAAS;uBAAC,aAAa,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAI9D,OAAO,EAAA,CAAA;sBADV,KAAK;gBAcF,UAAU,EAAA,CAAA;sBADb,KAAK;gBASI,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBACG,IAAI,EAAA,CAAA;sBAAb,MAAM;;;MC/BE,4BAA4B,CAAA;AAyCrC,IAAA,WAAA,CAAoB,mBAA2C,EAAA;QAA3C,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAwB;QAtCtD,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;QAE1B,IAAU,CAAA,UAAA,GAAqB,YAAY,CAAC;QAS5C,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;QASV,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;QAEnB,IAAU,CAAA,UAAA,GAAsB,IAAI,CAAC;AAUnC,QAAA,IAAA,CAAA,UAAU,GAAsB,IAAI,YAAY,EAAO,CAAC;AACxD,QAAA,IAAA,CAAA,SAAS,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAEnE,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QACjB,IAAiB,CAAA,iBAAA,GAA2B,IAAI,CAAC;;KAIhD;IArCD,IACI,SAAS,CAAC,KAAuB,EAAA;AACjC,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KAC3B;AACD,IAAA,IAAI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAGD,IACI,IAAI,CAAC,KAAa,EAAA;AAClB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACtB;AACD,IAAA,IAAI,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;IAKD,IACI,SAAS,CAAC,KAAwB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;KAC3C;AACD,IAAA,IAAI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IAYD,QAAQ,GAAA;QACJ,IAAI,CAAC,mBAAmB,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,IAAG;AAC7G,YAAA,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;AACrC,SAAC,CAAC,CAAC;KACN;IAED,WAAW,GAAA;QACP,IAAI,IAAI,CAAC,SAAS,EAAE;AAChB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACzB,SAAA;AAED,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;KACjC;IAED,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;KACzB;AAED,IAAA,YAAY,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC/B;AAED,IAAA,WAAW,CAAC,KAAK,EAAA;AACb,QAAA,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;KAChC;;yHArEQ,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;6GAA5B,4BAA4B,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACc,WAAW,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXlE,8zBAmBc,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDTD,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,SAAS;+BACI,wBAAwB,EAAA,QAAA,EAAA,8zBAAA,EAAA,CAAA;0GAKgC,cAAc,EAAA,CAAA;sBAA/E,SAAS;uBAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;gBAEvD,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAIF,SAAS,EAAA,CAAA;sBADZ,KAAK;gBAUF,IAAI,EAAA,CAAA;sBADP,KAAK;gBAQG,UAAU,EAAA,CAAA;sBAAlB,KAAK;gBAIF,SAAS,EAAA,CAAA;sBADZ,KAAK;gBASI,UAAU,EAAA,CAAA;sBAAnB,MAAM;gBACG,SAAS,EAAA,CAAA;sBAAlB,MAAM;;;MErCE,0BAA0B,CAAA;IAEnC,WACY,CAAA,QAAkC,EAClC,aAA+B,EAAA;QAD/B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA0B;QAClC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;;KAG1C;AAEO,IAAA,sBAAsB,CAAC,OAAuC,EAAA;AAClE,QAAA,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC,4BAA4B,CAAC,CAAC;YACpF,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAChE,YAAA,MAAM,kBAAkB,GAAG,YAAY,CAAC,QAAQ,CAAC;YAEjD,kBAAkB,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,YAAY,CAAC;AACjE,YAAA,kBAAkB,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;AACvC,YAAA,kBAAkB,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YAEnD,kBAAkB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;gBAC9C,IAAI,OAAO,CAAC,kBAAkB,EAAE;AAC5B,oBAAA,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACrC,iBAAA;AACL,aAAC,CAAC,CAAC;AAEH,YAAA,OAAO,YAAY,CAAC;AACvB,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;KACJ;AAED,IAAA,yBAAyB,CAAC,OAAiC,EAAA;AACvD,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;KAC/C;AAED,IAAA,sBAAsB,CAAC,OAAuC,EAAA;QAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAE1D,QAAA,IAAI,YAAY,EAAE;AACd,YAAA,MAAM,kBAAkB,GAAG,YAAY,CAAC,QAAQ,CAAC;YACjD,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,EAAE,OAAO,CAAC,IAAI,IAAI,aAAa,CAAC,CAAC;YACjJ,MAAM,WAAW,GAAG,EAAC,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,EAAC,CAAC;AACtD,YAAA,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;AAClC,YAAA,kBAAkB,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,kBAAkB,CAAC,cAAc,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;YACnH,kBAAkB,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAK;AACtD,gBAAA,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;AAC/B,gBAAA,YAAY,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;gBAChC,YAAY,CAAC,OAAO,EAAE,CAAC;AAC3B,aAAC,CAAC,CAAC;YACH,OAAO,kBAAkB,CAAC,SAAS,CAAC;AAEvC,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;KACJ;;uHAtDQ,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,cAFvB,MAAM,EAAA,CAAA,CAAA;2FAET,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MC8BY,qBAAqB,CAAA;;kHAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,iBArB1B,4BAA4B;AAC5B,QAAA,wBAAwB,aAGxB,YAAY;QACZ,gBAAgB;;QAEhB,eAAe;;QAEf,eAAe;AACf,QAAA,eAAe,aAGf,4BAA4B;QAC5B,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAOnB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,EALnB,SAAA,EAAA;QACP,0BAA0B;QAC1B,sBAAsB;AACzB,KAAA,EAAA,OAAA,EAAA,CAfG,YAAY;QACZ,gBAAgB;;QAEhB,eAAe;;QAEf,eAAe;QACf,eAAe,CAAA,EAAA,CAAA,CAAA;2FAWV,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAvBjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,YAAY,EAAE;wBACV,4BAA4B;wBAC5B,wBAAwB;AAC3B,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,gBAAgB;;wBAEhB,eAAe;;wBAEf,eAAe;wBACf,eAAe;AAClB,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACL,4BAA4B;wBAC5B,wBAAwB;AAC3B,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACP,0BAA0B;wBAC1B,sBAAsB;AACzB,qBAAA;AACJ,iBAAA,CAAA;;;ACrCD;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"pepperi-addons-ngx-lib-remote-loader.mjs","sources":["../../../projects/ngx-lib/remote-loader/remote-loader.service.ts","../../../projects/ngx-lib/remote-loader/remote-loader.component.ts","../../../projects/ngx-lib/remote-loader/remote-loader-element.component.ts","../../../projects/ngx-lib/remote-loader/addon-block-loader.component.ts","../../../projects/ngx-lib/remote-loader/addon-block-loader.component.html","../../../projects/ngx-lib/remote-loader/addon-block-loader.service.ts","../../../projects/ngx-lib/remote-loader/remote-loader.module.ts","../../../projects/ngx-lib/remote-loader/public-api.ts","../../../projects/ngx-lib/remote-loader/pepperi-addons-ngx-lib-remote-loader.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { PepAddonService, PepHttpService, PepSessionService} from '@pepperi-addons/ngx-lib';\nimport { PepBlockDataType, PepRemoteLoaderOptions } from './remote-loader.model';\nimport { IBlockLoaderData } from './remote-loader.model';\n\n@Injectable({ \n providedIn: 'root' \n})\nexport class PepRemoteLoaderService {\n \n constructor(\n private httpService: PepHttpService,\n private sessionService: PepSessionService,\n private addonService: PepAddonService\n ) {\n //\n }\n\n getRemoteLoaderOptions(blockLoaderData: IBlockLoaderData, blockRemoteEntry = '', type: 'script' | 'module' | 'manifest' = 'module'): PepRemoteLoaderOptions {\n const exposedModule = blockLoaderData.relation.ElementsModule?.length > 0 ? blockLoaderData.relation.ElementsModule : blockLoaderData.relation.ModuleName;\n const res = {\n type: type,\n remoteEntry: blockRemoteEntry.length > 0 ? blockRemoteEntry : `${blockLoaderData.addonPublicBaseURL}${blockLoaderData.relation.AddonRelativeURL}.js`,\n remoteName: blockLoaderData.relation.AddonRelativeURL, // For script type, this is the name of the script.\n exposedModule: `./${exposedModule}`,\n addonId: blockLoaderData.relation.AddonUUID, // For local use (adding the relative path to the assets).\n }\n \n // If it's web components\n if (blockLoaderData.relation.ElementsModule?.length > 0) {\n res['elementName'] = blockLoaderData.relation.ElementName\n } else { // For load the component from the module.\n res['componentName'] = blockLoaderData.relation.ComponentName; \n }\n\n return res;\n }\n\n private getBlockLoaderDataUrl(name: string, blockType: PepBlockDataType = 'AddonBlock', addonUUID = '', pagesDevServer = ''): string {\n const fileName = 'addon_blocks';\n const pagesAddonUuid = this.addonService.getPagesAddonUUID();\n let pagesBaseUrl;\n\n // For devServer run server on localhost.\n if(pagesDevServer.length > 0) {\n pagesBaseUrl = `${pagesDevServer}/${fileName}`;\n } else {\n const baseUrl = this.sessionService.getPapiBaseUrl();\n pagesBaseUrl = `${baseUrl}/addons/api/${pagesAddonUuid}/${fileName}`;\n }\n\n const url = `${pagesBaseUrl}/get_addon_block_loader_data?name=${name}&blockType=${blockType}&addonUUID=${addonUUID}`;\n return url;\n }\n\n async getBlockRemoteLoaderOptions(name: string, blockType: PepBlockDataType = 'AddonBlock', addonUUID = '', blockRemoteEntry = '', pagesDevServer = ''): Promise<PepRemoteLoaderOptions> {\n return new Promise((resolve, reject) => {\n const blockLoaderDataUrl = this.getBlockLoaderDataUrl(name, blockType, addonUUID, pagesDevServer);\n this.httpService.getHttpCall(blockLoaderDataUrl).toPromise().then((data: IBlockLoaderData) => {\n resolve(this.getRemoteLoaderOptions(data, blockRemoteEntry));\n }).catch(err => {\n reject(`Addon block with name - ${name} is not found for type - ${blockType}`);\n }); \n });\n }\n}\n","import { Component, Input, OnChanges, ViewChild, ViewContainerRef, Injector, EventEmitter, Output, ComponentRef, SimpleChanges, createNgModuleRef } from '@angular/core';\nimport { loadRemoteModule } from '@angular-architects/module-federation';\nimport { PepAddonService } from '@pepperi-addons/ngx-lib';\nimport { PepRemoteLoaderOptions } from './remote-loader.model';\n\n@Component({\n selector: 'pep-remote-loader',\n template: `\n <!-- <mat-spinner *ngIf=\"showSpinner; else placeHolder\"></mat-spinner> -->\n <ng-template #placeHolder></ng-template>\n `\n})\nexport class PepRemoteLoaderComponent implements OnChanges {\n @ViewChild('placeHolder', { read: ViewContainerRef, static: true }) viewContainer: ViewContainerRef;\n \n private _options: PepRemoteLoaderOptions = null;\n @Input()\n set options(value: PepRemoteLoaderOptions) {\n this._options = value;\n if (value) {\n this.loadModule();\n }\n }\n get options(): PepRemoteLoaderOptions {\n return this._options;\n }\n \n // This is the data passed by the API Design documentation.\n private _hostObject: any = null;\n @Input()\n set hostObject(value: any) { \n this._hostObject = value;\n this.setHostComponentIntoComponentRef();\n }\n get hostObject(): any {\n return this._hostObject;\n }\n\n @Output() hostEvents: EventEmitter<any> = new EventEmitter();\n @Output() load: EventEmitter<any> = new EventEmitter();\n // showSpinner = true;\n \n private compRef: ComponentRef<any>;\n\n constructor(\n private injector: Injector,\n private pepAddonService: PepAddonService\n ) { }\n\n private setHostComponentIntoComponentRef() {\n if (this.hostObject && this.compRef?.instance) {\n this.compRef.instance.hostObject = this.hostObject;\n\n // TODO: Check if this is needed?? if not remove this.\n // if (this.compRef?.instance?.ngOnChanges) {\n // this.compRef.instance.ngOnChanges(this.hostObject);\n // }\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // if (changes?.options?.currentValue) {\n // this.loadModule(changes?.options?.currentValue);\n // }\n }\n\n private async loadModule() {\n try {\n const t0 = performance.now();\n \n this.viewContainer?.clear();\n \n if (this.options.exposedModule?.length > 0) { // Load module\n if (this.options?.addonId && (this.options.type === 'module' || this.options.type === 'script')) {\n const lastSlashIndex = this.options.remoteEntry?.lastIndexOf('/') || -1;\n \n if (lastSlashIndex > 0) {\n const publicPath = this.options.remoteEntry.substring(0, lastSlashIndex + 1);\n this.pepAddonService.setAddonStaticFolder(publicPath, this.options.addonId);\n }\n }\n\n const module = await loadRemoteModule(this.options).then(m => m);\n const moduleRef = createNgModuleRef(module[this.options.exposedModule.replace('./','')], this.injector);\n this.compRef = this.viewContainer.createComponent(module[this.options.componentName], { injector: this.injector, ngModuleRef: moduleRef });\n\n const t1 = performance.now();\n console.log('remote module load performance: ' + (t1-t0)/1000);\n } \n // Check if this is in use??? (comment out in Angular 14 version)\n // else { // Load Component\n // const componentType = await loadRemoteModule(this.options).then(m => m[this.options.componentName]);\n // this.compRef = this.viewContainer.createComponent(componentType, { injector: this.injector });\n // }\n\n this.load.emit();\n\n if (this.compRef) {\n this.setHostComponentIntoComponentRef();\n \n this.compRef?.instance['hostEvents']?.subscribe(e => {\n // switch(e.action){\n // case 'addon-loaded':\n // this.showSpinner = false;\n // }\n this.hostEvents.emit(e)\n });\n }\n } catch(error) {\n console.error(error);\n }\n }\n\n ngOnDestroy(): void {\n this.compRef?.destroy();\n this.viewContainer?.clear();\n }\n}\n\n","import { AfterContentInit, Component, ElementRef, EventEmitter, Input, OnChanges, Optional, Output, Renderer2, ViewChild, ViewContainerRef } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { loadRemoteModule } from '@angular-architects/module-federation';\nimport { PepAddonService } from '@pepperi-addons/ngx-lib';\nimport { PepRemoteLoaderOptions } from './remote-loader.model';\n\n@Component({\n selector: 'pep-remote-loader-element',\n template: `\n <!--<div #vc style=\"height: inherit;\"></div>-->\n `,\n styles: [`\n :host { width:100%; height: inherit }\n :host::ng-deep > * {\n height: inherit;\n }\n `],\n})\nexport class PepRemoteLoaderElementComponent implements AfterContentInit, OnChanges {\n @Input() options: PepRemoteLoaderOptions;\n @Input() props: { [prop: string]: unknown };\n @Input() events: { [event: string]: (event: Event) => void };\n\n @Output() load: EventEmitter<any> = new EventEmitter();\n\n element: HTMLElement = null;\n\n constructor(\n private renderer: Renderer2,\n private el:ElementRef,\n private pepAddonService: PepAddonService,\n @Optional() private route: ActivatedRoute\n ) { \n\n }\n\n ngOnChanges(): void {\n if (!this.element) return;\n\n this.populateProps();\n }\n\n private populateProps() {\n for (const prop in this.props) {\n this.element[prop] = this.props[prop];\n }\n }\n\n private setupEvents() {\n for (const event in this.events) {\n this.element.addEventListener(event, this.events[event]);\n }\n }\n\n async ngAfterContentInit() {\n try {\n const t0 = performance.now();\n \n // When this implemented in ngAfterContentInit function this code is unnecessary.\n // if (this.element) {\n // this.renderer.removeChild(this.el.nativeElement, this.element);\n // }\n\n const options = this.options ?? this.route.snapshot.data as PepRemoteLoaderOptions;\n\n if (this.options?.addonId && (this.options.type === 'module' || this.options.type === 'script')) {\n const lastSlashIndex = this.options.remoteEntry?.lastIndexOf('/') || -1;\n \n if (lastSlashIndex > 0) {\n const publicPath = this.options.remoteEntry.substring(0, lastSlashIndex + 1);\n this.pepAddonService.setAddonStaticFolder(publicPath, this.options.addonId);\n }\n }\n\n await loadRemoteModule(options);\n\n this.element = this.renderer.createElement(options.elementName);\n this.populateProps();\n this.setupEvents();\n\n this.renderer.appendChild(this.el.nativeElement, this.element);\n\n const t1 = performance.now();\n console.log('remote module wc load performance: ' + (t1-t0)/1000);\n\n this.load.emit();\n }\n catch(error) {\n console.error(error);\n }\n }\n}","import { WebComponentWrapperOptions } from '@angular-architects/module-federation-tools';\nimport { Component, OnInit, Input, Output, EventEmitter, TemplateRef, ViewChild, OnDestroy } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { PepBlockDataType, PepRemoteLoaderOptions } from './remote-loader.model';\nimport { PepRemoteLoaderService } from './remote-loader.service';\n\n@Component({\n selector: 'pep-addon-block-loader',\n templateUrl: './addon-block-loader.component.html',\n styleUrls: ['./addon-block-loader.component.scss']\n})\nexport class PepAddonBlockLoaderComponent implements OnInit, OnDestroy {\n @ViewChild('dialogTemplate', { static: true, read: TemplateRef }) dialogTemplate!: TemplateRef<any>;\n \n @Input() remoteEntry: string = '';\n\n private _blockType: PepBlockDataType = 'AddonBlock';\n @Input() \n set blockType(value: PepBlockDataType) {\n this._blockType = value;\n }\n get blockType(): PepBlockDataType {\n return this._blockType;\n }\n\n private _name = '';\n @Input() \n set name(value: string) {\n this._name = value;\n }\n get name(): string {\n return this._name;\n }\n\n @Input() hostObject = null;\n \n private _dialogRef: MatDialogRef<any> = null;\n @Input()\n set dialogRef(value: MatDialogRef<any>) {\n this._dialogRef = value;\n this.inDialog = this._dialogRef != null;\n }\n get dialogRef(): MatDialogRef<any> {\n return this._dialogRef;\n }\n \n @Output() hostEvents: EventEmitter<any> = new EventEmitter<any>();\n @Output() blockLoad: EventEmitter<void> = new EventEmitter<void>();\n \n protected inDialog = false;\n protected remotePathOptions: PepRemoteLoaderOptions = null;\n protected loadElement: boolean = false;\n\n protected onHostEventsCallback: (event: CustomEvent) => void;\n\n constructor(private remoteLoaderService: PepRemoteLoaderService) {\n this.onHostEventsCallback = (event: CustomEvent) => {\n this.onHostEvents(event.detail);\n }\n }\n \n ngOnInit() {\n this.remoteLoaderService.getBlockRemoteLoaderOptions(this.name, this.blockType, this.remoteEntry).then((options: PepRemoteLoaderOptions) => {\n this.loadElement = options.elementName?.length > 0;\n this.remotePathOptions = options;\n });\n }\n\n ngOnDestroy(): void {\n if (this.dialogRef) {\n this.dialogRef = null;\n }\n\n this.remotePathOptions = null;\n }\n\n onBlockLoad() {\n this.blockLoad.emit();\n }\n\n onHostEvents(event: any) {\n this.hostEvents.emit(event);\n }\n\n closeDialog(event) {\n this.dialogRef?.close(event);\n }\n}","<ng-container *ngIf=\"!inDialog\">\n <ng-container *ngTemplateOutlet=\"remoteLoaderTemplate\"></ng-container>\n</ng-container>\n\n<ng-template #dialogTemplate let-data>\n <pep-dialog [showClose]=\"data?.showClose\" [showHeader]=\"data?.showHeader\" [showFooter]=\"data?.showFooter\" [title]=\"data?.title\" (close)=\"closeDialog($event)\">\n <ng-container pep-dialog-content>\n <ng-container *ngTemplateOutlet=\"remoteLoaderTemplate\"></ng-container>\n </ng-container>\n </pep-dialog>\n</ng-template>\n\n<ng-template #remoteLoaderTemplate>\n <pep-remote-loader *ngIf=\"remotePathOptions && !loadElement\"\n [options]=\"remotePathOptions\"\n [hostObject]=\"hostObject\"\n (hostEvents)=\"onHostEvents($event);\"\n (load)=\"onBlockLoad()\">\n </pep-remote-loader>\n\n <pep-remote-loader-element *ngIf=\"remotePathOptions && loadElement\" \n [options]=\"remotePathOptions\"\n [props]=\"{ hostObject: hostObject }\"\n [events]=\"{ hostEvents: onHostEventsCallback }\"\n (load)=\"onBlockLoad()\">\n </pep-remote-loader-element>\n\n</ng-template>","import { ComponentFactoryResolver, ComponentRef, Injectable, Injector } from '@angular/core';\nimport { IAddonBlockLoaderDialogOptions, IAddonBlockLoaderOptions, IBlockLoaderData } from './remote-loader.model';\nimport { PepAddonBlockLoaderComponent } from './addon-block-loader.component';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { PepDialogService } from '@pepperi-addons/ngx-lib/dialog';\n\n@Injectable({ \n providedIn: 'root' \n})\nexport class PepAddonBlockLoaderService {\n \n constructor(\n private dialogService: PepDialogService,\n ) {\n //\n }\n\n private loadAddonBlockInternal(options: IAddonBlockLoaderDialogOptions): ComponentRef<PepAddonBlockLoaderComponent> | null {\n if (options.container !== null) {\n // const factory = this.resolver.resolveComponentFactory(PepAddonBlockLoaderComponent);\n const componentRef = options.container.createComponent(PepAddonBlockLoaderComponent);\n const addonBlockInstance = componentRef.instance;\n\n addonBlockInstance.blockType = options.blockType || 'AddonBlock';\n addonBlockInstance.name = options.name;\n addonBlockInstance.hostObject = options.hostObject;\n\n addonBlockInstance.hostEvents.subscribe((event) => {\n if (options.hostEventsCallback) {\n options.hostEventsCallback(event);\n }\n });\n\n return componentRef;\n } else {\n return null;\n }\n }\n\n loadAddonBlockInContainer(options: IAddonBlockLoaderOptions): ComponentRef<PepAddonBlockLoaderComponent> | null {\n return this.loadAddonBlockInternal(options);\n }\n\n loadAddonBlockInDialog(options: IAddonBlockLoaderDialogOptions): MatDialogRef<any> | null {\n const componentRef = this.loadAddonBlockInternal(options);\n \n if (componentRef) {\n const addonBlockInstance = componentRef.instance;\n const pepConfig = this.dialogService.getDialogConfig({ disableClose: false, panelClass: 'remote-loader-dialog' }, options.size || 'full-screen');\n const mergeConfig = {...options.config, ...pepConfig}; \n const data = options.data || null;\n addonBlockInstance.dialogRef = this.dialogService.openDialog(addonBlockInstance.dialogTemplate, data, mergeConfig);\n addonBlockInstance.dialogRef.afterClosed().subscribe(() => {\n componentRef.hostView.detach();\n componentRef.hostView.destroy();\n componentRef.destroy();\n });\n return addonBlockInstance.dialogRef;\n\n } else {\n return null;\n }\n }\n}\n","import { HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatDialogModule } from '@angular/material/dialog';\n\nimport { PepNgxLibModule } from '@pepperi-addons/ngx-lib';\nimport { PepDialogModule } from '@pepperi-addons/ngx-lib/dialog';\nimport { ModuleFederationToolsModule } from '@angular-architects/module-federation-tools';\n\nimport { PepAddonBlockLoaderComponent } from './addon-block-loader.component';\nimport { PepAddonBlockLoaderService } from './addon-block-loader.service';\n\nimport { PepRemoteLoaderComponent } from './remote-loader.component';\nimport { PepRemoteLoaderService } from './remote-loader.service';\nimport { PepRemoteLoaderElementComponent } from './remote-loader-element.component';\n\n@NgModule({\n declarations: [\n PepAddonBlockLoaderComponent,\n PepRemoteLoaderComponent,\n PepRemoteLoaderElementComponent,\n ],\n imports: [\n CommonModule,\n HttpClientModule,\n ModuleFederationToolsModule,\n // Material modules,\n MatDialogModule,\n // ngx-lib modules\n PepNgxLibModule,\n PepDialogModule,\n ],\n exports: [\n PepAddonBlockLoaderComponent,\n PepRemoteLoaderComponent,\n PepRemoteLoaderElementComponent\n ],\n providers: [\n PepAddonBlockLoaderService,\n PepRemoteLoaderService\n ]\n})\nexport class PepRemoteLoaderModule {\n\n\n}\n","/*\n * Public API Surface of remote-loader\n */\nexport * from './addon-block-loader.component';\nexport * from './addon-block-loader.service';\nexport * from './remote-loader.component';\nexport * from './remote-loader-element.component';\nexport * from './remote-loader.module';\nexport * from './remote-loader.model';\nexport * from './remote-loader.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.PepRemoteLoaderService","i2","i3","i4.PepRemoteLoaderComponent","i5.PepRemoteLoaderElementComponent","i1"],"mappings":"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"}