@cuby-ui/core 0.0.227 → 0.0.230

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 (269) hide show
  1. package/components/button/button.component.d.ts +1 -1
  2. package/components/content-wrapper/content-wrapper.component.d.ts +11 -0
  3. package/components/content-wrapper/index.d.ts +1 -0
  4. package/components/empty-state/empty-state.component.d.ts +7 -0
  5. package/components/empty-state/index.d.ts +1 -0
  6. package/components/ghost-input/ghost-input.component.d.ts +6 -0
  7. package/components/ghost-input/index.d.ts +1 -0
  8. package/components/index.d.ts +3 -0
  9. package/components/sidebar/sidebar-header/sidebar-header.component.d.ts +1 -1
  10. package/components/sidebar/sidebar-navigation-item/sidebar-navigation-item.component.d.ts +1 -1
  11. package/directives/tooltip/tooltip.component.d.ts +1 -1
  12. package/editor/components/editor-attaches-tool/editor-attaches-tool.component.d.ts +44 -0
  13. package/editor/components/editor-attaches-tool/editor-attaches-tool.options.d.ts +17 -0
  14. package/editor/components/editor-attaches-tool/index.d.ts +2 -0
  15. package/editor/components/editor-image-tool/editor-image-tool.component.d.ts +14 -0
  16. package/editor/components/editor-image-tool/editor-image-tool.options.d.ts +26 -0
  17. package/editor/components/editor-image-tool/index.d.ts +2 -0
  18. package/editor/components/editor-tool/editor-tool.component.d.ts +22 -0
  19. package/editor/components/editor-tool-modal/editor-tool-modal.component.d.ts +24 -0
  20. package/editor/components/editor-tool-modal/editor-tool-modal.options.d.ts +8 -0
  21. package/editor/components/editor-tool-modal/index.d.ts +2 -0
  22. package/editor/components/editor-tooltip/editor-tooltip.component.d.ts +16 -0
  23. package/editor/components/editor-tooltip/editor-tooltip.options.d.ts +9 -0
  24. package/editor/components/editor-tooltip/index.d.ts +2 -0
  25. package/editor/components/editor-video-tool/editor-video-tool.component.d.ts +12 -0
  26. package/editor/components/editor-video-tool/editor-video-tool.options.d.ts +26 -0
  27. package/editor/components/editor-video-tool/index.d.ts +2 -0
  28. package/editor/components/index.d.ts +7 -0
  29. package/editor/components/marker-modal/index.d.ts +3 -0
  30. package/editor/components/marker-modal/marker-modal.component.d.ts +62 -0
  31. package/editor/components/marker-modal/marker-modal.interfaces.d.ts +7 -0
  32. package/editor/components/marker-modal/marker-modal.options.d.ts +1 -0
  33. package/editor/components/marker-select/component/select-item/select-option.component.d.ts +7 -0
  34. package/editor/components/marker-select/index.d.ts +2 -0
  35. package/editor/components/marker-select/marker-select.component.d.ts +40 -0
  36. package/editor/components/marker-select/marker-select.options.d.ts +1 -0
  37. package/editor/config/custom-elements.d.ts +2 -0
  38. package/editor/config/editor.config.d.ts +3 -0
  39. package/editor/config/editor.provider.d.ts +2 -0
  40. package/editor/config/index.d.ts +2 -0
  41. package/editor/constants/editor.constants.d.ts +15 -0
  42. package/editor/constants/index.d.ts +1 -0
  43. package/editor/editor.component.d.ts +71 -0
  44. package/editor/events/editor-drag.event.d.ts +2 -0
  45. package/editor/events/editor-keyboard.event.d.ts +2 -0
  46. package/editor/events/editor-modal.event.d.ts +3 -0
  47. package/editor/events/editor-tooltip.event.d.ts +2 -0
  48. package/editor/events/set-editor-events.d.ts +1 -0
  49. package/editor/index.d.ts +9 -0
  50. package/editor/interfaces/angular-element.d.ts +2 -0
  51. package/editor/interfaces/blocks-request-data.d.ts +6 -0
  52. package/editor/interfaces/combined-block-adding-event.d.ts +7 -0
  53. package/editor/interfaces/combined-block-data.d.ts +5 -0
  54. package/editor/interfaces/combined-part-block-data.d.ts +7 -0
  55. package/editor/interfaces/custom-element.d.ts +5 -0
  56. package/editor/interfaces/event-action-data.d.ts +5 -0
  57. package/editor/interfaces/file-response-data.d.ts +10 -0
  58. package/editor/interfaces/full-block-data.d.ts +8 -0
  59. package/editor/interfaces/index.d.ts +14 -0
  60. package/editor/interfaces/main-editor-config.d.ts +15 -0
  61. package/editor/interfaces/mutation-actions.d.ts +5 -0
  62. package/editor/interfaces/parent.d.ts +4 -0
  63. package/editor/interfaces/tools.d.ts +4 -0
  64. package/editor/interfaces/tune.d.ts +6 -0
  65. package/editor/pipes/file-size.pipe.d.ts +9 -0
  66. package/editor/services/editor-service.options.d.ts +8 -0
  67. package/editor/services/editor.service.d.ts +23 -0
  68. package/editor/services/index.d.ts +6 -0
  69. package/editor/services/jtext-api.options.d.ts +20 -0
  70. package/editor/services/jtext-api.service.d.ts +23 -0
  71. package/editor/services/markers-service.options.d.ts +4 -0
  72. package/editor/services/markers.service.d.ts +11 -0
  73. package/editor/tools/attaches.tool.d.ts +28 -0
  74. package/editor/tools/bold.tool.d.ts +11 -0
  75. package/editor/tools/combined-text-block.tool.d.ts +49 -0
  76. package/editor/tools/custom-marker.tool.d.ts +16 -0
  77. package/editor/tools/header.tool.d.ts +8 -0
  78. package/editor/tools/image.tool.d.ts +37 -0
  79. package/editor/tools/index.d.ts +11 -0
  80. package/editor/tools/italic.tool.d.ts +12 -0
  81. package/editor/tools/link-marker.tool.d.ts +15 -0
  82. package/editor/tools/list.tool.d.ts +5 -0
  83. package/editor/tools/marker.tool.d.ts +36 -0
  84. package/editor/tools/role-marker.tool.d.ts +7 -0
  85. package/editor/tools/selection-base.tool.d.ts +24 -0
  86. package/editor/tools/tool-marker.tool.d.ts +7 -0
  87. package/editor/tools/video.tool.d.ts +32 -0
  88. package/editor/utils/create-link-modal.d.ts +3 -0
  89. package/editor/utils/create-tool-modal.d.ts +4 -0
  90. package/editor/utils/create-tooltip.d.ts +8 -0
  91. package/editor/utils/file-uploader.d.ts +26 -0
  92. package/editor/utils/generate-id.d.ts +1 -0
  93. package/editor/utils/index.d.ts +9 -0
  94. package/editor/utils/recalculate-indexes.d.ts +2 -0
  95. package/editor/utils/remove-element-tag-wrapper.d.ts +1 -0
  96. package/editor/utils/split-html.d.ts +1 -0
  97. package/editor/utils/url.validator.d.ts +2 -0
  98. package/editor/widgets/editor-block/editor-block.component.d.ts +22 -0
  99. package/editor/widgets/editor-block/index.d.ts +1 -0
  100. package/editor/widgets/editor-modal/editor-modal.component.d.ts +19 -0
  101. package/editor/widgets/editor-modal/index.d.ts +1 -0
  102. package/editor/widgets/editor-readonly/editor-readonly.component.d.ts +28 -0
  103. package/editor/widgets/editor-readonly/editor-readonly.options.d.ts +5 -0
  104. package/editor/widgets/editor-readonly/index.d.ts +2 -0
  105. package/editor/widgets/index.d.ts +3 -0
  106. package/esm2022/components/breadcrumbs/breadcrumbs.component.mjs +2 -2
  107. package/esm2022/components/content-wrapper/content-wrapper.component.mjs +29 -0
  108. package/esm2022/components/content-wrapper/index.mjs +2 -0
  109. package/esm2022/components/empty-state/empty-state.component.mjs +17 -0
  110. package/esm2022/components/empty-state/index.mjs +2 -0
  111. package/esm2022/components/ghost-input/ghost-input.component.mjs +16 -0
  112. package/esm2022/components/ghost-input/index.mjs +2 -0
  113. package/esm2022/components/index.mjs +4 -1
  114. package/esm2022/directives/tooltip/tooltip-describe.directive.mjs +5 -3
  115. package/esm2022/directives/tooltip/tooltip-position.directive.mjs +6 -3
  116. package/esm2022/directives/tooltip/tooltip.component.mjs +6 -3
  117. package/esm2022/editor/components/editor-attaches-tool/editor-attaches-tool.component.mjs +76 -0
  118. package/esm2022/editor/components/editor-attaches-tool/editor-attaches-tool.options.mjs +2 -0
  119. package/esm2022/editor/components/editor-attaches-tool/index.mjs +3 -0
  120. package/esm2022/editor/components/editor-image-tool/editor-image-tool.component.mjs +43 -0
  121. package/esm2022/editor/components/editor-image-tool/editor-image-tool.options.mjs +2 -0
  122. package/esm2022/editor/components/editor-image-tool/index.mjs +3 -0
  123. package/esm2022/editor/components/editor-tool/editor-tool.component.mjs +74 -0
  124. package/esm2022/editor/components/editor-tool-modal/editor-tool-modal.component.mjs +69 -0
  125. package/esm2022/editor/components/editor-tool-modal/editor-tool-modal.options.mjs +2 -0
  126. package/esm2022/editor/components/editor-tool-modal/index.mjs +3 -0
  127. package/esm2022/editor/components/editor-tooltip/editor-tooltip.component.mjs +45 -0
  128. package/esm2022/editor/components/editor-tooltip/editor-tooltip.options.mjs +2 -0
  129. package/esm2022/editor/components/editor-tooltip/index.mjs +3 -0
  130. package/esm2022/editor/components/editor-video-tool/editor-video-tool.component.mjs +41 -0
  131. package/esm2022/editor/components/editor-video-tool/editor-video-tool.options.mjs +2 -0
  132. package/esm2022/editor/components/editor-video-tool/index.mjs +3 -0
  133. package/esm2022/editor/components/index.mjs +8 -0
  134. package/esm2022/editor/components/marker-modal/index.mjs +3 -0
  135. package/esm2022/editor/components/marker-modal/marker-modal.component.mjs +261 -0
  136. package/esm2022/editor/components/marker-modal/marker-modal.interfaces.mjs +2 -0
  137. package/esm2022/editor/components/marker-modal/marker-modal.options.mjs +2 -0
  138. package/esm2022/editor/components/marker-select/component/select-item/select-option.component.mjs +15 -0
  139. package/esm2022/editor/components/marker-select/index.mjs +3 -0
  140. package/esm2022/editor/components/marker-select/marker-select.component.mjs +155 -0
  141. package/esm2022/editor/components/marker-select/marker-select.options.mjs +2 -0
  142. package/esm2022/editor/config/custom-elements.mjs +32 -0
  143. package/esm2022/editor/config/editor.config.mjs +30 -0
  144. package/esm2022/editor/config/editor.provider.mjs +19 -0
  145. package/esm2022/editor/config/index.mjs +3 -0
  146. package/esm2022/editor/constants/editor.constants.mjs +20 -0
  147. package/esm2022/editor/constants/index.mjs +2 -0
  148. package/esm2022/editor/editor.component.mjs +380 -0
  149. package/esm2022/editor/events/editor-drag.event.mjs +7 -0
  150. package/esm2022/editor/events/editor-keyboard.event.mjs +33 -0
  151. package/esm2022/editor/events/editor-modal.event.mjs +31 -0
  152. package/esm2022/editor/events/editor-tooltip.event.mjs +63 -0
  153. package/esm2022/editor/events/set-editor-events.mjs +11 -0
  154. package/esm2022/editor/i18n/en.json +14 -0
  155. package/esm2022/editor/index.mjs +8 -0
  156. package/esm2022/editor/interfaces/angular-element.mjs +2 -0
  157. package/esm2022/editor/interfaces/blocks-request-data.mjs +2 -0
  158. package/esm2022/editor/interfaces/combined-block-adding-event.mjs +2 -0
  159. package/esm2022/editor/interfaces/combined-block-data.mjs +2 -0
  160. package/esm2022/editor/interfaces/combined-part-block-data.mjs +2 -0
  161. package/esm2022/editor/interfaces/custom-element.mjs +2 -0
  162. package/esm2022/editor/interfaces/event-action-data.mjs +2 -0
  163. package/esm2022/editor/interfaces/file-response-data.mjs +2 -0
  164. package/esm2022/editor/interfaces/full-block-data.mjs +2 -0
  165. package/esm2022/editor/interfaces/index.mjs +14 -0
  166. package/esm2022/editor/interfaces/main-editor-config.mjs +2 -0
  167. package/esm2022/editor/interfaces/mutation-actions.mjs +2 -0
  168. package/esm2022/editor/interfaces/parent.mjs +2 -0
  169. package/esm2022/editor/interfaces/tools.mjs +2 -0
  170. package/esm2022/editor/interfaces/tune.mjs +2 -0
  171. package/esm2022/editor/pipes/file-size.pipe.mjs +25 -0
  172. package/esm2022/editor/services/editor-service.options.mjs +4 -0
  173. package/esm2022/editor/services/editor.service.mjs +138 -0
  174. package/esm2022/editor/services/index.mjs +7 -0
  175. package/esm2022/editor/services/jtext-api.options.mjs +2 -0
  176. package/esm2022/editor/services/jtext-api.service.mjs +50 -0
  177. package/esm2022/editor/services/markers-service.options.mjs +2 -0
  178. package/esm2022/editor/services/markers.service.mjs +79 -0
  179. package/esm2022/editor/tools/attaches.tool.mjs +96 -0
  180. package/esm2022/editor/tools/bold.tool.mjs +33 -0
  181. package/esm2022/editor/tools/combined-text-block.tool.mjs +380 -0
  182. package/esm2022/editor/tools/custom-marker.tool.mjs +88 -0
  183. package/esm2022/editor/tools/header.tool.mjs +16 -0
  184. package/esm2022/editor/tools/image.tool.mjs +157 -0
  185. package/esm2022/editor/tools/index.mjs +12 -0
  186. package/esm2022/editor/tools/italic.tool.mjs +35 -0
  187. package/esm2022/editor/tools/link-marker.tool.mjs +80 -0
  188. package/esm2022/editor/tools/list.tool.mjs +10 -0
  189. package/esm2022/editor/tools/marker.tool.mjs +144 -0
  190. package/esm2022/editor/tools/role-marker.tool.mjs +17 -0
  191. package/esm2022/editor/tools/selection-base.tool.mjs +92 -0
  192. package/esm2022/editor/tools/tool-marker.tool.mjs +14 -0
  193. package/esm2022/editor/tools/video.tool.mjs +132 -0
  194. package/esm2022/editor/utils/create-link-modal.mjs +22 -0
  195. package/esm2022/editor/utils/create-tool-modal.mjs +45 -0
  196. package/esm2022/editor/utils/create-tooltip.mjs +44 -0
  197. package/esm2022/editor/utils/file-uploader.mjs +57 -0
  198. package/esm2022/editor/utils/generate-id.mjs +4 -0
  199. package/esm2022/editor/utils/index.mjs +10 -0
  200. package/esm2022/editor/utils/recalculate-indexes.mjs +32 -0
  201. package/esm2022/editor/utils/remove-element-tag-wrapper.mjs +11 -0
  202. package/esm2022/editor/utils/split-html.mjs +128 -0
  203. package/esm2022/editor/utils/url.validator.mjs +12 -0
  204. package/esm2022/editor/widgets/editor-block/editor-block.component.mjs +63 -0
  205. package/esm2022/editor/widgets/editor-block/index.mjs +2 -0
  206. package/esm2022/editor/widgets/editor-modal/editor-modal.component.mjs +47 -0
  207. package/esm2022/editor/widgets/editor-modal/index.mjs +2 -0
  208. package/esm2022/editor/widgets/editor-readonly/editor-readonly.component.mjs +40 -0
  209. package/esm2022/editor/widgets/editor-readonly/editor-readonly.options.mjs +2 -0
  210. package/esm2022/editor/widgets/editor-readonly/index.mjs +2 -0
  211. package/esm2022/editor/widgets/index.mjs +4 -0
  212. package/esm2022/index.mjs +3 -1
  213. package/esm2022/interceptors/loader.interceptor.mjs +3 -3
  214. package/esm2022/services/loader.options.mjs +2 -2
  215. package/esm2022/services/loader.service.mjs +11 -11
  216. package/esm2022/utils/default-validators/create-default-validators.mjs +12 -0
  217. package/esm2022/utils/default-validators/extra-spaces.options.mjs +11 -0
  218. package/esm2022/utils/default-validators/extra-spaces.validators.mjs +16 -0
  219. package/esm2022/utils/default-validators/index.mjs +2 -0
  220. package/esm2022/utils/index.mjs +2 -1
  221. package/esm2022/widgets/categories/categories.component.mjs +75 -0
  222. package/esm2022/widgets/categories/components/categories-list/categories-list.component.mjs +16 -0
  223. package/esm2022/widgets/categories/components/categories-list/index.mjs +2 -0
  224. package/esm2022/widgets/categories/components/category-form/category-form.component.mjs +79 -0
  225. package/esm2022/widgets/categories/components/category-form/index.mjs +2 -0
  226. package/esm2022/widgets/categories/components/category-item/category-item.component.mjs +123 -0
  227. package/esm2022/widgets/categories/components/category-item/index.mjs +2 -0
  228. package/esm2022/widgets/categories/components/create-category-item/create-category-item.component.mjs +25 -0
  229. package/esm2022/widgets/categories/components/create-category-item/index.mjs +2 -0
  230. package/esm2022/widgets/categories/components/index.mjs +3 -0
  231. package/esm2022/widgets/categories/index.mjs +2 -0
  232. package/esm2022/widgets/categories/services/index.mjs +2 -0
  233. package/esm2022/widgets/categories/services/selected-category.service.mjs +38 -0
  234. package/esm2022/widgets/general-control-error-hint/general-control-error-hint.component.mjs +21 -0
  235. package/esm2022/widgets/general-control-error-hint/index.mjs +2 -0
  236. package/esm2022/widgets/index.mjs +3 -0
  237. package/esm2022/widgets/utility-info/index.mjs +2 -0
  238. package/esm2022/widgets/utility-info/utility-info.component.mjs +224 -0
  239. package/fesm2022/cuby-ui-core-en-D3DnyYmu.mjs +29 -0
  240. package/fesm2022/cuby-ui-core-en-D3DnyYmu.mjs.map +1 -0
  241. package/fesm2022/cuby-ui-core.mjs +4047 -67
  242. package/fesm2022/cuby-ui-core.mjs.map +1 -1
  243. package/index.d.ts +2 -0
  244. package/package.json +3 -3
  245. package/services/loader.options.d.ts +2 -2
  246. package/services/loader.service.d.ts +7 -7
  247. package/utils/default-validators/create-default-validators.d.ts +5 -0
  248. package/utils/default-validators/extra-spaces.options.d.ts +2 -0
  249. package/utils/default-validators/extra-spaces.validators.d.ts +3 -0
  250. package/utils/default-validators/index.d.ts +1 -0
  251. package/utils/index.d.ts +1 -0
  252. package/widgets/categories/categories.component.d.ts +24 -0
  253. package/widgets/categories/components/categories-list/categories-list.component.d.ts +7 -0
  254. package/widgets/categories/components/categories-list/index.d.ts +1 -0
  255. package/widgets/categories/components/category-form/category-form.component.d.ts +28 -0
  256. package/widgets/categories/components/category-form/index.d.ts +1 -0
  257. package/widgets/categories/components/category-item/category-item.component.d.ts +40 -0
  258. package/widgets/categories/components/category-item/index.d.ts +1 -0
  259. package/widgets/categories/components/create-category-item/create-category-item.component.d.ts +10 -0
  260. package/widgets/categories/components/create-category-item/index.d.ts +1 -0
  261. package/widgets/categories/components/index.d.ts +2 -0
  262. package/widgets/categories/index.d.ts +1 -0
  263. package/widgets/categories/services/index.d.ts +1 -0
  264. package/widgets/categories/services/selected-category.service.d.ts +18 -0
  265. package/widgets/general-control-error-hint/general-control-error-hint.component.d.ts +9 -0
  266. package/widgets/general-control-error-hint/index.d.ts +1 -0
  267. package/widgets/index.d.ts +2 -0
  268. package/widgets/utility-info/index.d.ts +1 -0
  269. package/widgets/utility-info/utility-info.component.d.ts +45 -0
@@ -0,0 +1,3 @@
1
+ export { MarkerModalComponent } from './marker-modal.component';
2
+ export { MARKER_MODAL_SELECTOR } from './marker-modal.options';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci9jb21wb25lbnRzL21hcmtlci1tb2RhbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IE1hcmtlck1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9tYXJrZXItbW9kYWwuY29tcG9uZW50JztcclxuZXhwb3J0IHsgTWFya2VyRGF0YSB9IGZyb20gJy4vbWFya2VyLW1vZGFsLmludGVyZmFjZXMnO1xyXG5leHBvcnQgeyBNQVJLRVJfTU9EQUxfU0VMRUNUT1IgfSBmcm9tICcuL21hcmtlci1tb2RhbC5vcHRpb25zJztcclxuIl19
@@ -0,0 +1,261 @@
1
+ import { DOCUMENT, NgIf } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, EventEmitter, HostBinding, Input, Output, computed, inject, signal } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import { FormControl, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';
5
+ import { CuiClickOutsideDirective, CuiElementDirective, CuiIdService } from '@cuby-ui/cdk';
6
+ import { TranslocoDirective } from '@jsverse/transloco';
7
+ import { CuiButtonModule, CuiFormFieldModule, CuiHintModule, CuiInputModule, CuiLabelModule, CuiSvgModule } from '../../../components';
8
+ import { urlValidator } from '../../utils/url.validator';
9
+ import { EDITOR_SELECTOR } from '../../constants';
10
+ import { CuiMarkersService } from '../../services';
11
+ import { MarkerSelectComponent } from '../marker-select';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@cuby-ui/cdk";
14
+ import * as i2 from "../../../components/button/button.component";
15
+ import * as i3 from "../../../components/form-field/form-field.component";
16
+ import * as i4 from "../../../components/hint/hint.component";
17
+ import * as i5 from "../../../components/input-text/input-text.component";
18
+ import * as i6 from "../../../directives/text-field-controller/text-field-id.directive";
19
+ import * as i7 from "../../../directives/text-field-controller/text-field-placeholder.directive";
20
+ import * as i8 from "../../../directives/text-field-controller/text-field-is-error.directive";
21
+ import * as i9 from "../../../components/label/label.component";
22
+ import * as i10 from "../../../components/svg/svg.component";
23
+ import * as i11 from "@angular/forms";
24
+ export class MarkerModalComponent {
25
+ constructor() {
26
+ this.element = inject(ElementRef).nativeElement;
27
+ this.document = inject(DOCUMENT);
28
+ this.destroyRef = inject(DestroyRef);
29
+ this.cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });
30
+ this.cuiIdService = inject(CuiIdService);
31
+ this.markersService = inject(CuiMarkersService);
32
+ this.TITLE_MAX_LENGTH = 100;
33
+ this.formTitle = signal('');
34
+ this.isTitleEmpty = computed(() => !this.formTitle().length);
35
+ this.isTitleMoreThanMaxLength = computed(() => this.formTitle().length > this.TITLE_MAX_LENGTH);
36
+ this.isTitleInvalid = computed(() => this.isTitleEmpty() || this.isTitleMoreThanMaxLength());
37
+ this.titleId = this.cuiIdService.generate();
38
+ this.dataId = this.cuiIdService.generate();
39
+ this.spaceBetweenTargetAndList = 5;
40
+ this.startTitle = '';
41
+ this.isGlobal = false;
42
+ this.isTool = false;
43
+ this.saveClicked = new EventEmitter();
44
+ this.cancelClicked = new EventEmitter();
45
+ this.isVisible = signal(false);
46
+ this.isHidden = signal(true);
47
+ this.targetToggleEventListener = () => {
48
+ this.isVisible.update((prev) => !prev);
49
+ if (!this.isVisible()) {
50
+ return;
51
+ }
52
+ this.calculateDropdownPosition();
53
+ };
54
+ }
55
+ set title(value) {
56
+ this.startTitle = value;
57
+ this.formTitle.set(value);
58
+ }
59
+ set url(value) {
60
+ this.dynamicDataControl = new FormControl(value, {
61
+ nonNullable: true,
62
+ validators: [Validators.required, urlValidator()]
63
+ });
64
+ }
65
+ set tool(value) {
66
+ const tool = this.markersService.getMarkerObjectByType(value.type, value.id);
67
+ this.dynamicDataControl = new FormControl(tool, {
68
+ nonNullable: true,
69
+ validators: [Validators.required]
70
+ });
71
+ }
72
+ set space(value) {
73
+ this.spaceBetweenTargetAndList = value;
74
+ }
75
+ get isFormInvalid() {
76
+ return this.dynamicDataControl.invalid || this.isTitleInvalid();
77
+ }
78
+ get isDynamicDataErrorShown() {
79
+ return this.dynamicDataControl.invalid && this.dynamicDataControl.dirty;
80
+ }
81
+ get hide() {
82
+ return this.isHidden();
83
+ }
84
+ get fixed() {
85
+ return this.isGlobal;
86
+ }
87
+ ngOnInit() {
88
+ this.initTargetElementListener();
89
+ this.initClickOutsideSubscription();
90
+ this.initOnCloseWhenEditorScroll();
91
+ }
92
+ ngOnDestroy() {
93
+ this.destroyEventListeners();
94
+ }
95
+ onTitleLabelClick(element) {
96
+ const range = document.createRange();
97
+ const selection = window.getSelection();
98
+ range.selectNodeContents(element);
99
+ range.collapse(false);
100
+ selection?.removeAllRanges();
101
+ selection?.addRange(range);
102
+ }
103
+ onSave() {
104
+ if (this.isFormInvalid) {
105
+ return;
106
+ }
107
+ this.isVisible.set(false);
108
+ this.saveClicked.emit({ title: this.formTitle(), data: this.dynamicDataControl.value });
109
+ }
110
+ onScroll() {
111
+ this.isVisible.set(false);
112
+ }
113
+ onCancel() {
114
+ this.isVisible.set(false);
115
+ this.cancelClicked.emit();
116
+ }
117
+ onClearTitle(titleElement) {
118
+ this.formTitle.set('');
119
+ titleElement.textContent = '';
120
+ titleElement.focus();
121
+ }
122
+ onTitleChange(event) {
123
+ if (event.key === 'Enter') {
124
+ event.preventDefault();
125
+ return;
126
+ }
127
+ const target = event.target;
128
+ const value = target.textContent;
129
+ this.formTitle.set(value);
130
+ }
131
+ async onTitlePaste(event) {
132
+ event.stopPropagation();
133
+ event.preventDefault();
134
+ if (!this.document) {
135
+ return;
136
+ }
137
+ const value = await window.navigator.clipboard.readText();
138
+ const target = event.target;
139
+ this.document.execCommand('insertText', false, value);
140
+ setTimeout(() => this.formTitle.set(target.textContent));
141
+ }
142
+ initTargetElementListener() {
143
+ this.target.addEventListener('click', this.targetToggleEventListener);
144
+ }
145
+ initClickOutsideSubscription() {
146
+ this.cuiClickOutsideDirective.cuiClickOutside.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((target) => {
147
+ if (this.element.contains(target) || this.target.contains(target) || !this.isVisible()) {
148
+ return;
149
+ }
150
+ this.isVisible.set(false);
151
+ });
152
+ }
153
+ initOnCloseWhenEditorScroll() {
154
+ this.editor = this.document.querySelector(EDITOR_SELECTOR);
155
+ this.editor.addEventListener('scroll', this.onScroll.bind(this));
156
+ }
157
+ destroyEventListeners() {
158
+ this.editor.removeEventListener('scroll', this.onScroll.bind(this));
159
+ this.target.addEventListener('click', this.targetToggleEventListener);
160
+ }
161
+ calculateDropdownPosition() {
162
+ this.isHidden.set(true);
163
+ setTimeout(() => {
164
+ const target = this.target;
165
+ const { bottom: targetRectBottom, left: targetRectLeft } = target.getBoundingClientRect();
166
+ const { clientHeight: documentClientHeight, clientWidth: documentClientWidth } = this.document.documentElement;
167
+ const distanceToBottom = documentClientHeight - (targetRectBottom + this.spaceBetweenTargetAndList);
168
+ const distanceToRight = documentClientWidth - targetRectLeft;
169
+ const isListRight = distanceToRight < this.element.offsetWidth;
170
+ const isListAbove = distanceToBottom < this.element.offsetHeight;
171
+ this.changePositionY(isListAbove, target.offsetHeight, targetRectBottom);
172
+ this.changePositionX(isListRight, target.offsetWidth, targetRectLeft);
173
+ this.isHidden.set(false);
174
+ });
175
+ }
176
+ changePositionX(isListRight, width, left) {
177
+ if (this.isGlobal) {
178
+ this.changeGlobalPositionX(isListRight, width, left);
179
+ return;
180
+ }
181
+ if (isListRight) {
182
+ this.element.style.right = '0';
183
+ this.element.style.left = 'auto';
184
+ return;
185
+ }
186
+ this.element.style.right = 'auto';
187
+ this.element.style.left = '0';
188
+ }
189
+ changePositionY(isListAbove, height, bottom) {
190
+ if (this.isGlobal) {
191
+ this.changeGlobalPositionY(isListAbove, height, bottom);
192
+ return;
193
+ }
194
+ if (isListAbove) {
195
+ this.element.style.bottom = height + this.spaceBetweenTargetAndList + 'px';
196
+ this.element.style.top = 'auto';
197
+ return;
198
+ }
199
+ this.element.style.top = height + this.spaceBetweenTargetAndList + 'px';
200
+ this.element.style.bottom = 'auto';
201
+ }
202
+ changeGlobalPositionX(isListRight, width, left) {
203
+ if (isListRight) {
204
+ this.element.style.left = left - this.element.offsetWidth + width + 'px';
205
+ return;
206
+ }
207
+ this.element.style.left = left + 'px';
208
+ }
209
+ changeGlobalPositionY(isListAbove, height, bottom) {
210
+ if (isListAbove) {
211
+ this.element.style.top =
212
+ bottom - this.element.offsetHeight - height - this.spaceBetweenTargetAndList + 'px';
213
+ return;
214
+ }
215
+ this.element.style.top = bottom + this.spaceBetweenTargetAndList + 'px';
216
+ }
217
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MarkerModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
218
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MarkerModalComponent, isStandalone: true, selector: "ng-component", inputs: { title: "title", url: "url", tool: "tool", isGlobal: "isGlobal", isTool: "isTool", target: "target", space: "space" }, outputs: { saveClicked: "saveClicked", cancelClicked: "cancelClicked" }, host: { properties: { "class._hidden": "this.hide", "class._fixed": "this.fixed" } }, hostDirectives: [{ directive: i1.CuiClickOutsideDirective }], ngImport: i0, template: "<ng-container *transloco=\"let t\">\r\n <ng-container *ngIf=\"isVisible()\">\r\n <form\r\n autocomplete=\"off\"\r\n class=\"wrapper\"\r\n >\r\n <cui-form-field>\r\n <!-- eslint-disable-next-line -->\r\n <label\r\n [for]=\"titleId\"\r\n cuiLabel\r\n [isRequired]=\"true\"\r\n (click)=\"onTitleLabelClick(titleElement)\"\r\n >\r\n {{ t('TITLE') }}\r\n </label>\r\n <!-- TODO: \u0435\u0441\u043B\u0438 \u043D\u0430\u0439\u0434\u0435\u0442\u0441\u044F \u0432\u0430\u0440\u0438\u043A \u0441\u0434\u0435\u043B\u0430\u0442\u044C \u0447\u0435\u0440\u0435\u0437 \u0444\u043E\u0440\u043C\u0443 -->\r\n <div\r\n class=\"title\"\r\n [class.title_invalid]=\"isTitleInvalid()\"\r\n >\r\n <div\r\n #titleElement\r\n class=\"title__text\"\r\n contenteditable\r\n attr.data-placeholder=\"{{ t('TITLE') }}...\"\r\n (paste)=\"onTitlePaste($event)\"\r\n (keyup)=\"onTitleChange($event)\"\r\n [innerHTML]=\"startTitle\"\r\n ></div>\r\n <button\r\n type=\"button\"\r\n class=\"title__clear\"\r\n (click)=\"onClearTitle(titleElement)\"\r\n >\r\n <cui-svg\r\n icon=\"cuiIconClear\"\r\n color=\"var(--cui-base-300)\"\r\n class=\"title__icon\"\r\n />\r\n </button>\r\n </div>\r\n\r\n <cui-hint *ngIf=\"isTitleInvalid()\" hintType=\"error\">\r\n <ng-container *ngIf=\"isTitleEmpty()\">\r\n {{ t('FIELD_IS_REQUIRED') }}\r\n </ng-container>\r\n <ng-container *ngIf=\"isTitleMoreThanMaxLength()\">\r\n {{ t('PLEASE_KEEP_FIELD_UNDER_CHARACTERS') }}\r\n </ng-container>\r\n </cui-hint>\r\n </cui-form-field>\r\n <cui-form-field>\r\n <label\r\n [for]=\"dataId\"\r\n cuiLabel\r\n [isRequired]=\"true\"\r\n >\r\n {{ isTool ? t('TOOL') : t('URL') }}\r\n </label>\r\n <ng-container *ngIf=\"dynamicDataControl\">\r\n <ng-container *ngIf=\"isTool; else input\">\r\n <div>\r\n <button\r\n #target=\"elementRef\"\r\n class=\"button tool-button\"\r\n cuiButton\r\n type=\"button\"\r\n cuiElement\r\n appearance=\"outlined-gray\"\r\n size=\"sm\"\r\n >\r\n {{ $any(dynamicDataControl.value)?.title || t('SELECT_TOOL') }}\r\n </button>\r\n </div>\r\n <cc-marker-select\r\n [formControl]=\"dynamicDataControl\"\r\n [target]=\"target.nativeElement\"\r\n />\r\n </ng-container>\r\n <ng-template #input>\r\n <cui-input-text\r\n [cuiTextFieldId]=\"dataId\"\r\n [formControl]=\"dynamicDataControl\"\r\n autocomplete=\"off\"\r\n [cuiTextFieldIsError]=\"isDynamicDataErrorShown\"\r\n cuiTextFieldPlaceholder=\"{{ t('LINK') }}...\"\r\n />\r\n <cui-hint *ngIf=\"isDynamicDataErrorShown\" hintType=\"error\">\r\n <ng-container *ngIf=\"dynamicDataControl.errors?.['required']\">\r\n {{ t('FIELD_IS_REQUIRED') }}\r\n </ng-container>\r\n <ng-container *ngIf=\"dynamicDataControl.errors?.['url']\">\r\n {{ t('INVALID_URL') }}\r\n </ng-container>\r\n </cui-hint>\r\n </ng-template>\r\n </ng-container>\r\n </cui-form-field>\r\n <div class=\"buttons\">\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"outlined-gray\"\r\n size=\"sm\"\r\n (click)=\"onCancel()\"\r\n >\r\n {{ t('CANCEL') }}\r\n </button>\r\n <button\r\n cuiButton\r\n type=\"submit\"\r\n appearance=\"action\"\r\n size=\"sm\"\r\n [disabled]=\"isFormInvalid\"\r\n (click)=\"onSave()\"\r\n >\r\n {{ t('SAVE') }}\r\n </button>\r\n </div>\r\n </form>\r\n </ng-container>\r\n</ng-container>\r\n\r\n", styles: [":host{position:absolute;z-index:1;left:0}:host._fixed{position:fixed}:host._hidden{position:fixed;visibility:hidden}:host ::ng-deep .tool-button{width:100%}:host ::ng-deep .tool-button>span{justify-content:flex-start!important}.wrapper{padding:11px;box-shadow:0 2px 4px -1px #0000000f,0 4px 6px -1px #0000001a;display:flex;flex-direction:column;gap:16px;border-radius:8px;border:1px solid var(--cui-base-200);max-width:450px;background-color:var(--cui-base-0)}.buttons{padding-top:12px;display:flex;justify-content:flex-end;gap:12px}.title{padding:7px 13px;cursor:text;display:flex;align-items:center;gap:8px;border:1px solid var(--cui-base-200);border-radius:8px;width:426px;background:var(--cui-input);color:var(--cui-base-900)}.title:hover{border-color:var(--cui-base-300)}.title:focus-within{outline:none;box-shadow:0 0 0 2px var(--cui-focus);border-color:var(--cui-info)}.title_invalid,.title_invalid:focus-within{box-shadow:none;border-color:var(--cui-danger)}.title__text{flex-grow:1;text-wrap:nowrap;overflow:hidden}.title__text[data-placeholder]:empty:before{content:attr(data-placeholder);position:absolute;color:var(--cui-base-400)}.title__text:focus{outline:none}.title__clear{padding:0;visibility:hidden}.title__icon{width:16px}.title__icon ::ng-deep [stroke]{stroke:var(--cui-base-0)}.title__text:not(:empty)+.title__clear{visibility:visible}\n"], dependencies: [{ kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: i2.CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "size"] }, { kind: "directive", type: CuiElementDirective, selector: "[cuiElement]", exportAs: ["elementRef"] }, { kind: "ngmodule", type: CuiFormFieldModule }, { kind: "component", type: i3.CuiFormFieldComponent, selector: "cui-form-field" }, { kind: "ngmodule", type: CuiHintModule }, { kind: "component", type: i4.CuiHintComponent, selector: "cui-hint", inputs: ["hintType"] }, { kind: "ngmodule", type: CuiInputModule }, { kind: "component", type: i5.CuiInputTextComponent, selector: "cui-input-text" }, { kind: "directive", type: i6.CuiTextFieldIdDirective, selector: "[cuiTextFieldId]", inputs: ["cuiTextFieldId"] }, { kind: "directive", type: i7.CuiTextFieldPlaceholderDirective, selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "directive", type: i8.CuiTextFieldIsErrorDirective, selector: "[cuiTextFieldIsError]", inputs: ["cuiTextFieldIsError"] }, { kind: "ngmodule", type: CuiLabelModule }, { kind: "component", type: i9.CuiLabelComponent, selector: "label[cuiLabel]", inputs: ["isRequired"] }, { kind: "ngmodule", type: CuiSvgModule }, { kind: "component", type: i10.CuiSvgComponent, selector: "cui-svg[icon]", inputs: ["width", "height", "strokeWidth", "color", "icon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i11.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i11.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i11.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i11.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: MarkerSelectComponent, selector: "cc-marker-select", inputs: ["target", "space"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i11.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
219
+ }
220
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MarkerModalComponent, decorators: [{
221
+ type: Component,
222
+ args: [{ standalone: true, imports: [
223
+ CuiButtonModule,
224
+ CuiElementDirective,
225
+ CuiFormFieldModule,
226
+ CuiHintModule,
227
+ CuiInputModule,
228
+ CuiLabelModule,
229
+ CuiSvgModule,
230
+ FormsModule,
231
+ MarkerSelectComponent,
232
+ ReactiveFormsModule,
233
+ TranslocoDirective,
234
+ NgIf
235
+ ], changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [CuiClickOutsideDirective], template: "<ng-container *transloco=\"let t\">\r\n <ng-container *ngIf=\"isVisible()\">\r\n <form\r\n autocomplete=\"off\"\r\n class=\"wrapper\"\r\n >\r\n <cui-form-field>\r\n <!-- eslint-disable-next-line -->\r\n <label\r\n [for]=\"titleId\"\r\n cuiLabel\r\n [isRequired]=\"true\"\r\n (click)=\"onTitleLabelClick(titleElement)\"\r\n >\r\n {{ t('TITLE') }}\r\n </label>\r\n <!-- TODO: \u0435\u0441\u043B\u0438 \u043D\u0430\u0439\u0434\u0435\u0442\u0441\u044F \u0432\u0430\u0440\u0438\u043A \u0441\u0434\u0435\u043B\u0430\u0442\u044C \u0447\u0435\u0440\u0435\u0437 \u0444\u043E\u0440\u043C\u0443 -->\r\n <div\r\n class=\"title\"\r\n [class.title_invalid]=\"isTitleInvalid()\"\r\n >\r\n <div\r\n #titleElement\r\n class=\"title__text\"\r\n contenteditable\r\n attr.data-placeholder=\"{{ t('TITLE') }}...\"\r\n (paste)=\"onTitlePaste($event)\"\r\n (keyup)=\"onTitleChange($event)\"\r\n [innerHTML]=\"startTitle\"\r\n ></div>\r\n <button\r\n type=\"button\"\r\n class=\"title__clear\"\r\n (click)=\"onClearTitle(titleElement)\"\r\n >\r\n <cui-svg\r\n icon=\"cuiIconClear\"\r\n color=\"var(--cui-base-300)\"\r\n class=\"title__icon\"\r\n />\r\n </button>\r\n </div>\r\n\r\n <cui-hint *ngIf=\"isTitleInvalid()\" hintType=\"error\">\r\n <ng-container *ngIf=\"isTitleEmpty()\">\r\n {{ t('FIELD_IS_REQUIRED') }}\r\n </ng-container>\r\n <ng-container *ngIf=\"isTitleMoreThanMaxLength()\">\r\n {{ t('PLEASE_KEEP_FIELD_UNDER_CHARACTERS') }}\r\n </ng-container>\r\n </cui-hint>\r\n </cui-form-field>\r\n <cui-form-field>\r\n <label\r\n [for]=\"dataId\"\r\n cuiLabel\r\n [isRequired]=\"true\"\r\n >\r\n {{ isTool ? t('TOOL') : t('URL') }}\r\n </label>\r\n <ng-container *ngIf=\"dynamicDataControl\">\r\n <ng-container *ngIf=\"isTool; else input\">\r\n <div>\r\n <button\r\n #target=\"elementRef\"\r\n class=\"button tool-button\"\r\n cuiButton\r\n type=\"button\"\r\n cuiElement\r\n appearance=\"outlined-gray\"\r\n size=\"sm\"\r\n >\r\n {{ $any(dynamicDataControl.value)?.title || t('SELECT_TOOL') }}\r\n </button>\r\n </div>\r\n <cc-marker-select\r\n [formControl]=\"dynamicDataControl\"\r\n [target]=\"target.nativeElement\"\r\n />\r\n </ng-container>\r\n <ng-template #input>\r\n <cui-input-text\r\n [cuiTextFieldId]=\"dataId\"\r\n [formControl]=\"dynamicDataControl\"\r\n autocomplete=\"off\"\r\n [cuiTextFieldIsError]=\"isDynamicDataErrorShown\"\r\n cuiTextFieldPlaceholder=\"{{ t('LINK') }}...\"\r\n />\r\n <cui-hint *ngIf=\"isDynamicDataErrorShown\" hintType=\"error\">\r\n <ng-container *ngIf=\"dynamicDataControl.errors?.['required']\">\r\n {{ t('FIELD_IS_REQUIRED') }}\r\n </ng-container>\r\n <ng-container *ngIf=\"dynamicDataControl.errors?.['url']\">\r\n {{ t('INVALID_URL') }}\r\n </ng-container>\r\n </cui-hint>\r\n </ng-template>\r\n </ng-container>\r\n </cui-form-field>\r\n <div class=\"buttons\">\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"outlined-gray\"\r\n size=\"sm\"\r\n (click)=\"onCancel()\"\r\n >\r\n {{ t('CANCEL') }}\r\n </button>\r\n <button\r\n cuiButton\r\n type=\"submit\"\r\n appearance=\"action\"\r\n size=\"sm\"\r\n [disabled]=\"isFormInvalid\"\r\n (click)=\"onSave()\"\r\n >\r\n {{ t('SAVE') }}\r\n </button>\r\n </div>\r\n </form>\r\n </ng-container>\r\n</ng-container>\r\n\r\n", styles: [":host{position:absolute;z-index:1;left:0}:host._fixed{position:fixed}:host._hidden{position:fixed;visibility:hidden}:host ::ng-deep .tool-button{width:100%}:host ::ng-deep .tool-button>span{justify-content:flex-start!important}.wrapper{padding:11px;box-shadow:0 2px 4px -1px #0000000f,0 4px 6px -1px #0000001a;display:flex;flex-direction:column;gap:16px;border-radius:8px;border:1px solid var(--cui-base-200);max-width:450px;background-color:var(--cui-base-0)}.buttons{padding-top:12px;display:flex;justify-content:flex-end;gap:12px}.title{padding:7px 13px;cursor:text;display:flex;align-items:center;gap:8px;border:1px solid var(--cui-base-200);border-radius:8px;width:426px;background:var(--cui-input);color:var(--cui-base-900)}.title:hover{border-color:var(--cui-base-300)}.title:focus-within{outline:none;box-shadow:0 0 0 2px var(--cui-focus);border-color:var(--cui-info)}.title_invalid,.title_invalid:focus-within{box-shadow:none;border-color:var(--cui-danger)}.title__text{flex-grow:1;text-wrap:nowrap;overflow:hidden}.title__text[data-placeholder]:empty:before{content:attr(data-placeholder);position:absolute;color:var(--cui-base-400)}.title__text:focus{outline:none}.title__clear{padding:0;visibility:hidden}.title__icon{width:16px}.title__icon ::ng-deep [stroke]{stroke:var(--cui-base-0)}.title__text:not(:empty)+.title__clear{visibility:visible}\n"] }]
236
+ }], propDecorators: { title: [{
237
+ type: Input
238
+ }], url: [{
239
+ type: Input
240
+ }], tool: [{
241
+ type: Input
242
+ }], isGlobal: [{
243
+ type: Input
244
+ }], isTool: [{
245
+ type: Input
246
+ }], target: [{
247
+ type: Input
248
+ }], space: [{
249
+ type: Input
250
+ }], saveClicked: [{
251
+ type: Output
252
+ }], cancelClicked: [{
253
+ type: Output
254
+ }], hide: [{
255
+ type: HostBinding,
256
+ args: ['class._hidden']
257
+ }], fixed: [{
258
+ type: HostBinding,
259
+ args: ['class._fixed']
260
+ }] } });
261
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2VyLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvZWRpdG9yL2NvbXBvbmVudHMvbWFya2VyLW1vZGFsL21hcmtlci1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci9jb21wb25lbnRzL21hcmtlci1tb2RhbC9tYXJrZXItbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzNGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFDSCxlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixjQUFjLEVBQ2QsY0FBYyxFQUNkLFlBQVksRUFDZixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FB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QUFNLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUksQ0FBQztJQUM1RSxDQUFDOytHQTdRUSxvQkFBb0I7bUdBQXBCLG9CQUFvQixxYUMxRGpDLDQzSkE0SEEsdTRDRHBGUSxlQUFlLDJOQUNmLG1CQUFtQixrRkFDbkIsa0JBQWtCLGlIQUNsQixhQUFhLDRIQUNiLGNBQWMsb2ZBQ2QsY0FBYyxzSUFDZCxZQUFZLHdLQUNaLFdBQVcsb2tCQUNYLHFCQUFxQix5RkFDckIsbUJBQW1CLG1OQUNuQixrQkFBa0IsZ01BQ2xCLElBQUk7OzRGQU9DLG9CQUFvQjtrQkFyQmhDLFNBQVM7aUNBQ00sSUFBSSxXQUNQO3dCQUNMLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxxQkFBcUI7d0JBQ3JCLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixJQUFJO3FCQUNQLG1CQUdnQix1QkFBdUIsQ0FBQyxNQUFNLGtCQUMvQixDQUFDLHdCQUF3QixDQUFDOzhCQXdCL0IsS0FBSztzQkFEZixLQUFLO2dCQU9LLEdBQUc7c0JBRGIsS0FBSztnQkFTSyxJQUFJO3NCQURkLEtBQUs7Z0JBVUMsUUFBUTtzQkFEZCxLQUFLO2dCQUlDLE1BQU07c0JBRFosS0FBSztnQkFJQyxNQUFNO3NCQURaLEtBQUs7Z0JBSUssS0FBSztzQkFEZixLQUFLO2dCQU1DLFdBQVc7c0JBRGpCLE1BQU07Z0JBSUEsYUFBYTtzQkFEbkIsTUFBTTtnQkEwQk8sSUFBSTtzQkFEakIsV0FBVzt1QkFBQyxlQUFlO2dCQU1kLEtBQUs7c0JBRGxCLFdBQVc7dUJBQUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5ULCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHR5cGUgeyBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBEZXN0cm95UmVmLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEhvc3RCaW5kaW5nLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBjb21wdXRlZCxcclxuICAgIGluamVjdCxcclxuICAgIHNpZ25hbFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ3VpQ2xpY2tPdXRzaWRlRGlyZWN0aXZlLCBDdWlFbGVtZW50RGlyZWN0aXZlLCBDdWlJZFNlcnZpY2UgfSBmcm9tICdAY3VieS11aS9jZGsnO1xyXG5pbXBvcnQgeyBUcmFuc2xvY29EaXJlY3RpdmUgfSBmcm9tICdAanN2ZXJzZS90cmFuc2xvY28nO1xyXG5pbXBvcnQge1xyXG4gICAgQ3VpQnV0dG9uTW9kdWxlLFxyXG4gICAgQ3VpRm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgQ3VpSGludE1vZHVsZSxcclxuICAgIEN1aUlucHV0TW9kdWxlLFxyXG4gICAgQ3VpTGFiZWxNb2R1bGUsXHJcbiAgICBDdWlTdmdNb2R1bGVcclxufSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzJztcclxuXHJcbmltcG9ydCB7IHVybFZhbGlkYXRvciB9IGZyb20gJy4uLy4uL3V0aWxzL3VybC52YWxpZGF0b3InO1xyXG5cclxuaW1wb3J0IHsgRURJVE9SX1NFTEVDVE9SIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcclxuaW1wb3J0IHsgQ3VpTWFya2Vyc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB0eXBlIHsgVG9vbCB9IGZyb20gJy4uL2VkaXRvci10b29sLW1vZGFsJztcclxuaW1wb3J0IHsgTWFya2VyU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi4vbWFya2VyLXNlbGVjdCc7XHJcblxyXG5pbXBvcnQgdHlwZSB7IE1hcmtlckRhdGEsIE1hcmtlckRhdGFDb250cm9sIH0gZnJvbSAnLi9tYXJrZXItbW9kYWwuaW50ZXJmYWNlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbXHJcbiAgICAgICAgQ3VpQnV0dG9uTW9kdWxlLFxyXG4gICAgICAgIEN1aUVsZW1lbnREaXJlY3RpdmUsXHJcbiAgICAgICAgQ3VpRm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgICAgIEN1aUhpbnRNb2R1bGUsXHJcbiAgICAgICAgQ3VpSW5wdXRNb2R1bGUsXHJcbiAgICAgICAgQ3VpTGFiZWxNb2R1bGUsXHJcbiAgICAgICAgQ3VpU3ZnTW9kdWxlLFxyXG4gICAgICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgICAgIE1hcmtlclNlbGVjdENvbXBvbmVudCxcclxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgICAgIFRyYW5zbG9jb0RpcmVjdGl2ZSxcclxuICAgICAgICBOZ0lmXHJcbiAgICBdLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL21hcmtlci1tb2RhbC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9tYXJrZXItbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgaG9zdERpcmVjdGl2ZXM6IFtDdWlDbGlja091dHNpZGVEaXJlY3RpdmVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNYXJrZXJNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudCA9IGluamVjdChFbGVtZW50UmVmKS5uYXRpdmVFbGVtZW50O1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGN1aUNsaWNrT3V0c2lkZURpcmVjdGl2ZSA9IGluamVjdChDdWlDbGlja091dHNpZGVEaXJlY3RpdmUsIHsgc2VsZjogdHJ1ZSB9KTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY3VpSWRTZXJ2aWNlID0gaW5qZWN0KEN1aUlkU2VydmljZSk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1hcmtlcnNTZXJ2aWNlID0gaW5qZWN0KEN1aU1hcmtlcnNTZXJ2aWNlKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgVElUTEVfTUFYX0xFTkdUSCA9IDEwMDtcclxuXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZm9ybVRpdGxlID0gc2lnbmFsKCcnKTtcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBpc1RpdGxlRW1wdHkgPSBjb21wdXRlZCgoKSA9PiAhdGhpcy5mb3JtVGl0bGUoKS5sZW5ndGgpO1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGlzVGl0bGVNb3JlVGhhbk1heExlbmd0aCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuZm9ybVRpdGxlKCkubGVuZ3RoID4gdGhpcy5USVRMRV9NQVhfTEVOR1RIKTtcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBpc1RpdGxlSW52YWxpZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaXNUaXRsZUVtcHR5KCkgfHwgdGhpcy5pc1RpdGxlTW9yZVRoYW5NYXhMZW5ndGgoKSk7XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGl0bGVJZCA9IHRoaXMuY3VpSWRTZXJ2aWNlLmdlbmVyYXRlKCk7XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGF0YUlkID0gdGhpcy5jdWlJZFNlcnZpY2UuZ2VuZXJhdGUoKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgZHluYW1pY0RhdGFDb250cm9sITogTWFya2VyRGF0YUNvbnRyb2w7XHJcbiAgICBwcm90ZWN0ZWQgc3BhY2VCZXR3ZWVuVGFyZ2V0QW5kTGlzdCA9IDU7XHJcbiAgICBwcm90ZWN0ZWQgc3RhcnRUaXRsZSA9ICcnO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IHRpdGxlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLnN0YXJ0VGl0bGUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmZvcm1UaXRsZS5zZXQodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2V0IHVybCh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgICAgdGhpcy5keW5hbWljRGF0YUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wodmFsdWUsIHtcclxuICAgICAgICAgICAgbm9uTnVsbGFibGU6IHRydWUsXHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCB1cmxWYWxpZGF0b3IoKV1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCB0b29sKHZhbHVlOiBUb29sKSB7XHJcbiAgICAgICAgY29uc3QgdG9vbCA9IHRoaXMubWFya2Vyc1NlcnZpY2UuZ2V0TWFya2VyT2JqZWN0QnlUeXBlKHZhbHVlLnR5cGUhLCB2YWx1ZS5pZCk7XHJcbiAgICAgICAgdGhpcy5keW5hbWljRGF0YUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wodG9vbCwge1xyXG4gICAgICAgICAgICBub25OdWxsYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBpc0dsb2JhbCA9IGZhbHNlO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaXNUb29sID0gZmFsc2U7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyB0YXJnZXQhOiBIVE1MQnV0dG9uRWxlbWVudDtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNldCBzcGFjZSh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy5zcGFjZUJldHdlZW5UYXJnZXRBbmRMaXN0ID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgc2F2ZUNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPE1hcmtlckRhdGE+KCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgY2FuY2VsQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgaXNWaXNpYmxlID0gc2lnbmFsKGZhbHNlKTtcclxuICAgIHByb3RlY3RlZCBpc0hpZGRlbiA9IHNpZ25hbCh0cnVlKTtcclxuICAgIHByb3RlY3RlZCBlZGl0b3IhOiBIVE1MRWxlbWVudDtcclxuICAgIHByb3RlY3RlZCBjdXJyZW50VG9vbD86IFRvb2w7XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGFyZ2V0VG9nZ2xlRXZlbnRMaXN0ZW5lciA9ICgpOiB2b2lkID0+IHtcclxuICAgICAgICB0aGlzLmlzVmlzaWJsZS51cGRhdGUoKHByZXYpID0+ICFwcmV2KTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmlzVmlzaWJsZSgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlRHJvcGRvd25Qb3NpdGlvbigpO1xyXG4gICAgfTtcclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IGlzRm9ybUludmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZHluYW1pY0RhdGFDb250cm9sLmludmFsaWQgfHwgdGhpcy5pc1RpdGxlSW52YWxpZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBnZXQgaXNEeW5hbWljRGF0YUVycm9yU2hvd24oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZHluYW1pY0RhdGFDb250cm9sLmludmFsaWQgJiYgdGhpcy5keW5hbWljRGF0YUNvbnRyb2wuZGlydHk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5faGlkZGVuJylcclxuICAgIHByb3RlY3RlZCBnZXQgaGlkZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pc0hpZGRlbigpO1xyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuX2ZpeGVkJylcclxuICAgIHByb3RlY3RlZCBnZXQgZml4ZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNHbG9iYWw7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuaW5pdFRhcmdldEVsZW1lbnRMaXN0ZW5lcigpO1xyXG4gICAgICAgIHRoaXMuaW5pdENsaWNrT3V0c2lkZVN1YnNjcmlwdGlvbigpO1xyXG4gICAgICAgIHRoaXMuaW5pdE9uQ2xvc2VXaGVuRWRpdG9yU2Nyb2xsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGVzdHJveUV2ZW50TGlzdGVuZXJzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIG9uVGl0bGVMYWJlbENsaWNrKGVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xyXG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcclxuXHJcbiAgICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVsZW1lbnQpO1xyXG4gICAgICAgIHJhbmdlLmNvbGxhcHNlKGZhbHNlKTtcclxuICAgICAgICBzZWxlY3Rpb24/LnJlbW92ZUFsbFJhbmdlcygpO1xyXG4gICAgICAgIHNlbGVjdGlvbj8uYWRkUmFuZ2UocmFuZ2UpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBvblNhdmUoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNGb3JtSW52YWxpZCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmlzVmlzaWJsZS5zZXQoZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuc2F2ZUNsaWNrZWQuZW1pdCh7IHRpdGxlOiB0aGlzLmZvcm1UaXRsZSgpLCBkYXRhOiB0aGlzLmR5bmFtaWNEYXRhQ29udHJvbC52YWx1ZSB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25TY3JvbGwoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pc1Zpc2libGUuc2V0KGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25DYW5jZWwoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pc1Zpc2libGUuc2V0KGZhbHNlKTtcclxuICAgICAgICB0aGlzLmNhbmNlbENsaWNrZWQuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBvbkNsZWFyVGl0bGUodGl0bGVFbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZm9ybVRpdGxlLnNldCgnJyk7XHJcblxyXG4gICAgICAgIHRpdGxlRWxlbWVudC50ZXh0Q29udGVudCA9ICcnO1xyXG4gICAgICAgIHRpdGxlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBvblRpdGxlQ2hhbmdlKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0YXJnZXQudGV4dENvbnRlbnQhO1xyXG5cclxuICAgICAgICB0aGlzLmZvcm1UaXRsZS5zZXQodmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhc3luYyBvblRpdGxlUGFzdGUoZXZlbnQ6IEV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmRvY3VtZW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHZhbHVlID0gYXdhaXQgd2luZG93Lm5hdmlnYXRvci5jbGlwYm9hcmQucmVhZFRleHQoKTtcclxuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgICAgIHRoaXMuZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ2luc2VydFRleHQnLCBmYWxzZSwgdmFsdWUpO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5mb3JtVGl0bGUuc2V0KHRhcmdldC50ZXh0Q29udGVudCEpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluaXRUYXJnZXRFbGVtZW50TGlzdGVuZXIoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy50YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLnRhcmdldFRvZ2dsZUV2ZW50TGlzdGVuZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW5pdENsaWNrT3V0c2lkZVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmN1aUNsaWNrT3V0c2lkZURpcmVjdGl2ZS5jdWlDbGlja091dHNpZGUucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCh0YXJnZXQpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZWxlbWVudC5jb250YWlucyh0YXJnZXQpIHx8IHRoaXMudGFyZ2V0LmNvbnRhaW5zKHRhcmdldCkgfHwgIXRoaXMuaXNWaXNpYmxlKCkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5pc1Zpc2libGUuc2V0KGZhbHNlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluaXRPbkNsb3NlV2hlbkVkaXRvclNjcm9sbCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmVkaXRvciA9IHRoaXMuZG9jdW1lbnQucXVlcnlTZWxlY3RvcihFRElUT1JfU0VMRUNUT1IpIGFzIEhUTUxFbGVtZW50O1xyXG5cclxuICAgICAgICB0aGlzLmVkaXRvci5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uU2Nyb2xsLmJpbmQodGhpcykpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZGVzdHJveUV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwuYmluZCh0aGlzKSk7XHJcbiAgICAgICAgdGhpcy50YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLnRhcmdldFRvZ2dsZUV2ZW50TGlzdGVuZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2FsY3VsYXRlRHJvcGRvd25Qb3NpdGlvbigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlzSGlkZGVuLnNldCh0cnVlKTtcclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMudGFyZ2V0O1xyXG4gICAgICAgICAgICBjb25zdCB7IGJvdHRvbTogdGFyZ2V0UmVjdEJvdHRvbSwgbGVmdDogdGFyZ2V0UmVjdExlZnQgfSA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICAgICAgY29uc3QgeyBjbGllbnRIZWlnaHQ6IGRvY3VtZW50Q2xpZW50SGVpZ2h0LCBjbGllbnRXaWR0aDogZG9jdW1lbnRDbGllbnRXaWR0aCB9ID1cclxuICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xyXG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZVRvQm90dG9tID0gZG9jdW1lbnRDbGllbnRIZWlnaHQgLSAodGFyZ2V0UmVjdEJvdHRvbSArIHRoaXMuc3BhY2VCZXR3ZWVuVGFyZ2V0QW5kTGlzdCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlVG9SaWdodCA9IGRvY3VtZW50Q2xpZW50V2lkdGggLSB0YXJnZXRSZWN0TGVmdDtcclxuICAgICAgICAgICAgY29uc3QgaXNMaXN0UmlnaHQgPSBkaXN0YW5jZVRvUmlnaHQgPCB0aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzTGlzdEFib3ZlID0gZGlzdGFuY2VUb0JvdHRvbSA8IHRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQ7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZVBvc2l0aW9uWShpc0xpc3RBYm92ZSwgdGFyZ2V0Lm9mZnNldEhlaWdodCwgdGFyZ2V0UmVjdEJvdHRvbSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlUG9zaXRpb25YKGlzTGlzdFJpZ2h0LCB0YXJnZXQub2Zmc2V0V2lkdGgsIHRhcmdldFJlY3RMZWZ0KTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuaXNIaWRkZW4uc2V0KGZhbHNlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNoYW5nZVBvc2l0aW9uWChpc0xpc3RSaWdodDogYm9vbGVhbiwgd2lkdGg6IG51bWJlciwgbGVmdDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNHbG9iYWwpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VHbG9iYWxQb3NpdGlvblgoaXNMaXN0UmlnaHQsIHdpZHRoLCBsZWZ0KTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChpc0xpc3RSaWdodCkge1xyXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUucmlnaHQgPSAnMCc7XHJcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5sZWZ0ID0gJ2F1dG8nO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLnJpZ2h0ID0gJ2F1dG8nO1xyXG4gICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5sZWZ0ID0gJzAnO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2hhbmdlUG9zaXRpb25ZKGlzTGlzdEFib3ZlOiBib29sZWFuLCBoZWlnaHQ6IG51bWJlciwgYm90dG9tOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5pc0dsb2JhbCkge1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZUdsb2JhbFBvc2l0aW9uWShpc0xpc3RBYm92ZSwgaGVpZ2h0LCBib3R0b20pO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGlzTGlzdEFib3ZlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5ib3R0b20gPSBoZWlnaHQgKyB0aGlzLnNwYWNlQmV0d2VlblRhcmdldEFuZExpc3QgKyAncHgnO1xyXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUudG9wID0gJ2F1dG8nO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLnRvcCA9IGhlaWdodCArIHRoaXMuc3BhY2VCZXR3ZWVuVGFyZ2V0QW5kTGlzdCArICdweCc7XHJcbiAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmJvdHRvbSA9ICdhdXRvJztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNoYW5nZUdsb2JhbFBvc2l0aW9uWChpc0xpc3RSaWdodDogYm9vbGVhbiwgd2lkdGg6IG51bWJlciwgbGVmdDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGlzTGlzdFJpZ2h0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5sZWZ0ID0gbGVmdCAtIHRoaXMuZWxlbWVudC5vZmZzZXRXaWR0aCArIHdpZHRoICsgJ3B4JztcclxuXHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5sZWZ0ID0gbGVmdCArICdweCc7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGFuZ2VHbG9iYWxQb3NpdGlvblkoaXNMaXN0QWJvdmU6IGJvb2xlYW4sIGhlaWdodDogbnVtYmVyLCBib3R0b206IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIGlmIChpc0xpc3RBYm92ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUudG9wID1cclxuICAgICAgICAgICAgICAgIGJvdHRvbSAtIHRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQgLSBoZWlnaHQgLSB0aGlzLnNwYWNlQmV0d2VlblRhcmdldEFuZExpc3QgKyAncHgnO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLnRvcCA9IGJvdHRvbSArIHRoaXMuc3BhY2VCZXR3ZWVuVGFyZ2V0QW5kTGlzdCArICdweCc7XHJcbiAgICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqdHJhbnNsb2NvPVwibGV0IHRcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNWaXNpYmxlKClcIj5cclxuICAgIDxmb3JtXHJcbiAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICBjbGFzcz1cIndyYXBwZXJcIlxyXG4gICAgPlxyXG4gICAgICAgIDxjdWktZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPCEtLSBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgLS0+XHJcbiAgICAgICAgICAgIDxsYWJlbFxyXG4gICAgICAgICAgICAgICAgW2Zvcl09XCJ0aXRsZUlkXCJcclxuICAgICAgICAgICAgICAgIGN1aUxhYmVsXHJcbiAgICAgICAgICAgICAgICBbaXNSZXF1aXJlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblRpdGxlTGFiZWxDbGljayh0aXRsZUVsZW1lbnQpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3sgdCgnVElUTEUnKSB9fVxyXG4gICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICA8IS0tIFRPRE86INC10YHQu9C4INC90LDQudC00LXRgtGB0Y8g0LLQsNGA0LjQuiDRgdC00LXQu9Cw0YLRjCDRh9C10YDQtdC3INGE0L7RgNC80YMgLS0+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgW2NsYXNzLnRpdGxlX2ludmFsaWRdPVwiaXNUaXRsZUludmFsaWQoKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAjdGl0bGVFbGVtZW50XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0aXRsZV9fdGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGVudGVkaXRhYmxlXHJcbiAgICAgICAgICAgICAgICAgICAgYXR0ci5kYXRhLXBsYWNlaG9sZGVyPVwie3sgdCgnVElUTEUnKSB9fS4uLlwiXHJcbiAgICAgICAgICAgICAgICAgICAgKHBhc3RlKT1cIm9uVGl0bGVQYXN0ZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAoa2V5dXApPVwib25UaXRsZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInN0YXJ0VGl0bGVcIlxyXG4gICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGl0bGVfX2NsZWFyXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGVhclRpdGxlKHRpdGxlRWxlbWVudClcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjdWktc3ZnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJjdWlJY29uQ2xlYXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInZhcigtLWN1aS1iYXNlLTMwMClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRpdGxlX19pY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPGN1aS1oaW50ICpuZ0lmPVwiaXNUaXRsZUludmFsaWQoKVwiIGhpbnRUeXBlPVwiZXJyb3JcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1RpdGxlRW1wdHkoKVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyB0KCdGSUVMRF9JU19SRVFVSVJFRCcpIH19XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1RpdGxlTW9yZVRoYW5NYXhMZW5ndGgoKVwiPlxyXG4gICAgICAgICAgICAgICAgICB7eyB0KCdQTEVBU0VfS0VFUF9GSUVMRF9VTkRFUl9DSEFSQUNURVJTJykgfX1cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2N1aS1oaW50PlxyXG4gICAgICAgIDwvY3VpLWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPGN1aS1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgIFtmb3JdPVwiZGF0YUlkXCJcclxuICAgICAgICAgICAgICAgIGN1aUxhYmVsXHJcbiAgICAgICAgICAgICAgICBbaXNSZXF1aXJlZF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3sgaXNUb29sID8gdCgnVE9PTCcpIDogdCgnVVJMJykgfX1cclxuICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImR5bmFtaWNEYXRhQ29udHJvbFwiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1Rvb2w7IGVsc2UgaW5wdXRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAjdGFyZ2V0PVwiZWxlbWVudFJlZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIHRvb2wtYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY3VpQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdWlFbGVtZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJvdXRsaW5lZC1ncmF5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICRhbnkoZHluYW1pY0RhdGFDb250cm9sLnZhbHVlKT8udGl0bGUgfHwgdCgnU0VMRUNUX1RPT0wnKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8Y2MtbWFya2VyLXNlbGVjdFxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJkeW5hbWljRGF0YUNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICAgIFt0YXJnZXRdPVwidGFyZ2V0Lm5hdGl2ZUVsZW1lbnRcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2lucHV0PlxyXG4gICAgICAgICAgICAgICAgPGN1aS1pbnB1dC10ZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgW2N1aVRleHRGaWVsZElkXT1cImRhdGFJZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImR5bmFtaWNEYXRhQ29udHJvbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICBbY3VpVGV4dEZpZWxkSXNFcnJvcl09XCJpc0R5bmFtaWNEYXRhRXJyb3JTaG93blwiXHJcbiAgICAgICAgICAgICAgICAgICAgY3VpVGV4dEZpZWxkUGxhY2Vob2xkZXI9XCJ7eyB0KCdMSU5LJykgfX0uLi5cIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIDxjdWktaGludCAqbmdJZj1cImlzRHluYW1pY0RhdGFFcnJvclNob3duXCIgaGludFR5cGU9XCJlcnJvclwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZHluYW1pY0RhdGFDb250cm9sLmVycm9ycz8uWydyZXF1aXJlZCddXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgdCgnRklFTERfSVNfUkVRVUlSRUQnKSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImR5bmFtaWNEYXRhQ29udHJvbC5lcnJvcnM/LlsndXJsJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyB0KCdJTlZBTElEX1VSTCcpIH19XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9jdWktaGludD5cclxuICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2N1aS1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJidXR0b25zXCI+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgIGN1aUJ1dHRvblxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBhcHBlYXJhbmNlPVwib3V0bGluZWQtZ3JheVwiXHJcbiAgICAgICAgICAgICAgICBzaXplPVwic21cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7eyB0KCdDQU5DRUwnKSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgY3VpQnV0dG9uXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJhY3Rpb25cIlxyXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Zvcm1JbnZhbGlkXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNhdmUoKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHt7IHQoJ1NBVkUnKSB9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZm9ybT5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy1jb250YWluZXI+XHJcblxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2VyLW1vZGFsLmludGVyZmFjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci9jb21wb25lbnRzL21hcmtlci1tb2RhbC9tYXJrZXItbW9kYWwuaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBGb3JtQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbmltcG9ydCB0eXBlIHsgVG9vbCB9IGZyb20gJy4uL2VkaXRvci10b29sLW1vZGFsL2VkaXRvci10b29sLW1vZGFsLm9wdGlvbnMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBNYXJrZXJEYXRhIHtcclxuICByZWFkb25seSB0aXRsZTogc3RyaW5nO1xyXG4gIHJlYWRvbmx5IGRhdGE/OiBzdHJpbmcgfCBUb29sO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBNYXJrZXJEYXRhQ29udHJvbCA9IEZvcm1Db250cm9sPHN0cmluZz4gfCBGb3JtQ29udHJvbDxUb29sIHwgdW5kZWZpbmVkPjtcclxuIl19
@@ -0,0 +1,2 @@
1
+ export const MARKER_MODAL_SELECTOR = 'cc-marker-modal';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2VyLW1vZGFsLm9wdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci9jb21wb25lbnRzL21hcmtlci1tb2RhbC9tYXJrZXItbW9kYWwub3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBNQVJLRVJfTU9EQUxfU0VMRUNUT1IgPSAnY2MtbWFya2VyLW1vZGFsJztcclxuIl19
@@ -0,0 +1,15 @@
1
+ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
2
+ import { NgIf } from '@angular/common';
3
+ import * as i0 from "@angular/core";
4
+ export class SelectOptionComponent {
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SelectOptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: SelectOptionComponent, isStandalone: true, selector: "cc-select-option", inputs: { tool: "tool" }, ngImport: i0, template: "<ng-container *ngIf=\"tool\">\r\n <img\r\n *ngIf=\"tool.image\"\r\n class=\"image\"\r\n [src]=\"tool.image\"\r\n alt=\"\"\r\n />\r\n <h3 class=\"title\">{{ tool.title }}</h3>\r\n</ng-container>\r\n", styles: [":host{padding:4px 8px;cursor:pointer;display:flex;align-items:center;gap:8px;border-radius:8px}@media (hover: hover){:host:hover{background-color:var(--cui-base-50)}}:host:active{background-color:var(--cui-base-50)}.title{font-weight:400;font-size:14px;line-height:20px;padding-top:2px;padding-bottom:2px;color:var(--cui-base-900)}.image{width:23px;height:23px;object-fit:cover;object-position:center}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
7
+ }
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SelectOptionComponent, decorators: [{
9
+ type: Component,
10
+ args: [{ selector: 'cc-select-option', standalone: true, imports: [NgIf], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"tool\">\r\n <img\r\n *ngIf=\"tool.image\"\r\n class=\"image\"\r\n [src]=\"tool.image\"\r\n alt=\"\"\r\n />\r\n <h3 class=\"title\">{{ tool.title }}</h3>\r\n</ng-container>\r\n", styles: [":host{padding:4px 8px;cursor:pointer;display:flex;align-items:center;gap:8px;border-radius:8px}@media (hover: hover){:host:hover{background-color:var(--cui-base-50)}}:host:active{background-color:var(--cui-base-50)}.title{font-weight:400;font-size:14px;line-height:20px;padding-top:2px;padding-bottom:2px;color:var(--cui-base-900)}.image{width:23px;height:23px;object-fit:cover;object-position:center}\n"] }]
11
+ }], propDecorators: { tool: [{
12
+ type: Input,
13
+ args: [{ required: true }]
14
+ }] } });
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9wdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci9jb21wb25lbnRzL21hcmtlci1zZWxlY3QvY29tcG9uZW50L3NlbGVjdC1pdGVtL3NlbGVjdC1vcHRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9lZGl0b3IvY29tcG9uZW50cy9tYXJrZXItc2VsZWN0L2NvbXBvbmVudC9zZWxlY3QtaXRlbS9zZWxlY3Qtb3B0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFZdkMsTUFBTSxPQUFPLHFCQUFxQjsrR0FBckIscUJBQXFCO21HQUFyQixxQkFBcUIsc0dDYmxDLDhOQVNBLDZjRERjLElBQUk7OzRGQUtMLHFCQUFxQjtrQkFSakMsU0FBUzsrQkFDSSxrQkFBa0IsY0FDaEIsSUFBSSxXQUNQLENBQUMsSUFBSSxDQUFDLG1CQUdFLHVCQUF1QixDQUFDLE1BQU07OEJBSXhDLElBQUk7c0JBRFYsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmltcG9ydCB0eXBlIHsgVG9vbCB9IGZyb20gJy4uLy4uLy4uL2VkaXRvci10b29sLW1vZGFsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdjYy1zZWxlY3Qtb3B0aW9uJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbTmdJZl0sXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LW9wdGlvbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9zZWxlY3Qtb3B0aW9uLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VsZWN0T3B0aW9uQ29tcG9uZW50IHtcclxuICAgIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXHJcbiAgICBwdWJsaWMgdG9vbCE6IFRvb2w7XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInRvb2xcIj5cclxuICA8aW1nXHJcbiAgICAgICpuZ0lmPVwidG9vbC5pbWFnZVwiXHJcbiAgICAgIGNsYXNzPVwiaW1hZ2VcIlxyXG4gICAgICBbc3JjXT1cInRvb2wuaW1hZ2VcIlxyXG4gICAgICBhbHQ9XCJcIlxyXG4gIC8+XHJcbiAgPGgzIGNsYXNzPVwidGl0bGVcIj57eyB0b29sLnRpdGxlIH19PC9oMz5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export { MarkerSelectComponent } from './marker-select.component';
2
+ export { MARKER_SELECT_SELECTOR } from './marker-select.options';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci9jb21wb25lbnRzL21hcmtlci1zZWxlY3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBNYXJrZXJTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL21hcmtlci1zZWxlY3QuY29tcG9uZW50JztcclxuZXhwb3J0IHsgTUFSS0VSX1NFTEVDVF9TRUxFQ1RPUiB9IGZyb20gJy4vbWFya2VyLXNlbGVjdC5vcHRpb25zJztcclxuIl19
@@ -0,0 +1,155 @@
1
+ import { DOCUMENT, NgFor, NgIf } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, DestroyRef, ElementRef, forwardRef, HostBinding, inject, Input, signal } from '@angular/core';
3
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
+ import { FormsModule, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';
5
+ import { CuiClickOutsideDirective } from '@cuby-ui/cdk';
6
+ import { CuiButtonModule, CuiContextMenuModule, CuiInputModule, CuiLabelModule } from '../../../components';
7
+ import { EDITOR_SELECTOR } from '../../constants';
8
+ import { CuiMarkersService } from '../../services/markers.service';
9
+ import { SelectOptionComponent } from './component/select-item/select-option.component';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@cuby-ui/cdk";
12
+ import * as i2 from "../../../components/button/button.component";
13
+ import * as i3 from "../../../components/input-text/input-text.component";
14
+ import * as i4 from "../../../directives/text-field-controller/text-field-id.directive";
15
+ import * as i5 from "../../../directives/text-field-controller/text-field-placeholder.directive";
16
+ export class MarkerSelectComponent {
17
+ constructor() {
18
+ this.document = inject(DOCUMENT);
19
+ this.destroyRef = inject(DestroyRef);
20
+ this.cuiClickOutsideDirective = inject(CuiClickOutsideDirective, { self: true });
21
+ this.element = inject(ElementRef).nativeElement;
22
+ this.markersService = inject(CuiMarkersService);
23
+ this.SPACE_BETWEEN_TARGET_AND_LIST = 5;
24
+ this.isVisible = signal(false);
25
+ this.isHidden = signal(true);
26
+ // TODO: set current type
27
+ this.elements = this.markersService.getMarkersByType("tool" /* MarkerType.tool */);
28
+ this.targetToggleEventListener = () => {
29
+ this.isVisible.update((prev) => !prev);
30
+ if (!this.isVisible()) {
31
+ return;
32
+ }
33
+ this.calculateDropdownPosition();
34
+ };
35
+ }
36
+ set space(value) {
37
+ this.SPACE_BETWEEN_TARGET_AND_LIST = value;
38
+ }
39
+ get hide() {
40
+ return this.isHidden();
41
+ }
42
+ writeValue(value) {
43
+ this.value = value;
44
+ }
45
+ registerOnChange(fn) {
46
+ this.onChange = fn;
47
+ }
48
+ registerOnTouched(fn) {
49
+ this.onTouched = fn;
50
+ }
51
+ onScroll() {
52
+ this.isVisible.set(false);
53
+ }
54
+ ngOnInit() {
55
+ this.initTargetElementListener();
56
+ this.initClickOutsideSubscription();
57
+ this.initOnCloseWhenEditorScroll();
58
+ }
59
+ ngOnDestroy() {
60
+ this.destroyEventListeners();
61
+ }
62
+ onToolClick(tool) {
63
+ this.value = tool;
64
+ this.onChange(this.value);
65
+ this.onTouched();
66
+ // this.isVisible.set(false);
67
+ }
68
+ initTargetElementListener() {
69
+ this.target.addEventListener('click', this.targetToggleEventListener);
70
+ }
71
+ initClickOutsideSubscription() {
72
+ this.cuiClickOutsideDirective.cuiClickOutside.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((target) => {
73
+ if (this.target.contains(target) || !this.isVisible()) {
74
+ return;
75
+ }
76
+ this.isVisible.set(false);
77
+ });
78
+ }
79
+ initOnCloseWhenEditorScroll() {
80
+ this.editor = this.element.closest(EDITOR_SELECTOR);
81
+ this.editor?.addEventListener('scroll', this.onScroll.bind(this));
82
+ }
83
+ destroyEventListeners() {
84
+ this.editor?.removeEventListener('scroll', this.onScroll.bind(this));
85
+ this.target?.addEventListener('click', this.targetToggleEventListener);
86
+ }
87
+ calculateDropdownPosition() {
88
+ this.isHidden.set(true);
89
+ setTimeout(() => {
90
+ const target = this.target;
91
+ const { bottom: targetRectBottom, left: targetRectLeft } = target.getBoundingClientRect();
92
+ const { clientHeight: documentClientHeight, clientWidth: documentClientWidth } = this.document.documentElement;
93
+ const distanceToBottom = documentClientHeight - (targetRectBottom + this.SPACE_BETWEEN_TARGET_AND_LIST);
94
+ const distanceToRight = documentClientWidth - targetRectLeft;
95
+ const isListRight = distanceToRight < this.element.offsetWidth;
96
+ const isListAbove = distanceToBottom < this.element.offsetHeight;
97
+ this.changePositionY(isListAbove, target.offsetHeight, targetRectBottom);
98
+ this.changePositionX(isListRight, target.offsetWidth, targetRectLeft);
99
+ this.isHidden.set(false);
100
+ });
101
+ }
102
+ changePositionX(isListRight, width, left) {
103
+ if (isListRight) {
104
+ this.element.style.right = 'auto';
105
+ this.element.style.left = left;
106
+ return;
107
+ }
108
+ this.element.style.right = left - this.element.offsetWidth + width;
109
+ this.element.style.left = 'auto';
110
+ }
111
+ changePositionY(isListAbove, height, bottom) {
112
+ if (isListAbove) {
113
+ this.element.style.top =
114
+ bottom - this.element.offsetHeight - height - this.SPACE_BETWEEN_TARGET_AND_LIST + 'px';
115
+ return;
116
+ }
117
+ this.element.style.top = bottom + this.SPACE_BETWEEN_TARGET_AND_LIST + 'px';
118
+ }
119
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MarkerSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
120
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MarkerSelectComponent, isStandalone: true, selector: "cc-marker-select", inputs: { target: "target", space: "space" }, host: { properties: { "class._hidden": "this.hide" } }, providers: [
121
+ {
122
+ provide: NG_VALUE_ACCESSOR,
123
+ useExisting: forwardRef(() => MarkerSelectComponent),
124
+ multi: true
125
+ }
126
+ ], hostDirectives: [{ directive: i1.CuiClickOutsideDirective }], ngImport: i0, template: "<ng-container *ngIf=\"isVisible()\">\r\n <div\r\n #dropdown\r\n class=\"dropdown\"\r\n >\r\n <header class=\"header\">\r\n <cui-input-text\r\n class=\"header__input\"\r\n cuiTextFieldId=\"estimated\"\r\n cuiTextFieldPlaceholder=\"Search...\"\r\n />\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconFiltersLines\"\r\n ></button>\r\n </header>\r\n <div class=\"scrollable-content\">\r\n <cc-select-option\r\n *ngFor=\"let element of elements\"\r\n [class._selected]=\"element.id === value?.id\"\r\n (click)=\"onToolClick(element)\"\r\n [tool]=\"element\"\r\n />\r\n </div>\r\n </div>\r\n</ng-container>\r\n", styles: [":host{position:fixed;z-index:10;left:0}:host._hidden{visibility:hidden}._selected{background-color:var(--cui-base-50)}.dropdown{box-shadow:0 1px 4px #0000000a,0 1px 4px #0000000a;padding-top:3px;padding-bottom:3px;display:flex;flex-direction:column;gap:4px;border-radius:8px;border:1px solid var(--cui-base-200);max-height:350px;width:345px;background:var(--cui-base-0)}.header{padding:4px 5px;display:flex;align-items:center;gap:4px}.header__input{width:100%}.footer{padding:2px 5px}.title{font-weight:400;font-size:14px;line-height:20px;padding:2px 8px;color:var(--cui-base-500);text-transform:uppercase}.scrollable-content{padding-left:5px;overflow:auto}\n"], dependencies: [{ kind: "ngmodule", type: CuiButtonModule }, { kind: "component", type: i2.CuiButtonComponent, selector: "button[cuiButton], a[cuiButton]", inputs: ["shape", "disabled", "isLoaderShown", "icon", "iconRight", "appearance", "size"] }, { kind: "ngmodule", type: CuiContextMenuModule }, { kind: "ngmodule", type: CuiInputModule }, { kind: "component", type: i3.CuiInputTextComponent, selector: "cui-input-text" }, { kind: "directive", type: i4.CuiTextFieldIdDirective, selector: "[cuiTextFieldId]", inputs: ["cuiTextFieldId"] }, { kind: "directive", type: i5.CuiTextFieldPlaceholderDirective, selector: "[cuiTextFieldPlaceholder]", inputs: ["cuiTextFieldPlaceholder"] }, { kind: "ngmodule", type: CuiLabelModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: SelectOptionComponent, selector: "cc-select-option", inputs: ["tool"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
127
+ }
128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MarkerSelectComponent, decorators: [{
129
+ type: Component,
130
+ args: [{ selector: 'cc-marker-select', imports: [
131
+ CuiButtonModule,
132
+ CuiContextMenuModule,
133
+ CuiInputModule,
134
+ CuiLabelModule,
135
+ FormsModule,
136
+ ReactiveFormsModule,
137
+ SelectOptionComponent,
138
+ NgIf,
139
+ NgFor
140
+ ], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [CuiClickOutsideDirective], providers: [
141
+ {
142
+ provide: NG_VALUE_ACCESSOR,
143
+ useExisting: forwardRef(() => MarkerSelectComponent),
144
+ multi: true
145
+ }
146
+ ], template: "<ng-container *ngIf=\"isVisible()\">\r\n <div\r\n #dropdown\r\n class=\"dropdown\"\r\n >\r\n <header class=\"header\">\r\n <cui-input-text\r\n class=\"header__input\"\r\n cuiTextFieldId=\"estimated\"\r\n cuiTextFieldPlaceholder=\"Search...\"\r\n />\r\n <button\r\n cuiButton\r\n type=\"button\"\r\n appearance=\"ghost\"\r\n size=\"xxs\"\r\n icon=\"cuiIconFiltersLines\"\r\n ></button>\r\n </header>\r\n <div class=\"scrollable-content\">\r\n <cc-select-option\r\n *ngFor=\"let element of elements\"\r\n [class._selected]=\"element.id === value?.id\"\r\n (click)=\"onToolClick(element)\"\r\n [tool]=\"element\"\r\n />\r\n </div>\r\n </div>\r\n</ng-container>\r\n", styles: [":host{position:fixed;z-index:10;left:0}:host._hidden{visibility:hidden}._selected{background-color:var(--cui-base-50)}.dropdown{box-shadow:0 1px 4px #0000000a,0 1px 4px #0000000a;padding-top:3px;padding-bottom:3px;display:flex;flex-direction:column;gap:4px;border-radius:8px;border:1px solid var(--cui-base-200);max-height:350px;width:345px;background:var(--cui-base-0)}.header{padding:4px 5px;display:flex;align-items:center;gap:4px}.header__input{width:100%}.footer{padding:2px 5px}.title{font-weight:400;font-size:14px;line-height:20px;padding:2px 8px;color:var(--cui-base-500);text-transform:uppercase}.scrollable-content{padding-left:5px;overflow:auto}\n"] }]
147
+ }], propDecorators: { target: [{
148
+ type: Input
149
+ }], space: [{
150
+ type: Input
151
+ }], hide: [{
152
+ type: HostBinding,
153
+ args: ['class._hidden']
154
+ }] } });
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2VyLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci9jb21wb25lbnRzL21hcmtlci1zZWxlY3QvbWFya2VyLXNlbGVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2VkaXRvci9jb21wb25lbnRzL21hcmtlci1zZWxlY3QvbWFya2VyLXNlbGVjdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV4RCxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsVUFBVSxFQUNWLFVBQVUsRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUk1RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFbkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saURBQWlELENBQUM7Ozs7Ozs7QUE0QnhGLE1BQU0sT0FBTyxxQkFBcUI7SUExQmxDO1FBMkJxQixhQUFRLEdBQUcsTUFBTSxDQUFD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LEdBQUcsTUFBTSxHQUFHLElBQUksQ0FBQyw2QkFBNkIsR0FBRyxJQUFJLENBQUM7SUFDaEYsQ0FBQzsrR0E1SVEscUJBQXFCO21HQUFyQixxQkFBcUIscUtBUm5CO1lBQ1A7Z0JBQ0ksT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDcEQsS0FBSyxFQUFFLElBQUk7YUFDZDtTQUNKLHdGQ25ETCw4M0JBNkJBLDRzQkRDUSxlQUFlLDBOQUNmLG9CQUFvQiw4QkFDcEIsY0FBYyxrWEFDZCxjQUFjLDhCQUNkLFdBQVcsOEJBQ1gsbUJBQW1CLCtCQUNuQixxQkFBcUIsK0VBQ3JCLElBQUksNkZBQ0osS0FBSzs7NEZBZUEscUJBQXFCO2tCQTFCakMsU0FBUzsrQkFDSSxrQkFBa0IsV0FDbkI7d0JBQ0wsZUFBZTt3QkFDZixvQkFBb0I7d0JBQ3BCLGNBQWM7d0JBQ2QsY0FBYzt3QkFDZCxXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIscUJBQXFCO3dCQUNyQixJQUFJO3dCQUNKLEtBQUs7cUJBQ1IsY0FDVyxJQUFJLG1CQUdDLHVCQUF1QixDQUFDLE1BQU0sa0JBQy9CLENBQUMsd0JBQXdCLENBQUMsYUFDL0I7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsc0JBQXNCLENBQUM7NEJBQ3BELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKOzhCQVlNLE1BQU07c0JBRFosS0FBSztnQkFJSyxLQUFLO3NCQURmLEtBQUs7Z0JBd0JRLElBQUk7c0JBRGpCLFdBQVc7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5ULCBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB0eXBlIHsgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRGVzdHJveVJlZixcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBmb3J3YXJkUmVmLFxyXG4gICAgSG9zdEJpbmRpbmcsXHJcbiAgICBpbmplY3QsXHJcbiAgICBJbnB1dCxcclxuICAgIHNpZ25hbFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHR5cGUgeyBDdWlOdWxsYWJsZSwgQ3VpT25DaGFuZ2UsIEN1aU9uVG91Y2hlZCB9IGZyb20gJ0BjdWJ5LXVpL2Nkayc7XHJcbmltcG9ydCB7IEN1aUNsaWNrT3V0c2lkZURpcmVjdGl2ZSB9IGZyb20gJ0BjdWJ5LXVpL2Nkayc7XHJcbmltcG9ydCB7IEN1aUJ1dHRvbk1vZHVsZSwgQ3VpQ29udGV4dE1lbnVNb2R1bGUsIEN1aUlucHV0TW9kdWxlLCBDdWlMYWJlbE1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMnO1xyXG5cclxuaW1wb3J0IHR5cGUgeyBUb29sIH0gZnJvbSAnLi4vZWRpdG9yLXRvb2wtbW9kYWwvZWRpdG9yLXRvb2wtbW9kYWwub3B0aW9ucyc7XHJcblxyXG5pbXBvcnQgeyBFRElUT1JfU0VMRUNUT1IgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBNYXJrZXJUeXBlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWFya2Vycy1zZXJ2aWNlLm9wdGlvbnMnO1xyXG5pbXBvcnQgeyBDdWlNYXJrZXJzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21hcmtlcnMuc2VydmljZSc7XHJcblxyXG5pbXBvcnQgeyBTZWxlY3RPcHRpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudC9zZWxlY3QtaXRlbS9zZWxlY3Qtb3B0aW9uLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY2MtbWFya2VyLXNlbGVjdCcsXHJcbiAgICBpbXBvcnRzOiBbXHJcbiAgICAgICAgQ3VpQnV0dG9uTW9kdWxlLFxyXG4gICAgICAgIEN1aUNvbnRleHRNZW51TW9kdWxlLFxyXG4gICAgICAgIEN1aUlucHV0TW9kdWxlLFxyXG4gICAgICAgIEN1aUxhYmVsTW9kdWxlLFxyXG4gICAgICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICAgICAgU2VsZWN0T3B0aW9uQ29tcG9uZW50LFxyXG4gICAgICAgIE5nSWYsXHJcbiAgICAgICAgTmdGb3JcclxuICAgIF0sXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL21hcmtlci1zZWxlY3QuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vbWFya2VyLXNlbGVjdC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBob3N0RGlyZWN0aXZlczogW0N1aUNsaWNrT3V0c2lkZURpcmVjdGl2ZV0sXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNYXJrZXJTZWxlY3RDb21wb25lbnQpLFxyXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgICAgIH1cclxuICAgIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIE1hcmtlclNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjdWlDbGlja091dHNpZGVEaXJlY3RpdmUgPSBpbmplY3QoQ3VpQ2xpY2tPdXRzaWRlRGlyZWN0aXZlLCB7IHNlbGY6IHRydWUgfSk7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnQgPSBpbmplY3QoRWxlbWVudFJlZikubmF0aXZlRWxlbWVudDtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWFya2Vyc1NlcnZpY2UgPSBpbmplY3QoQ3VpTWFya2Vyc1NlcnZpY2UpO1xyXG5cclxuICAgIHByaXZhdGUgU1BBQ0VfQkVUV0VFTl9UQVJHRVRfQU5EX0xJU1QgPSA1O1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdGFyZ2V0ITogSFRNTEJ1dHRvbkVsZW1lbnQ7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBzZXQgc3BhY2UodmFsdWU6IG51bWJlcikge1xyXG4gICAgICAgIHRoaXMuU1BBQ0VfQkVUV0VFTl9UQVJHRVRfQU5EX0xJU1QgPSB2YWx1ZTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgaXNWaXNpYmxlID0gc2lnbmFsKGZhbHNlKTtcclxuICAgIHByb3RlY3RlZCBpc0hpZGRlbiA9IHNpZ25hbCh0cnVlKTtcclxuICAgIHByb3RlY3RlZCBlZGl0b3IhOiBIVE1MRWxlbWVudDtcclxuICAgIHByb3RlY3RlZCB2YWx1ZSE6IEN1aU51bGxhYmxlPFRvb2w+O1xyXG4gICAgLy8gVE9ETzogc2V0IGN1cnJlbnQgdHlwZVxyXG4gICAgcHJvdGVjdGVkIGVsZW1lbnRzID0gdGhpcy5tYXJrZXJzU2VydmljZS5nZXRNYXJrZXJzQnlUeXBlKE1hcmtlclR5cGUudG9vbCk7XHJcbiAgICBwcm90ZWN0ZWQgb25DaGFuZ2UhOiBDdWlPbkNoYW5nZTx1bmtub3duPjtcclxuICAgIHByb3RlY3RlZCBvblRvdWNoZWQhOiBDdWlPblRvdWNoZWQ7XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdGFyZ2V0VG9nZ2xlRXZlbnRMaXN0ZW5lciA9ICgpOiB2b2lkID0+IHtcclxuICAgICAgICB0aGlzLmlzVmlzaWJsZS51cGRhdGUoKHByZXYpID0+ICFwcmV2KTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmlzVmlzaWJsZSgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuY2FsY3VsYXRlRHJvcGRvd25Qb3NpdGlvbigpO1xyXG4gICAgfTtcclxuXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLl9oaWRkZW4nKVxyXG4gICAgcHJvdGVjdGVkIGdldCBoaWRlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmlzSGlkZGVuKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IFRvb2wpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IEN1aU9uQ2hhbmdlPHVua25vd24+KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogQ3VpT25Ub3VjaGVkKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25TY3JvbGwoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pc1Zpc2libGUuc2V0KGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5pbml0VGFyZ2V0RWxlbWVudExpc3RlbmVyKCk7XHJcbiAgICAgICAgdGhpcy5pbml0Q2xpY2tPdXRzaWRlU3Vic2NyaXB0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5pbml0T25DbG9zZVdoZW5FZGl0b3JTY3JvbGwoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kZXN0cm95RXZlbnRMaXN0ZW5lcnMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgb25Ub29sQ2xpY2sodG9vbDogVG9vbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB0b29sO1xyXG5cclxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XHJcblxyXG4gICAgICAgIC8vIHRoaXMuaXNWaXNpYmxlLnNldChmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpbml0VGFyZ2V0RWxlbWVudExpc3RlbmVyKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMudGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy50YXJnZXRUb2dnbGVFdmVudExpc3RlbmVyKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluaXRDbGlja091dHNpZGVTdWJzY3JpcHRpb24oKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jdWlDbGlja091dHNpZGVEaXJlY3RpdmUuY3VpQ2xpY2tPdXRzaWRlLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgodGFyZ2V0KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRhcmdldC5jb250YWlucyh0YXJnZXQpIHx8ICF0aGlzLmlzVmlzaWJsZSgpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuaXNWaXNpYmxlLnNldChmYWxzZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBpbml0T25DbG9zZVdoZW5FZGl0b3JTY3JvbGwoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3IgPSB0aGlzLmVsZW1lbnQuY2xvc2VzdChFRElUT1JfU0VMRUNUT1IpO1xyXG5cclxuICAgICAgICB0aGlzLmVkaXRvcj8uYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vblNjcm9sbC5iaW5kKHRoaXMpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGRlc3Ryb3lFdmVudExpc3RlbmVycygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmVkaXRvcj8ucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdGhpcy5vblNjcm9sbC5iaW5kKHRoaXMpKTtcclxuICAgICAgICB0aGlzLnRhcmdldD8uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLnRhcmdldFRvZ2dsZUV2ZW50TGlzdGVuZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2FsY3VsYXRlRHJvcGRvd25Qb3NpdGlvbigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlzSGlkZGVuLnNldCh0cnVlKTtcclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMudGFyZ2V0O1xyXG4gICAgICAgICAgICBjb25zdCB7IGJvdHRvbTogdGFyZ2V0UmVjdEJvdHRvbSwgbGVmdDogdGFyZ2V0UmVjdExlZnQgfSA9IHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICAgICAgY29uc3QgeyBjbGllbnRIZWlnaHQ6IGRvY3VtZW50Q2xpZW50SGVpZ2h0LCBjbGllbnRXaWR0aDogZG9jdW1lbnRDbGllbnRXaWR0aCB9ID1cclxuICAgICAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xyXG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZVRvQm90dG9tID0gZG9jdW1lbnRDbGllbnRIZWlnaHQgLSAodGFyZ2V0UmVjdEJvdHRvbSArIHRoaXMuU1BBQ0VfQkVUV0VFTl9UQVJHRVRfQU5EX0xJU1QpO1xyXG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZVRvUmlnaHQgPSBkb2N1bWVudENsaWVudFdpZHRoIC0gdGFyZ2V0UmVjdExlZnQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGlzTGlzdFJpZ2h0ID0gZGlzdGFuY2VUb1JpZ2h0IDwgdGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICAgICAgICBjb25zdCBpc0xpc3RBYm92ZSA9IGRpc3RhbmNlVG9Cb3R0b20gPCB0aGlzLmVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VQb3NpdGlvblkoaXNMaXN0QWJvdmUsIHRhcmdldC5vZmZzZXRIZWlnaHQsIHRhcmdldFJlY3RCb3R0b20pO1xyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZVBvc2l0aW9uWChpc0xpc3RSaWdodCwgdGFyZ2V0Lm9mZnNldFdpZHRoLCB0YXJnZXRSZWN0TGVmdCk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNIaWRkZW4uc2V0KGZhbHNlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNoYW5nZVBvc2l0aW9uWChpc0xpc3RSaWdodDogYm9vbGVhbiwgd2lkdGg6IG51bWJlciwgbGVmdDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGlzTGlzdFJpZ2h0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5yaWdodCA9ICdhdXRvJztcclxuICAgICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLmxlZnQgPSBsZWZ0O1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLnJpZ2h0ID0gbGVmdCAtIHRoaXMuZWxlbWVudC5vZmZzZXRXaWR0aCArIHdpZHRoO1xyXG4gICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5sZWZ0ID0gJ2F1dG8nO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY2hhbmdlUG9zaXRpb25ZKGlzTGlzdEFib3ZlOiBib29sZWFuLCBoZWlnaHQ6IG51bWJlciwgYm90dG9tOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICBpZiAoaXNMaXN0QWJvdmUpIHtcclxuICAgICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLnRvcCA9XHJcbiAgICAgICAgICAgICAgICBib3R0b20gLSB0aGlzLmVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gaGVpZ2h0IC0gdGhpcy5TUEFDRV9CRVRXRUVOX1RBUkdFVF9BTkRfTElTVCArICdweCc7XHJcblxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmVsZW1lbnQuc3R5bGUudG9wID0gYm90dG9tICsgdGhpcy5TUEFDRV9CRVRXRUVOX1RBUkdFVF9BTkRfTElTVCArICdweCc7XHJcbiAgICB9XHJcbn1cclxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVmlzaWJsZSgpXCI+XHJcbiAgPGRpdlxyXG4gICAgICAjZHJvcGRvd25cclxuICAgICAgY2xhc3M9XCJkcm9wZG93blwiXHJcbiAgPlxyXG4gICAgICA8aGVhZGVyIGNsYXNzPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgICA8Y3VpLWlucHV0LXRleHRcclxuICAgICAgICAgICAgICBjbGFzcz1cImhlYWRlcl9faW5wdXRcIlxyXG4gICAgICAgICAgICAgIGN1aVRleHRGaWVsZElkPVwiZXN0aW1hdGVkXCJcclxuICAgICAgICAgICAgICBjdWlUZXh0RmllbGRQbGFjZWhvbGRlcj1cIlNlYXJjaC4uLlwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIGN1aUJ1dHRvblxyXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJnaG9zdFwiXHJcbiAgICAgICAgICAgICAgc2l6ZT1cInh4c1wiXHJcbiAgICAgICAgICAgICAgaWNvbj1cImN1aUljb25GaWx0ZXJzTGluZXNcIlxyXG4gICAgICAgICAgPjwvYnV0dG9uPlxyXG4gICAgICA8L2hlYWRlcj5cclxuICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbGFibGUtY29udGVudFwiPlxyXG4gICAgICAgIDxjYy1zZWxlY3Qtb3B0aW9uXHJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBlbGVtZW50IG9mIGVsZW1lbnRzXCJcclxuICAgICAgICAgICAgW2NsYXNzLl9zZWxlY3RlZF09XCJlbGVtZW50LmlkID09PSB2YWx1ZT8uaWRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwib25Ub29sQ2xpY2soZWxlbWVudClcIlxyXG4gICAgICAgICAgICBbdG9vbF09XCJlbGVtZW50XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export const MARKER_SELECT_SELECTOR = 'marker-select';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2VyLXNlbGVjdC5vcHRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9lZGl0b3IvY29tcG9uZW50cy9tYXJrZXItc2VsZWN0L21hcmtlci1zZWxlY3Qub3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgTUFSS0VSX1NFTEVDVF9TRUxFQ1RPUiA9ICdtYXJrZXItc2VsZWN0JztcclxuIl19