ngx-bimplus-components 0.0.70 → 0.0.72-draggable-1

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 (226) hide show
  1. package/assets/images/27_Center_Menu.svg +3 -3
  2. package/assets/images/27_Center_Menu_active.svg +3 -3
  3. package/assets/images/27_Center_Menu_opened.svg +14 -14
  4. package/assets/images/6-dots-gray.svg +10 -10
  5. package/assets/images/6_dots_gray.svg +8 -8
  6. package/assets/images/Add_Issue_active.svg +12 -12
  7. package/assets/images/Add_Issue_disabled.svg +12 -12
  8. package/assets/images/Allplan-Cloud-Viewer-Logo.svg +17 -17
  9. package/assets/images/Allplan-Connexis-Logo.svg +8 -8
  10. package/assets/images/Allplan_Bimplus_Logo.svg +14 -14
  11. package/assets/images/Fullscreen_active.svg +6 -6
  12. package/assets/images/Fullscreen_disabled.svg +8 -8
  13. package/assets/images/Hide_active.svg +12 -12
  14. package/assets/images/Hide_disabled.svg +12 -12
  15. package/assets/images/IsolateMenuClipped.svg +19 -19
  16. package/assets/images/IsolateMenuClipped_orange.svg +19 -19
  17. package/assets/images/IsolateMenuHidden.svg +8 -8
  18. package/assets/images/IsolateMenuHidden_orange.svg +8 -8
  19. package/assets/images/IsolateMenuNormal.svg +29 -29
  20. package/assets/images/IsolateMenuNormal_orange.svg +29 -29
  21. package/assets/images/IsolationMenuParams.svg +5 -5
  22. package/assets/images/IsolationMenuParamsOrange.svg +5 -5
  23. package/assets/images/Isolation_active.svg +12 -12
  24. package/assets/images/Isolation_disabled.svg +12 -12
  25. package/assets/images/Markup_active.svg +11 -11
  26. package/assets/images/Markup_disabled.svg +11 -11
  27. package/assets/images/Navigation_Map_active.svg +3 -3
  28. package/assets/images/Navigation_Map_disabled.svg +5 -5
  29. package/assets/images/Project_Navigation_active.svg +10 -10
  30. package/assets/images/Project_Navigation_disabled.svg +10 -10
  31. package/assets/images/Quantity_active.svg +3 -3
  32. package/assets/images/Quantity_disabled.svg +5 -5
  33. package/assets/images/Reset_active.svg +10 -10
  34. package/assets/images/Reset_disabled.svg +10 -10
  35. package/assets/images/Section_active.svg +3 -3
  36. package/assets/images/Section_disabled.svg +5 -5
  37. package/assets/images/Spinner_18_disabled.svg +15 -15
  38. package/assets/images/View_active.svg +4 -4
  39. package/assets/images/View_disabled.svg +6 -6
  40. package/assets/images/bimplus_Components_Account_Settings.svg +14 -14
  41. package/assets/images/bimplus_Components_Autoconverter.svg +14 -14
  42. package/assets/images/bimplus_Components_Autoconverter_Active.svg +14 -14
  43. package/assets/images/bimplus_Components_Autoconverter_Disabled.svg +14 -14
  44. package/assets/images/bimplus_Components_BIM_Explorer.svg +18 -18
  45. package/assets/images/bimplus_Components_BIM_Explorer_Active.svg +18 -18
  46. package/assets/images/bimplus_Components_BIM_Explorer_Disabled.svg +18 -18
  47. package/assets/images/bimplus_Components_Clear_Cache.svg +16 -16
  48. package/assets/images/bimplus_Components_Close.svg +3 -3
  49. package/assets/images/bimplus_Components_Connexis.svg +4 -4
  50. package/assets/images/bimplus_Components_Connexis_Active.svg +4 -4
  51. package/assets/images/bimplus_Components_Connexis_Disabled.svg +4 -4
  52. package/assets/images/bimplus_Components_Desktop_Mode.svg +15 -15
  53. package/assets/images/bimplus_Components_Documents.svg +14 -14
  54. package/assets/images/bimplus_Components_Documents_Active.svg +14 -14
  55. package/assets/images/bimplus_Components_Documents_Disabled.svg +14 -14
  56. package/assets/images/bimplus_Components_Edit_Profile.svg +8 -8
  57. package/assets/images/bimplus_Components_Forum.svg +10 -10
  58. package/assets/images/bimplus_Components_IFC_viewer.svg +9 -9
  59. package/assets/images/bimplus_Components_IFC_viewer_Active.svg +16 -16
  60. package/assets/images/bimplus_Components_IFC_viewer_Disabled.svg +9 -9
  61. package/assets/images/bimplus_Components_ISO.svg +3 -3
  62. package/assets/images/bimplus_Components_ISO_Active.svg +3 -3
  63. package/assets/images/bimplus_Components_ISO_Disabled.svg +3 -3
  64. package/assets/images/bimplus_Components_Info.svg +16 -16
  65. package/assets/images/bimplus_Components_Info_Active.svg +16 -16
  66. package/assets/images/bimplus_Components_Languages.svg +5 -5
  67. package/assets/images/bimplus_Components_Logout.svg +12 -12
  68. package/assets/images/bimplus_Components_Models.svg +3 -3
  69. package/assets/images/bimplus_Components_Models_Active.svg +3 -3
  70. package/assets/images/bimplus_Components_Models_Disabled.svg +3 -3
  71. package/assets/images/bimplus_Components_Notify_Alert.svg +6 -6
  72. package/assets/images/bimplus_Components_Notify_Close.svg +3 -3
  73. package/assets/images/bimplus_Components_Notify_Empty.svg +5 -5
  74. package/assets/images/bimplus_Components_Notify_Main.svg +5 -5
  75. package/assets/images/bimplus_Components_Notify_Tick_Up.svg +3 -3
  76. package/assets/images/bimplus_Components_Projects_Folder.svg +10 -10
  77. package/assets/images/bimplus_Components_Projects_Folder_Active.svg +10 -10
  78. package/assets/images/bimplus_Components_Projects_Folder_Disabled.svg +10 -10
  79. package/assets/images/bimplus_Components_Property_Manager.svg +5 -5
  80. package/assets/images/bimplus_Components_Property_Manager_Active.svg +5 -5
  81. package/assets/images/bimplus_Components_Property_Manager_Disabled.svg +5 -5
  82. package/assets/images/bimplus_Components_Setting_Active.svg +3 -3
  83. package/assets/images/bimplus_Components_Settings.svg +3 -3
  84. package/assets/images/bimplus_Components_Settings_Disabled.svg +3 -3
  85. package/assets/images/bimplus_Components_Shop.svg +13 -13
  86. package/assets/images/bimplus_Components_Shop_Disabled.svg +13 -13
  87. package/assets/images/bimplus_Components_Support.svg +21 -21
  88. package/assets/images/bimplus_Components_Team_Members.svg +4 -4
  89. package/assets/images/bimplus_Components_Team_Members_Active.svg +4 -4
  90. package/assets/images/bimplus_Components_Touch_Mode.svg +16 -16
  91. package/assets/images/bimplus_Components_User_Guide.svg +17 -17
  92. package/assets/images/bimplus_Components_Users.svg +4 -4
  93. package/assets/images/bimplus_Components_Users_Active.svg +4 -4
  94. package/assets/images/bimplus_Components_Users_Disabled.svg +4 -4
  95. package/assets/images/bimplus_Components_Zoom.svg +5 -5
  96. package/assets/images/bimplus_Components_navbar_menu.svg +6 -6
  97. package/assets/images/bimplus_Components_navbar_menu_active.svg +6 -6
  98. package/assets/images/bimplus_Components_navbar_menu_disabled.svg +6 -6
  99. package/assets/images/bimplus_Components_submenu_arrow.svg +4 -4
  100. package/assets/images/bimplus_Remove_Conection.svg +15 -15
  101. package/assets/images/bimplus_WebIcons_Cross.svg +1 -1
  102. package/assets/images/checkbox_off.svg +3 -3
  103. package/assets/images/checkbox_off_disabled.svg +3 -3
  104. package/assets/images/checkbox_off_hovered.svg +3 -3
  105. package/assets/images/checkbox_on.svg +4 -4
  106. package/assets/images/checkbox_on_disabled.svg +4 -4
  107. package/assets/images/checkbox_on_hovered.svg +4 -4
  108. package/assets/images/cm_view_front_black.svg +4 -4
  109. package/assets/images/cm_view_front_orange.svg +4 -4
  110. package/assets/images/cm_view_perspective_black.svg +3 -3
  111. package/assets/images/cm_view_perspective_orange.svg +3 -3
  112. package/assets/images/cm_view_side_black.svg +4 -4
  113. package/assets/images/cm_view_side_orange.svg +4 -4
  114. package/assets/images/cm_view_top_black.svg +4 -4
  115. package/assets/images/cm_view_top_orange.svg +4 -4
  116. package/assets/images/collapsed_18.svg +3 -3
  117. package/assets/images/collapsed_18_small.svg +3 -3
  118. package/assets/images/expanded_18.svg +3 -3
  119. package/assets/images/expanded_18_small.svg +3 -3
  120. package/assets/images/ic_drag.svg +8 -8
  121. package/assets/images/ic_eye_black.svg +5 -5
  122. package/assets/images/ic_eye_orange.svg +5 -5
  123. package/assets/images/ic_make_transparent.svg +4 -4
  124. package/assets/images/ic_make_transparent_active.svg +4 -4
  125. package/assets/images/ic_reset.svg +3 -3
  126. package/assets/images/ic_thin_arrow_left.svg +3 -3
  127. package/assets/images/ic_toggle_off_gray.svg +4 -4
  128. package/assets/images/ic_toggle_on_green.svg +4 -4
  129. package/assets/images/ic_toggle_on_light_green.svg +4 -4
  130. package/assets/images/icon-hide-param-orange.svg +5 -5
  131. package/assets/images/icon-hide-param-white.svg +5 -5
  132. package/assets/images/resize_handle_ne.svg +4 -4
  133. package/assets/images/resize_handle_se.svg +4 -4
  134. package/assets/languages/strings_cs.json +2310 -2310
  135. package/assets/languages/strings_de.json +2310 -2310
  136. package/assets/languages/strings_en.json +2352 -2352
  137. package/assets/languages/strings_es.json +2310 -2310
  138. package/assets/languages/strings_fr.json +2310 -2310
  139. package/assets/languages/strings_it.json +2310 -2310
  140. package/assets/languages/strings_nl.json +796 -796
  141. package/assets/languages/strings_ro.json +2310 -2310
  142. package/assets/languages/strings_ru.json +2310 -2310
  143. package/assets/languages/strings_tr.json +2310 -2310
  144. package/assets/languages/strings_us.json +2263 -2263
  145. package/esm2022/lib/components/bimplus-buttons-row/bimplus-buttons-row.component.mjs +3 -3
  146. package/esm2022/lib/components/bimplus-buttons-row/bimplus-buttons-row.interface.mjs +1 -1
  147. package/esm2022/lib/components/bimplus-connection-designer/bimplus-connection-designer.component.mjs +3 -3
  148. package/esm2022/lib/components/bimplus-connection-designer/bimplus-connection-designer.interface.mjs +1 -1
  149. package/esm2022/lib/components/bimplus-connection-designer/bimplus-connection-designer.service.mjs +1 -1
  150. package/esm2022/lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.component.mjs +3 -3
  151. package/esm2022/lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.interface.mjs +1 -1
  152. package/esm2022/lib/components/bimplus-contact/bimplus-contact.component.mjs +3 -3
  153. package/esm2022/lib/components/bimplus-context-menu/bimplus-context-menu.component.mjs +3 -3
  154. package/esm2022/lib/components/bimplus-context-menu/bimplus-context-menu.interface.mjs +1 -1
  155. package/esm2022/lib/components/bimplus-flat-tree/bimplus-flat-tree.component.mjs +3 -3
  156. package/esm2022/lib/components/bimplus-flat-tree/bimplus-flat-tree.interface.mjs +1 -1
  157. package/esm2022/lib/components/bimplus-floating-bar/bimplus-floating-bar.component.mjs +75 -10
  158. package/esm2022/lib/components/bimplus-floating-bar/bimplus-floating-bar.interface.mjs +1 -1
  159. package/esm2022/lib/components/bimplus-floating-bar-body/bimplus-floating-bar-body.component.mjs +3 -3
  160. package/esm2022/lib/components/bimplus-floating-bar-dragger/bimplus-floating-bar-dragger.component.mjs +15 -7
  161. package/esm2022/lib/components/bimplus-floating-bar-header-content/bimplus-floating-bar-header-content.component.mjs +20 -8
  162. package/esm2022/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.mjs +30 -12
  163. package/esm2022/lib/components/bimplus-floating-bar-hide-objects/bimplus-floating-bar-hide-objects.component.mjs +41 -32
  164. package/esm2022/lib/components/bimplus-floating-bar-isolation-objects/bimplus-floating-bar-isolation-objects.component.mjs +19 -9
  165. package/esm2022/lib/components/bimplus-floating-bar-project-navigator/bimplus-floating-bar-project-navigator.component.mjs +19 -9
  166. package/esm2022/lib/components/bimplus-language-menu/bimplus-language-menu.component.mjs +3 -3
  167. package/esm2022/lib/components/bimplus-main-menu/bimplus-main-menu.component.mjs +3 -3
  168. package/esm2022/lib/components/bimplus-navbar/bimplus-navbar.component.mjs +3 -3
  169. package/esm2022/lib/components/bimplus-navbar/logo-state.enum.mjs +1 -1
  170. package/esm2022/lib/components/bimplus-notify/bimplus-notify.component.mjs +3 -3
  171. package/esm2022/lib/components/bimplus-object-navigator/bimplus-object-navigator.component.mjs +3 -3
  172. package/esm2022/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.mjs +3 -3
  173. package/esm2022/lib/components/bimplus-object-navigator/filter-criterium/filter-criterium.component.mjs +2 -2
  174. package/esm2022/lib/components/bimplus-object-navigator/object-filter-result/object-filter-result.component.mjs +3 -3
  175. package/esm2022/lib/components/bimplus-panel-toolbar/bimplus-panel-toolbar.component.mjs +3 -3
  176. package/esm2022/lib/components/bimplus-project-menu/bimplus-project-menu.component.mjs +4 -4
  177. package/esm2022/lib/components/bimplus-scrollable-container/bimplus-scrollable-container.component.mjs +3 -3
  178. package/esm2022/lib/components/bimplus-sidenav/bimplus-sidenav.component.mjs +3 -3
  179. package/esm2022/lib/components/bimplus-sidenav-drawer-content/bimplus-sidenav-drawer-content.component.mjs +3 -3
  180. package/esm2022/lib/components/bimplus-storage-info/bimplus-storage-info.component.mjs +3 -3
  181. package/esm2022/lib/components/bimplus-text-message/bimplus-text-message.component.mjs +3 -3
  182. package/esm2022/lib/components/bimplus-tool-hub/bimplus-tool-hub.component.mjs +62 -22
  183. package/esm2022/lib/components/bimplus-tool-hub/svgGenerator.mjs +1 -1
  184. package/esm2022/lib/components/bimplus-tool-hub/tool-hub-item/tool-hub-item.component.mjs +3 -3
  185. package/esm2022/lib/components/bimplus-tool-hub/tool-hub-sub-item/tool-hub-sub-item.component.mjs +3 -3
  186. package/esm2022/lib/components/bimplus-tooltip-message/bimplus-tooltip-message.component.mjs +7 -3
  187. package/esm2022/lib/components/bimplus-tooltip-message/bimplus-tooltip-message.interface.mjs +1 -1
  188. package/esm2022/lib/components/bimplus-touch-menu/bimplus-touch-menu.component.mjs +3 -3
  189. package/esm2022/lib/components/bimplus-user-menu/bimplus-user-menu.component.mjs +3 -3
  190. package/esm2022/lib/components/bimplus-zoom/bimplus-zoom.component.mjs +3 -3
  191. package/esm2022/lib/components/expansion-panel/expansion-panel.component.mjs +3 -3
  192. package/esm2022/lib/components/loading-spinner/loading-spinner.component.mjs +3 -3
  193. package/esm2022/lib/components/project-models/project-models.component.mjs +3 -3
  194. package/esm2022/lib/components/project-models/project-models.interface.mjs +1 -1
  195. package/esm2022/lib/directives/click-outside/click-outside.directive.mjs +1 -1
  196. package/esm2022/lib/directives/draggable.directive.mjs +8 -2
  197. package/esm2022/lib/interfaces/bimplus-opacity-properties.interface.mjs +1 -1
  198. package/esm2022/lib/interfaces/bimplus-visibility-properties.interface.mjs +1 -1
  199. package/esm2022/lib/services/layout-manager.service.mjs +221 -48
  200. package/esm2022/lib/services/local-storage.service.mjs +70 -0
  201. package/esm2022/lib/services/resize-observer.service.mjs +28 -0
  202. package/esm2022/lib/types/types.mjs +1 -1
  203. package/esm2022/lib/utils/filterString.mjs +1 -1
  204. package/esm2022/lib/utils/filterStructureFetcher.mjs +1 -1
  205. package/esm2022/lib/utils/utils.mjs +1 -1
  206. package/esm2022/public-api.mjs +2 -1
  207. package/fesm2022/ngx-bimplus-components.mjs +728 -288
  208. package/fesm2022/ngx-bimplus-components.mjs.map +1 -1
  209. package/lib/components/bimplus-connection-designer/bimplus-connection-designer.component.d.ts +2 -2
  210. package/lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.component.d.ts +1 -1
  211. package/lib/components/bimplus-floating-bar/bimplus-floating-bar.component.d.ts +20 -4
  212. package/lib/components/bimplus-floating-bar-dragger/bimplus-floating-bar-dragger.component.d.ts +6 -1
  213. package/lib/components/bimplus-floating-bar-header-content/bimplus-floating-bar-header-content.component.d.ts +6 -2
  214. package/lib/components/bimplus-floating-bar-header-logo/bimplus-floating-bar-header-logo.component.d.ts +10 -5
  215. package/lib/components/bimplus-floating-bar-hide-objects/bimplus-floating-bar-hide-objects.component.d.ts +14 -11
  216. package/lib/components/bimplus-floating-bar-isolation-objects/bimplus-floating-bar-isolation-objects.component.d.ts +5 -3
  217. package/lib/components/bimplus-floating-bar-project-navigator/bimplus-floating-bar-project-navigator.component.d.ts +5 -3
  218. package/lib/components/bimplus-tool-hub/bimplus-tool-hub.component.d.ts +18 -9
  219. package/lib/components/bimplus-tooltip-message/bimplus-tooltip-message.component.d.ts +1 -0
  220. package/lib/directives/draggable.directive.d.ts +2 -1
  221. package/lib/services/layout-manager.service.d.ts +55 -3
  222. package/lib/services/local-storage.service.d.ts +18 -0
  223. package/lib/services/resize-observer.service.d.ts +12 -0
  224. package/lib/utils/utils.d.ts +5 -0
  225. package/package.json +1 -1
  226. package/public-api.d.ts +1 -0
@@ -1,48 +1,178 @@
1
1
  import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
2
3
  import * as i0 from "@angular/core";
4
+ import * as i1 from "./resize-observer.service";
5
+ import * as i2 from "./local-storage.service";
3
6
  export class LayoutManagerService {
4
- constructor() { }
5
- checkPosition(elementRef, selector, left, top, deltaX, deltaY, forceCheck = false) {
6
- const parent = document.getElementById("mainViewportContainer");
7
- //const leftPanel = document.getElementsByClassName("left-sidenav-content");
8
- //const leftPanel = document.querySelector(".left-sidenav-content");
9
- //const leftPanel = document.querySelector(".sidenav");
10
- const leftPanel = document.querySelector('lib-bimplus-sidenav')?.shadowRoot?.querySelector('.sidenav');
11
- const topPanel = document.querySelector('lib-bimplus-navbar')?.shadowRoot?.querySelector('.bimplus-navbar');
12
- if (parent && elementRef.nativeElement && leftPanel && topPanel && selector) {
13
- const viewRect = parent.getBoundingClientRect();
14
- const leftPanelRect = leftPanel.getBoundingClientRect();
15
- const topPanelRect = topPanel.getBoundingClientRect();
16
- const elementRect = elementRef.nativeElement?.shadowRoot.querySelector(selector)?.getBoundingClientRect();
17
- console.log(`box: left:${elementRect.left},top:${elementRect.top},right:${elementRect.right},bottom:${elementRect.bottom}`);
18
- //const elementRect:DOMRect = elementRef.nativeElement.getBoundingClientRect();
19
- const parentRect = new DOMRect(viewRect.left + leftPanelRect.right + topPanelRect.left, viewRect.top, viewRect.width - leftPanelRect.width, viewRect.height);
20
- //const parentRect:DOMRect = new DOMRect( viewRect.left,viewRect.top,viewRect.width,viewRect.height);
21
- //console.log(viewRect,elementRect);
22
- let checkBoundaries = true;
23
- if (this._isInsideRect(elementRect, parentRect) === false && !forceCheck) {
24
- checkBoundaries = false;
7
+ constructor(resizeObserverService, localStorageService) {
8
+ this.resizeObserverService = resizeObserverService;
9
+ this.localStorageService = localStorageService;
10
+ this.registeredItems$ = new BehaviorSubject([]);
11
+ this.registeredItems = [];
12
+ this.CONFIG = 'layoutManagerConfig';
13
+ }
14
+ get RegisteredItems() {
15
+ return this.registeredItems;
16
+ }
17
+ /**--------------------------------------------------------------------------
18
+ * register object. object must have unique id or elementId
19
+ --------------------------------------------------------------------------*/
20
+ registerObject(obj, id, left = 100, top = 100, selector, rememberPosition) {
21
+ if (this.registeredItems.some(item => item.id === id)) {
22
+ return;
23
+ }
24
+ const newItem = {
25
+ element: obj,
26
+ id: id,
27
+ selector: selector,
28
+ rememberPosition: !!rememberPosition,
29
+ left: left,
30
+ top: top,
31
+ isCollapsed: false
32
+ };
33
+ this.registeredItems.push(newItem);
34
+ this.registeredItems$.next(this.registeredItems);
35
+ this._initObject(newItem);
36
+ }
37
+ _initObject(obj) {
38
+ this._adjustObjectByConfig(obj);
39
+ this._adjustObjectByWindowSize(obj);
40
+ }
41
+ /**--------------------------------------------------------------------------
42
+ * get object configuration
43
+ * return {left, top, width, heigth}
44
+ --------------------------------------------------------------------------*/
45
+ _getObjectConfig(obj) {
46
+ if (!obj) {
47
+ return null;
48
+ }
49
+ const configValue = this.localStorageService.getItem(this.CONFIG);
50
+ const config = configValue ? JSON.parse(configValue) : {};
51
+ const objId = obj.id;
52
+ let configObj = config[objId];
53
+ if (!configObj) {
54
+ configObj = { id: objId, left: obj.left, top: obj.top };
55
+ }
56
+ return configObj;
57
+ }
58
+ _adjustObjectByConfig(obj) {
59
+ const config = this._getObjectConfig(obj);
60
+ if (!config) {
61
+ return;
62
+ }
63
+ const element = obj.element?.nativeElement;
64
+ element.style.left = (config.left) + 'px';
65
+ element.style.top = (config.top) + 'px';
66
+ const { deltaX, deltaY } = this.checkPosition(obj.id, "", undefined, undefined, undefined, 0, 0, true);
67
+ const computedStyle = window.getComputedStyle(element);
68
+ const top = parseInt(computedStyle.top, 10);
69
+ const left = parseInt(computedStyle.left, 10);
70
+ element.style.top = (top + deltaY) + 'px';
71
+ element.style.left = (left + deltaX) + 'px';
72
+ }
73
+ _adjustObjectByWindowSize(obj) {
74
+ console.log('_adjustObjectByWindowSize', obj);
75
+ }
76
+ /**--------------------------------------------------------------------------
77
+ * returns object registered in the layout manager
78
+ --------------------------------------------------------------------------*/
79
+ getItem(id) {
80
+ let foundItem = null;
81
+ this.registeredItems.forEach(item => {
82
+ if (item.id === id) {
83
+ foundItem = item;
25
84
  }
26
- // copy of real element rectangle to perform calculation over before set to the real element
27
- const elementDOMRect = DOMRect.fromRect(elementRect);
28
- //set the element rectangle by deltas
29
- this._translateRectangle(elementDOMRect, deltaX, deltaY);
30
- if (checkBoundaries) {
31
- if (this._isInsideRect(elementDOMRect, parentRect) === false) {
32
- const newElementPos = this.getAlignedPosition(elementDOMRect, parentRect);
33
- deltaX = newElementPos.x - elementRect.x;
34
- deltaY = newElementPos.y - elementRect.y;
35
- this._translateRectangle(elementDOMRect, deltaX, deltaY);
36
- }
85
+ });
86
+ return foundItem;
87
+ }
88
+ /**--------------------------------------------------------------------------
89
+ * set object configuration
90
+ --------------------------------------------------------------------------*/
91
+ _setObjectConfig(obj, left, top) {
92
+ const objId = obj?.id;
93
+ if (!objId) {
94
+ return;
95
+ }
96
+ let config = this.localStorageService.getObject(this.CONFIG);
97
+ //let config = configValue && JSON.parse(configValue) as LayoutManagerConfig;
98
+ if (!config) {
99
+ config = {};
100
+ }
101
+ if (obj?.isCollapsed) { // do not overtake collapsed size
102
+ if (!config[objId]) {
103
+ config[objId] = obj;
104
+ }
105
+ config[objId].left = left;
106
+ config[objId].top = top;
107
+ this.localStorageService.setObject(this.CONFIG, config);
108
+ return;
109
+ }
110
+ const newItem = {
111
+ id: objId,
112
+ isCollapsed: false,
113
+ left: left,
114
+ top: top
115
+ //width: width,
116
+ //height: height
117
+ };
118
+ config[objId] = newItem;
119
+ this.localStorageService.setObject(this.CONFIG, config);
120
+ }
121
+ // checks whether element or element with additional selectionof subelement is placed within the give rectangle
122
+ // if not then calculates the offset to be moved to fit in
123
+ checkPosition(id, selector, parentRectangle, left, top, deltaX, deltaY, forceCheck = false) {
124
+ if (!id) {
125
+ return { deltaX: 0, deltaY: 0 };
126
+ }
127
+ const e1 = this.getItem(id);
128
+ if (!e1) {
129
+ return { deltaX: 0, deltaY: 0 };
130
+ }
131
+ const element = e1.element?.nativeElement?.shadowRoot || e1.element?.nativeElement;
132
+ const mySelector = selector?.length > 0 ? selector : e1.selector;
133
+ const parentRect = parentRectangle || this.resizeObserverService.getParentAppRect();
134
+ if (parentRect?.width <= 1 || parentRect?.height <= 1) {
135
+ return { deltaX: 0, deltaY: 0 };
136
+ }
137
+ let elementRect = undefined;
138
+ if (!element) {
139
+ console.error('checkPosition: missing element');
140
+ return { deltaX: 0, deltaY: 0 };
141
+ }
142
+ if (mySelector) {
143
+ const selectedObj = element.querySelector(mySelector);
144
+ elementRect = selectedObj?.getBoundingClientRect();
145
+ }
146
+ else {
147
+ elementRect = element.getBoundingClientRect();
148
+ }
149
+ if (!elementRect?.width || !elementRect?.height) {
150
+ console.error('checkPosition:missing element rect');
151
+ return { deltaX: 0, deltaY: 0 };
152
+ }
153
+ let checkBoundaries = true;
154
+ if (this._isInsideRect(elementRect, parentRect) === false && !forceCheck) {
155
+ checkBoundaries = false;
156
+ }
157
+ // copy of real element rectangle to perform calculation over before set to the real element
158
+ const elementDOMRect = DOMRect.fromRect(elementRect);
159
+ //set the element rectangle by deltas
160
+ //this._translateRectangle(elementDOMRect, deltaX, deltaY);
161
+ if (checkBoundaries) {
162
+ if (this._isInsideRect(elementDOMRect, parentRect) === false) {
163
+ const newElementPos = this.getAlignedPosition(elementDOMRect, parentRect);
164
+ deltaX = newElementPos.x - elementRect.x;
165
+ deltaY = newElementPos.y - elementRect.y;
166
+ //this._translateRectangle(elementDOMRect, deltaX, deltaY);
37
167
  }
38
- else {
39
- console.log("not inside!!");
40
- if (this._isInsideLeftTopRect(parentRect, elementDOMRect) === false) {
41
- const newElementPos = this._getAlignedLeftTopPosition(elementDOMRect, parentRect);
42
- deltaX = newElementPos.x - elementRect.x;
43
- deltaY = newElementPos.y - elementRect.y;
44
- this._translateRectangle(elementDOMRect, deltaX, deltaY);
45
- }
168
+ }
169
+ else {
170
+ console.log("not inside!!");
171
+ if (this._isInsideLeftTopRect(parentRect, elementDOMRect) === false) {
172
+ const newElementPos = this._getAlignedLeftTopPosition(elementDOMRect, parentRect);
173
+ deltaX = newElementPos.x - elementRect.x;
174
+ deltaY = newElementPos.y - elementRect.y;
175
+ //this._translateRectangle(elementDOMRect, deltaX, deltaY);
46
176
  }
47
177
  }
48
178
  return { deltaX, deltaY };
@@ -112,15 +242,58 @@ export class LayoutManagerService {
112
242
  /**--------------------------------------------------------------------------
113
243
  * translate rectangle by x, y
114
244
  --------------------------------------------------------------------------*/
115
- _translateRectangle(rect, translateX, translateY) {
116
- if (!rect) {
245
+ /*_translateRectangle(rect:DOMRect, translateX:number, translateY:number) {
246
+ if(!rect) {
247
+ return;
248
+ }
249
+ rect.x += translateX;
250
+ rect.y += translateY;
251
+ return rect;
252
+ }
253
+ */
254
+ updateCollapsed(value, id = '') {
255
+ const foundItem = this.getItem(id);
256
+ if (!foundItem) {
257
+ return;
258
+ }
259
+ foundItem.isCollapsed = value;
260
+ this.registeredItems$.next(this.registeredItems);
261
+ setTimeout(() => {
262
+ const { deltaX, deltaY } = this.checkPosition(foundItem.id, "", undefined, undefined, undefined, 0, 0, true);
263
+ if (deltaX != 0 || deltaY !== 0) {
264
+ const element = foundItem.element?.nativeElement;
265
+ const computedStyle = window.getComputedStyle(element);
266
+ const top = parseInt(computedStyle.top, 10);
267
+ const left = parseInt(computedStyle.left, 10);
268
+ element.style.top = (top + deltaY) + 'px';
269
+ element.style.left = (left + deltaX) + 'px';
270
+ }
271
+ });
272
+ let s1 = '';
273
+ this.registeredItems.forEach((item) => {
274
+ s1 = s1 + `${item.id}:<${item.isCollapsed ? 1 : 0}> `;
275
+ });
276
+ console.log(s1);
277
+ }
278
+ handleDragEnd(id) {
279
+ this.finalizeObjectChanges(id);
280
+ }
281
+ /**--------------------------------------------------------------------------
282
+ * finalize object changes (position). object must be registered in the layout manager
283
+ * object: object to finalize
284
+ --------------------------------------------------------------------------*/
285
+ finalizeObjectChanges(id) {
286
+ const item = this.getItem(id);
287
+ if (!item) {
117
288
  return;
118
289
  }
119
- rect.x += translateX;
120
- rect.y += translateY;
121
- return rect;
290
+ const element = item.element?.nativeElement;
291
+ const computedStyle = window.getComputedStyle(element);
292
+ const top = parseInt(computedStyle.top, 10);
293
+ const left = parseInt(computedStyle.left, 10);
294
+ this._setObjectConfig(item, left, top);
122
295
  }
123
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: LayoutManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
296
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: LayoutManagerService, deps: [{ token: i1.ResizeObserverService }, { token: i2.LocalStorageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
124
297
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: LayoutManagerService, providedIn: 'root' }); }
125
298
  }
126
299
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: LayoutManagerService, decorators: [{
@@ -128,5 +301,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImpo
128
301
  args: [{
129
302
  providedIn: 'root'
130
303
  }]
131
- }], ctorParameters: () => [] });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LW1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9zZXJ2aWNlcy9sYXlvdXQtbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBS3RELE1BQU0sT0FBTyxvQkFBb0I7SUFFL0IsZ0JBQWdCLENBQUM7SUFDakIsYUFBYSxDQUFDLFVBQXFCLEVBQUMsUUFBZSxFQUFDLElBQVcsRUFBQyxHQUFVLEVBQUMsTUFBYSxFQUFDLE1BQWEsRUFBQyxhQUFxQixLQUFLO1FBQy9ILE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsdUJBQXVCLENBQUMsQ0FBQztRQUNoRSw0RUFBNEU7UUFDNUUsb0VBQW9FO1FBQ3BFLHVEQUF1RDtRQUN2RCxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RyxNQUFNLFFBQVEsR0FBSSxRQUFRLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzdHLElBQUcsTUFBTSxJQUFJLFVBQVUsQ0FBQyxhQUFhLElBQUksU0FBUyxJQUFJLFFBQVEsSUFBSSxRQUFRLEVBQUMsQ0FBQztZQUMxRSxNQUFNLFFBQVEsR0FBVyxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUN4RCxNQUFNLGFBQWEsR0FBVSxTQUFTLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUMvRCxNQUFNLFlBQVksR0FBVyxRQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUM5RCxNQUFNLFdBQVcsR0FBVyxVQUFVLENBQUMsYUFB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QztZQUNULE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUM7UUFDckIsSUFBSSxDQUFDLENBQUMsSUFBSSxVQUFVLENBQUM7UUFDckIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOytHQWxJVSxvQkFBb0I7bUhBQXBCLG9CQUFvQixjQUZuQixNQUFNOzs0RkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZixJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIExheW91dE1hbmFnZXJTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcigpIHsgfVxuICBjaGVja1Bvc2l0aW9uKGVsZW1lbnRSZWY6RWxlbWVudFJlZixzZWxlY3RvcjpzdHJpbmcsbGVmdDpudW1iZXIsdG9wOm51bWJlcixkZWx0YVg6bnVtYmVyLGRlbHRhWTpudW1iZXIsZm9yY2VDaGVjazpib29sZWFuID0gZmFsc2Upe1xuICAgIGNvbnN0IHBhcmVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibWFpblZpZXdwb3J0Q29udGFpbmVyXCIpO1xuICAgIC8vY29uc3QgbGVmdFBhbmVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImxlZnQtc2lkZW5hdi1jb250ZW50XCIpO1xuICAgIC8vY29uc3QgbGVmdFBhbmVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcIi5sZWZ0LXNpZGVuYXYtY29udGVudFwiKTtcbiAgICAvL2NvbnN0IGxlZnRQYW5lbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuc2lkZW5hdlwiKTtcbiAgICBjb25zdCBsZWZ0UGFuZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdsaWItYmltcGx1cy1zaWRlbmF2Jyk/LnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoJy5zaWRlbmF2Jyk7XG4gICAgY29uc3QgdG9wUGFuZWwgPSAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignbGliLWJpbXBsdXMtbmF2YmFyJyk/LnNoYWRvd1Jvb3Q/LnF1ZXJ5U2VsZWN0b3IoJy5iaW1wbHVzLW5hdmJhcicpO1xuICAgIGlmKHBhcmVudCAmJiBlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgJiYgbGVmdFBhbmVsICYmIHRvcFBhbmVsICYmIHNlbGVjdG9yKXtcbiAgICAgIGNvbnN0IHZpZXdSZWN0OkRPTVJlY3QgPSBwYXJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBsZWZ0UGFuZWxSZWN0OkRPTVJlY3QgPWxlZnRQYW5lbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHRvcFBhbmVsUmVjdDpET01SZWN0ID0gdG9wUGFuZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBlbGVtZW50UmVjdDpET01SZWN0ID0gZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50Py5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsgXG4gICAgICBjb25zb2xlLmxvZyhgYm94OiBsZWZ0OiR7ZWxlbWVudFJlY3QubGVmdH0sdG9wOiR7ZWxlbWVudFJlY3QudG9wfSxyaWdodDoke2VsZW1lbnRSZWN0LnJpZ2h0fSxib3R0b206JHtlbGVtZW50UmVjdC5ib3R0b219YCk7XG4gICAgICAvL2NvbnN0IGVsZW1lbnRSZWN0OkRPTVJlY3QgID0gIGVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHBhcmVudFJlY3Q6RE9NUmVjdCA9IG5ldyBET01SZWN0KFxuICAgICAgICAgdmlld1JlY3QubGVmdCArIGxlZnRQYW5lbFJlY3QucmlnaHQgKyB0b3BQYW5lbFJlY3QubGVmdCxcbiAgICAgICAgIHZpZXdSZWN0LnRvcCwgICAgICAgICBcbiAgICAgICAgIHZpZXdSZWN0LndpZHRoIC0gbGVmdFBhbmVsUmVjdC4gd2lkdGgsXG4gICAgICAgICB2aWV3UmVjdC5oZWlnaHQpIDtcbiAgICAgIC8vY29uc3QgcGFyZW50UmVjdDpET01SZWN0ID0gbmV3IERPTVJlY3QoICB2aWV3UmVjdC5sZWZ0LHZpZXdSZWN0LnRvcCx2aWV3UmVjdC53aWR0aCx2aWV3UmVjdC5oZWlnaHQpO1xuICAgICAgXG4gICAgICAvL2NvbnNvbGUubG9nKHZpZXdSZWN0LGVsZW1lbnRSZWN0KTtcbiAgICAgIGxldCBjaGVja0JvdW5kYXJpZXMgPSB0cnVlO1xuICAgICAgaWYodGhpcy5faXNJbnNpZGVSZWN0KGVsZW1lbnRSZWN0LCBwYXJlbnRSZWN0KSA9PT0gZmFsc2UgJiYgIWZvcmNlQ2hlY2spIHtcbiAgICAgICAgY2hlY2tCb3VuZGFyaWVzID0gZmFsc2U7XG4gICAgICB9XG4gIFxuICAgICAgLy8gY29weSBvZiByZWFsIGVsZW1lbnQgcmVjdGFuZ2xlIHRvIHBlcmZvcm0gY2FsY3VsYXRpb24gb3ZlciBiZWZvcmUgc2V0IHRvIHRoZSByZWFsIGVsZW1lbnRcbiAgICAgIGNvbnN0IGVsZW1lbnRET01SZWN0ID0gRE9NUmVjdC5mcm9tUmVjdChlbGVtZW50UmVjdCk7XG4gIFxuICAgICAgLy9zZXQgdGhlIGVsZW1lbnQgcmVjdGFuZ2xlIGJ5IGRlbHRhc1xuICAgICAgdGhpcy5fdHJhbnNsYXRlUmVjdGFuZ2xlKGVsZW1lbnRET01SZWN0LCBkZWx0YVgsIGRlbHRhWSk7XG4gIFxuICAgICAgaWYoY2hlY2tCb3VuZGFyaWVzKSB7XG4gICAgICAgIGlmKHRoaXMuX2lzSW5zaWRlUmVjdChlbGVtZW50RE9NUmVjdCwgcGFyZW50UmVjdCkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgY29uc3QgIG5ld0VsZW1lbnRQb3MgPSB0aGlzLmdldEFsaWduZWRQb3NpdGlvbihlbGVtZW50RE9NUmVjdCwgcGFyZW50UmVjdCk7XG4gICAgICAgICAgZGVsdGFYID0gbmV3RWxlbWVudFBvcy54IC0gZWxlbWVudFJlY3QueDtcbiAgICAgICAgICBkZWx0YVkgPSBuZXdFbGVtZW50UG9zLnkgLSBlbGVtZW50UmVjdC55O1xuICAgICAgICAgIHRoaXMuX3RyYW5zbGF0ZVJlY3RhbmdsZShlbGVtZW50RE9NUmVjdCwgZGVsdGFYLCBkZWx0YVkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmxvZyhcIm5vdCBpbnNpZGUhIVwiKTtcbiAgICAgICAgaWYgKHRoaXMuX2lzSW5zaWRlTGVmdFRvcFJlY3QocGFyZW50UmVjdCwgZWxlbWVudERPTVJlY3QpID09PSBmYWxzZSkge1xuICAgICAgICAgIGNvbnN0IG5ld0VsZW1lbnRQb3MgPSB0aGlzLl9nZXRBbGlnbmVkTGVmdFRvcFBvc2l0aW9uKGVsZW1lbnRET01SZWN0LCBwYXJlbnRSZWN0KTtcbiAgICAgICAgICBkZWx0YVggPSBuZXdFbGVtZW50UG9zLnggLSBlbGVtZW50UmVjdC54O1xuICAgICAgICAgIGRlbHRhWSA9IG5ld0VsZW1lbnRQb3MueSAtIGVsZW1lbnRSZWN0Lnk7XG4gICAgICAgICAgdGhpcy5fdHJhbnNsYXRlUmVjdGFuZ2xlKGVsZW1lbnRET01SZWN0LCBkZWx0YVgsIGRlbHRhWSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtkZWx0YVgsZGVsdGFZfTtcbiAgfVxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAqIGZpbmQgaWYgcmVjdGFuZ2xlIDEgaXMgaW5zaWRlIHJlY3RhbmdsZSAyXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbiAgX2lzSW5zaWRlUmVjdChyMTpET01SZWN0LCByMjpET01SZWN0KSB7XG4gICAgaWYoIXIxIHx8ICFyMikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gIHIyLmxlZnQgPD0gcjEubGVmdCAgJiYgcjIudG9wIDw9IHIxLnRvcCAmJiByMi5yaWdodCA+PSByMS5yaWdodCAmJiByMi5ib3R0b20gPj0gcjEuYm90dG9tO1xuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgKiBmaW5kIGlmIHJlY3RhbmdsZXMgZG8gbm90IG92ZXJsYXAgdGhlIGxlZnQgYW5kIHRvcCBzaWRlc1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4gIF9pc0luc2lkZUxlZnRUb3BSZWN0KHIxOkRPTVJlY3QsIHIyOkRPTVJlY3QpIHtcbiAgICBpZighcjEgfHwgIXIyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0ICByMUluc2lkZSA9IHIyLmxlZnQgPD0gcjEubGVmdCAgJiYgcjIudG9wIDw9IHIxLnRvcDtcbiAgICBjb25zdCAgcjJJbnNpZGUgPSByMS5sZWZ0IDw9IHIyLmxlZnQgICYmIHIxLnRvcCA8PSByMi50b3AgXG4gICAgcmV0dXJuIHIxSW5zaWRlIHx8IHIySW5zaWRlO1xuICB9XG5cbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgKiBnZXQgcG9zaXRpb24gb2YgcjEgYWxpZ25lZCB3aXRoIHRoZSByMiBzaWRlc1xuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4gIGdldEFsaWduZWRQb3NpdGlvbihyMTpET01SZWN0LCByMjpET01SZWN0KSB7XG4gICAgaWYoIXIxIHx8ICFyMikge1xuICAgICAgcmV0dXJuIHt4OjAseTowfTtcbiAgICB9XG4gICAgY29uc3QgdG8gPSB7IHg6IHIxLngsIHk6IHIxLnkgfTtcbiAgICAvL2FsaWduIGxlZnQgb3IgcmlnaHQgc2lkZXMuIHByZWZlcmFibHkgbGVmdFxuICAgIGlmKHIxLmxlZnQgPCByMi5sZWZ0KSB7XG4gICAgICB0by54ID0gcjIueDtcbiAgICB9IGVsc2UgaWYocjEucmlnaHQgPiByMi5yaWdodCkge1xuICAgICAgdG8ueCA9IHIyLnJpZ2h0IC0gcjEud2lkdGg7XG4gICAgfVxuICAgIC8vYWxpZ24gdG9wIG9yIGJvdHRvbS4gcHJlZmVyYWJseSB0b3BcbiAgICBpZihyMS50b3AgPCByMi50b3ApIHtcbiAgICAgIHRvLnkgPSByMi55O1xuICAgIH0gZWxzZSBpZihyMS5ib3R0b20gPiByMi5ib3R0b20pIHtcbiAgICAgIHRvLnkgPSByMi5ib3R0b20gLSByMS5oZWlnaHQ7XG4gICAgfVxuICAgIHJldHVybiB0bztcbiAgfVxuICBcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgKiBnZXQgcG9zaXRpb24gb2YgcjEgYWxpZ25lZCB3aXRoIHRoZSByMiBsZWZ0LCB0b3Agc2lkZXNcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuICBfZ2V0QWxpZ25lZExlZnRUb3BQb3NpdGlvbihyMTpET01SZWN0LCByMjpET01SZWN0KSB7XG4gICAgaWYoIXIxIHx8ICFyMikge1xuICAgICAgcmV0dXJuICB7eDowLHk6MH07XG4gICAgfVxuXG4gICAgY29uc3QgIHRvID0geyB4OiByMS54LCB5OiByMS55IH07XG4gICAgLy9hbGlnbiBsZWZ0XG4gICAgaWYocjEubGVmdCA8IHIyLmxlZnQpIHtcbiAgICAgIHRvLnggPSByMi54O1xuICAgIH1cbiAgICAvL2FsaWduIHRvcFxuICAgIGlmKHIxLnRvcCA8IHIyLnRvcCkge1xuICAgICAgdG8ueSA9IHIyLnk7XG4gICAgfVxuICAgIHJldHVybiB0bztcbiAgfVxuXG4gICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAqIHRyYW5zbGF0ZSByZWN0YW5nbGUgYnkgeCwgeVxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4gIF90cmFuc2xhdGVSZWN0YW5nbGUocmVjdDpET01SZWN0LCB0cmFuc2xhdGVYOm51bWJlciwgdHJhbnNsYXRlWTpudW1iZXIpIHtcbiAgICBpZighcmVjdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZWN0LnggKz0gdHJhbnNsYXRlWDtcbiAgICByZWN0LnkgKz0gdHJhbnNsYXRlWTtcbiAgICByZXR1cm4gcmVjdDtcbiAgfVxufVxuIl19
304
+ }], ctorParameters: () => [{ type: i1.ResizeObserverService }, { type: i2.LocalStorageService }] });
305
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF5b3V0LW1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9zZXJ2aWNlcy9sYXlvdXQtbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQStCdkMsTUFBTSxPQUFPLG9CQUFvQjtJQUcvQixZQUFvQixxQkFBMkMsRUFDM0MsbUJBQXdDO1FBRHhDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBc0I7UUFDM0Msd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUY1RCxxQkFBZ0IsR0FBeUMsSUFBSSxlQUFlLENBQXNCLEVBQUUsQ0FBQyxDQUFBO1FBSTdGLG9CQUFlLEdBQXVCLEVBQUUsQ0FBQztRQUtqRCxXQUFNLEdBQVUscUJBQXFCLENBQUM7SUFObEMsQ0FBQztJQUdMLElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUlIOztrRkFFOEU7SUFDNUUsY0FBYyxDQUFDLEdBQWMsRUFBRSxFQUFTLEVBQUMsT0FBYyxHQUFHLEVBQUUsTUFBYSxHQUFHLEVBQUUsUUFBMkIsRUFBRSxnQkFBd0I7UUFFakksSUFBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUMsQ0FBQztZQUNwRCxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sT0FBTyxHQUFzQjtZQUNqQyxPQUFPLEVBQUMsR0FBRztZQUNYLEVBQUUsRUFBQyxFQUFFO1lBQ0wsUUFBUSxFQUFDLFFBQVE7WUFDakIsZ0JBQWdCLEVBQUMsQ0FBQyxDQUFDLGdC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Q0FBQyxDQUFDO0lBQ3ZDLENBQUM7K0dBclRVLG9CQUFvQjttSEFBcEIsb0JBQW9CLGNBRm5CLE1BQU07OzRGQUVQLG9CQUFvQjtrQkFIaEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGVtZW50UmVmLEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi9yZXNpemUtb2JzZXJ2ZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnZVNlcnZpY2UgfSAgIGZyb20gJy4vbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbi8vaW1wb3J0IHsgSXRlbXNMaXN0IH0gZnJvbSAnQG5nLXNlbGVjdC9uZy1zZWxlY3QvbGliL2l0ZW1zLWxpc3QnO1xyXG4vL2ltcG9ydCB7IE5vdEZvdW5kRXJyb3IgfSBmcm9tICdyeGpzJztcclxuXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExheW91dE1hbmFnZXJJdGVtIHtcclxuICBlbGVtZW50OkVsZW1lbnRSZWY7XHJcbiAgaWQ6IHN0cmluZztcclxuICBzZWxlY3Rvcj86c3RyaW5nO1xyXG4gIGlzQ29sbGFwc2VkOmJvb2xlYW47XHJcbiAgcmVtZW1iZXJQb3NpdGlvbj86Ym9vbGVhblxyXG4gIGxlZnQ/OiBudW1iZXI7XHJcbiAgdG9wPzpudW1iZXI7XHJcbiAgd2lkdGg/Om51bWJlcjtcclxuICBoZWlnaHQ/Om51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBMYXlvdXRNYW5hZ2VyQ29uZmlnSXRlbSB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBpc0NvbGxhcHNlZDpib29sZWFuOyAgXHJcbiAgbGVmdD86IG51bWJlcjtcclxuICB0b3A/Om51bWJlcjsgIFxyXG59XHJcblxyXG5cclxuaW50ZXJmYWNlIExheW91dE1hbmFnZXJDb25maWcge1xyXG4gIFtrZXk6c3RyaW5nXTogTGF5b3V0TWFuYWdlckNvbmZpZ0l0ZW1cclxufVxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMYXlvdXRNYW5hZ2VyU2VydmljZSB7XHJcblxyXG4gIHJlZ2lzdGVyZWRJdGVtcyQ6IEJlaGF2aW9yU3ViamVjdDxMYXlvdXRNYW5hZ2VySXRlbVtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TGF5b3V0TWFuYWdlckl0ZW1bXT4oW10pXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXNpemVPYnNlcnZlclNlcnZpY2U6UmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgbG9jYWxTdG9yYWdlU2VydmljZSA6TG9jYWxTdG9yYWdlU2VydmljZSBcclxuICApIHsgfVxyXG4gIHByaXZhdGUgcmVnaXN0ZXJlZEl0ZW1zOkxheW91dE1hbmFnZXJJdGVtW10gPSBbXTtcclxuICBcclxuICBnZXQgUmVnaXN0ZXJlZEl0ZW1zKCk6IExheW91dE1hbmFnZXJJdGVtW10ge1xyXG4gICAgcmV0dXJuIHRoaXMucmVnaXN0ZXJlZEl0ZW1zO1xyXG4gIH1cclxuICBDT05GSUc6c3RyaW5nID0gJ2xheW91dE1hbmFnZXJDb25maWcnO1xyXG5cclxuICBcclxuLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIHJlZ2lzdGVyIG9iamVjdC4gb2JqZWN0IG11c3QgaGF2ZSB1bmlxdWUgaWQgb3IgZWxlbWVudElkXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIHJlZ2lzdGVyT2JqZWN0KG9iajpFbGVtZW50UmVmLCBpZDpzdHJpbmcsbGVmdDpudW1iZXIgPSAxMDAsIHRvcDpudW1iZXIgPSAxMDAsIHNlbGVjdG9yOnN0cmluZyB8IHVuZGVmaW5lZCwgcmVtZW1iZXJQb3NpdGlvbjpib29sZWFuKSB7XHJcbiAgICBcclxuICAgIGlmKHRoaXMucmVnaXN0ZXJlZEl0ZW1zLnNvbWUoaXRlbSA9PiBpdGVtLmlkID09PSBpZCkpe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBuZXdJdGVtOiBMYXlvdXRNYW5hZ2VySXRlbSA9IHsgXHJcbiAgICAgIGVsZW1lbnQ6b2JqLFxyXG4gICAgICBpZDppZCxcclxuICAgICAgc2VsZWN0b3I6c2VsZWN0b3IsXHJcbiAgICAgIHJlbWVtYmVyUG9zaXRpb246ISFyZW1lbWJlclBvc2l0aW9uLFxyXG4gICAgICBsZWZ0OmxlZnQsXHJcbiAgICAgIHRvcDp0b3AsXHJcbiAgICAgIGlzQ29sbGFwc2VkOiBmYWxzZSAgICBcclxuICAgICB9O1xyXG5cclxuICAgIHRoaXMucmVnaXN0ZXJlZEl0ZW1zLnB1c2gobmV3SXRlbSk7XHJcbiAgICB0aGlzLnJlZ2lzdGVyZWRJdGVtcyQubmV4dCh0aGlzLnJlZ2lzdGVyZWRJdGVtcyk7XHJcbiAgICB0aGlzLl9pbml0T2JqZWN0KG5ld0l0ZW0pO1xyXG4gIH1cclxuICBcclxuICBfaW5pdE9iamVjdChvYmo6TGF5b3V0TWFuYWdlckl0ZW0pe1xyXG4gICAgdGhpcy5fYWRqdXN0T2JqZWN0QnlDb25maWcob2JqKTtcclxuICAgIHRoaXMuX2FkanVzdE9iamVjdEJ5V2luZG93U2l6ZShvYmopO1xyXG4gICAgXHJcbiAgfVxyXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgKiBnZXQgb2JqZWN0IGNvbmZpZ3VyYXRpb25cclxuICAqIHJldHVybiB7bGVmdCwgdG9wLCB3aWR0aCwgaGVpZ3RofVxyXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICBfZ2V0T2JqZWN0Q29uZmlnKG9iajpMYXlvdXRNYW5hZ2VySXRlbSk6TGF5b3V0TWFuYWdlckNvbmZpZ0l0ZW18bnVsbCB7XHJcbiAgICBpZighb2JqKXtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb25maWdWYWx1ZSA9IHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5nZXRJdGVtKHRoaXMuQ09ORklHKTtcclxuICAgIGNvbnN0ICBjb25maWcgPSBjb25maWdWYWx1ZSA/IEpTT04ucGFyc2UoY29uZmlnVmFsdWUpIDoge307XHJcbiAgICBjb25zdCAgb2JqSWQgPSBvYmouaWQgO1xyXG4gICAgbGV0IGNvbmZpZ09iaiA9IGNvbmZpZ1tvYmpJZF07XHJcbiAgICBpZighY29uZmlnT2JqKSB7XHJcbiAgICAgIGNvbmZpZ09iaiA9IHtpZDpvYmpJZCxsZWZ0Om9iai5sZWZ0LHRvcDpvYmoudG9wfTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb25maWdPYmo7XHJcbiAgfVxyXG5cclxuICBfYWRqdXN0T2JqZWN0QnlDb25maWcob2JqOkxheW91dE1hbmFnZXJJdGVtKXtcclxuICAgIGNvbnN0IGNvbmZpZzpMYXlvdXRNYW5hZ2VyQ29uZmlnSXRlbXxudWxsID0gdGhpcy5fZ2V0T2JqZWN0Q29uZmlnKG9iaik7XHJcbiAgICBpZighY29uZmlnKXtcclxuICAgICAgcmV0dXJuOyAgICAgIFxyXG4gICAgfWNvbnN0IGVsZW1lbnQgPSBvYmouZWxlbWVudD8ubmF0aXZlRWxlbWVudDsgIFxyXG4gICAgZWxlbWVudC5zdHlsZS5sZWZ0ID0gKGNvbmZpZy5sZWZ0KSArICdweCc7XHJcbiAgICBlbGVtZW50LnN0eWxlLnRvcCA9IChjb25maWcudG9wKSArICdweCc7XHJcbiAgICBjb25zdCB7ZGVsdGFYLGRlbHRhWX0gPSB0aGlzLmNoZWNrUG9zaXRpb24ob2JqLmlkLFwiXCIsdW5kZWZpbmVkLHVuZGVmaW5lZCx1bmRlZmluZWQsMCwwLHRydWUpO1xyXG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpOyAgXHJcbiAgICBjb25zdCB0b3AgPSBwYXJzZUludChjb21wdXRlZFN0eWxlLnRvcCwgMTApO1xyXG4gICAgY29uc3QgbGVmdCA9IHBhcnNlSW50KGNvbXB1dGVkU3R5bGUubGVmdCwgMTApO1xyXG4gICAgZWxlbWVudC5zdHlsZS50b3AgPSAodG9wICsgZGVsdGFZKSArICdweCc7XHJcbiAgICBlbGVtZW50LnN0eWxlLmxlZnQgPSAobGVmdCArIGRlbHRhWCkgKyAncHgnOyAgICBcclxuICB9XHJcblxyXG4gIF9hZGp1c3RPYmplY3RCeVdpbmRvd1NpemUob2JqOkxheW91dE1hbmFnZXJJdGVtKXtcclxuICAgIGNvbnNvbGUubG9nKCdfYWRqdXN0T2JqZWN0QnlXaW5kb3dTaXplJyxvYmopO1xyXG4gIH1cclxuICBcclxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICogcmV0dXJucyBvYmplY3QgIHJlZ2lzdGVyZWQgaW4gdGhlIGxheW91dCBtYW5hZ2VyIFxyXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICBnZXRJdGVtKGlkOiBzdHJpbmcgKTpMYXlvdXRNYW5hZ2VySXRlbXxudWxsIHsgICBcclxuICAgIGxldCBmb3VuZEl0ZW06TGF5b3V0TWFuYWdlckl0ZW18bnVsbCA9IG51bGw7XHJcbiAgICB0aGlzLnJlZ2lzdGVyZWRJdGVtcy5mb3JFYWNoKGl0ZW0gPT57XHJcbiAgICAgIGlmKGl0ZW0uaWQgPT09IGlkKXtcclxuICAgICAgICBmb3VuZEl0ZW0gPSBpdGVtO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmb3VuZEl0ZW07XHJcbiAgfVxyXG5cclxuICAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICogc2V0IG9iamVjdCBjb25maWd1cmF0aW9uXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIF9zZXRPYmplY3RDb25maWcob2JqOkxheW91dE1hbmFnZXJJdGVtLCBsZWZ0Om51bWJlcix0b3A6bnVtYmVyKXsvL30sd2lkdGg6bnVtYmVyLGhlaWdodDpudW1iZXIpIHtcclxuICAgIGNvbnN0IG9iaklkID0gb2JqPy5pZCA7XHJcbiAgICBpZiAoIW9iaklkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGxldCBjb25maWcgPSB0aGlzLmxvY2FsU3RvcmFnZVNlcnZpY2UuZ2V0T2JqZWN0KHRoaXMuQ09ORklHKSBhcyBMYXlvdXRNYW5hZ2VyQ29uZmlnO1xyXG4gICAgLy9sZXQgY29uZmlnID0gY29uZmlnVmFsdWUgJiYgSlNPTi5wYXJzZShjb25maWdWYWx1ZSkgYXMgTGF5b3V0TWFuYWdlckNvbmZpZztcclxuICAgIGlmICghY29uZmlnKSB7XHJcbiAgICAgIGNvbmZpZyA9IHt9O1xyXG4gICAgfVxyXG4gICAgaWYob2JqPy5pc0NvbGxhcHNlZCl7ICAvLyBkbyBub3Qgb3ZlcnRha2UgY29sbGFwc2VkIHNpemVcclxuICAgICAgaWYgKCFjb25maWdbb2JqSWRdKSB7ICAgICAgICBcclxuICAgICAgICBjb25maWdbb2JqSWRdID0gb2JqO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbmZpZ1tvYmpJZF0ubGVmdCA9IGxlZnQ7XHJcbiAgICAgIGNvbmZpZ1tvYmpJZF0udG9wICA9IHRvcDtcclxuICAgICAgdGhpcy5sb2NhbFN0b3JhZ2VTZXJ2aWNlLnNldE9iamVjdCh0aGlzLkNPTkZJRywgY29uZmlnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG5ld0l0ZW0gOkxheW91dE1hbmFnZXJDb25maWdJdGVtID0ge1xyXG4gICAgICBpZDogb2JqSWQsXHJcbiAgICAgIGlzQ29sbGFwc2VkOiBmYWxzZSxcclxuICAgICAgbGVmdDogbGVmdCxcclxuICAgICAgdG9wOiB0b3BcclxuICAgICAgLy93aWR0aDogd2lkdGgsXHJcbiAgICAgIC8vaGVpZ2h0OiBoZWlnaHRcclxuICAgIH07XHJcbiAgICBjb25maWdbb2JqSWRdID0gbmV3SXRlbTtcclxuICAgIHRoaXMubG9jYWxTdG9yYWdlU2VydmljZS5zZXRPYmplY3QodGhpcy5DT05GSUcsY29uZmlnKTtcclxuICB9XHJcbiAgLy8gY2hlY2tzIHdoZXRoZXIgZWxlbWVudCBvciBlbGVtZW50IHdpdGggYWRkaXRpb25hbCBzZWxlY3Rpb25vZiBzdWJlbGVtZW50IGlzIHBsYWNlZCB3aXRoaW4gdGhlIGdpdmUgcmVjdGFuZ2xlXHJcbiAgLy8gaWYgbm90IHRoZW4gY2FsY3VsYXRlcyB0aGUgb2Zmc2V0IHRvIGJlIG1vdmVkIHRvIGZpdCBpblxyXG4gIGNoZWNrUG9zaXRpb24oaWQ6c3RyaW5nLHNlbGVjdG9yOnN0cmluZyxwYXJlbnRSZWN0YW5nbGU6RE9NUmVjdHx1bmRlZmluZWQgLGxlZnQ6bnVtYmVyfHVuZGVmaW5lZCx0b3A6bnVtYmVyfHVuZGVmaW5lZCxkZWx0YVg6bnVtYmVyLGRlbHRhWTpudW1iZXIsZm9yY2VDaGVjazpib29sZWFuID0gZmFsc2Upe1xyXG4gICAgaWYoIWlkKXtcclxuICAgICAgcmV0dXJuIHtkZWx0YVg6MCxkZWx0YVk6MH07XHJcbiAgICB9XHJcbiAgICBjb25zdCBlMSA9IHRoaXMuZ2V0SXRlbShpZCk7XHJcbiAgICBpZighZTEpe1xyXG4gICAgICByZXR1cm4ge2RlbHRhWDowLGRlbHRhWTowfTtcclxuICAgIH1cclxuICAgIGNvbnN0IGVsZW1lbnQ6RWxlbWVudCA9IGUxLmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LnNoYWRvd1Jvb3QgfHwgZTEuZWxlbWVudD8ubmF0aXZlRWxlbWVudDtcclxuICAgIGNvbnN0IG15U2VsZWN0b3IgPXNlbGVjdG9yPy5sZW5ndGggPiAwID9zZWxlY3RvcjplMS5zZWxlY3RvcjsgICAgXHJcbiAgICBjb25zdCBwYXJlbnRSZWN0OkRPTVJlY3QgPSAgcGFyZW50UmVjdGFuZ2xlIHx8ICB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS5nZXRQYXJlbnRBcHBSZWN0KCk7XHJcbiAgICBpZiggcGFyZW50UmVjdD8ud2lkdGg8PTEgfHwgcGFyZW50UmVjdD8uaGVpZ2h0PD0xICkge1xyXG4gICAgICByZXR1cm4ge2RlbHRhWDowLGRlbHRhWTowfTtcclxuICAgIH1cclxuICAgIGxldCAgZWxlbWVudFJlY3Q6RE9NUmVjdHx1bmRlZmluZWQgPXVuZGVmaW5lZDtcclxuICAgIGlmKCFlbGVtZW50KXtcclxuICAgICAgY29uc29sZS5lcnJvcignY2hlY2tQb3NpdGlvbjogbWlzc2luZyBlbGVtZW50Jyk7XHJcbiAgICAgIHJldHVybiB7ZGVsdGFYOjAsZGVsdGFZOjB9O1xyXG4gICAgfVxyXG4gICAgaWYobXlTZWxlY3Rvcil7XHJcbiAgICAgIGNvbnN0IHNlbGVjdGVkT2JqIDogSFRNTEVsZW1lbnR8bnVsbCA9IGVsZW1lbnQucXVlcnlTZWxlY3RvcihteVNlbGVjdG9yKTtcclxuICAgICAgZWxlbWVudFJlY3QgPSBzZWxlY3RlZE9iaj8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBlbGVtZW50UmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICB9XHJcbiAgICBpZighZWxlbWVudFJlY3Q/LndpZHRoIHx8ICFlbGVtZW50UmVjdD8uaGVpZ2h0KXtcclxuICAgICAgY29uc29sZS5lcnJvcignY2hlY2tQb3NpdGlvbjptaXNzaW5nIGVsZW1lbnQgcmVjdCcpO1xyXG4gICAgICByZXR1cm4ge2RlbHRhWDowLGRlbHRhWTowfTtcclxuICAgIH0gXHJcbiAgICBsZXQgY2hlY2tCb3VuZGFyaWVzID0gdHJ1ZTtcclxuICAgIGlmKHRoaXMuX2lzSW5zaWRlUmVjdChlbGVtZW50UmVjdCwgcGFyZW50UmVjdCkgPT09IGZhbHNlICYmICFmb3JjZUNoZWNrKSB7XHJcbiAgICAgIGNoZWNrQm91bmRhcmllcyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGNvcHkgb2YgcmVhbCBlbGVtZW50IHJlY3RhbmdsZSB0byBwZXJmb3JtIGNhbGN1bGF0aW9uIG92ZXIgYmVmb3JlIHNldCB0byB0aGUgcmVhbCBlbGVtZW50XHJcbiAgICBjb25zdCBlbGVtZW50RE9NUmVjdCA9IERPTVJlY3QuZnJvbVJlY3QoZWxlbWVudFJlY3QpO1xyXG5cclxuICAgIC8vc2V0IHRoZSBlbGVtZW50IHJlY3RhbmdsZSBieSBkZWx0YXNcclxuICAgIC8vdGhpcy5fdHJhbnNsYXRlUmVjdGFuZ2xlKGVsZW1lbnRET01SZWN0LCBkZWx0YVgsIGRlbHRhWSk7XHJcblxyXG4gICAgaWYoY2hlY2tCb3VuZGFyaWVzKSB7XHJcbiAgICAgIGlmKHRoaXMuX2lzSW5zaWRlUmVjdChlbGVtZW50RE9NUmVjdCwgcGFyZW50UmVjdCkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgY29uc3QgIG5ld0VsZW1lbnRQb3MgPSB0aGlzLmdldEFsaWduZWRQb3NpdGlvbihlbGVtZW50RE9NUmVjdCwgcGFyZW50UmVjdCk7XHJcbiAgICAgICAgZGVsdGFYID0gbmV3RWxlbWVudFBvcy54IC0gZWxlbWVudFJlY3QueDtcclxuICAgICAgICBkZWx0YVkgPSBuZXdFbGVtZW50UG9zLnkgLSBlbGVtZW50UmVjdC55O1xyXG4gICAgICAgIC8vdGhpcy5fdHJhbnNsYXRlUmVjdGFuZ2xlKGVsZW1lbnRET01SZWN0LCBkZWx0YVgsIGRlbHRhWSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwibm90IGluc2lkZSEhXCIpO1xyXG4gICAgICBpZiAodGhpcy5faXNJbnNpZGVMZWZ0VG9wUmVjdChwYXJlbnRSZWN0LCBlbGVtZW50RE9NUmVjdCkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgY29uc3QgbmV3RWxlbWVudFBvcyA9IHRoaXMuX2dldEFsaWduZWRMZWZ0VG9wUG9zaXRpb24oZWxlbWVudERPTVJlY3QsIHBhcmVudFJlY3QpO1xyXG4gICAgICAgIGRlbHRhWCA9IG5ld0VsZW1lbnRQb3MueCAtIGVsZW1lbnRSZWN0Lng7XHJcbiAgICAgICAgZGVsdGFZID0gbmV3RWxlbWVudFBvcy55IC0gZWxlbWVudFJlY3QueTtcclxuICAgICAgICAvL3RoaXMuX3RyYW5zbGF0ZVJlY3RhbmdsZShlbGVtZW50RE9NUmVjdCwgZGVsdGFYLCBkZWx0YVkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge2RlbHRhWCxkZWx0YVl9O1xyXG4gIH1cclxuXHJcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIGZpbmQgaWYgcmVjdGFuZ2xlIDEgaXMgaW5zaWRlIHJlY3RhbmdsZSAyXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIF9pc0luc2lkZVJlY3QocjE6RE9NUmVjdCwgcjI6RE9NUmVjdCkge1xyXG4gICAgaWYoIXIxIHx8ICFyMikge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gIHIyLmxlZnQgPD0gcjEubGVmdCAgJiYgcjIudG9wIDw9IHIxLnRvcCAmJiByMi5yaWdodCA+PSByMS5yaWdodCAmJiByMi5ib3R0b20gPj0gcjEuYm90dG9tO1xyXG4gIH1cclxuXHJcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIGZpbmQgaWYgcmVjdGFuZ2xlcyBkbyBub3Qgb3ZlcmxhcCB0aGUgbGVmdCBhbmQgdG9wIHNpZGVzXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIF9pc0luc2lkZUxlZnRUb3BSZWN0KHIxOkRPTVJlY3QsIHIyOkRPTVJlY3QpIHtcclxuICAgIGlmKCFyMSB8fCAhcjIpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgIHIxSW5zaWRlID0gcjIubGVmdCA8PSByMS5sZWZ0ICAmJiByMi50b3AgPD0gcjEudG9wO1xyXG4gICAgY29uc3QgIHIySW5zaWRlID0gcjEubGVmdCA8PSByMi5sZWZ0ICAmJiByMS50b3AgPD0gcjIudG9wO1xyXG4gICAgcmV0dXJuIHIxSW5zaWRlIHx8IHIySW5zaWRlO1xyXG4gIH1cclxuXHJcbiAgLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAqIGdldCBwb3NpdGlvbiBvZiByMSBhbGlnbmVkIHdpdGggdGhlIHIyIHNpZGVzXHJcbiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG4gIGdldEFsaWduZWRQb3NpdGlvbihyMTpET01SZWN0LCByMjpET01SZWN0KSB7XHJcbiAgICBpZighcjEgfHwgIXIyKSB7XHJcbiAgICAgIHJldHVybiB7eDowLHk6MH07XHJcbiAgICB9XHJcbiAgICBjb25zdCB0byA9IHsgeDogcjEueCwgeTogcjEueSB9O1xyXG4gICAgLy9hbGlnbiBsZWZ0IG9yIHJpZ2h0IHNpZGVzLiBwcmVmZXJhYmx5IGxlZnRcclxuICAgIGlmKHIxLmxlZnQgPCByMi5sZWZ0KSB7XHJcbiAgICAgIHRvLnggPSByMi54O1xyXG4gICAgfSBlbHNlIGlmKHIxLnJpZ2h0ID4gcjIucmlnaHQpIHtcclxuICAgICAgdG8ueCA9IHIyLnJpZ2h0IC0gcjEud2lkdGg7XHJcbiAgICB9XHJcbiAgICAvL2FsaWduIHRvcCBvciBib3R0b20uIHByZWZlcmFibHkgdG9wXHJcbiAgICBpZihyMS50b3AgPCByMi50b3ApIHtcclxuICAgICAgdG8ueSA9IHIyLnk7XHJcbiAgICB9IGVsc2UgaWYocjEuYm90dG9tID4gcjIuYm90dG9tKSB7XHJcbiAgICAgIHRvLnkgPSByMi5ib3R0b20gLSByMS5oZWlnaHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdG87XHJcbiAgfVxyXG4gIFxyXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgKiBnZXQgcG9zaXRpb24gb2YgcjEgYWxpZ25lZCB3aXRoIHRoZSByMiBsZWZ0LCB0b3Agc2lkZXNcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgX2dldEFsaWduZWRMZWZ0VG9wUG9zaXRpb24ocjE6RE9NUmVjdCwgcjI6RE9NUmVjdCkge1xyXG4gICAgaWYoIXIxIHx8ICFyMikge1xyXG4gICAgICByZXR1cm4gIHt4OjAseTowfTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCAgdG8gPSB7IHg6IHIxLngsIHk6IHIxLnkgfTtcclxuICAgIC8vYWxpZ24gbGVmdFxyXG4gICAgaWYocjEubGVmdCA8IHIyLmxlZnQpIHtcclxuICAgICAgdG8ueCA9IHIyLng7XHJcbiAgICB9XHJcbiAgICAvL2FsaWduIHRvcFxyXG4gICAgaWYocjEudG9wIDwgcjIudG9wKSB7XHJcbiAgICAgIHRvLnkgPSByMi55O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvO1xyXG4gIH1cclxuXHJcbiAgIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgKiB0cmFuc2xhdGUgcmVjdGFuZ2xlIGJ5IHgsIHlcclxuICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXHJcbiAgLypfdHJhbnNsYXRlUmVjdGFuZ2xlKHJlY3Q6RE9NUmVjdCwgdHJhbnNsYXRlWDpudW1iZXIsIHRyYW5zbGF0ZVk6bnVtYmVyKSB7XHJcbiAgICBpZighcmVjdCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICByZWN0LnggKz0gdHJhbnNsYXRlWDtcclxuICAgIHJlY3QueSArPSB0cmFuc2xhdGVZO1xyXG4gICAgcmV0dXJuIHJlY3Q7XHJcbiAgfVxyXG4qL1xyXG4gIFxyXG4gIHVwZGF0ZUNvbGxhcHNlZCh2YWx1ZTpib29sZWFuLCBpZDpzdHJpbmcgPSAnJyk6dm9pZHsgICAgXHJcbiAgICBjb25zdCAgZm91bmRJdGVtID0gdGhpcy5nZXRJdGVtKGlkKTtcclxuICAgIGlmKCFmb3VuZEl0ZW0pe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBmb3VuZEl0ZW0uaXNDb2xsYXBzZWQgPSB2YWx1ZTtcclxuICAgIHRoaXMucmVnaXN0ZXJlZEl0ZW1zJC5uZXh0KHRoaXMucmVnaXN0ZXJlZEl0ZW1zKTtcclxuICAgIHNldFRpbWVvdXQoKCk9PnsgICAgICBcclxuICAgICAgY29uc3Qge2RlbHRhWCxkZWx0YVl9ID0gdGhpcy5jaGVja1Bvc2l0aW9uKGZvdW5kSXRlbS5pZCxcIlwiLHVuZGVmaW5lZCx1bmRlZmluZWQsdW5kZWZpbmVkLDAsMCx0cnVlKTtcclxuICAgICAgaWYoZGVsdGFYICE9MCB8fGRlbHRhWSAhPT0gMCl7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9ICBmb3VuZEl0ZW0uZWxlbWVudD8ubmF0aXZlRWxlbWVudDtcclxuICAgICAgICBjb25zdCBjb21wdXRlZFN0eWxlID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XHJcbiAgICAgICAgY29uc3QgdG9wID0gcGFyc2VJbnQoY29tcHV0ZWRTdHlsZS50b3AsIDEwKTtcclxuICAgICAgICBjb25zdCBsZWZ0ID0gcGFyc2VJbnQoY29tcHV0ZWRTdHlsZS5sZWZ0LCAxMCk7XHJcbiAgICAgICAgZWxlbWVudC5zdHlsZS50b3AgPSAodG9wICsgZGVsdGFZKSArICdweCc7XHJcbiAgICAgICAgZWxlbWVudC5zdHlsZS5sZWZ0ID0gKGxlZnQgKyBkZWx0YVgpICsgJ3B4JztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBsZXQgczE6c3RyaW5nID0nJztcclxuICAgIHRoaXMucmVnaXN0ZXJlZEl0ZW1zLmZvckVhY2goKGl0ZW0pPT57XHJcbiAgICAgIHMxID0gczEgKyBgJHtpdGVtLmlkfTo8JHtpdGVtLmlzQ29sbGFwc2VkPzE6MH0+IGA7XHJcbiAgICB9KTtcclxuICAgIGNvbnNvbGUubG9nKHMxKTsgIFxyXG4gIH0gIFxyXG5cclxuXHJcbiAgaGFuZGxlRHJhZ0VuZChpZDpzdHJpbmcpey8vfSxsZWZ0Om51bWJlcix0b3A6bnVtYmVyKXtcclxuICAgIHRoaXMuZmluYWxpemVPYmplY3RDaGFuZ2VzKGlkKTtcclxuICB9XHJcblxyXG4gIC8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgKiBmaW5hbGl6ZSBvYmplY3QgY2hhbmdlcyAocG9zaXRpb24pLiBvYmplY3QgbXVzdCBiZSByZWdpc3RlcmVkIGluIHRoZSBsYXlvdXQgbWFuYWdlclxyXG4gICogb2JqZWN0OiBvYmplY3QgdG8gZmluYWxpemUgIFxyXG4gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cclxuICBmaW5hbGl6ZU9iamVjdENoYW5nZXMoaWQ6c3RyaW5nKTp2b2lkIHtcclxuICAgIGNvbnN0IGl0ZW06TGF5b3V0TWFuYWdlckl0ZW18bnVsbCAgPSB0aGlzLmdldEl0ZW0oaWQpO1xyXG4gICAgaWYoIWl0ZW0pe1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBlbGVtZW50ID0gaXRlbS5lbGVtZW50Py5uYXRpdmVFbGVtZW50O1xyXG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpOyAgXHJcbiAgICBjb25zdCB0b3AgPSBwYXJzZUludChjb21wdXRlZFN0eWxlLnRvcCwgMTApO1xyXG4gICAgY29uc3QgbGVmdCA9IHBhcnNlSW50KGNvbXB1dGVkU3R5bGUubGVmdCwgMTApO1xyXG4gICAgdGhpcy5fc2V0T2JqZWN0Q29uZmlnKGl0ZW0sbGVmdCx0b3ApO1xyXG4gIH1cclxufVxyXG5cclxuIl19
@@ -0,0 +1,70 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class LocalStorageService {
5
+ constructor() {
6
+ this.storageSubject = new BehaviorSubject(null);
7
+ }
8
+ // Set a string value in localStorage
9
+ setItem(key, value) {
10
+ try {
11
+ localStorage.setItem(key, value);
12
+ this.storageSubject.next({ key, value });
13
+ }
14
+ catch (e) {
15
+ console.error('Error saving to localStorage', e);
16
+ }
17
+ }
18
+ // Get a string value from localStorage
19
+ getItem(key) {
20
+ try {
21
+ return localStorage.getItem(key);
22
+ }
23
+ catch (e) {
24
+ console.error('Error reading from localStorage', e);
25
+ return null;
26
+ }
27
+ }
28
+ // Remove an item from localStorage
29
+ removeItem(key) {
30
+ try {
31
+ localStorage.removeItem(key);
32
+ this.storageSubject.next({ key, value: null });
33
+ }
34
+ catch (e) {
35
+ console.error('Error removing from localStorage', e);
36
+ }
37
+ }
38
+ // Clear all items in localStorage
39
+ clear() {
40
+ try {
41
+ localStorage.clear();
42
+ this.storageSubject.next(null);
43
+ }
44
+ catch (e) {
45
+ console.error('Error clearing localStorage', e);
46
+ }
47
+ }
48
+ // Set an object in localStorage
49
+ setObject(key, value) {
50
+ this.setItem(key, JSON.stringify(value));
51
+ }
52
+ // Get an object from localStorage
53
+ getObject(key) {
54
+ const value = this.getItem(key);
55
+ return value ? JSON.parse(value) : null;
56
+ }
57
+ // Watch for changes in localStorage
58
+ watchStorage() {
59
+ return this.storageSubject.asObservable();
60
+ }
61
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: LocalStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
62
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: LocalStorageService, providedIn: 'root' }); }
63
+ }
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: LocalStorageService, decorators: [{
65
+ type: Injectable,
66
+ args: [{
67
+ providedIn: 'root'
68
+ }]
69
+ }], ctorParameters: () => [] });
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwtc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL3NlcnZpY2VzL2xvY2FsLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7O0FBS25ELE1BQU0sT0FBTyxtQkFBbUI7SUFJOUI7UUFGUSxtQkFBYyxHQUFHLElBQUksZUFBZSxDQUF5QyxJQUFJLENBQUMsQ0FBQztJQUUzRSxDQUFDO0lBRWpCLHFDQUFxQztJQUNyQyxPQUFPLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDaEMsSUFBSSxDQUFDO1lBQ0gsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsOEJBQThCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNILENBQUM7SUFFRCx1Q0FBdUM7SUFDdkMsT0FBTyxDQUFDLEdBQVc7UUFDakIsSUFBSSxDQUFDO1lBQ0gsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNwRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsbUNBQW1DO0lBQ25DLFVBQVUsQ0FBQyxHQUFXO1FBQ3BCLElBQUksQ0FBQztZQUNILFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO0lBRUQsa0NBQWtDO0lBQ2xDLEtBQUs7UUFDSCxJQUFJLENBQUM7WUFDSCxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLDZCQUE2QixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0lBRUQsZ0NBQWdDO0lBQ2hDLFNBQVMsQ0FBQyxHQUFXLEVBQUUsS0FBYztRQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELGtDQUFrQztJQUNsQyxTQUFTLENBQUMsR0FBVztRQUNuQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDMUMsQ0FBQztJQUVELG9DQUFvQztJQUNwQyxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzVDLENBQUM7K0dBNURVLG1CQUFtQjttSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9jYWxTdG9yYWdlU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgc3RvcmFnZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHsga2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duIH0gfCBudWxsPihudWxsKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgLy8gU2V0IGEgc3RyaW5nIHZhbHVlIGluIGxvY2FsU3RvcmFnZVxyXG4gIHNldEl0ZW0oa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUpO1xyXG4gICAgICB0aGlzLnN0b3JhZ2VTdWJqZWN0Lm5leHQoeyBrZXksIHZhbHVlIH0pO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzYXZpbmcgdG8gbG9jYWxTdG9yYWdlJywgZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBHZXQgYSBzdHJpbmcgdmFsdWUgZnJvbSBsb2NhbFN0b3JhZ2VcclxuICBnZXRJdGVtKGtleTogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcmVhZGluZyBmcm9tIGxvY2FsU3RvcmFnZScsIGUpO1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFJlbW92ZSBhbiBpdGVtIGZyb20gbG9jYWxTdG9yYWdlXHJcbiAgcmVtb3ZlSXRlbShrZXk6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdHJ5IHtcclxuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcclxuICAgICAgdGhpcy5zdG9yYWdlU3ViamVjdC5uZXh0KHsga2V5LCB2YWx1ZTogbnVsbCB9KTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcmVtb3ZpbmcgZnJvbSBsb2NhbFN0b3JhZ2UnLCBlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIENsZWFyIGFsbCBpdGVtcyBpbiBsb2NhbFN0b3JhZ2VcclxuICBjbGVhcigpOiB2b2lkIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xyXG4gICAgICB0aGlzLnN0b3JhZ2VTdWJqZWN0Lm5leHQobnVsbCk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGNsZWFyaW5nIGxvY2FsU3RvcmFnZScsIGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gU2V0IGFuIG9iamVjdCBpbiBsb2NhbFN0b3JhZ2VcclxuICBzZXRPYmplY3Qoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldEl0ZW0oa2V5LCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xyXG4gIH1cclxuXHJcbiAgLy8gR2V0IGFuIG9iamVjdCBmcm9tIGxvY2FsU3RvcmFnZVxyXG4gIGdldE9iamVjdChrZXk6IHN0cmluZyk6IHVua25vd24ge1xyXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldEl0ZW0oa2V5KTtcclxuICAgIHJldHVybiB2YWx1ZSA/IEpTT04ucGFyc2UodmFsdWUpIDogbnVsbDtcclxuICB9XHJcblxyXG4gIC8vIFdhdGNoIGZvciBjaGFuZ2VzIGluIGxvY2FsU3RvcmFnZVxyXG4gIHdhdGNoU3RvcmFnZSgpOiBPYnNlcnZhYmxlPHsga2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duIH0gfCBudWxsPiB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,28 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class ResizeObserverService {
5
+ constructor() {
6
+ this.rectSize$ = new BehaviorSubject(undefined);
7
+ this.internalRectSize = new DOMRect(1, 1, 1, 1);
8
+ // Observable that components can subscribe to
9
+ this.parentAppRect$ = this.rectSize$.asObservable();
10
+ }
11
+ setSize(newValue) {
12
+ this.rectSize$.next(newValue);
13
+ this.internalRectSize = newValue;
14
+ console.log(`SERVICE:rect size:${newValue.width} ${newValue.height}`);
15
+ }
16
+ getParentAppRect() {
17
+ return this.internalRectSize;
18
+ }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: ResizeObserverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
20
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: ResizeObserverService, providedIn: 'root' }); }
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: ResizeObserverService, decorators: [{
23
+ type: Injectable,
24
+ args: [{
25
+ providedIn: 'root'
26
+ }]
27
+ }], ctorParameters: () => [] });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLW9ic2VydmVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYmltcGx1cy1jb21wb25lbnRzL3NyYy9saWIvc2VydmljZXMvcmVzaXplLW9ic2VydmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDOztBQUtuRCxNQUFNLE9BQU8scUJBQXFCO0lBT2hDO1FBTFEsY0FBUyxHQUF5QyxJQUFJLGVBQWUsQ0FBb0IsU0FBUyxDQUFDLENBQUM7UUFDcEcscUJBQWdCLEdBQVksSUFBSSxPQUFPLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekQsOENBQThDO1FBQ3ZDLG1CQUFjLEdBQW9DLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFdkUsQ0FBQztJQUVWLE9BQU8sQ0FBQyxRQUFpQjtRQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDO1FBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLFFBQVEsQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDOytHQWpCVSxxQkFBcUI7bUhBQXJCLHFCQUFxQixjQUZwQixNQUFNOzs0RkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlc2l6ZU9ic2VydmVyU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgcmVjdFNpemUkOiBCZWhhdmlvclN1YmplY3Q8RE9NUmVjdCB8dW5kZWZpbmVkID4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PERPTVJlY3R8dW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG4gIHByaXZhdGUgaW50ZXJuYWxSZWN0U2l6ZSA6RE9NUmVjdCA9IG5ldyBET01SZWN0KDEsMSwxLDEpO1xyXG4gIC8vIE9ic2VydmFibGUgdGhhdCBjb21wb25lbnRzIGNhbiBzdWJzY3JpYmUgdG9cclxuICBwdWJsaWMgcGFyZW50QXBwUmVjdCQ6IE9ic2VydmFibGU8RE9NUmVjdCB8IHVuZGVmaW5lZD4gPSB0aGlzLnJlY3RTaXplJC5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgcHVibGljIHNldFNpemUobmV3VmFsdWU6IERPTVJlY3QpOiB2b2lkIHtcclxuICAgIHRoaXMucmVjdFNpemUkLm5leHQobmV3VmFsdWUpOyAgXHJcbiAgICB0aGlzLmludGVybmFsUmVjdFNpemUgPSBuZXdWYWx1ZTtcclxuICAgIGNvbnNvbGUubG9nKGBTRVJWSUNFOnJlY3Qgc2l6ZToke25ld1ZhbHVlLndpZHRofSAke25ld1ZhbHVlLmhlaWdodH1gKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRQYXJlbnRBcHBSZWN0ICgpOkRPTVJlY3R7XHJcbiAgICByZXR1cm4gdGhpcy5pbnRlcm5hbFJlY3RTaXplO1xyXG4gIH0gIFxyXG59XHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYmltcGx1cy1jb21wb25lbnRzL3NyYy9saWIvdHlwZXMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIExvY2FsaXplZFN0cmluZ3MgPSB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nOyAvLyBUaGlzIGFsbG93cyBrZXktdmFsdWUgcGFpcnNcbiAgfTtcblxuICBleHBvcnQgaW50ZXJmYWNlIE1lbnVMaXN0VHlwZXtcbiAgJ2FjdGlvbic6IHN0cmluZyAsXG4gICdpZCc6ICAgICBzdHJpbmcgLFxuICAndHlwZSc6ICAgc3RyaW5nICxcbiAgJ2NsYXNzJzogIHN0cmluZyAsICAgIFxuICAndGV4dElkJzogc3RyaW5nICwgIFxuICAndGV4dElkRGlzYWJsZWQnOiBzdHJpbmcsXG4gICdkaXNhYmxlZFRpdGxlJzogc3RyaW5nLFxuICAnY2hlY2tTdWJzY3JpcHRpb24nOiBib29sZWFuLFxuICAnZGV2T3JTdGFnZU9ubHknIDogYm9vbGVhbiwgXG4gICdjbGlja1BvbGljeSc6IHN0cmluZ1xufSJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYmltcGx1cy1jb21wb25lbnRzL3NyYy9saWIvdHlwZXMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIExvY2FsaXplZFN0cmluZ3MgPSB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7IC8vIFRoaXMgYWxsb3dzIGtleS12YWx1ZSBwYWlyc1xyXG4gIH07XHJcblxyXG4gIGV4cG9ydCBpbnRlcmZhY2UgTWVudUxpc3RUeXBle1xyXG4gICdhY3Rpb24nOiBzdHJpbmcgLFxyXG4gICdpZCc6ICAgICBzdHJpbmcgLFxyXG4gICd0eXBlJzogICBzdHJpbmcgLFxyXG4gICdjbGFzcyc6ICBzdHJpbmcgLCAgICBcclxuICAndGV4dElkJzogc3RyaW5nICwgIFxyXG4gICd0ZXh0SWREaXNhYmxlZCc6IHN0cmluZyxcclxuICAnZGlzYWJsZWRUaXRsZSc6IHN0cmluZyxcclxuICAnY2hlY2tTdWJzY3JpcHRpb24nOiBib29sZWFuLFxyXG4gICdkZXZPclN0YWdlT25seScgOiBib29sZWFuLCBcclxuICAnY2xpY2tQb2xpY3knOiBzdHJpbmdcclxufSJdfQ==
@@ -69,4 +69,4 @@ export class FilterString {
69
69
  };
70
70
  }
71
71
  }
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyU3RyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL3V0aWxzL2ZpbHRlclN0cmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLGtCQUFrQixHQUFHLDZCQUE2QixDQUFDO0FBRXpELE1BQU0sT0FBTyxZQUFZO0lBRXZCLFlBQVksZUFBdUIsRUFBRSxFQUFFLG9CQUE0QixDQUFDO1FBUzVELGtCQUFhLEdBQVksRUFBRSxDQUFDO1FBQzVCLHVCQUFrQixHQUFZLENBQUMsQ0FBQztRQVR0QyxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztRQUNsQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsaUJBQWlCLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBS0Qsa0JBQWtCLENBQUMsUUFBNEI7UUFDN0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLGtCQUFrQixFQUFFLENBQUM7UUFFaEQsS0FBSSxNQUFNLFNBQVMsSUFBSSxRQUFRLEVBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsYUFBYSxJQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFDMUMsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRUQsbUNBQW1DLENBQUMsUUFBNEI7UUFDOUQsTUFBTSxjQUFjLEdBQTJCLEVBQUUsQ0FBQztRQUNsRCxLQUFJLE1BQU0sU0FBUyxJQUFJLFFBQVEsRUFBQyxDQUFDO1lBQy9CLElBQUcsU0FBUyxDQUFDLEVBQUUsSUFBSSxTQUFTLENBQUMsSUFBSTtnQkFDL0IsY0FBYyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQ2xELENBQUM7UUFFRCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsaUJBQW9ELFNBQVM7UUFDNUUsTUFBTSxRQUFRLEdBQXVCLEVBQUUsQ0FBQztRQUV4QyxJQUFJLDJCQUEyQixHQUFHLEtBQUssQ0FBQztRQUV4QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxLQUFJLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBQyxDQUFDO1lBQ3ZCLElBQUcsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUMsQ0FBQztnQkFDcEIsU0FBUztZQUNYLENBQUM7WUFFRCxJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLDJCQUEyQixFQUFDLENBQUM7Z0JBQ3BFLDJCQUEyQixHQUFHLElBQUksQ0FBQztnQkFDbkMsU0FBUztZQUNYLENBQUM7WUFFRCxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztZQUNoRSxJQUFHLFFBQVEsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLGtCQUFrQixFQUFDLENBQUM7Z0JBQzlDLE1BQU07WUFDUixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxTQUFpQixFQUFFLGlCQUFvRCxTQUFTO1FBQzVHLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQztRQUNyQixJQUFJLEVBQUUsR0FBd0IsU0FBUyxDQUFDO1FBRXhDLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRCxNQUFNLGtCQUFrQixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFbEQsSUFBRyxpQkFBaUIsSUFBSSxDQUFDLElBQUksa0JBQWtCLElBQUcsQ0FBQyxJQUFJLGtCQUFrQixHQUFHLGlCQUFpQixFQUFDLENBQUM7WUFDN0YsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsR0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztZQUM1RSxFQUFFLEdBQUcsVUFBVSxDQUFDO1lBQ2hCLElBQUcsVUFBVSxJQUFJLGNBQWMsRUFBQyxDQUFDO2dCQUMvQixNQUFNLGNBQWMsR0FBRyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ2xELElBQUcsY0FBYyxFQUFDLENBQUM7b0JBQ2pCLElBQUksR0FBRyxjQUFjLENBQUM7Z0JBQ3hCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQzthQUFLLElBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUFDO1lBQ2hDLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFFRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUk7WUFDVixTQUFTLEVBQUcsS0FBSyxHQUFDLFNBQVM7WUFDM0IsRUFBRSxFQUFHLEVBQUU7U0FDUixDQUFBO0lBQ0gsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsdGVyQ3JpdGVyaXVtIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvYmltcGx1cy1vYmplY3QtbmF2aWdhdG9yL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci5pbnRlcmZhY2VcIjtcblxuY29uc3QgRGl2c2lvbklEU3Vic3RyaW5nID0gJ3RhYkF0dHJpYkVsZW1lbnQuRGl2aXNpb25JRCc7XG5cbmV4cG9ydCBjbGFzcyBGaWx0ZXJTdHJpbmcge1xuXG4gIGNvbnN0cnVjdG9yKGZpbHRlclN0cmluZzogc3RyaW5nID0gXCJcIiwgbWF4RmlsdGVyQ3JpdGVyaWE6IG51bWJlciA9IDUpe1xuICAgIHRoaXMuX2ZpbHRlclN0cmluZyA9IGZpbHRlclN0cmluZztcbiAgICB0aGlzLl9tYXhGaWx0ZXJDcml0ZXJpYSA9IG1heEZpbHRlckNyaXRlcmlhO1xuICB9XG5cbiAgZ2V0IGZpbHRlclN0cmluZygpe1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJTdHJpbmc7XG4gIH1cblxuICBwcml2YXRlIF9maWx0ZXJTdHJpbmcgOiBzdHJpbmcgPSBcIlwiO1xuICBwcml2YXRlIF9tYXhGaWx0ZXJDcml0ZXJpYSA6IG51bWJlciA9IDU7XG5cbiAgZnJvbUZpbHRlckNyaXRlcmlhKGNyaXRlcmlhIDogRmlsdGVyQ3JpdGVyaXVtW10pe1xuICAgIHRoaXMuX2ZpbHRlclN0cmluZyA9IGBbSV0ke0RpdnNpb25JRFN1YnN0cmluZ31gO1xuICAgIFxuICAgIGZvcihjb25zdCBjcml0ZXJpdW0gb2YgY3JpdGVyaWEpe1xuICAgICAgdGhpcy5fZmlsdGVyU3RyaW5nKz1jcml0ZXJpdW0uc3ViU3RyaW5nO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9maWx0ZXJTdHJpbmc7XG4gIH1cblxuICBnZXRSZWFkYWJsZVZhbHVlc0Zyb21GaWx0ZXJDcml0ZXJpYShjcml0ZXJpYSA6IEZpbHRlckNyaXRlcml1bVtdKSA6IFJlY29yZDxzdHJpbmcsc3RyaW5nPntcbiAgICBjb25zdCByZWFkYWJsZVZhbHVlcyA6IFJlY29yZDxzdHJpbmcsc3RyaW5nPiA9IHt9O1xuICAgIGZvcihjb25zdCBjcml0ZXJpdW0gb2YgY3JpdGVyaWEpe1xuICAgICAgaWYoY3JpdGVyaXVtLmlkICYmIGNyaXRlcml1bS5uYW1lKVxuICAgICAgICByZWFkYWJsZVZhbHVlc1tjcml0ZXJpdW0uaWRdID0gY3JpdGVyaXVtLm5hbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlYWRhYmxlVmFsdWVzO1xuICB9XG5cbiAgdG9GaWx0ZXJDcml0ZXJpYShyZWFkYWJsZVZhbHVlczogUmVjb3JkPHN0cmluZyxzdHJpbmc+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKTogRmlsdGVyQ3JpdGVyaXVtW117XG4gICAgY29uc3QgY3JpdGVyaWEgOiBGaWx0ZXJDcml0ZXJpdW1bXSA9IFtdO1xuXG4gICAgbGV0IGZpcnN0TW9kZWxJZENyaXRlcmlhU2tpcHBlZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgcGFydHMgPSB0aGlzLl9maWx0ZXJTdHJpbmcuc3BsaXQoJ1tJXScpO1xuICAgIGZvcihjb25zdCBwYXJ0IG9mIHBhcnRzKXtcbiAgICAgIGlmKHBhcnQubGVuZ3RoID09PSAwKXtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmKHBhcnQuaW5jbHVkZXMoRGl2c2lvbklEU3Vic3RyaW5nKSAmJiAhZmlyc3RNb2RlbElkQ3JpdGVyaWFTa2lwcGVkKXtcbiAgICAgICAgZmlyc3RNb2RlbElkQ3JpdGVyaWFTa2lwcGVkID0gdHJ1ZTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNyaXRlcmlhLnB1c2godGhpcy5fcGFyc2VGaWx0ZXJTdWJzdHJpbmcocGFydCwgcmVhZGFibGVWYWx1ZXMpKTtcbiAgICAgIGlmKGNyaXRlcmlhLmxlbmd0aCA9PT0gdGhpcy5fbWF4RmlsdGVyQ3JpdGVyaWEpe1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY3JpdGVyaWE7XG4gIH1cblxuICBwcml2YXRlIF9wYXJzZUZpbHRlclN1YnN0cmluZyhzdWJTdHJpbmc6IHN0cmluZywgcmVhZGFibGVWYWx1ZXM6IFJlY29yZDxzdHJpbmcsc3RyaW5nPiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCk6IEZpbHRlckNyaXRlcml1bXtcbiAgICBsZXQgbmFtZSA9IHN1YlN0cmluZztcbiAgICBsZXQgaWQgOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBpbmRleE9wZW5CcmFja2V0cyA9IHN1YlN0cmluZy5pbmRleE9mKCdbJyk7XG4gICAgY29uc3QgaW5kZXhDbG9zZUJyYWNrZXRzID0gc3ViU3RyaW5nLmluZGV4T2YoJ10nKTtcblxuICAgIGlmKGluZGV4T3BlbkJyYWNrZXRzID49IDAgJiYgaW5kZXhDbG9zZUJyYWNrZXRzID49MCAmJiBpbmRleENsb3NlQnJhY2tldHMgPiBpbmRleE9wZW5CcmFja2V0cyl7XG4gICAgICBjb25zdCByZWFkYWJsZUlkID0gc3ViU3RyaW5nLnNsaWNlKGluZGV4T3BlbkJyYWNrZXRzKzEsIGluZGV4Q2xvc2VCcmFja2V0cyk7XG4gICAgICBpZCA9IHJlYWRhYmxlSWQ7XG4gICAgICBpZihyZWFkYWJsZUlkICYmIHJlYWRhYmxlVmFsdWVzKXtcbiAgICAgICAgY29uc3QgcmVhZGFibGVTdHJpbmcgPSByZWFkYWJsZVZhbHVlc1tyZWFkYWJsZUlkXTtcbiAgICAgICAgaWYocmVhZGFibGVTdHJpbmcpe1xuICAgICAgICAgIG5hbWUgPSByZWFkYWJsZVN0cmluZztcbiAgICAgICAgfVxuICAgICAgfSAgICAgIFxuICAgIH1lbHNlIGlmKHN1YlN0cmluZy5pbmNsdWRlcygnLicpKXtcbiAgICAgIGNvbnN0IHNwbGl0dGVkID0gc3ViU3RyaW5nLnNwbGl0KCcuJyk7XG4gICAgICBuYW1lID0gc3BsaXR0ZWRbc3BsaXR0ZWQubGVuZ3RoLTFdO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgc3ViU3RyaW5nIDogXCJbSV1cIitzdWJTdHJpbmcsXG4gICAgICBpZCA6IGlkXG4gICAgfVxuICB9XG5cbn1cbiJdfQ==
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyU3RyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL3V0aWxzL2ZpbHRlclN0cmluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLGtCQUFrQixHQUFHLDZCQUE2QixDQUFDO0FBRXpELE1BQU0sT0FBTyxZQUFZO0lBRXZCLFlBQVksZUFBdUIsRUFBRSxFQUFFLG9CQUE0QixDQUFDO1FBUzVELGtCQUFhLEdBQVksRUFBRSxDQUFDO1FBQzVCLHVCQUFrQixHQUFZLENBQUMsQ0FBQztRQVR0QyxJQUFJLENBQUMsYUFBYSxHQUFHLFlBQVksQ0FBQztRQUNsQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsaUJBQWlCLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBS0Qsa0JBQWtCLENBQUMsUUFBNEI7UUFDN0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLGtCQUFrQixFQUFFLENBQUM7UUFFaEQsS0FBSSxNQUFNLFNBQVMsSUFBSSxRQUFRLEVBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsYUFBYSxJQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUM7UUFDMUMsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRUQsbUNBQW1DLENBQUMsUUFBNEI7UUFDOUQsTUFBTSxjQUFjLEdBQTJCLEVBQUUsQ0FBQztRQUNsRCxLQUFJLE1BQU0sU0FBUyxJQUFJLFFBQVEsRUFBQyxDQUFDO1lBQy9CLElBQUcsU0FBUyxDQUFDLEVBQUUsSUFBSSxTQUFTLENBQUMsSUFBSTtnQkFDL0IsY0FBYyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQ2xELENBQUM7UUFFRCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsaUJBQW9ELFNBQVM7UUFDNUUsTUFBTSxRQUFRLEdBQXVCLEVBQUUsQ0FBQztRQUV4QyxJQUFJLDJCQUEyQixHQUFHLEtBQUssQ0FBQztRQUV4QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxLQUFJLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBQyxDQUFDO1lBQ3ZCLElBQUcsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUMsQ0FBQztnQkFDcEIsU0FBUztZQUNYLENBQUM7WUFFRCxJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLDJCQUEyQixFQUFDLENBQUM7Z0JBQ3BFLDJCQUEyQixHQUFHLElBQUksQ0FBQztnQkFDbkMsU0FBUztZQUNYLENBQUM7WUFFRCxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztZQUNoRSxJQUFHLFFBQVEsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLGtCQUFrQixFQUFDLENBQUM7Z0JBQzlDLE1BQU07WUFDUixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxTQUFpQixFQUFFLGlCQUFvRCxTQUFTO1FBQzVHLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQztRQUNyQixJQUFJLEVBQUUsR0FBd0IsU0FBUyxDQUFDO1FBRXhDLE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRCxNQUFNLGtCQUFrQixHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFbEQsSUFBRyxpQkFBaUIsSUFBSSxDQUFDLElBQUksa0JBQWtCLElBQUcsQ0FBQyxJQUFJLGtCQUFrQixHQUFHLGlCQUFpQixFQUFDLENBQUM7WUFDN0YsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsR0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztZQUM1RSxFQUFFLEdBQUcsVUFBVSxDQUFDO1lBQ2hCLElBQUcsVUFBVSxJQUFJLGNBQWMsRUFBQyxDQUFDO2dCQUMvQixNQUFNLGNBQWMsR0FBRyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ2xELElBQUcsY0FBYyxFQUFDLENBQUM7b0JBQ2pCLElBQUksR0FBRyxjQUFjLENBQUM7Z0JBQ3hCLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQzthQUFLLElBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUFDO1lBQ2hDLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLENBQUM7UUFFRCxPQUFPO1lBQ0wsSUFBSSxFQUFFLElBQUk7WUFDVixTQUFTLEVBQUcsS0FBSyxHQUFDLFNBQVM7WUFDM0IsRUFBRSxFQUFHLEVBQUU7U0FDUixDQUFBO0lBQ0gsQ0FBQztDQUVGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmlsdGVyQ3JpdGVyaXVtIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvYmltcGx1cy1vYmplY3QtbmF2aWdhdG9yL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci5pbnRlcmZhY2VcIjtcclxuXHJcbmNvbnN0IERpdnNpb25JRFN1YnN0cmluZyA9ICd0YWJBdHRyaWJFbGVtZW50LkRpdmlzaW9uSUQnO1xyXG5cclxuZXhwb3J0IGNsYXNzIEZpbHRlclN0cmluZyB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGZpbHRlclN0cmluZzogc3RyaW5nID0gXCJcIiwgbWF4RmlsdGVyQ3JpdGVyaWE6IG51bWJlciA9IDUpe1xyXG4gICAgdGhpcy5fZmlsdGVyU3RyaW5nID0gZmlsdGVyU3RyaW5nO1xyXG4gICAgdGhpcy5fbWF4RmlsdGVyQ3JpdGVyaWEgPSBtYXhGaWx0ZXJDcml0ZXJpYTtcclxuICB9XHJcblxyXG4gIGdldCBmaWx0ZXJTdHJpbmcoKXtcclxuICAgIHJldHVybiB0aGlzLl9maWx0ZXJTdHJpbmc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9maWx0ZXJTdHJpbmcgOiBzdHJpbmcgPSBcIlwiO1xyXG4gIHByaXZhdGUgX21heEZpbHRlckNyaXRlcmlhIDogbnVtYmVyID0gNTtcclxuXHJcbiAgZnJvbUZpbHRlckNyaXRlcmlhKGNyaXRlcmlhIDogRmlsdGVyQ3JpdGVyaXVtW10pe1xyXG4gICAgdGhpcy5fZmlsdGVyU3RyaW5nID0gYFtJXSR7RGl2c2lvbklEU3Vic3RyaW5nfWA7XHJcbiAgICBcclxuICAgIGZvcihjb25zdCBjcml0ZXJpdW0gb2YgY3JpdGVyaWEpe1xyXG4gICAgICB0aGlzLl9maWx0ZXJTdHJpbmcrPWNyaXRlcml1bS5zdWJTdHJpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlclN0cmluZztcclxuICB9XHJcblxyXG4gIGdldFJlYWRhYmxlVmFsdWVzRnJvbUZpbHRlckNyaXRlcmlhKGNyaXRlcmlhIDogRmlsdGVyQ3JpdGVyaXVtW10pIDogUmVjb3JkPHN0cmluZyxzdHJpbmc+e1xyXG4gICAgY29uc3QgcmVhZGFibGVWYWx1ZXMgOiBSZWNvcmQ8c3RyaW5nLHN0cmluZz4gPSB7fTtcclxuICAgIGZvcihjb25zdCBjcml0ZXJpdW0gb2YgY3JpdGVyaWEpe1xyXG4gICAgICBpZihjcml0ZXJpdW0uaWQgJiYgY3JpdGVyaXVtLm5hbWUpXHJcbiAgICAgICAgcmVhZGFibGVWYWx1ZXNbY3JpdGVyaXVtLmlkXSA9IGNyaXRlcml1bS5uYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZWFkYWJsZVZhbHVlcztcclxuICB9XHJcblxyXG4gIHRvRmlsdGVyQ3JpdGVyaWEocmVhZGFibGVWYWx1ZXM6IFJlY29yZDxzdHJpbmcsc3RyaW5nPiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCk6IEZpbHRlckNyaXRlcml1bVtde1xyXG4gICAgY29uc3QgY3JpdGVyaWEgOiBGaWx0ZXJDcml0ZXJpdW1bXSA9IFtdO1xyXG5cclxuICAgIGxldCBmaXJzdE1vZGVsSWRDcml0ZXJpYVNraXBwZWQgPSBmYWxzZTtcclxuXHJcbiAgICBjb25zdCBwYXJ0cyA9IHRoaXMuX2ZpbHRlclN0cmluZy5zcGxpdCgnW0ldJyk7XHJcbiAgICBmb3IoY29uc3QgcGFydCBvZiBwYXJ0cyl7XHJcbiAgICAgIGlmKHBhcnQubGVuZ3RoID09PSAwKXtcclxuICAgICAgICBjb250aW51ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYocGFydC5pbmNsdWRlcyhEaXZzaW9uSURTdWJzdHJpbmcpICYmICFmaXJzdE1vZGVsSWRDcml0ZXJpYVNraXBwZWQpe1xyXG4gICAgICAgIGZpcnN0TW9kZWxJZENyaXRlcmlhU2tpcHBlZCA9IHRydWU7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNyaXRlcmlhLnB1c2godGhpcy5fcGFyc2VGaWx0ZXJTdWJzdHJpbmcocGFydCwgcmVhZGFibGVWYWx1ZXMpKTtcclxuICAgICAgaWYoY3JpdGVyaWEubGVuZ3RoID09PSB0aGlzLl9tYXhGaWx0ZXJDcml0ZXJpYSl7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY3JpdGVyaWE7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wYXJzZUZpbHRlclN1YnN0cmluZyhzdWJTdHJpbmc6IHN0cmluZywgcmVhZGFibGVWYWx1ZXM6IFJlY29yZDxzdHJpbmcsc3RyaW5nPiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZCk6IEZpbHRlckNyaXRlcml1bXtcclxuICAgIGxldCBuYW1lID0gc3ViU3RyaW5nO1xyXG4gICAgbGV0IGlkIDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG5cclxuICAgIGNvbnN0IGluZGV4T3BlbkJyYWNrZXRzID0gc3ViU3RyaW5nLmluZGV4T2YoJ1snKTtcclxuICAgIGNvbnN0IGluZGV4Q2xvc2VCcmFja2V0cyA9IHN1YlN0cmluZy5pbmRleE9mKCddJyk7XHJcblxyXG4gICAgaWYoaW5kZXhPcGVuQnJhY2tldHMgPj0gMCAmJiBpbmRleENsb3NlQnJhY2tldHMgPj0wICYmIGluZGV4Q2xvc2VCcmFja2V0cyA+IGluZGV4T3BlbkJyYWNrZXRzKXtcclxuICAgICAgY29uc3QgcmVhZGFibGVJZCA9IHN1YlN0cmluZy5zbGljZShpbmRleE9wZW5CcmFja2V0cysxLCBpbmRleENsb3NlQnJhY2tldHMpO1xyXG4gICAgICBpZCA9IHJlYWRhYmxlSWQ7XHJcbiAgICAgIGlmKHJlYWRhYmxlSWQgJiYgcmVhZGFibGVWYWx1ZXMpe1xyXG4gICAgICAgIGNvbnN0IHJlYWRhYmxlU3RyaW5nID0gcmVhZGFibGVWYWx1ZXNbcmVhZGFibGVJZF07XHJcbiAgICAgICAgaWYocmVhZGFibGVTdHJpbmcpe1xyXG4gICAgICAgICAgbmFtZSA9IHJlYWRhYmxlU3RyaW5nO1xyXG4gICAgICAgIH1cclxuICAgICAgfSAgICAgIFxyXG4gICAgfWVsc2UgaWYoc3ViU3RyaW5nLmluY2x1ZGVzKCcuJykpe1xyXG4gICAgICBjb25zdCBzcGxpdHRlZCA9IHN1YlN0cmluZy5zcGxpdCgnLicpO1xyXG4gICAgICBuYW1lID0gc3BsaXR0ZWRbc3BsaXR0ZWQubGVuZ3RoLTFdO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5hbWU6IG5hbWUsXHJcbiAgICAgIHN1YlN0cmluZyA6IFwiW0ldXCIrc3ViU3RyaW5nLFxyXG4gICAgICBpZCA6IGlkXHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=
@@ -32,4 +32,4 @@ export class FilterStructureFetcher {
32
32
  return observeable;
33
33
  }
34
34
  }
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyU3RydWN0dXJlRmV0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi91dGlscy9maWx0ZXJTdHJ1Y3R1cmVGZXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYyxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV4RCxNQUFNLE9BQU8sc0JBQXNCO0lBRW5DLE1BQU0sQ0FBQyx1Q0FBdUMsQ0FBQyxTQUFpQixFQUFFLE1BQTJCLEVBQUUsZUFBcUMsRUFBRSxHQUFnQjtRQUNwSixNQUFNLFdBQVcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDL0IsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRTFDLElBQUksV0FBVyxHQUE2RCxJQUFJLENBQUM7UUFFakYsSUFBRyxDQUFDLFdBQVcsRUFBQyxDQUFDO1lBQ2YsV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDdkIsSUFBRyxDQUFDLFlBQVksRUFBRSxFQUFFLEVBQUMsQ0FBQztvQkFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO2dCQUN2RCxDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsMkJBQTJCLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDOUcsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtRQUNILENBQUM7YUFBSSxDQUFDO1lBQ0YsV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMvRSxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3BCLElBQUcsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFDLENBQUM7b0JBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQztnQkFDOUQsQ0FBQztnQkFFRCxRQUFRLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFFeEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkcsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUN2QixJQUFHLENBQUMsWUFBWSxFQUFFLEVBQUUsRUFBQyxDQUFDO29CQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7Z0JBQ3ZELENBQUM7Z0JBQ0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQywyQkFBMkIsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzlHLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO29CQUNuQixHQUFHLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDbkMsT0FBTyxZQUFZLENBQUM7Z0JBQ3RCLENBQUMsQ0FBQyxDQUNILENBQUM7WUFDSixDQUFDLENBQUMsQ0FDTCxDQUFBO1FBQ0gsQ0FBQztRQUNELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7Q0FFQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFdlYlNkayBmcm9tICdiaW1wbHVzLXdlYnNkayc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjb25jYXRNYXAsIGZyb20sIG1hcCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY2xhc3MgRmlsdGVyU3RydWN0dXJlRmV0Y2hlciB7XG5cbnN0YXRpYyBmZXRjaE9iamVjdEZpbHRlclN0cnVjdHVyZUZyb21TZWxlY3Rpb24ocHJvamVjdElkOiBzdHJpbmcsIGZpbHRlcjogV2ViU2RrLk9iamVjdEZpbHRlciwgc2VsZWN0aW9uT2JqZWN0IDogV2ViU2RrLkV4cG9ydE9iamVjdCwgYXBpIDogV2ViU2RrLkFwaSk6IE9ic2VydmFibGU8V2ViU2RrLk9iamVjdEZpbHRlclN0cnVjdHVyZVJlc3BvbnNlPntcbiAgY29uc3QgaXNUZW1wb3JhcnkgPSAhZmlsdGVyLmlkO1xuICBsZXQgZmlsdGVySWQgPSBmaWx0ZXIuaWQgPyBmaWx0ZXIuaWQgOiBcIlwiO1xuXG4gIGxldCBvYnNlcnZlYWJsZSA6IE9ic2VydmFibGU8V2ViU2RrLk9iamVjdEZpbHRlclN0cnVjdHVyZVJlc3BvbnNlPiB8IG51bGwgPSBudWxsO1xuXG4gIGlmKCFpc1RlbXBvcmFyeSl7XG4gICAgb2JzZXJ2ZWFibGUgPSBmcm9tKGFwaS5leHBvcnRTZXJ2aWNlLmNyZWF0ZUV4cG9ydFNlbGVjdGlvbihwcm9qZWN0SWQsIEpTT04uc3RyaW5naWZ5KHNlbGVjdGlvbk9iamVjdCkpKS5waXBlKFxuICAgICAgY29uY2F0TWFwKHNlbGVjdGlvbk9iaiA9PiB7XG4gICAgICAgIGlmKCFzZWxlY3Rpb25PYmo/LmlkKXtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBjcmVhdGUgc2VsZWN0aW9uIG9iamVjdCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmcm9tKGFwaS5vYmplY3RGaWx0ZXJzLmdldFNlbGVjdGlvbkZpbHRlcmVkT2JqZWN0cyhzZWxlY3Rpb25PYmouaWQsIGZpbHRlcklkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCkpO1xuICAgICAgfSlcbiAgICApXG4gIH1lbHNle1xuICAgICAgb2JzZXJ2ZWFibGUgPSBmcm9tKGFwaS5vYmplY3RGaWx0ZXJzLnBvc3QoSlNPTi5zdHJpbmdpZnkoZmlsdGVyKSxwcm9qZWN0SWQpKS5waXBlKFxuICAgICAgICBjb25jYXRNYXAoZmlsdGVyT2JqID0+IHtcbiAgICAgICAgICBpZighZmlsdGVyT2JqPy5pZCl7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBjcmVhdGUgdGVtcG9yYXJ5IGZpbHRlciBvYmplY3QnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmaWx0ZXJJZCA9IGZpbHRlck9iai5pZDtcblxuICAgICAgICAgIHJldHVybiBmcm9tKGFwaS5leHBvcnRTZXJ2aWNlLmNyZWF0ZUV4cG9ydFNlbGVjdGlvbihwcm9qZWN0SWQsIEpTT04uc3RyaW5naWZ5KHNlbGVjdGlvbk9iamVjdCkpKTtcbiAgICAgICAgfSksXG4gICAgICAgIGNvbmNhdE1hcChzZWxlY3Rpb25PYmogPT4ge1xuICAgICAgICAgIGlmKCFzZWxlY3Rpb25PYmo/LmlkKXtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGNyZWF0ZSBzZWxlY3Rpb24gb2JqZWN0Jyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmcm9tKGFwaS5vYmplY3RGaWx0ZXJzLmdldFNlbGVjdGlvbkZpbHRlcmVkT2JqZWN0cyhzZWxlY3Rpb25PYmouaWQsIGZpbHRlcklkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCkpLnBpcGUoXG4gICAgICAgICAgICBtYXAoKGZpbHRlclJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICBhcGkub2JqZWN0RmlsdGVycy5kZWxldGUoZmlsdGVySWQpO1xuICAgICAgICAgICAgICByZXR1cm4gZmlsdGVyUmVzdWx0O1xuICAgICAgICAgICAgfSkgICAgXG4gICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICApXG4gIH1cbiAgcmV0dXJuIG9ic2VydmVhYmxlO1xufVxuXG59XG4iXX0=
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyU3RydWN0dXJlRmV0Y2hlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi91dGlscy9maWx0ZXJTdHJ1Y3R1cmVGZXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYyxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV4RCxNQUFNLE9BQU8sc0JBQXNCO0lBRWpDLE1BQU0sQ0FBQyx1Q0FBdUMsQ0FBQyxTQUFpQixFQUFFLE1BQTJCLEVBQUUsZUFBb0MsRUFBRSxHQUFlO1FBQ2xKLE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUMvQixJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFMUMsSUFBSSxXQUFXLEdBQTRELElBQUksQ0FBQztRQUVoRixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzFHLFNBQVMsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLEVBQUUsQ0FBQztvQkFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO2dCQUN2RCxDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsMkJBQTJCLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDOUcsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sV0FBVyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUNoRixTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUM7b0JBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQztnQkFDOUQsQ0FBQztnQkFFRCxRQUFRLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFFeEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkcsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUN2QixJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsRUFBRSxDQUFDO29CQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7Z0JBQ3ZELENBQUM7Z0JBQ0QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQywyQkFBMkIsQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQzlHLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO29CQUNuQixHQUFHLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDbkMsT0FBTyxZQUFZLENBQUM7Z0JBQ3RCLENBQUMsQ0FBQyxDQUNILENBQUM7WUFDSixDQUFDLENBQUMsQ0FDSCxDQUFBO1FBQ0gsQ0FBQztRQUNELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7Q0FFRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFdlYlNkayBmcm9tICdiaW1wbHVzLXdlYnNkayc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGNvbmNhdE1hcCwgZnJvbSwgbWFwIH0gZnJvbSAncnhqcyc7XHJcblxyXG5leHBvcnQgY2xhc3MgRmlsdGVyU3RydWN0dXJlRmV0Y2hlciB7XHJcblxyXG4gIHN0YXRpYyBmZXRjaE9iamVjdEZpbHRlclN0cnVjdHVyZUZyb21TZWxlY3Rpb24ocHJvamVjdElkOiBzdHJpbmcsIGZpbHRlcjogV2ViU2RrLk9iamVjdEZpbHRlciwgc2VsZWN0aW9uT2JqZWN0OiBXZWJTZGsuRXhwb3J0T2JqZWN0LCBhcGk6IFdlYlNkay5BcGkpOiBPYnNlcnZhYmxlPFdlYlNkay5PYmplY3RGaWx0ZXJTdHJ1Y3R1cmVSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaXNUZW1wb3JhcnkgPSAhZmlsdGVyLmlkO1xyXG4gICAgbGV0IGZpbHRlcklkID0gZmlsdGVyLmlkID8gZmlsdGVyLmlkIDogXCJcIjtcclxuXHJcbiAgICBsZXQgb2JzZXJ2ZWFibGU6IE9ic2VydmFibGU8V2ViU2RrLk9iamVjdEZpbHRlclN0cnVjdHVyZVJlc3BvbnNlPiB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIGlmICghaXNUZW1wb3JhcnkpIHtcclxuICAgICAgb2JzZXJ2ZWFibGUgPSBmcm9tKGFwaS5leHBvcnRTZXJ2aWNlLmNyZWF0ZUV4cG9ydFNlbGVjdGlvbihwcm9qZWN0SWQsIEpTT04uc3RyaW5naWZ5KHNlbGVjdGlvbk9iamVjdCkpKS5waXBlKFxyXG4gICAgICAgIGNvbmNhdE1hcChzZWxlY3Rpb25PYmogPT4ge1xyXG4gICAgICAgICAgaWYgKCFzZWxlY3Rpb25PYmo/LmlkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGNyZWF0ZSBzZWxlY3Rpb24gb2JqZWN0Jyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gZnJvbShhcGkub2JqZWN0RmlsdGVycy5nZXRTZWxlY3Rpb25GaWx0ZXJlZE9iamVjdHMoc2VsZWN0aW9uT2JqLmlkLCBmaWx0ZXJJZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQpKTtcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBvYnNlcnZlYWJsZSA9IGZyb20oYXBpLm9iamVjdEZpbHRlcnMucG9zdChKU09OLnN0cmluZ2lmeShmaWx0ZXIpLCBwcm9qZWN0SWQpKS5waXBlKFxyXG4gICAgICAgIGNvbmNhdE1hcChmaWx0ZXJPYmogPT4ge1xyXG4gICAgICAgICAgaWYgKCFmaWx0ZXJPYmo/LmlkKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsdGVyIG9iamVjdCcpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGZpbHRlcklkID0gZmlsdGVyT2JqLmlkO1xyXG5cclxuICAgICAgICAgIHJldHVybiBmcm9tKGFwaS5leHBvcnRTZXJ2aWNlLmNyZWF0ZUV4cG9ydFNlbGVjdGlvbihwcm9qZWN0SWQsIEpTT04uc3RyaW5naWZ5KHNlbGVjdGlvbk9iamVjdCkpKTtcclxuICAgICAgICB9KSxcclxuICAgICAgICBjb25jYXRNYXAoc2VsZWN0aW9uT2JqID0+IHtcclxuICAgICAgICAgIGlmICghc2VsZWN0aW9uT2JqPy5pZCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBjcmVhdGUgc2VsZWN0aW9uIG9iamVjdCcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIGZyb20oYXBpLm9iamVjdEZpbHRlcnMuZ2V0U2VsZWN0aW9uRmlsdGVyZWRPYmplY3RzKHNlbGVjdGlvbk9iai5pZCwgZmlsdGVySWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKSkucGlwZShcclxuICAgICAgICAgICAgbWFwKChmaWx0ZXJSZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICBhcGkub2JqZWN0RmlsdGVycy5kZWxldGUoZmlsdGVySWQpO1xyXG4gICAgICAgICAgICAgIHJldHVybiBmaWx0ZXJSZXN1bHQ7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0pXHJcbiAgICAgIClcclxuICAgIH1cclxuICAgIHJldHVybiBvYnNlcnZlYWJsZTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
@@ -24,4 +24,4 @@ export function fireEvent(source, eventName, data = null) {
24
24
  _source[eventName].emit(data);
25
25
  }
26
26
  }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYmltcGx1cy1jb21wb25lbnRzL3NyYy9saWIvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0E7Ozs7Ozs7Ozs7NEVBVTRFO0FBQzVFLE1BQU0sVUFBVSxTQUFTLENBQUMsTUFBZSxFQUFFLFNBQWlCLEVBQUUsT0FBZ0IsSUFBSTtJQUM5RSxJQUFLLENBQUMsU0FBUyxFQUFHLENBQUM7UUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLHdFQUF3RSxDQUFDLENBQUM7UUFDeEYsT0FBTztJQUNYLENBQUM7SUFDRCxxRUFBcUU7SUFDckUsTUFBTSxPQUFPLEdBQUcsQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLElBQUksT0FBTyxNQUFNLENBQUMsT0FBTyxLQUFLLFFBQVEsSUFBSyxNQUFNLENBQUMsT0FBeUIsQ0FBQztJQUNqSCxJQUFJLE9BQU8sSUFBSSxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUN2RCxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUksTUFBaUIsQ0FBQztJQUNuQyxJQUFJLFNBQVMsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN2QixPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gRGVmaW5lIHRoZSB0eXBlIG9mIHRoZSB3aW5kb3cuQmltUGx1cyBvYmplY3RcbmludGVyZmFjZSBCaW1QbHVzT2JqZWN0IHtcbiAgICBba2V5OiBzdHJpbmddOiAoZGF0YURldGFpbDogeyBkZXRhaWw6IHVua25vd24gfSkgPT4gdm9pZDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlIHtcbiAgW2tleTogc3RyaW5nXTogeyBlbWl0OiAoYXJnMDogdW5rbm93bikgPT4gdm9pZDsgfTtcbn1cblxuXG4vKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuKiBmaXJlIGV2ZW50IGZyb20gY29tcG9uZW50IGluIHR3byB3YXlzIDogXG4gIC0gZmlyZSBjdXN0b20gZXZlbnQgZnJvbSBjb21wb25lbnQgaW4gc3RhbmRhcmQgcmVjb21tZW5kZWQgd2F5IHZpYS4gdGhpcy5ldmVudE5hbWUuZW1pdCBmdW5jdGlvblxuICBcbiAgLSBjYWxsIHdpbmRvdy5CaW1QbHVzLmV2ZW50TmFtZSBmdW5jdGlvbiBkaXJlY3RseSBvbiB3aW5kb3cgb2JqZWN0IChldmVudE5hbWUgaXMgbmFtZVxuICAgIG9mIHRoZSBldmVudCB3ZSB3YW50IHRvIGZpcmUgZS5nLiBiaW1wbHVzTmF2YmFyQ2xpY2tlZCBzbyBpdCB3aWxsIGJlIHdpbmRvdy5CaW1QbHVzLmJpbXBsdXNOYXZiYXJDbGlja2VkKS5cbiAgICBGdW5jdGlvbiBtdXN0IGJlIGRlZmluZWQgaW4gYXBwLiB3aGVyZSB3ZSBhcmUgdXNpbmcgb3VyIGNvbXBvbmVudHMuXG4gICAgVGhpcyB3YXMgaW1wbGVtZW50ZWQgYmVjYXVzZSBNUyBFZGdlIGJyb3dzZXIgaGFzIHByb2JsZW1zIHdpdGggY3VzdG9tIGV2ZW50cyBhbmQgaW4gc29tZSBcbiAgICBzaXR1YXRpb25zKGUuZy4gYWZ0ZXIgZmlsZSBkb3dubG9hZCkgaXQgc3RvcHMgaGFuZGxpbmcgY3VzdG9tIGV2ZW50cy5cbiAgICBEaXNhZHZhbnRhZ2UgaXMgdGhhdCB3ZSBjYW4gaGF2ZSBvbmx5IG9uZSBldmVudCBoYW5kbGVyIHdoaWNoIGlzIHNoYXJlZCBiZXR3ZWVuIHRoZSBtdWx0aXBsZSBjb21wb25lbnRzLlxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuZXhwb3J0IGZ1bmN0aW9uIGZpcmVFdmVudChzb3VyY2U6IHVua25vd24sIGV2ZW50TmFtZTogc3RyaW5nLCBkYXRhOiB1bmtub3duID0gbnVsbCl7XG4gICAgaWYgKCAhZXZlbnROYW1lICkge1xuICAgICAgICBjb25zb2xlLmVycm9yKFwiRVJST1I6IE1pc3NpbmcgZXZlbnQgbmFtZSBpbiBmaXJlRXZlbnQgZnVuY3Rpb24gaW4gQmltcGx1cyBjb21wb25lbnRzIVwiKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBDaGVjayBpZiBldmVudE5hbWUgZXhpc3RzIG9uIHdpbmRvdy5CaW1QbHVzIGFuZCBpZiBpdCdzIGEgZnVuY3Rpb25cbiAgICBjb25zdCBiaW1QbHVzID0gKCdCaW1QbHVzJyBpbiB3aW5kb3cpICYmIHR5cGVvZiB3aW5kb3cuQmltUGx1cyA9PT0gJ29iamVjdCcgJiYgKHdpbmRvdy5CaW1QbHVzIGFzIEJpbVBsdXNPYmplY3QpO1xuICAgIGlmIChiaW1QbHVzICYmIHR5cGVvZiBiaW1QbHVzW2V2ZW50TmFtZV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICBiaW1QbHVzW2V2ZW50TmFtZV0oe2RldGFpbDogZGF0YX0pO1xuICAgIH1cblxuICAgIGNvbnN0IF9zb3VyY2UgPSAoc291cmNlIGFzIFNvdXJjZSk7XG4gICAgaWYgKGV2ZW50TmFtZSBpbiBfc291cmNlKSB7XG4gICAgICAgIF9zb3VyY2VbZXZlbnROYW1lXS5lbWl0KGRhdGEpO1xuICAgIH1cbn0iXX0=
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYmltcGx1cy1jb21wb25lbnRzL3NyYy9saWIvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBU0E7Ozs7Ozs7Ozs7NEVBVTRFO0FBQzVFLE1BQU0sVUFBVSxTQUFTLENBQUMsTUFBZSxFQUFFLFNBQWlCLEVBQUUsT0FBZ0IsSUFBSTtJQUM5RSxJQUFLLENBQUMsU0FBUyxFQUFHLENBQUM7UUFDZixPQUFPLENBQUMsS0FBSyxDQUFDLHdFQUF3RSxDQUFDLENBQUM7UUFDeEYsT0FBTztJQUNYLENBQUM7SUFDRCxxRUFBcUU7SUFDckUsTUFBTSxPQUFPLEdBQUcsQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLElBQUksT0FBTyxNQUFNLENBQUMsT0FBTyxLQUFLLFFBQVEsSUFBSyxNQUFNLENBQUMsT0FBeUIsQ0FBQztJQUNqSCxJQUFJLE9BQU8sSUFBSSxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUN2RCxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBQyxNQUFNLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUksTUFBaUIsQ0FBQztJQUNuQyxJQUFJLFNBQVMsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN2QixPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gRGVmaW5lIHRoZSB0eXBlIG9mIHRoZSB3aW5kb3cuQmltUGx1cyBvYmplY3RcclxuZXhwb3J0IGludGVyZmFjZSBCaW1QbHVzT2JqZWN0IHtcclxuICAgIFtrZXk6IHN0cmluZ106IChkYXRhRGV0YWlsOiB7IGRldGFpbDogdW5rbm93biB9KSA9PiB2b2lkO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlIHtcclxuICBba2V5OiBzdHJpbmddOiB7IGVtaXQ6IChhcmcwOiB1bmtub3duKSA9PiB2b2lkOyB9O1xyXG59XHJcblxyXG5cclxuLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuKiBmaXJlIGV2ZW50IGZyb20gY29tcG9uZW50IGluIHR3byB3YXlzIDogXHJcbiAgLSBmaXJlIGN1c3RvbSBldmVudCBmcm9tIGNvbXBvbmVudCBpbiBzdGFuZGFyZCByZWNvbW1lbmRlZCB3YXkgdmlhLiB0aGlzLmV2ZW50TmFtZS5lbWl0IGZ1bmN0aW9uXHJcbiAgXHJcbiAgLSBjYWxsIHdpbmRvdy5CaW1QbHVzLmV2ZW50TmFtZSBmdW5jdGlvbiBkaXJlY3RseSBvbiB3aW5kb3cgb2JqZWN0IChldmVudE5hbWUgaXMgbmFtZVxyXG4gICAgb2YgdGhlIGV2ZW50IHdlIHdhbnQgdG8gZmlyZSBlLmcuIGJpbXBsdXNOYXZiYXJDbGlja2VkIHNvIGl0IHdpbGwgYmUgd2luZG93LkJpbVBsdXMuYmltcGx1c05hdmJhckNsaWNrZWQpLlxyXG4gICAgRnVuY3Rpb24gbXVzdCBiZSBkZWZpbmVkIGluIGFwcC4gd2hlcmUgd2UgYXJlIHVzaW5nIG91ciBjb21wb25lbnRzLlxyXG4gICAgVGhpcyB3YXMgaW1wbGVtZW50ZWQgYmVjYXVzZSBNUyBFZGdlIGJyb3dzZXIgaGFzIHByb2JsZW1zIHdpdGggY3VzdG9tIGV2ZW50cyBhbmQgaW4gc29tZSBcclxuICAgIHNpdHVhdGlvbnMoZS5nLiBhZnRlciBmaWxlIGRvd25sb2FkKSBpdCBzdG9wcyBoYW5kbGluZyBjdXN0b20gZXZlbnRzLlxyXG4gICAgRGlzYWR2YW50YWdlIGlzIHRoYXQgd2UgY2FuIGhhdmUgb25seSBvbmUgZXZlbnQgaGFuZGxlciB3aGljaCBpcyBzaGFyZWQgYmV0d2VlbiB0aGUgbXVsdGlwbGUgY29tcG9uZW50cy5cclxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xyXG5leHBvcnQgZnVuY3Rpb24gZmlyZUV2ZW50KHNvdXJjZTogdW5rbm93biwgZXZlbnROYW1lOiBzdHJpbmcsIGRhdGE6IHVua25vd24gPSBudWxsKXtcclxuICAgIGlmICggIWV2ZW50TmFtZSApIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKFwiRVJST1I6IE1pc3NpbmcgZXZlbnQgbmFtZSBpbiBmaXJlRXZlbnQgZnVuY3Rpb24gaW4gQmltcGx1cyBjb21wb25lbnRzIVwiKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICAvLyBDaGVjayBpZiBldmVudE5hbWUgZXhpc3RzIG9uIHdpbmRvdy5CaW1QbHVzIGFuZCBpZiBpdCdzIGEgZnVuY3Rpb25cclxuICAgIGNvbnN0IGJpbVBsdXMgPSAoJ0JpbVBsdXMnIGluIHdpbmRvdykgJiYgdHlwZW9mIHdpbmRvdy5CaW1QbHVzID09PSAnb2JqZWN0JyAmJiAod2luZG93LkJpbVBsdXMgYXMgQmltUGx1c09iamVjdCk7XHJcbiAgICBpZiAoYmltUGx1cyAmJiB0eXBlb2YgYmltUGx1c1tldmVudE5hbWVdID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICBiaW1QbHVzW2V2ZW50TmFtZV0oe2RldGFpbDogZGF0YX0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IF9zb3VyY2UgPSAoc291cmNlIGFzIFNvdXJjZSk7XHJcbiAgICBpZiAoZXZlbnROYW1lIGluIF9zb3VyY2UpIHtcclxuICAgICAgICBfc291cmNlW2V2ZW50TmFtZV0uZW1pdChkYXRhKTtcclxuICAgIH1cclxufSJdfQ==