@worktile/theia 3.0.6 → 3.0.9

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 (625) hide show
  1. package/README.md +11 -11
  2. package/bundles/worktile-theia.umd.js +14360 -14315
  3. package/bundles/worktile-theia.umd.js.map +1 -1
  4. package/components/color-select/color-select.component.d.ts +32 -32
  5. package/components/color-select/color-select.component.scss +107 -107
  6. package/components/column-resize/column-resize-notifier.d.ts +35 -35
  7. package/components/column-resize/column-resize.directive.d.ts +26 -26
  8. package/components/column-resize/column-resize.module.d.ts +14 -14
  9. package/components/column-resize/event-dispatcher.d.ts +31 -31
  10. package/components/column-resize/overlay-handle.component.d.ts +33 -33
  11. package/components/column-resize/resize-ref.d.ts +25 -25
  12. package/components/column-resize/resizing.store.d.ts +28 -28
  13. package/components/column-resize/selectors.d.ts +3 -3
  14. package/components/contextmenu/contextmenu.component.d.ts +22 -22
  15. package/components/conversion-hint/conversion-hint.component.d.ts +18 -18
  16. package/components/conversion-hint/conversion-hint.component.scss +11 -11
  17. package/components/element/element.component.d.ts +7 -7
  18. package/components/inline-toolbar/inline-toolbar.component.d.ts +26 -26
  19. package/components/nav-split-line/nav-split-line.component.d.ts +13 -13
  20. package/components/table-select/table-select.component.d.ts +20 -20
  21. package/components/table-select/table-select.component.scss +35 -35
  22. package/components/template/template.component.d.ts +15 -15
  23. package/components/text/text.component.d.ts +14 -14
  24. package/components/toolbar/toolbar.component.d.ts +65 -65
  25. package/components/toolbar-dropdown/toolbar-dropdown.component.d.ts +33 -33
  26. package/components/toolbar-dropdown/toolbar-dropdown.component.scss +0 -1
  27. package/components/toolbar-group/toolbar-group.component.d.ts +33 -33
  28. package/components/toolbar-group/toolbar-group.component.scss +17 -17
  29. package/components/toolbar-item/toolbar-item.component.d.ts +18 -18
  30. package/constants/auto-format-rules.d.ts +2 -2
  31. package/constants/code.d.ts +9 -9
  32. package/constants/color-select.d.ts +14 -14
  33. package/constants/default.d.ts +9 -9
  34. package/constants/error.d.ts +5 -5
  35. package/constants/index.d.ts +5 -5
  36. package/constants/node-types.d.ts +99 -99
  37. package/constants/selector.d.ts +2 -2
  38. package/constants/toolbar.d.ts +17 -17
  39. package/core/create-plugin.d.ts +2 -2
  40. package/core/create-toolbar.d.ts +5 -5
  41. package/core/index.d.ts +4 -4
  42. package/core/toolbar-item/base-toolbar-item.d.ts +29 -29
  43. package/core/utils/combine-plugins.d.ts +2 -2
  44. package/core/utils/flatten-deep-plugins.d.ts +6 -6
  45. package/core/utils/get-plugin-options.d.ts +2 -2
  46. package/core/utils/get-plugin.d.ts +2 -2
  47. package/core/utils/get-plugins.d.ts +2 -2
  48. package/core/utils/index.d.ts +10 -10
  49. package/core/utils/merge-array.d.ts +1 -1
  50. package/core/utils/merge-deep-plugins.d.ts +2 -2
  51. package/core/utils/merge-options.d.ts +2 -2
  52. package/core/utils/nested-structure-by-key.d.ts +2 -2
  53. package/core/utils/plugins-by-key.d.ts +2 -2
  54. package/core/with-theia.d.ts +4 -4
  55. package/custom-types.d.ts +131 -131
  56. package/editor.component.d.ts +92 -91
  57. package/editor.module.d.ts +98 -98
  58. package/esm2015/components/color-select/color-select.component.js +112 -112
  59. package/esm2015/components/column-resize/column-resize-notifier.js +31 -31
  60. package/esm2015/components/column-resize/column-resize.directive.js +98 -98
  61. package/esm2015/components/column-resize/column-resize.module.js +34 -34
  62. package/esm2015/components/column-resize/event-dispatcher.js +55 -55
  63. package/esm2015/components/column-resize/overlay-handle.component.js +139 -139
  64. package/esm2015/components/column-resize/resize-ref.js +25 -25
  65. package/esm2015/components/column-resize/resizing.store.js +154 -154
  66. package/esm2015/components/column-resize/selectors.js +4 -4
  67. package/esm2015/components/contextmenu/contextmenu.component.js +64 -64
  68. package/esm2015/components/conversion-hint/conversion-hint.component.js +59 -59
  69. package/esm2015/components/element/element.component.js +23 -23
  70. package/esm2015/components/inline-toolbar/inline-toolbar.component.js +126 -126
  71. package/esm2015/components/nav-split-line/nav-split-line.component.js +36 -36
  72. package/esm2015/components/table-select/table-select.component.js +53 -53
  73. package/esm2015/components/template/template.component.js +66 -66
  74. package/esm2015/components/text/text.component.js +57 -57
  75. package/esm2015/components/toolbar/toolbar.component.js +250 -250
  76. package/esm2015/components/toolbar-dropdown/toolbar-dropdown.component.js +133 -132
  77. package/esm2015/components/toolbar-group/toolbar-group.component.js +116 -115
  78. package/esm2015/components/toolbar-item/toolbar-item.component.js +64 -64
  79. package/esm2015/constants/auto-format-rules.js +166 -166
  80. package/esm2015/constants/code.js +88 -88
  81. package/esm2015/constants/color-select.js +61 -61
  82. package/esm2015/constants/default.js +9 -9
  83. package/esm2015/constants/error.js +7 -7
  84. package/esm2015/constants/index.js +5 -5
  85. package/esm2015/constants/node-types.js +132 -132
  86. package/esm2015/constants/selector.js +3 -3
  87. package/esm2015/constants/toolbar.js +69 -69
  88. package/esm2015/core/create-plugin.js +4 -4
  89. package/esm2015/core/create-toolbar.js +56 -56
  90. package/esm2015/core/index.js +4 -4
  91. package/esm2015/core/toolbar-item/base-toolbar-item.js +91 -91
  92. package/esm2015/core/utils/combine-plugins.js +9 -9
  93. package/esm2015/core/utils/flatten-deep-plugins.js +18 -18
  94. package/esm2015/core/utils/get-plugin-options.js +2 -2
  95. package/esm2015/core/utils/get-plugin.js +1 -1
  96. package/esm2015/core/utils/get-plugins.js +4 -4
  97. package/esm2015/core/utils/index.js +10 -10
  98. package/esm2015/core/utils/merge-array.js +17 -17
  99. package/esm2015/core/utils/merge-deep-plugins.js +13 -13
  100. package/esm2015/core/utils/merge-options.js +19 -19
  101. package/esm2015/core/utils/nested-structure-by-key.js +10 -10
  102. package/esm2015/core/utils/plugins-by-key.js +9 -9
  103. package/esm2015/core/with-theia.js +22 -22
  104. package/esm2015/custom-types.js +1 -1
  105. package/esm2015/editor.component.js +440 -427
  106. package/esm2015/editor.module.js +201 -201
  107. package/esm2015/interfaces/auto-format.js +1 -1
  108. package/esm2015/interfaces/editor.js +22 -22
  109. package/esm2015/interfaces/element.js +1 -1
  110. package/esm2015/interfaces/image.js +2 -2
  111. package/esm2015/interfaces/index.js +8 -8
  112. package/esm2015/interfaces/plugins/index.js +4 -4
  113. package/esm2015/interfaces/plugins/no-infer.js +1 -1
  114. package/esm2015/interfaces/plugins/plugin-key.js +39 -39
  115. package/esm2015/interfaces/plugins/plugins.js +1 -1
  116. package/esm2015/interfaces/plugins/with-override.js +1 -1
  117. package/esm2015/interfaces/reset-block-type-plugin-options.js +2 -2
  118. package/esm2015/interfaces/toolbar.js +11 -11
  119. package/esm2015/interfaces/upload.js +2 -2
  120. package/esm2015/interfaces/utility/index.js +3 -3
  121. package/esm2015/interfaces/utility/nested-structure-by-key.js +1 -1
  122. package/esm2015/interfaces/utility/override-by-key.js +1 -1
  123. package/esm2015/interfaces/utility/types.js +1 -1
  124. package/esm2015/interfaces/valid-children-types.js +35 -35
  125. package/esm2015/interfaces/view-base.js +21 -21
  126. package/esm2015/pipes.js +42 -42
  127. package/esm2015/plugins/align/align.editor.js +47 -47
  128. package/esm2015/plugins/align/align.plugin.js +63 -63
  129. package/esm2015/plugins/autoformat/autoformat.plugin.js +109 -109
  130. package/esm2015/plugins/autoformat/transforms/auto-format-block.js +14 -14
  131. package/esm2015/plugins/autoformat/transforms/auto-format-inline.js +77 -77
  132. package/esm2015/plugins/blockquote/blockquote.component.js +21 -21
  133. package/esm2015/plugins/blockquote/blockquote.editor.js +20 -20
  134. package/esm2015/plugins/blockquote/blockquote.plugin.js +70 -70
  135. package/esm2015/plugins/code/code.component.js +244 -244
  136. package/esm2015/plugins/code/code.editor.js +47 -47
  137. package/esm2015/plugins/code/code.plugin.js +41 -41
  138. package/esm2015/plugins/color/color.editor.js +44 -44
  139. package/esm2015/plugins/color/color.plugin.js +27 -27
  140. package/esm2015/plugins/color/toolbar-item.component.js +80 -79
  141. package/esm2015/plugins/common/auto-insert-data..js +77 -77
  142. package/esm2015/plugins/common/block-card.plugin.js +286 -286
  143. package/esm2015/plugins/common/get-fragment.plugin.js +24 -24
  144. package/esm2015/plugins/common/history.plugin.js +30 -30
  145. package/esm2015/plugins/common/move-selection.plugin.js +89 -89
  146. package/esm2015/plugins/common/remove-empty.plugin.js +59 -59
  147. package/esm2015/plugins/common/remove-void.plugin.js +56 -56
  148. package/esm2015/plugins/common/reset-type.plugin.js +34 -34
  149. package/esm2015/plugins/common/transforms.plugin.js +17 -17
  150. package/esm2015/plugins/deserializers/deserialize-html.plugin.js +38 -38
  151. package/esm2015/plugins/deserializers/deserialize-md.plugin.js +122 -121
  152. package/esm2015/plugins/font-size/font-size.editor.js +97 -97
  153. package/esm2015/plugins/heading/heading.editor.js +53 -53
  154. package/esm2015/plugins/heading/heading.plugin.js +84 -84
  155. package/esm2015/plugins/hr/hr.component.js +40 -40
  156. package/esm2015/plugins/hr/hr.editor.js +7 -7
  157. package/esm2015/plugins/hr/hr.plugin.js +41 -41
  158. package/esm2015/plugins/image/image.component.js +370 -365
  159. package/esm2015/plugins/image/image.editor.js +58 -60
  160. package/esm2015/plugins/image/image.plugin.js +57 -57
  161. package/esm2015/plugins/indent/indent.editor.js +72 -72
  162. package/esm2015/plugins/indent/indent.plugin.js +59 -59
  163. package/esm2015/plugins/indent/on-keydown-indent.js +53 -53
  164. package/esm2015/plugins/index.js +70 -70
  165. package/esm2015/plugins/inline-code/inline-code.component.js +21 -21
  166. package/esm2015/plugins/inline-code/inline-code.editor.js +48 -48
  167. package/esm2015/plugins/inline-code/inline-code.plugin.js +65 -65
  168. package/esm2015/plugins/link/edit/link-edit.component.js +108 -108
  169. package/esm2015/plugins/link/hover/link-hover.component.js +39 -39
  170. package/esm2015/plugins/link/link.component.js +163 -161
  171. package/esm2015/plugins/link/link.editor.js +66 -66
  172. package/esm2015/plugins/link/link.plugin.js +58 -58
  173. package/esm2015/plugins/link/link.types.js +12 -12
  174. package/esm2015/plugins/list/components/bulleted-list.component.js +33 -33
  175. package/esm2015/plugins/list/components/list-item.component.js +94 -94
  176. package/esm2015/plugins/list/components/numbered-list.component.js +39 -39
  177. package/esm2015/plugins/list/list.editor.js +125 -125
  178. package/esm2015/plugins/list/list.plugin.js +280 -280
  179. package/esm2015/plugins/list/normalizers/get-list-normalizer.js +39 -39
  180. package/esm2015/plugins/list/normalizers/normalize-list-item.js +19 -19
  181. package/esm2015/plugins/list/normalizers/normalize-no.js +42 -42
  182. package/esm2015/plugins/list/on-key-down-list.js +32 -32
  183. package/esm2015/plugins/list/queries/get-list-item-entry.js +27 -27
  184. package/esm2015/plugins/list/queries/get-list-item-sublist.js +12 -12
  185. package/esm2015/plugins/list/queries/get-list-types.js +5 -5
  186. package/esm2015/plugins/list/queries/get-start-list-item.js +26 -26
  187. package/esm2015/plugins/list/queries/has-list-in-list-item.js +27 -27
  188. package/esm2015/plugins/list/queries/is-in-list.js +5 -5
  189. package/esm2015/plugins/list/queries/is-list-nested.js +10 -10
  190. package/esm2015/plugins/list/queries/is-list.js +5 -5
  191. package/esm2015/plugins/list/queries/is-node-type-list.js +4 -4
  192. package/esm2015/plugins/list/queries/is-selection-at-list-item-start.js +12 -12
  193. package/esm2015/plugins/list/queries/is-selection-in-same-list-item.js +16 -16
  194. package/esm2015/plugins/list/queries/is-single-list-item.js +9 -9
  195. package/esm2015/plugins/list/transforms/insert-list-data.js +71 -71
  196. package/esm2015/plugins/list/transforms/insert-list-item.js +72 -72
  197. package/esm2015/plugins/list/transforms/move-list-item-down.js +41 -41
  198. package/esm2015/plugins/list/transforms/move-list-item-sublist-items-to-list-item-sublist.js +42 -42
  199. package/esm2015/plugins/list/transforms/move-list-item-sublist-items-to-list.js +29 -29
  200. package/esm2015/plugins/list/transforms/move-list-item-up.js +77 -77
  201. package/esm2015/plugins/list/transforms/unwrap-list.js +9 -9
  202. package/esm2015/plugins/list/types.js +2 -2
  203. package/esm2015/plugins/mark/mark.editor.js +28 -28
  204. package/esm2015/plugins/mark/mark.plugin.js +101 -101
  205. package/esm2015/plugins/node-id/node-id.plugin.js +68 -68
  206. package/esm2015/plugins/normalizers/insert-paragraph-nodes.js +28 -28
  207. package/esm2015/plugins/normalizers/remove-empty-nodes.js +17 -17
  208. package/esm2015/plugins/normalizers/trailing-node.plugin.js +33 -33
  209. package/esm2015/plugins/paint-format/paint-format.editor.js +122 -122
  210. package/esm2015/plugins/public-api.js +15 -15
  211. package/esm2015/plugins/quick-insert/components/quick-insert.component.js +101 -101
  212. package/esm2015/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.js +83 -83
  213. package/esm2015/plugins/quick-insert/quick-insert.editor.js +53 -52
  214. package/esm2015/plugins/quick-insert/quick-insert.plugin.js +74 -74
  215. package/esm2015/plugins/soft-break/soft-break.plugin.js +36 -36
  216. package/esm2015/plugins/soft-break/soft-break.types.js +1 -1
  217. package/esm2015/plugins/table/components/insert-mark/insert-mark.component.js +102 -102
  218. package/esm2015/plugins/table/components/row/row.component.js +46 -46
  219. package/esm2015/plugins/table/components/table.component.js +469 -469
  220. package/esm2015/plugins/table/components/td/td.component.js +698 -698
  221. package/esm2015/plugins/table/components/toolbar/table-options.component.js +67 -67
  222. package/esm2015/plugins/table/components/toolbar/table-toolbar.component.js +162 -161
  223. package/esm2015/plugins/table/table.editor.js +182 -182
  224. package/esm2015/plugins/table/table.plugin.js +423 -423
  225. package/esm2015/plugins/table/table.service.js +103 -102
  226. package/esm2015/plugins/table/table.store.js +479 -479
  227. package/esm2015/plugins/table/table.types.js +33 -33
  228. package/esm2015/plugins/table/toolbar-item.component.js +62 -61
  229. package/esm2015/plugins/table/transforms/clear-cell.js +11 -11
  230. package/esm2015/plugins/table/transforms/clear-table-node.js +27 -27
  231. package/esm2015/plugins/table/transforms/insert-column.js +57 -57
  232. package/esm2015/plugins/table/transforms/insert-row.js +42 -42
  233. package/esm2015/plugins/table/transforms/insert-table.js +14 -14
  234. package/esm2015/plugins/table/transforms/remove-column.js +51 -51
  235. package/esm2015/plugins/table/transforms/remove-row.js +50 -50
  236. package/esm2015/plugins/table/transforms/remove-table.js +49 -49
  237. package/esm2015/plugins/table/utils/add-columns.js +28 -28
  238. package/esm2015/plugins/table/utils/calc-anchor-position.js +24 -24
  239. package/esm2015/plugins/table/utils/calc-span.js +72 -72
  240. package/esm2015/plugins/table/utils/create-cell.js +19 -19
  241. package/esm2015/plugins/table/utils/create-row.js +12 -12
  242. package/esm2015/plugins/table/utils/create-table.js +13 -13
  243. package/esm2015/plugins/table/utils/get-base-height.js +22 -22
  244. package/esm2015/plugins/table/utils/get-select-cell-node.js +16 -16
  245. package/esm2015/plugins/table/utils/index.js +8 -8
  246. package/esm2015/plugins/table/utils/is-range-in-table.js +16 -16
  247. package/esm2015/plugins/table/utils/is-selection-in-table.js +11 -11
  248. package/esm2015/plugins/table/utils/is-virtual-key.js +13 -13
  249. package/esm2015/plugins/table/utils/merge-cell.js +90 -90
  250. package/esm2015/plugins/table/utils/next-path.js +5 -5
  251. package/esm2015/plugins/table/utils/normalize-table.js +30 -30
  252. package/esm2015/plugins/table/utils/remove-columns.js +23 -23
  253. package/esm2015/plugins/table/utils/set-menu-cell-invisibility.js +15 -15
  254. package/esm2015/plugins/table/utils/split-cell.js +31 -31
  255. package/esm2015/plugins/table/utils/table-position.js +242 -242
  256. package/esm2015/plugins/todo-item/todo-item.component.js +55 -55
  257. package/esm2015/plugins/todo-item/todo-item.editor.js +31 -31
  258. package/esm2015/plugins/todo-item/todo-item.plugin.js +78 -78
  259. package/esm2015/plugins/vertical-align/toolbar-item.component.js +90 -89
  260. package/esm2015/plugins/vertical-align/vertical-align.editor.js +54 -54
  261. package/esm2015/public-api.js +23 -23
  262. package/esm2015/queries/anchor-block-entry.js +13 -13
  263. package/esm2015/queries/anchor-block.js +6 -6
  264. package/esm2015/queries/anchor-inline-entry.js +10 -10
  265. package/esm2015/queries/find-descendant.js +47 -47
  266. package/esm2015/queries/find-node.js +45 -45
  267. package/esm2015/queries/find-path.js +28 -28
  268. package/esm2015/queries/get-above-by-type.js +10 -10
  269. package/esm2015/queries/get-above.js +9 -9
  270. package/esm2015/queries/get-anchor-block-entry.js +8 -8
  271. package/esm2015/queries/get-block-above.js +7 -7
  272. package/esm2015/queries/get-block-card-above.js +7 -7
  273. package/esm2015/queries/get-block-card-cursor.js +5 -5
  274. package/esm2015/queries/get-container-blocks.js +11 -11
  275. package/esm2015/queries/get-directly-parent.js +11 -11
  276. package/esm2015/queries/get-insert-elements-path.js +43 -43
  277. package/esm2015/queries/get-last-child-path.js +9 -9
  278. package/esm2015/queries/get-last-node.js +17 -17
  279. package/esm2015/queries/get-next-sibling-nodes.js +17 -17
  280. package/esm2015/queries/get-node.js +10 -10
  281. package/esm2015/queries/get-nodes-by-type.js +12 -12
  282. package/esm2015/queries/get-nodes.js +7 -7
  283. package/esm2015/queries/get-parent.js +12 -12
  284. package/esm2015/queries/get-plain-text.js +16 -16
  285. package/esm2015/queries/get-plugin-by-toolbar.js +12 -12
  286. package/esm2015/queries/get-point-before.js +62 -62
  287. package/esm2015/queries/get-point-from-location.js +15 -15
  288. package/esm2015/queries/get-previous-path.js +9 -9
  289. package/esm2015/queries/get-rang-from-block-start.js +16 -16
  290. package/esm2015/queries/get-range-before.js +17 -17
  291. package/esm2015/queries/get-selection-marks.js +19 -19
  292. package/esm2015/queries/get-selection-nodes-by-type.js +29 -29
  293. package/esm2015/queries/get-text.js +9 -9
  294. package/esm2015/queries/get-toolbar-disabled.js +13 -13
  295. package/esm2015/queries/index.js +59 -58
  296. package/esm2015/queries/is-across-blocks.js +7 -7
  297. package/esm2015/queries/is-ancestor-empty.js +6 -6
  298. package/esm2015/queries/is-ancestor.js +3 -3
  299. package/esm2015/queries/is-block-above-empty.js +11 -11
  300. package/esm2015/queries/is-block-active.js +7 -7
  301. package/esm2015/queries/is-block-card-cursor.js +4 -4
  302. package/esm2015/queries/is-block-text-empty-after-selection.js +31 -31
  303. package/esm2015/queries/is-collapsed.js +7 -7
  304. package/esm2015/queries/is-contain-nested-type.js +28 -28
  305. package/esm2015/queries/is-container-type.js +2 -2
  306. package/esm2015/queries/is-descendant.js +3 -3
  307. package/esm2015/queries/is-empty-content.js +15 -0
  308. package/esm2015/queries/is-empty-paragraph-by-path.js +7 -7
  309. package/esm2015/queries/is-empty-paragraph.js +11 -11
  310. package/esm2015/queries/is-first-child.js +5 -5
  311. package/esm2015/queries/is-include-types.js +11 -11
  312. package/esm2015/queries/is-node-type-in.js +9 -9
  313. package/esm2015/queries/is-node-type.js +15 -15
  314. package/esm2015/queries/is-paragraph.js +9 -9
  315. package/esm2015/queries/is-point-at-root.js +2 -2
  316. package/esm2015/queries/is-range-across-blocks.js +18 -18
  317. package/esm2015/queries/is-range-at-root.js +3 -3
  318. package/esm2015/queries/is-start.js +6 -6
  319. package/esm2015/queries/some-node.js +9 -9
  320. package/esm2015/services/color-select.service.js +50 -49
  321. package/esm2015/services/context.service.js +60 -59
  322. package/esm2015/services/table-contextmenu.service.js +190 -189
  323. package/esm2015/services/toolbar.service.js +47 -47
  324. package/esm2015/shortcuts/index.js +5 -5
  325. package/esm2015/shortcuts/mark.js +24 -24
  326. package/esm2015/transforms/apply-deep-to-nodes.js +21 -21
  327. package/esm2015/transforms/clear-marks.js +23 -23
  328. package/esm2015/transforms/close-conversion-hint.js +8 -8
  329. package/esm2015/transforms/delete-element.js +11 -11
  330. package/esm2015/transforms/handle-continual-delete-backward.js +17 -17
  331. package/esm2015/transforms/handle-continual-insert-break.js +19 -19
  332. package/esm2015/transforms/index.js +18 -18
  333. package/esm2015/transforms/insert-elements.js +34 -34
  334. package/esm2015/transforms/insert-paragraph.js +6 -6
  335. package/esm2015/transforms/merge-deep-to-nodes.js +8 -8
  336. package/esm2015/transforms/move-children.js +21 -21
  337. package/esm2015/transforms/on-keydown-reset-block-type.js +22 -22
  338. package/esm2015/transforms/set-end-selection.js +10 -10
  339. package/esm2015/transforms/set-marks.js +9 -9
  340. package/esm2015/transforms/set-node.js +5 -5
  341. package/esm2015/transforms/split-node.js +31 -31
  342. package/esm2015/transforms/un-hang-range.js +11 -11
  343. package/esm2015/transforms/un-wrap.js +11 -11
  344. package/esm2015/transforms/unwrap-nodes-by-type.js +11 -11
  345. package/esm2015/utils/auto-focus.js +13 -13
  346. package/esm2015/utils/auto-scroll-view.js +24 -24
  347. package/esm2015/utils/cast-array.js +7 -7
  348. package/esm2015/utils/common.js +2 -2
  349. package/esm2015/utils/create-empty-paragraph.js +14 -14
  350. package/esm2015/utils/data-transform.js +48 -48
  351. package/esm2015/utils/dom.js +46 -46
  352. package/esm2015/utils/editor-uuid.js +8 -8
  353. package/esm2015/utils/fragment.js +65 -65
  354. package/esm2015/utils/get-editable-element-height.js +6 -6
  355. package/esm2015/utils/get-toolbar-class.js +6 -6
  356. package/esm2015/utils/id-creator.js +11 -11
  357. package/esm2015/utils/index.js +13 -13
  358. package/esm2015/utils/is-clean-empty-paragraph.js +36 -36
  359. package/esm2015/utils/is-inline.js +9 -9
  360. package/esm2015/utils/lodash.js +3 -3
  361. package/esm2015/utils/match.js +29 -29
  362. package/esm2015/utils/merge-element-options.js +19 -19
  363. package/esm2015/utils/weak-maps.js +3 -3
  364. package/esm2015/worktile-theia.js +4 -4
  365. package/fesm2015/worktile-theia.js +13157 -13113
  366. package/fesm2015/worktile-theia.js.map +1 -1
  367. package/interfaces/auto-format.d.ts +64 -64
  368. package/interfaces/editor.d.ts +146 -146
  369. package/interfaces/element.d.ts +9 -9
  370. package/interfaces/image.d.ts +25 -25
  371. package/interfaces/index.d.ts +8 -8
  372. package/interfaces/plugins/index.d.ts +4 -4
  373. package/interfaces/plugins/no-infer.d.ts +1 -1
  374. package/interfaces/plugins/plugin-key.d.ts +48 -48
  375. package/interfaces/plugins/plugins.d.ts +45 -45
  376. package/interfaces/plugins/with-override.d.ts +7 -7
  377. package/interfaces/reset-block-type-plugin-options.d.ts +23 -23
  378. package/interfaces/toolbar.d.ts +64 -64
  379. package/interfaces/upload.d.ts +11 -11
  380. package/interfaces/utility/index.d.ts +3 -3
  381. package/interfaces/utility/nested-structure-by-key.d.ts +3 -3
  382. package/interfaces/utility/override-by-key.d.ts +3 -3
  383. package/interfaces/utility/types.d.ts +1 -1
  384. package/interfaces/valid-children-types.d.ts +9 -9
  385. package/interfaces/view-base.d.ts +9 -9
  386. package/package.json +1 -1
  387. package/pipes.d.ts +16 -16
  388. package/plugins/align/align.editor.d.ts +7 -7
  389. package/plugins/align/align.plugin.d.ts +2 -2
  390. package/plugins/autoformat/autoformat.plugin.d.ts +6 -6
  391. package/plugins/autoformat/transforms/auto-format-block.d.ts +5 -5
  392. package/plugins/autoformat/transforms/auto-format-inline.d.ts +9 -9
  393. package/plugins/blockquote/blockquote.component.d.ts +11 -11
  394. package/plugins/blockquote/blockquote.editor.d.ts +4 -4
  395. package/plugins/blockquote/blockquote.plugin.d.ts +2 -2
  396. package/plugins/code/code.component.d.ts +65 -65
  397. package/plugins/code/code.editor.d.ts +8 -8
  398. package/plugins/code/code.plugin.d.ts +2 -2
  399. package/plugins/color/color.editor.d.ts +8 -8
  400. package/plugins/color/color.plugin.d.ts +1 -1
  401. package/plugins/color/toolbar-item.component.d.ts +16 -16
  402. package/plugins/common/auto-insert-data..d.ts +2 -2
  403. package/plugins/common/block-card.plugin.d.ts +2 -2
  404. package/plugins/common/get-fragment.plugin.d.ts +6 -6
  405. package/plugins/common/history.plugin.d.ts +9 -9
  406. package/plugins/common/move-selection.plugin.d.ts +2 -2
  407. package/plugins/common/remove-empty.plugin.d.ts +2 -2
  408. package/plugins/common/remove-void.plugin.d.ts +2 -2
  409. package/plugins/common/reset-type.plugin.d.ts +2 -2
  410. package/plugins/common/transforms.plugin.d.ts +8 -8
  411. package/plugins/deserializers/deserialize-html.plugin.d.ts +2 -2
  412. package/plugins/deserializers/deserialize-md.plugin.d.ts +2 -2
  413. package/plugins/font-size/font-size.editor.d.ts +10 -10
  414. package/plugins/heading/heading.editor.d.ts +9 -9
  415. package/plugins/heading/heading.plugin.d.ts +7 -7
  416. package/plugins/hr/hr.component.d.ts +12 -12
  417. package/plugins/hr/hr.editor.d.ts +4 -4
  418. package/plugins/hr/hr.plugin.d.ts +2 -2
  419. package/plugins/image/image.component.d.ts +74 -71
  420. package/plugins/image/image.editor.d.ts +12 -12
  421. package/plugins/image/image.plugin.d.ts +7 -7
  422. package/plugins/indent/indent.editor.d.ts +10 -10
  423. package/plugins/indent/indent.plugin.d.ts +8 -8
  424. package/plugins/indent/on-keydown-indent.d.ts +3 -3
  425. package/plugins/index.d.ts +1 -1
  426. package/plugins/inline-code/inline-code.component.d.ts +9 -9
  427. package/plugins/inline-code/inline-code.editor.d.ts +7 -7
  428. package/plugins/inline-code/inline-code.plugin.d.ts +2 -2
  429. package/plugins/link/edit/link-edit.component.d.ts +36 -36
  430. package/plugins/link/hover/link-hover.component.d.ts +15 -15
  431. package/plugins/link/link.component.d.ts +39 -39
  432. package/plugins/link/link.editor.d.ts +7 -7
  433. package/plugins/link/link.plugin.d.ts +2 -2
  434. package/plugins/link/link.types.d.ts +9 -9
  435. package/plugins/list/components/bulleted-list.component.d.ts +15 -15
  436. package/plugins/list/components/list-item.component.d.ts +20 -20
  437. package/plugins/list/components/numbered-list.component.d.ts +16 -16
  438. package/plugins/list/list.editor.d.ts +12 -12
  439. package/plugins/list/list.plugin.d.ts +3 -3
  440. package/plugins/list/normalizers/get-list-normalizer.d.ts +6 -6
  441. package/plugins/list/normalizers/normalize-list-item.d.ts +5 -5
  442. package/plugins/list/normalizers/normalize-no.d.ts +2 -2
  443. package/plugins/list/on-key-down-list.d.ts +2 -2
  444. package/plugins/list/queries/get-list-item-entry.d.ts +10 -10
  445. package/plugins/list/queries/get-list-item-sublist.d.ts +6 -6
  446. package/plugins/list/queries/get-list-types.d.ts +2 -2
  447. package/plugins/list/queries/get-start-list-item.d.ts +8 -8
  448. package/plugins/list/queries/has-list-in-list-item.d.ts +15 -15
  449. package/plugins/list/queries/is-in-list.d.ts +2 -2
  450. package/plugins/list/queries/is-list-nested.d.ts +5 -5
  451. package/plugins/list/queries/is-list.d.ts +2 -2
  452. package/plugins/list/queries/is-node-type-list.d.ts +2 -2
  453. package/plugins/list/queries/is-selection-at-list-item-start.d.ts +5 -5
  454. package/plugins/list/queries/is-selection-in-same-list-item.d.ts +5 -5
  455. package/plugins/list/queries/is-single-list-item.d.ts +5 -5
  456. package/plugins/list/transforms/insert-list-data.d.ts +12 -12
  457. package/plugins/list/transforms/insert-list-item.d.ts +5 -5
  458. package/plugins/list/transforms/move-list-item-down.d.ts +6 -6
  459. package/plugins/list/transforms/move-list-item-sublist-items-to-list-item-sublist.d.ts +20 -20
  460. package/plugins/list/transforms/move-list-item-sublist-items-to-list.d.ts +19 -19
  461. package/plugins/list/transforms/move-list-item-up.d.ts +10 -10
  462. package/plugins/list/transforms/unwrap-list.d.ts +2 -2
  463. package/plugins/list/types.d.ts +7 -7
  464. package/plugins/mark/mark.editor.d.ts +8 -8
  465. package/plugins/mark/mark.plugin.d.ts +3 -3
  466. package/plugins/node-id/node-id.plugin.d.ts +8 -8
  467. package/plugins/normalizers/insert-paragraph-nodes.d.ts +7 -7
  468. package/plugins/normalizers/remove-empty-nodes.d.ts +7 -7
  469. package/plugins/normalizers/trailing-node.plugin.d.ts +9 -9
  470. package/plugins/paint-format/paint-format.editor.d.ts +8 -8
  471. package/plugins/public-api.d.ts +15 -15
  472. package/plugins/quick-insert/components/quick-insert.component.d.ts +28 -28
  473. package/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.d.ts +28 -28
  474. package/plugins/quick-insert/quick-insert.editor.d.ts +7 -7
  475. package/plugins/quick-insert/quick-insert.plugin.d.ts +10 -10
  476. package/plugins/soft-break/soft-break.plugin.d.ts +5 -5
  477. package/plugins/soft-break/soft-break.types.d.ts +8 -8
  478. package/plugins/table/components/insert-mark/insert-mark.component.d.ts +24 -24
  479. package/plugins/table/components/row/row.component.d.ts +14 -14
  480. package/plugins/table/components/table.component.d.ts +79 -79
  481. package/plugins/table/components/td/td.component.d.ts +95 -95
  482. package/plugins/table/components/toolbar/table-options.component.d.ts +20 -20
  483. package/plugins/table/components/toolbar/table-toolbar.component.d.ts +38 -38
  484. package/plugins/table/table.editor.d.ts +25 -25
  485. package/plugins/table/table.plugin.d.ts +3 -3
  486. package/plugins/table/table.service.d.ts +30 -30
  487. package/plugins/table/table.store.d.ts +71 -71
  488. package/plugins/table/table.types.d.ts +67 -67
  489. package/plugins/table/toolbar-item.component.d.ts +17 -17
  490. package/plugins/table/transforms/clear-cell.d.ts +6 -6
  491. package/plugins/table/transforms/clear-table-node.d.ts +6 -6
  492. package/plugins/table/transforms/insert-column.d.ts +12 -12
  493. package/plugins/table/transforms/insert-row.d.ts +6 -6
  494. package/plugins/table/transforms/insert-table.d.ts +6 -6
  495. package/plugins/table/transforms/remove-column.d.ts +3 -3
  496. package/plugins/table/transforms/remove-row.d.ts +3 -3
  497. package/plugins/table/transforms/remove-table.d.ts +3 -3
  498. package/plugins/table/utils/add-columns.d.ts +2 -2
  499. package/plugins/table/utils/calc-anchor-position.d.ts +6 -6
  500. package/plugins/table/utils/calc-span.d.ts +11 -11
  501. package/plugins/table/utils/create-cell.d.ts +16 -16
  502. package/plugins/table/utils/create-row.d.ts +7 -7
  503. package/plugins/table/utils/create-table.d.ts +7 -7
  504. package/plugins/table/utils/get-base-height.d.ts +9 -9
  505. package/plugins/table/utils/get-select-cell-node.d.ts +7 -7
  506. package/plugins/table/utils/index.d.ts +7 -7
  507. package/plugins/table/utils/is-range-in-table.d.ts +6 -6
  508. package/plugins/table/utils/is-selection-in-table.d.ts +6 -6
  509. package/plugins/table/utils/is-virtual-key.d.ts +1 -1
  510. package/plugins/table/utils/merge-cell.d.ts +21 -21
  511. package/plugins/table/utils/next-path.d.ts +2 -2
  512. package/plugins/table/utils/normalize-table.d.ts +2 -2
  513. package/plugins/table/utils/remove-columns.d.ts +2 -2
  514. package/plugins/table/utils/set-menu-cell-invisibility.d.ts +3 -3
  515. package/plugins/table/utils/split-cell.d.ts +4 -4
  516. package/plugins/table/utils/table-position.d.ts +97 -97
  517. package/plugins/todo-item/todo-item.component.d.ts +21 -21
  518. package/plugins/todo-item/todo-item.editor.d.ts +5 -5
  519. package/plugins/todo-item/todo-item.plugin.d.ts +5 -5
  520. package/plugins/vertical-align/toolbar-item.component.d.ts +25 -25
  521. package/plugins/vertical-align/vertical-align.editor.d.ts +7 -7
  522. package/public-api.d.ts +20 -20
  523. package/queries/anchor-block-entry.d.ts +2 -2
  524. package/queries/anchor-block.d.ts +2 -2
  525. package/queries/anchor-inline-entry.d.ts +2 -2
  526. package/queries/find-descendant.d.ts +10 -10
  527. package/queries/find-node.d.ts +15 -15
  528. package/queries/find-path.d.ts +6 -6
  529. package/queries/get-above-by-type.d.ts +6 -6
  530. package/queries/get-above.d.ts +6 -6
  531. package/queries/get-anchor-block-entry.d.ts +2 -2
  532. package/queries/get-block-above.d.ts +7 -7
  533. package/queries/get-block-card-above.d.ts +7 -7
  534. package/queries/get-block-card-cursor.d.ts +2 -2
  535. package/queries/get-container-blocks.d.ts +2 -2
  536. package/queries/get-directly-parent.d.ts +2 -2
  537. package/queries/get-insert-elements-path.d.ts +7 -7
  538. package/queries/get-last-child-path.d.ts +6 -6
  539. package/queries/get-last-node.d.ts +2 -2
  540. package/queries/get-next-sibling-nodes.d.ts +7 -7
  541. package/queries/get-node.d.ts +2 -2
  542. package/queries/get-nodes-by-type.d.ts +6 -6
  543. package/queries/get-nodes.d.ts +4 -4
  544. package/queries/get-parent.d.ts +7 -7
  545. package/queries/get-plain-text.d.ts +6 -6
  546. package/queries/get-plugin-by-toolbar.d.ts +3 -3
  547. package/queries/get-point-before.d.ts +38 -38
  548. package/queries/get-point-from-location.d.ts +5 -5
  549. package/queries/get-previous-path.d.ts +2 -2
  550. package/queries/get-rang-from-block-start.d.ts +9 -9
  551. package/queries/get-range-before.d.ts +7 -7
  552. package/queries/get-selection-marks.d.ts +12 -12
  553. package/queries/get-selection-nodes-by-type.d.ts +3 -3
  554. package/queries/get-text.d.ts +6 -6
  555. package/queries/get-toolbar-disabled.d.ts +4 -4
  556. package/queries/index.d.ts +58 -57
  557. package/queries/is-across-blocks.d.ts +2 -2
  558. package/queries/is-ancestor-empty.d.ts +5 -5
  559. package/queries/is-ancestor.d.ts +2 -2
  560. package/queries/is-block-above-empty.d.ts +5 -5
  561. package/queries/is-block-active.d.ts +3 -3
  562. package/queries/is-block-card-cursor.d.ts +2 -2
  563. package/queries/is-block-text-empty-after-selection.d.ts +7 -7
  564. package/queries/is-collapsed.d.ts +6 -6
  565. package/queries/is-contain-nested-type.d.ts +2 -2
  566. package/queries/is-container-type.d.ts +2 -2
  567. package/queries/is-descendant.d.ts +2 -2
  568. package/queries/is-empty-content.d.ts +2 -0
  569. package/queries/is-empty-paragraph-by-path.d.ts +2 -2
  570. package/queries/is-empty-paragraph.d.ts +2 -2
  571. package/queries/is-first-child.d.ts +5 -5
  572. package/queries/is-include-types.d.ts +3 -3
  573. package/queries/is-node-type-in.d.ts +6 -6
  574. package/queries/is-node-type.d.ts +6 -6
  575. package/queries/is-paragraph.d.ts +2 -2
  576. package/queries/is-point-at-root.d.ts +2 -2
  577. package/queries/is-range-across-blocks.d.ts +8 -8
  578. package/queries/is-range-at-root.d.ts +2 -2
  579. package/queries/is-start.d.ts +5 -5
  580. package/queries/some-node.d.ts +7 -7
  581. package/services/color-select.service.d.ts +20 -20
  582. package/services/context.service.d.ts +49 -45
  583. package/services/table-contextmenu.service.d.ts +25 -25
  584. package/services/toolbar.service.d.ts +9 -9
  585. package/shortcuts/index.d.ts +2 -2
  586. package/shortcuts/mark.d.ts +2 -2
  587. package/transforms/apply-deep-to-nodes.d.ts +12 -12
  588. package/transforms/clear-marks.d.ts +2 -2
  589. package/transforms/close-conversion-hint.d.ts +2 -2
  590. package/transforms/delete-element.d.ts +2 -2
  591. package/transforms/handle-continual-delete-backward.d.ts +3 -3
  592. package/transforms/handle-continual-insert-break.d.ts +3 -3
  593. package/transforms/index.d.ts +18 -18
  594. package/transforms/insert-elements.d.ts +2 -2
  595. package/transforms/insert-paragraph.d.ts +2 -2
  596. package/transforms/merge-deep-to-nodes.d.ts +5 -5
  597. package/transforms/move-children.d.ts +24 -24
  598. package/transforms/on-keydown-reset-block-type.d.ts +3 -3
  599. package/transforms/set-end-selection.d.ts +2 -2
  600. package/transforms/set-marks.d.ts +12 -12
  601. package/transforms/set-node.d.ts +2 -2
  602. package/transforms/split-node.d.ts +3 -3
  603. package/transforms/un-hang-range.d.ts +10 -10
  604. package/transforms/un-wrap.d.ts +3 -3
  605. package/transforms/unwrap-nodes-by-type.d.ts +6 -6
  606. package/utils/auto-focus.d.ts +2 -2
  607. package/utils/auto-scroll-view.d.ts +6 -6
  608. package/utils/cast-array.d.ts +1 -1
  609. package/utils/common.d.ts +2 -2
  610. package/utils/create-empty-paragraph.d.ts +2 -2
  611. package/utils/data-transform.d.ts +6 -6
  612. package/utils/dom.d.ts +10 -10
  613. package/utils/editor-uuid.d.ts +3 -3
  614. package/utils/fragment.d.ts +10 -10
  615. package/utils/get-editable-element-height.d.ts +2 -2
  616. package/utils/get-toolbar-class.d.ts +2 -2
  617. package/utils/id-creator.d.ts +1 -1
  618. package/utils/index.d.ts +13 -13
  619. package/utils/is-clean-empty-paragraph.d.ts +9 -9
  620. package/utils/is-inline.d.ts +2 -2
  621. package/utils/lodash.d.ts +1 -1
  622. package/utils/match.d.ts +18 -18
  623. package/utils/merge-element-options.d.ts +2 -2
  624. package/utils/weak-maps.d.ts +5 -5
  625. package/worktile-theia.d.ts +5 -5
@@ -1,132 +1,133 @@
1
- import { Component, Input, HostListener, ViewChild } from '@angular/core';
2
- import { DropdownMode } from '../../constants/toolbar';
3
- import { TheBaseToolbarDropdown } from '../../core/toolbar-item/base-toolbar-item';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "ngx-tethys/popover";
6
- import * as i2 from "@angular/cdk/overlay";
7
- import * as i3 from "ngx-tethys/nav";
8
- import * as i4 from "ngx-tethys/icon";
9
- import * as i5 from "ngx-tethys/action-menu";
10
- import * as i6 from "@angular/common";
11
- import * as i7 from "ngx-tethys/tooltip";
12
- export class TheToolbarDropdownComponent extends TheBaseToolbarDropdown {
13
- constructor(elementRef, thyPopover, viewContainerRef, overlay) {
14
- super();
15
- this.elementRef = elementRef;
16
- this.thyPopover = thyPopover;
17
- this.viewContainerRef = viewContainerRef;
18
- this.overlay = overlay;
19
- this.dropdownMode = DropdownMode;
20
- }
21
- get isOpen() {
22
- return this.dropdownPopoverRef && this.dropdownPopoverRef.getOverlayRef() && this.dropdownPopoverRef.getOverlayRef().hasAttached();
23
- }
24
- toggleDropdown(event) {
25
- var _a;
26
- super.execute(event);
27
- if (((_a = this.editor) === null || _a === void 0 ? void 0 : _a.disabled) || this.disabled) {
28
- return;
29
- }
30
- this.openDropdownPopover();
31
- }
32
- handleDocumentMouseDown(event) {
33
- if (!this.elementRef.nativeElement.contains(event.target)) {
34
- this.closeDropdownPopover();
35
- }
36
- }
37
- ngOnInit() {
38
- var _a;
39
- if (!this.template) {
40
- this.template = this.mode === this.dropdownMode.icon ? this.iconModeTemplate : this.textModeTemplate;
41
- }
42
- if (!this.activeMenuItem) {
43
- this.activeMenuItem = this.defaultDropdownItem;
44
- }
45
- if (this.toolbarItem) {
46
- this.elementRef.nativeElement.classList.add(`${(_a = this.toolbarItem) === null || _a === void 0 ? void 0 : _a.key}`);
47
- }
48
- }
49
- itemMousedown(event, item) {
50
- super.execute(event);
51
- this.closeDropdownPopover();
52
- if (!this.toolbarItem.dropdownFixedIcon) {
53
- this.activeMenuItem = item;
54
- }
55
- if (this.itemMousedownHandle) {
56
- this.itemMousedownHandle(item);
57
- return;
58
- }
59
- if (item === null || item === void 0 ? void 0 : item.execute) {
60
- item === null || item === void 0 ? void 0 : item.execute(this.editor);
61
- }
62
- }
63
- openDropdownPopover() {
64
- var _a, _b;
65
- this.dropdownPopoverRef = this.thyPopover.open(this.dropdownTemplate, {
66
- origin: this.elementRef,
67
- panelClass: ['the-toolbar-dropdown-popover', (_a = this.toolbarItem) === null || _a === void 0 ? void 0 : _a.key],
68
- placement: 'bottomLeft',
69
- insideClosable: false,
70
- backdropClosable: true,
71
- hasBackdrop: false,
72
- offset: 10,
73
- viewContainerRef: this.viewContainerRef,
74
- scrollStrategy: this.overlay.scrollStrategies.reposition()
75
- });
76
- (_b = this.dropdownPopoverRef) === null || _b === void 0 ? void 0 : _b.getOverlayRef().updatePositionStrategy(this.createPositionStrategy());
77
- }
78
- closeDropdownPopover() {
79
- var _a;
80
- if (this.dropdownPopoverRef) {
81
- (_a = this.dropdownPopoverRef) === null || _a === void 0 ? void 0 : _a.close();
82
- }
83
- }
84
- createPositionStrategy() {
85
- const topPosition = {
86
- originX: 'start',
87
- originY: 'top',
88
- overlayX: 'start',
89
- overlayY: 'bottom',
90
- offsetX: 0,
91
- offsetY: -15
92
- };
93
- const bottomPosition = Object.assign(Object.assign({}, topPosition), { overlayY: 'top', offsetY: 42 });
94
- return this.overlay
95
- .position()
96
- .flexibleConnectedTo(this.elementRef)
97
- .withFlexibleDimensions(false)
98
- .withGrowAfterOpen(false)
99
- .withPush(false)
100
- .withPositions([bottomPosition, topPosition]);
101
- }
102
- }
103
- TheToolbarDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheToolbarDropdownComponent, deps: [{ token: i0.ElementRef }, { token: i1.ThyPopover }, { token: i0.ViewContainerRef }, { token: i2.Overlay }], target: i0.ɵɵFactoryTarget.Component });
104
- TheToolbarDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheToolbarDropdownComponent, selector: "the-toolbar-dropdown", inputs: { itemMousedownHandle: "itemMousedownHandle" }, host: { listeners: { "mousedown": "toggleDropdown($event)", "document: mousedown": "handleDocumentMouseDown($event)" }, classAttribute: "the-toolbar-dropdown-container" }, viewQueries: [{ propertyName: "iconModeTemplate", first: true, predicate: ["iconModeTemplate"], descendants: true, static: true }, { propertyName: "textModeTemplate", first: true, predicate: ["textModeTemplate"], descendants: true, static: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n\n<ng-template #iconModeTemplate>\n <a thyIconNavLink class=\"icon-mode link-with-down\" [thyTooltip]=\"activeMenuItem?.name\" thyTooltipPlacement=\"top\">\n <thy-icon [thyIconName]=\"activeMenuItem?.icon\"></thy-icon>\n <thy-icon class=\"caret-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n</ng-template>\n\n<ng-template #textModeTemplate>\n <a thyIconNavLink class=\"text-mode\" [thyTooltip]=\"activeMenuItem?.name\" thyTooltipPlacement=\"top\">\n <span class=\"show-text\">{{ activeMenuItem?.name }}</span>\n <thy-icon class=\"text-caret-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n</ng-template>\n\n<ng-template #dropdownTemplate>\n <thy-action-menu class=\"dropdown\">\n <ng-container *ngFor=\"let menu of menus\">\n <a\n *ngIf=\"menu.key !== 'split'\"\n thyActionMenuItem\n href=\"javascript:;\"\n [thyActionMenuItemActive]=\"menu.key === activeMenuItem?.key && !toolbarItem?.dropdownFixedIcon\"\n (mousedown)=\"itemMousedown($event, menu)\"\n [ngStyle]=\"menu?.styles\"\n >\n <span *ngIf=\"menu.icon && mode === dropdownMode.icon\" thyActionMenuItemIcon>\n <thy-icon [thyIconName]=\"menu.icon\"></thy-icon>\n </span>\n <span *ngIf=\"menu.name\" thyActionMenuItemName>{{ menu.name }}</span>\n </a>\n <thy-action-menu-divider *ngIf=\"menu.key === 'split'\"></thy-action-menu-divider>\n </ng-container>\n </thy-action-menu>\n</ng-template>\n", components: [{ type: i3.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: i4.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { type: i5.ThyActionMenuComponent, selector: "thy-action-menu", inputs: ["thyTheme", "thyWidth"] }, { type: i5.ThyActionMenuDividerComponent, selector: "thy-action-menu-divider", inputs: ["thyTitle", "thyType"] }], directives: [{ type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.ThyActionMenuItemDirective, selector: "[thyActionMenuItem]", inputs: ["thyDisabled", "thyType"] }, { type: i5.ThyActionMenuItemActiveDirective, selector: "[thyActionMenuItemActive]", inputs: ["thyActionMenuItemActive"] }, { type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i5.ThyActionMenuItemIconDirective, selector: "[thyActionMenuItemIcon]" }, { type: i5.ThyActionMenuItemNameDirective, selector: "[thyActionMenuItemName]" }] });
105
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheToolbarDropdownComponent, decorators: [{
106
- type: Component,
107
- args: [{
108
- selector: 'the-toolbar-dropdown',
109
- templateUrl: './toolbar-dropdown.component.html',
110
- host: {
111
- class: 'the-toolbar-dropdown-container'
112
- }
113
- }]
114
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ThyPopover }, { type: i0.ViewContainerRef }, { type: i2.Overlay }]; }, propDecorators: { itemMousedownHandle: [{
115
- type: Input
116
- }], iconModeTemplate: [{
117
- type: ViewChild,
118
- args: ['iconModeTemplate', { static: true }]
119
- }], textModeTemplate: [{
120
- type: ViewChild,
121
- args: ['textModeTemplate', { static: true }]
122
- }], dropdownTemplate: [{
123
- type: ViewChild,
124
- args: ['dropdownTemplate', { static: true }]
125
- }], toggleDropdown: [{
126
- type: HostListener,
127
- args: ['mousedown', ['$event']]
128
- }], handleDocumentMouseDown: [{
129
- type: HostListener,
130
- args: ['document: mousedown', ['$event']]
131
- }] } });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy90b29sYmFyLWRyb3Bkb3duL3Rvb2xiYXItZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvdG9vbGJhci1kcm9wZG93bi90b29sYmFyLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXNCLEtBQUssRUFBRSxZQUFZLEVBQWUsU0FBUyxFQUFpQyxNQUFNLGVBQWUsQ0FBQztBQUkxSSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7OztBQVNuRixNQUFNLE9BQU8sMkJBQTRCLFNBQVEsc0JBQXNCO0lBc0NuRSxZQUNXLFVBQXNCLEVBQ3JCLFVBQXNCLEVBQ3RCLGdCQUFrQyxFQUNsQyxPQUFnQjtRQUV4QixLQUFLLEVBQUUsQ0FBQztRQUxELGVBQVUsR0FBVixVQUFVLENBQVk7UUFDckIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFyQzVCLGlCQUFZLEdBQUcsWUFBWSxDQUFDO0lBd0M1QixDQUFDO0lBckNELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkksQ0FBQztJQVlELGNBQWMsQ0FBQyxLQUFpQjs7UUFDNUIsS0FBSyxDQUFDLE9BQU8s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QVEsQ0FBQztnQkFXckMsdUJBQXVCO3NCQUR0QixZQUFZO3VCQUFDLHFCQUFxQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEVsZW1lbnRSZWYsIElucHV0LCBIb3N0TGlzdGVuZXIsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYsIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25uZWN0ZWRQb3NpdGlvbiwgT3ZlcmxheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IFRoeVBvcG92ZXIsIFRoeVBvcG92ZXJSZWYgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgRHJvcGRvd25Nb2RlIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3Rvb2xiYXInO1xuaW1wb3J0IHsgVG9vbGJhckl0ZW0gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3Rvb2xiYXInO1xuaW1wb3J0IHsgVGhlQmFzZVRvb2xiYXJEcm9wZG93biB9IGZyb20gJy4uLy4uL2NvcmUvdG9vbGJhci1pdGVtL2Jhc2UtdG9vbGJhci1pdGVtJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aGUtdG9vbGJhci1kcm9wZG93bicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Rvb2xiYXItZHJvcGRvd24uY29tcG9uZW50Lmh0bWwnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICd0aGUtdG9vbGJhci1kcm9wZG93bi1jb250YWluZXInXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUaGVUb29sYmFyRHJvcGRvd25Db21wb25lbnQgZXh0ZW5kcyBUaGVCYXNlVG9vbGJhckRyb3Bkb3duIGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBpdGVtTW91c2Vkb3duSGFuZGxlOiAoaXRlbTogVG9vbGJhckl0ZW0pID0+IHZvaWQ7XG5cbiAgICBlZGl0b3I6IEVkaXRvcjtcbiAgICB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBkcm9wZG93bk1vZGUgPSBEcm9wZG93bk1vZGU7XG4gICAgZHJvcGRvd25Qb3BvdmVyUmVmOiBUaHlQb3BvdmVyUmVmPGFueT47XG5cbiAgICBnZXQgaXNPcGVuKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kcm9wZG93blBvcG92ZXJSZWYgJiYgdGhpcy5kcm9wZG93blBvcG92ZXJSZWYuZ2V0T3ZlcmxheVJlZigpICYmIHRoaXMuZHJvcGRvd25Qb3BvdmVyUmVmLmdldE92ZXJsYXlSZWYoKS5oYXNBdHRhY2hlZCgpO1xuICAgIH1cblxuICAgIEBWaWV3Q2hpbGQoJ2ljb25Nb2RlVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIGljb25Nb2RlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBAVmlld0NoaWxkKCd0ZXh0TW9kZVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICB0ZXh0TW9kZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgnZHJvcGRvd25UZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgZHJvcGRvd25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gICAgdG9nZ2xlRHJvcGRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgc3VwZXIuZXhlY3V0ZShldmVudCk7XG5cbiAgICAgICAgaWYgKHRoaXMuZWRpdG9yPy5kaXNhYmxlZCB8fCB0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vcGVuRHJvcGRvd25Qb3BvdmVyKCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6IG1vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlRG9jdW1lbnRNb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd25Qb3BvdmVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgdGh5UG9wb3ZlcjogVGh5UG9wb3ZlcixcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXlcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLnRlbXBsYXRlKSB7XG4gICAgICAgICAgICB0aGlzLnRlbXBsYXRlID0gdGhpcy5tb2RlID09PSB0aGlzLmRyb3Bkb3duTW9kZS5pY29uID8gdGhpcy5pY29uTW9kZVRlbXBsYXRlIDogdGhpcy50ZXh0TW9kZVRlbXBsYXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLmFjdGl2ZU1lbnVJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZU1lbnVJdGVtID0gdGhpcy5kZWZhdWx0RHJvcGRvd25JdGVtO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMudG9vbGJhckl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoYCR7dGhpcy50b29sYmFySXRlbT8ua2V5fWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaXRlbU1vdXNlZG93bihldmVudDogTW91c2VFdmVudCwgaXRlbTogVG9vbGJhckl0ZW0pIHtcbiAgICAgICAgc3VwZXIuZXhlY3V0ZShldmVudCk7XG5cbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duUG9wb3ZlcigpO1xuXG4gICAgICAgIGlmICghdGhpcy50b29sYmFySXRlbS5kcm9wZG93bkZpeGVkSWNvbikge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVNZW51SXRlbSA9IGl0ZW07ICAgICAgICAgICAgXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pdGVtTW91c2Vkb3duSGFuZGxlKSB7XG4gICAgICAgICAgICB0aGlzLml0ZW1Nb3VzZWRvd25IYW5kbGUoaXRlbSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXRlbT8uZXhlY3V0ZSkge1xuICAgICAgICAgICAgaXRlbT8uZXhlY3V0ZSh0aGlzLmVkaXRvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvcGVuRHJvcGRvd25Qb3BvdmVyKCkge1xuICAgICAgICB0aGlzLmRyb3Bkb3duUG9wb3ZlclJlZiA9IHRoaXMudGh5UG9wb3Zlci5vcGVuKHRoaXMuZHJvcGRvd25UZW1wbGF0ZSwge1xuICAgICAgICAgICAgb3JpZ2luOiB0aGlzLmVsZW1lbnRSZWYsXG4gICAgICAgICAgICBwYW5lbENsYXNzOiBbJ3RoZS10b29sYmFyLWRyb3Bkb3duLXBvcG92ZXInLCB0aGlzLnRvb2xiYXJJdGVtPy5rZXldLFxuICAgICAgICAgICAgcGxhY2VtZW50OiAnYm90dG9tTGVmdCcsXG4gICAgICAgICAgICBpbnNpZGVDbG9zYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBiYWNrZHJvcENsb3NhYmxlOiB0cnVlLFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgICAgICAgICAgb2Zmc2V0OiAxMCxcbiAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLm92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKClcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZHJvcGRvd25Qb3BvdmVyUmVmPy5nZXRPdmVybGF5UmVmKCkudXBkYXRlUG9zaXRpb25TdHJhdGVneSh0aGlzLmNyZWF0ZVBvc2l0aW9uU3RyYXRlZ3koKSk7XG4gICAgfVxuXG4gICAgY2xvc2VEcm9wZG93blBvcG92ZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmRyb3Bkb3duUG9wb3ZlclJlZikge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93blBvcG92ZXJSZWY/LmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjcmVhdGVQb3NpdGlvblN0cmF0ZWd5KCkge1xuICAgICAgICBjb25zdCB0b3BQb3NpdGlvbjogQ29ubmVjdGVkUG9zaXRpb24gPSB7XG4gICAgICAgICAgICBvcmlnaW5YOiAnc3RhcnQnLFxuICAgICAgICAgICAgb3JpZ2luWTogJ3RvcCcsXG4gICAgICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG92ZXJsYXlZOiAnYm90dG9tJyxcbiAgICAgICAgICAgIG9mZnNldFg6IDAsXG4gICAgICAgICAgICBvZmZzZXRZOiAtMTVcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYm90dG9tUG9zaXRpb246IENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICAgICAgICAgICAgLi4udG9wUG9zaXRpb24sXG4gICAgICAgICAgICBvdmVybGF5WTogJ3RvcCcsXG4gICAgICAgICAgICBvZmZzZXRZOiA0MlxuICAgICAgICB9O1xuICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5XG4gICAgICAgICAgICAucG9zaXRpb24oKVxuICAgICAgICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5lbGVtZW50UmVmKVxuICAgICAgICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXG4gICAgICAgICAgICAud2l0aEdyb3dBZnRlck9wZW4oZmFsc2UpXG4gICAgICAgICAgICAud2l0aFB1c2goZmFsc2UpXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhbYm90dG9tUG9zaXRpb24sIHRvcFBvc2l0aW9uXSk7XG4gICAgfVxufVxuIiwiPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpY29uTW9kZVRlbXBsYXRlPlxuICAgIDxhIHRoeUljb25OYXZMaW5rIGNsYXNzPVwiaWNvbi1tb2RlIGxpbmstd2l0aC1kb3duXCIgW3RoeVRvb2x0aXBdPVwiYWN0aXZlTWVudUl0ZW0/Lm5hbWVcIiB0aHlUb29sdGlwUGxhY2VtZW50PVwidG9wXCI+XG4gICAgICAgIDx0aHktaWNvbiBbdGh5SWNvbk5hbWVdPVwiYWN0aXZlTWVudUl0ZW0/Lmljb25cIj48L3RoeS1pY29uPlxuICAgICAgICA8dGh5LWljb24gY2xhc3M9XCJjYXJldC1kb3duLWljb24gZm9udC1zaXplLXNtIHRleHQtZGVzY1wiIHRoeUljb25OYW1lPVwiY2FyZXQtZG93blwiPjwvdGh5LWljb24+XG4gICAgPC9hPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN0ZXh0TW9kZVRlbXBsYXRlPlxuICAgIDxhIHRoeUljb25OYXZMaW5rIGNsYXNzPVwidGV4dC1tb2RlXCIgW3RoeVRvb2x0aXBdPVwiYWN0aXZlTWVudUl0ZW0/Lm5hbWVcIiB0aHlUb29sdGlwUGxhY2VtZW50PVwidG9wXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic2hvdy10ZXh0XCI+e3sgYWN0aXZlTWVudUl0ZW0/Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgIDx0aHktaWNvbiBjbGFzcz1cInRleHQtY2FyZXQtZG93bi1pY29uIGZvbnQtc2l6ZS1zbSB0ZXh0LWRlc2NcIiB0aHlJY29uTmFtZT1cImNhcmV0LWRvd25cIj48L3RoeS1pY29uPlxuICAgIDwvYT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZHJvcGRvd25UZW1wbGF0ZT5cbiAgICA8dGh5LWFjdGlvbi1tZW51IGNsYXNzPVwiZHJvcGRvd25cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbWVudSBvZiBtZW51c1wiPlxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnUua2V5ICE9PSAnc3BsaXQnXCJcbiAgICAgICAgICAgICAgICB0aHlBY3Rpb25NZW51SXRlbVxuICAgICAgICAgICAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OjtcIlxuICAgICAgICAgICAgICAgIFt0aHlBY3Rpb25NZW51SXRlbUFjdGl2ZV09XCJtZW51LmtleSA9PT0gYWN0aXZlTWVudUl0ZW0/LmtleSAmJiAhdG9vbGJhckl0ZW0/LmRyb3Bkb3duRml4ZWRJY29uXCJcbiAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cIml0ZW1Nb3VzZWRvd24oJGV2ZW50LCBtZW51KVwiXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwibWVudT8uc3R5bGVzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1lbnUuaWNvbiAmJiBtb2RlID09PSBkcm9wZG93bk1vZGUuaWNvblwiIHRoeUFjdGlvbk1lbnVJdGVtSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPHRoeS1pY29uIFt0aHlJY29uTmFtZV09XCJtZW51Lmljb25cIj48L3RoeS1pY29uPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1lbnUubmFtZVwiIHRoeUFjdGlvbk1lbnVJdGVtTmFtZT57eyBtZW51Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8dGh5LWFjdGlvbi1tZW51LWRpdmlkZXIgKm5nSWY9XCJtZW51LmtleSA9PT0gJ3NwbGl0J1wiPjwvdGh5LWFjdGlvbi1tZW51LWRpdmlkZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvdGh5LWFjdGlvbi1tZW51PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
1
+ import { Component, Input, HostListener, ViewChild } from '@angular/core';
2
+ import { DropdownMode } from '../../constants/toolbar';
3
+ import { TheBaseToolbarDropdown } from '../../core/toolbar-item/base-toolbar-item';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "ngx-tethys/popover";
6
+ import * as i2 from "@angular/cdk/overlay";
7
+ import * as i3 from "ngx-tethys/nav";
8
+ import * as i4 from "ngx-tethys/icon";
9
+ import * as i5 from "ngx-tethys/action-menu";
10
+ import * as i6 from "@angular/common";
11
+ import * as i7 from "ngx-tethys/tooltip";
12
+ export class TheToolbarDropdownComponent extends TheBaseToolbarDropdown {
13
+ constructor(elementRef, thyPopover, viewContainerRef, overlay) {
14
+ super();
15
+ this.elementRef = elementRef;
16
+ this.thyPopover = thyPopover;
17
+ this.viewContainerRef = viewContainerRef;
18
+ this.overlay = overlay;
19
+ this.dropdownMode = DropdownMode;
20
+ }
21
+ get isOpen() {
22
+ return this.dropdownPopoverRef && this.dropdownPopoverRef.getOverlayRef() && this.dropdownPopoverRef.getOverlayRef().hasAttached();
23
+ }
24
+ toggleDropdown(event) {
25
+ var _a;
26
+ super.execute(event);
27
+ if (((_a = this.editor) === null || _a === void 0 ? void 0 : _a.disabled) || this.disabled) {
28
+ return;
29
+ }
30
+ this.openDropdownPopover();
31
+ }
32
+ handleDocumentMouseDown(event) {
33
+ if (!this.elementRef.nativeElement.contains(event.target)) {
34
+ this.closeDropdownPopover();
35
+ }
36
+ }
37
+ ngOnInit() {
38
+ var _a;
39
+ if (!this.template) {
40
+ this.template = this.mode === this.dropdownMode.icon ? this.iconModeTemplate : this.textModeTemplate;
41
+ }
42
+ if (!this.activeMenuItem) {
43
+ this.activeMenuItem = this.defaultDropdownItem;
44
+ }
45
+ if (this.toolbarItem) {
46
+ this.elementRef.nativeElement.classList.add(`${(_a = this.toolbarItem) === null || _a === void 0 ? void 0 : _a.key}`);
47
+ }
48
+ }
49
+ itemMousedown(event, item) {
50
+ super.execute(event);
51
+ this.closeDropdownPopover();
52
+ if (!this.toolbarItem.dropdownFixedIcon) {
53
+ this.activeMenuItem = item;
54
+ }
55
+ if (this.itemMousedownHandle) {
56
+ this.itemMousedownHandle(item);
57
+ return;
58
+ }
59
+ if (item === null || item === void 0 ? void 0 : item.execute) {
60
+ item === null || item === void 0 ? void 0 : item.execute(this.editor);
61
+ }
62
+ }
63
+ openDropdownPopover() {
64
+ var _a, _b;
65
+ this.dropdownPopoverRef = this.thyPopover.open(this.dropdownTemplate, {
66
+ origin: this.elementRef,
67
+ panelClass: ['the-toolbar-dropdown-popover', (_a = this.toolbarItem) === null || _a === void 0 ? void 0 : _a.key],
68
+ placement: 'bottomLeft',
69
+ insideClosable: false,
70
+ backdropClosable: true,
71
+ hasBackdrop: false,
72
+ offset: 10,
73
+ minWidth: 0,
74
+ viewContainerRef: this.viewContainerRef,
75
+ scrollStrategy: this.overlay.scrollStrategies.reposition()
76
+ });
77
+ (_b = this.dropdownPopoverRef) === null || _b === void 0 ? void 0 : _b.getOverlayRef().updatePositionStrategy(this.createPositionStrategy());
78
+ }
79
+ closeDropdownPopover() {
80
+ var _a;
81
+ if (this.dropdownPopoverRef) {
82
+ (_a = this.dropdownPopoverRef) === null || _a === void 0 ? void 0 : _a.close();
83
+ }
84
+ }
85
+ createPositionStrategy() {
86
+ const topPosition = {
87
+ originX: 'start',
88
+ originY: 'top',
89
+ overlayX: 'start',
90
+ overlayY: 'bottom',
91
+ offsetX: 0,
92
+ offsetY: -15
93
+ };
94
+ const bottomPosition = Object.assign(Object.assign({}, topPosition), { overlayY: 'top', offsetY: 42 });
95
+ return this.overlay
96
+ .position()
97
+ .flexibleConnectedTo(this.elementRef)
98
+ .withFlexibleDimensions(false)
99
+ .withGrowAfterOpen(false)
100
+ .withPush(false)
101
+ .withPositions([bottomPosition, topPosition]);
102
+ }
103
+ }
104
+ TheToolbarDropdownComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheToolbarDropdownComponent, deps: [{ token: i0.ElementRef }, { token: i1.ThyPopover }, { token: i0.ViewContainerRef }, { token: i2.Overlay }], target: i0.ɵɵFactoryTarget.Component });
105
+ TheToolbarDropdownComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheToolbarDropdownComponent, selector: "the-toolbar-dropdown", inputs: { itemMousedownHandle: "itemMousedownHandle" }, host: { listeners: { "mousedown": "toggleDropdown($event)", "document: mousedown": "handleDocumentMouseDown($event)" }, classAttribute: "the-toolbar-dropdown-container" }, viewQueries: [{ propertyName: "iconModeTemplate", first: true, predicate: ["iconModeTemplate"], descendants: true, static: true }, { propertyName: "textModeTemplate", first: true, predicate: ["textModeTemplate"], descendants: true, static: true }, { propertyName: "dropdownTemplate", first: true, predicate: ["dropdownTemplate"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n\n<ng-template #iconModeTemplate>\n <a thyIconNavLink class=\"icon-mode link-with-down\" [thyTooltip]=\"activeMenuItem?.name\" thyTooltipPlacement=\"top\">\n <thy-icon [thyIconName]=\"activeMenuItem?.icon\"></thy-icon>\n <thy-icon class=\"caret-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n</ng-template>\n\n<ng-template #textModeTemplate>\n <a thyIconNavLink class=\"text-mode\" [thyTooltip]=\"activeMenuItem?.name\" thyTooltipPlacement=\"top\">\n <span class=\"show-text\">{{ activeMenuItem?.name }}</span>\n <thy-icon class=\"text-caret-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n</ng-template>\n\n<ng-template #dropdownTemplate>\n <thy-action-menu class=\"dropdown\">\n <ng-container *ngFor=\"let menu of menus\">\n <a\n *ngIf=\"menu.key !== 'split'\"\n thyActionMenuItem\n href=\"javascript:;\"\n [thyActionMenuItemActive]=\"menu.key === activeMenuItem?.key && !toolbarItem?.dropdownFixedIcon\"\n (mousedown)=\"itemMousedown($event, menu)\"\n [ngStyle]=\"menu?.styles\"\n >\n <span *ngIf=\"menu.icon && mode === dropdownMode.icon\" thyActionMenuItemIcon>\n <thy-icon [thyIconName]=\"menu.icon\"></thy-icon>\n </span>\n <span *ngIf=\"menu.name\" thyActionMenuItemName>{{ menu.name }}</span>\n </a>\n <thy-action-menu-divider *ngIf=\"menu.key === 'split'\"></thy-action-menu-divider>\n </ng-container>\n </thy-action-menu>\n</ng-template>\n", components: [{ type: i3.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: i4.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { type: i5.ThyActionMenuComponent, selector: "thy-action-menu", inputs: ["thyTheme", "thyWidth"] }, { type: i5.ThyActionMenuDividerComponent, selector: "thy-action-menu-divider", inputs: ["thyTitle", "thyType"] }], directives: [{ type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i7.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.ThyActionMenuItemDirective, selector: "[thyActionMenuItem]", inputs: ["thyDisabled", "thyType"] }, { type: i5.ThyActionMenuItemActiveDirective, selector: "[thyActionMenuItemActive]", inputs: ["thyActionMenuItemActive"] }, { type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i5.ThyActionMenuItemIconDirective, selector: "[thyActionMenuItemIcon]" }, { type: i5.ThyActionMenuItemNameDirective, selector: "[thyActionMenuItemName]" }] });
106
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheToolbarDropdownComponent, decorators: [{
107
+ type: Component,
108
+ args: [{
109
+ selector: 'the-toolbar-dropdown',
110
+ templateUrl: './toolbar-dropdown.component.html',
111
+ host: {
112
+ class: 'the-toolbar-dropdown-container'
113
+ }
114
+ }]
115
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ThyPopover }, { type: i0.ViewContainerRef }, { type: i2.Overlay }]; }, propDecorators: { itemMousedownHandle: [{
116
+ type: Input
117
+ }], iconModeTemplate: [{
118
+ type: ViewChild,
119
+ args: ['iconModeTemplate', { static: true }]
120
+ }], textModeTemplate: [{
121
+ type: ViewChild,
122
+ args: ['textModeTemplate', { static: true }]
123
+ }], dropdownTemplate: [{
124
+ type: ViewChild,
125
+ args: ['dropdownTemplate', { static: true }]
126
+ }], toggleDropdown: [{
127
+ type: HostListener,
128
+ args: ['mousedown', ['$event']]
129
+ }], handleDocumentMouseDown: [{
130
+ type: HostListener,
131
+ args: ['document: mousedown', ['$event']]
132
+ }] } });
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci1kcm9wZG93bi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy90b29sYmFyLWRyb3Bkb3duL3Rvb2xiYXItZHJvcGRvd24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvdG9vbGJhci1kcm9wZG93bi90b29sYmFyLWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXNCLEtBQUssRUFBRSxZQUFZLEVBQWUsU0FBUyxFQUFpQyxNQUFNLGVBQWUsQ0FBQztBQUkxSSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7OztBQVNuRixNQUFNLE9BQU8sMkJBQTRCLFNBQVEsc0JBQXNCO0lBc0NuRSxZQUNXLFVBQXNCLEVBQ3JCLFVBQXNCLEVBQ3RCLGdCQUFrQyxFQUNsQyxPQUFnQjtRQUV4QixLQUFLLEVBQUUsQ0FBQztRQUxELGVBQVUsR0FBVixVQUFVLENBQVk7UUFDckIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFyQzVCLGlCQUFZLEdBQUcsWUFBWSxDQUFDO0lBd0M1QixDQUFDO0lBckNELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkksQ0FBQztJQVlELGNBQWMsQ0FBQyxLQUFpQjs7UUFDNUIsS0FBSyxDQUFDLE9BQU8s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QUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVdyQyx1QkFBdUI7c0JBRHRCLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgRWxlbWVudFJlZiwgSW5wdXQsIEhvc3RMaXN0ZW5lciwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZiwgSG9zdEJpbmRpbmcgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uLCBPdmVybGF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBFZGl0b3IgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBEcm9wZG93bk1vZGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdG9vbGJhcic7XG5pbXBvcnQgeyBUb29sYmFySXRlbSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvdG9vbGJhcic7XG5pbXBvcnQgeyBUaGVCYXNlVG9vbGJhckRyb3Bkb3duIH0gZnJvbSAnLi4vLi4vY29yZS90b29sYmFyLWl0ZW0vYmFzZS10b29sYmFyLWl0ZW0nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoZS10b29sYmFyLWRyb3Bkb3duJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vdG9vbGJhci1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3RoZS10b29sYmFyLWRyb3Bkb3duLWNvbnRhaW5lcidcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFRoZVRvb2xiYXJEcm9wZG93bkNvbXBvbmVudCBleHRlbmRzIFRoZUJhc2VUb29sYmFyRHJvcGRvd24gaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIGl0ZW1Nb3VzZWRvd25IYW5kbGU6IChpdGVtOiBUb29sYmFySXRlbSkgPT4gdm9pZDtcblxuICAgIGVkaXRvcjogRWRpdG9yO1xuICAgIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIGRyb3Bkb3duTW9kZSA9IERyb3Bkb3duTW9kZTtcbiAgICBkcm9wZG93blBvcG92ZXJSZWY6IFRoeVBvcG92ZXJSZWY8YW55PjtcblxuICAgIGdldCBpc09wZW4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRyb3Bkb3duUG9wb3ZlclJlZiAmJiB0aGlzLmRyb3Bkb3duUG9wb3ZlclJlZi5nZXRPdmVybGF5UmVmKCkgJiYgdGhpcy5kcm9wZG93blBvcG92ZXJSZWYuZ2V0T3ZlcmxheVJlZigpLmhhc0F0dGFjaGVkKCk7XG4gICAgfVxuXG4gICAgQFZpZXdDaGlsZCgnaWNvbk1vZGVUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgaWNvbk1vZGVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoJ3RleHRNb2RlVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHRleHRNb2RlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBAVmlld0NoaWxkKCdkcm9wZG93blRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBkcm9wZG93blRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgICB0b2dnbGVEcm9wZG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBzdXBlci5leGVjdXRlKGV2ZW50KTtcblxuICAgICAgICBpZiAodGhpcy5lZGl0b3I/LmRpc2FibGVkIHx8IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm9wZW5Ecm9wZG93blBvcG92ZXIoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDogbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgICBoYW5kbGVEb2N1bWVudE1vdXNlRG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAoIXRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93blBvcG92ZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSB0aHlQb3BvdmVyOiBUaHlQb3BvdmVyLFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheVxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAoIXRoaXMudGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHRoaXMudGVtcGxhdGUgPSB0aGlzLm1vZGUgPT09IHRoaXMuZHJvcGRvd25Nb2RlLmljb24gPyB0aGlzLmljb25Nb2RlVGVtcGxhdGUgOiB0aGlzLnRleHRNb2RlVGVtcGxhdGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuYWN0aXZlTWVudUl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlTWVudUl0ZW0gPSB0aGlzLmRlZmF1bHREcm9wZG93bkl0ZW07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy50b29sYmFySXRlbSkge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChgJHt0aGlzLnRvb2xiYXJJdGVtPy5rZXl9YCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpdGVtTW91c2Vkb3duKGV2ZW50OiBNb3VzZUV2ZW50LCBpdGVtOiBUb29sYmFySXRlbSkge1xuICAgICAgICBzdXBlci5leGVjdXRlKGV2ZW50KTtcblxuICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd25Qb3BvdmVyKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnRvb2xiYXJJdGVtLmRyb3Bkb3duRml4ZWRJY29uKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZU1lbnVJdGVtID0gaXRlbTsgICAgICAgICAgICBcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLml0ZW1Nb3VzZWRvd25IYW5kbGUpIHtcbiAgICAgICAgICAgIHRoaXMuaXRlbU1vdXNlZG93bkhhbmRsZShpdGVtKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtPy5leGVjdXRlKSB7XG4gICAgICAgICAgICBpdGVtPy5leGVjdXRlKHRoaXMuZWRpdG9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9wZW5Ecm9wZG93blBvcG92ZXIoKSB7XG4gICAgICAgIHRoaXMuZHJvcGRvd25Qb3BvdmVyUmVmID0gdGhpcy50aHlQb3BvdmVyLm9wZW4odGhpcy5kcm9wZG93blRlbXBsYXRlLCB7XG4gICAgICAgICAgICBvcmlnaW46IHRoaXMuZWxlbWVudFJlZixcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsndGhlLXRvb2xiYXItZHJvcGRvd24tcG9wb3ZlcicsIHRoaXMudG9vbGJhckl0ZW0/LmtleV0sXG4gICAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b21MZWZ0JyxcbiAgICAgICAgICAgIGluc2lkZUNsb3NhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGJhY2tkcm9wQ2xvc2FibGU6IHRydWUsXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgICBvZmZzZXQ6IDEwLFxuICAgICAgICAgICAgbWluV2lkdGg6IDAsXG4gICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLnZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmRyb3Bkb3duUG9wb3ZlclJlZj8uZ2V0T3ZlcmxheVJlZigpLnVwZGF0ZVBvc2l0aW9uU3RyYXRlZ3kodGhpcy5jcmVhdGVQb3NpdGlvblN0cmF0ZWd5KCkpO1xuICAgIH1cblxuICAgIGNsb3NlRHJvcGRvd25Qb3BvdmVyKCkge1xuICAgICAgICBpZiAodGhpcy5kcm9wZG93blBvcG92ZXJSZWYpIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25Qb3BvdmVyUmVmPy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY3JlYXRlUG9zaXRpb25TdHJhdGVneSgpIHtcbiAgICAgICAgY29uc3QgdG9wUG9zaXRpb246IENvbm5lY3RlZFBvc2l0aW9uID0ge1xuICAgICAgICAgICAgb3JpZ2luWDogJ3N0YXJ0JyxcbiAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxuICAgICAgICAgICAgb3ZlcmxheVg6ICdzdGFydCcsXG4gICAgICAgICAgICBvdmVybGF5WTogJ2JvdHRvbScsXG4gICAgICAgICAgICBvZmZzZXRYOiAwLFxuICAgICAgICAgICAgb2Zmc2V0WTogLTE1XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGJvdHRvbVBvc2l0aW9uOiBDb25uZWN0ZWRQb3NpdGlvbiA9IHtcbiAgICAgICAgICAgIC4uLnRvcFBvc2l0aW9uLFxuICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxuICAgICAgICAgICAgb2Zmc2V0WTogNDJcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRoaXMub3ZlcmxheVxuICAgICAgICAgICAgLnBvc2l0aW9uKClcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKHRoaXMuZWxlbWVudFJlZilcbiAgICAgICAgICAgIC53aXRoRmxleGlibGVEaW1lbnNpb25zKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhHcm93QWZ0ZXJPcGVuKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhQdXNoKGZhbHNlKVxuICAgICAgICAgICAgLndpdGhQb3NpdGlvbnMoW2JvdHRvbVBvc2l0aW9uLCB0b3BQb3NpdGlvbl0pO1xuICAgIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaWNvbk1vZGVUZW1wbGF0ZT5cbiAgICA8YSB0aHlJY29uTmF2TGluayBjbGFzcz1cImljb24tbW9kZSBsaW5rLXdpdGgtZG93blwiIFt0aHlUb29sdGlwXT1cImFjdGl2ZU1lbnVJdGVtPy5uYW1lXCIgdGh5VG9vbHRpcFBsYWNlbWVudD1cInRvcFwiPlxuICAgICAgICA8dGh5LWljb24gW3RoeUljb25OYW1lXT1cImFjdGl2ZU1lbnVJdGVtPy5pY29uXCI+PC90aHktaWNvbj5cbiAgICAgICAgPHRoeS1pY29uIGNsYXNzPVwiY2FyZXQtZG93bi1pY29uIGZvbnQtc2l6ZS1zbSB0ZXh0LWRlc2NcIiB0aHlJY29uTmFtZT1cImNhcmV0LWRvd25cIj48L3RoeS1pY29uPlxuICAgIDwvYT5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdGV4dE1vZGVUZW1wbGF0ZT5cbiAgICA8YSB0aHlJY29uTmF2TGluayBjbGFzcz1cInRleHQtbW9kZVwiIFt0aHlUb29sdGlwXT1cImFjdGl2ZU1lbnVJdGVtPy5uYW1lXCIgdGh5VG9vbHRpcFBsYWNlbWVudD1cInRvcFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInNob3ctdGV4dFwiPnt7IGFjdGl2ZU1lbnVJdGVtPy5uYW1lIH19PC9zcGFuPlxuICAgICAgICA8dGh5LWljb24gY2xhc3M9XCJ0ZXh0LWNhcmV0LWRvd24taWNvbiBmb250LXNpemUtc20gdGV4dC1kZXNjXCIgdGh5SWNvbk5hbWU9XCJjYXJldC1kb3duXCI+PC90aHktaWNvbj5cbiAgICA8L2E+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Ryb3Bkb3duVGVtcGxhdGU+XG4gICAgPHRoeS1hY3Rpb24tbWVudSBjbGFzcz1cImRyb3Bkb3duXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1lbnUgb2YgbWVudXNcIj5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJtZW51LmtleSAhPT0gJ3NwbGl0J1wiXG4gICAgICAgICAgICAgICAgdGh5QWN0aW9uTWVudUl0ZW1cbiAgICAgICAgICAgICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgICAgICAgICAgICBbdGh5QWN0aW9uTWVudUl0ZW1BY3RpdmVdPVwibWVudS5rZXkgPT09IGFjdGl2ZU1lbnVJdGVtPy5rZXkgJiYgIXRvb2xiYXJJdGVtPy5kcm9wZG93bkZpeGVkSWNvblwiXG4gICAgICAgICAgICAgICAgKG1vdXNlZG93bik9XCJpdGVtTW91c2Vkb3duKCRldmVudCwgbWVudSlcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIm1lbnU/LnN0eWxlc1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJtZW51Lmljb24gJiYgbW9kZSA9PT0gZHJvcGRvd25Nb2RlLmljb25cIiB0aHlBY3Rpb25NZW51SXRlbUljb24+XG4gICAgICAgICAgICAgICAgICAgIDx0aHktaWNvbiBbdGh5SWNvbk5hbWVdPVwibWVudS5pY29uXCI+PC90aHktaWNvbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJtZW51Lm5hbWVcIiB0aHlBY3Rpb25NZW51SXRlbU5hbWU+e3sgbWVudS5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPHRoeS1hY3Rpb24tbWVudS1kaXZpZGVyICpuZ0lmPVwibWVudS5rZXkgPT09ICdzcGxpdCdcIj48L3RoeS1hY3Rpb24tbWVudS1kaXZpZGVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L3RoeS1hY3Rpb24tbWVudT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -1,115 +1,116 @@
1
- import { Component, Input, ViewChild, TemplateRef, HostListener } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "ngx-tethys/popover";
4
- import * as i2 from "ngx-tethys/nav";
5
- import * as i3 from "../toolbar/toolbar.component";
6
- import * as i4 from "ngx-tethys/tooltip";
7
- export class TheToolbarGroupComponent {
8
- constructor(elementRef, thyPopover, viewContainerRef) {
9
- this.elementRef = elementRef;
10
- this.thyPopover = thyPopover;
11
- this.viewContainerRef = viewContainerRef;
12
- this.active = false;
13
- }
14
- set item(i) {
15
- this._item = i;
16
- this.activeMenuItem = i;
17
- }
18
- get item() {
19
- return this._item;
20
- }
21
- get isOpened() {
22
- return this.groupPopoverRef && this.groupPopoverRef.getOverlayRef() && this.groupPopoverRef.getOverlayRef().hasAttached();
23
- }
24
- mousedownHandler(event) {
25
- event.preventDefault();
26
- this.toggleGroupMenus(event);
27
- }
28
- clickHandle(event) {
29
- event.stopPropagation();
30
- }
31
- ngOnInit() { }
32
- ngOnDestroy() {
33
- this.colseGroup();
34
- }
35
- toggleGroupMenus(event) {
36
- var _a;
37
- if ((_a = this.editor) === null || _a === void 0 ? void 0 : _a.disabled) {
38
- return;
39
- }
40
- if (this.isOpened) {
41
- this.colseGroup();
42
- }
43
- else {
44
- this.openGroup(event);
45
- }
46
- }
47
- selectionChange(editor) {
48
- const activeItem = this.menusActive(editor);
49
- this.activeMenuItem = activeItem ? activeItem : null;
50
- this.activeChange();
51
- this.colseGroup();
52
- }
53
- menusActive(editor) {
54
- return this.menus.find(i => {
55
- var _a;
56
- if (((_a = this.editor) === null || _a === void 0 ? void 0 : _a.selection) && (i === null || i === void 0 ? void 0 : i.active)) {
57
- return i === null || i === void 0 ? void 0 : i.active(editor);
58
- }
59
- });
60
- }
61
- activeChange() {
62
- const activeItem = this.menusActive(this.editor);
63
- if (this.isOpened && !activeItem) {
64
- this.active = false;
65
- return;
66
- }
67
- this.active = activeItem ? true : false;
68
- }
69
- openGroup(event) {
70
- this.active = true;
71
- this.groupPopoverRef = this.thyPopover.open(this.groupTemplate, {
72
- panelClass: 'the-toolbar-group-container',
73
- offset: 10,
74
- placement: 'bottomRight',
75
- origin: event.currentTarget,
76
- viewContainerRef: this.viewContainerRef,
77
- hasBackdrop: false,
78
- outsideClosable: true
79
- });
80
- this.groupPopoverRef.afterClosed().subscribe(() => {
81
- this.activeChange();
82
- });
83
- }
84
- colseGroup() {
85
- if (this.isOpened) {
86
- this.groupPopoverRef.close();
87
- }
88
- }
89
- }
90
- TheToolbarGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheToolbarGroupComponent, deps: [{ token: i0.ElementRef }, { token: i1.ThyPopover }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
91
- TheToolbarGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheToolbarGroupComponent, selector: "the-toolbar-group", inputs: { menus: "menus", item: "item" }, host: { listeners: { "mousedown": "mousedownHandler($event)", "click": "clickHandle($event)" }, classAttribute: "the-toolbar-group" }, viewQueries: [{ propertyName: "groupTemplate", first: true, predicate: ["groupTemplate"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<a thyIconNavLink [thyIconNavLinkIcon]=\"item.icon\" [thyTooltip]=\"item?.name\" thyTooltipPlacement=\"top\" [thyIconNavLinkActive]=\"active\"></a>\n\n<ng-template #groupTemplate>\n <the-toolbar class=\"group\" [editor]=\"editor\" [toolbarItems]=\"menus\" [isMore]=\"false\"></the-toolbar>\n</ng-template>\n", components: [{ type: i2.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: i3.TheToolbarComponent, selector: "the-toolbar", inputs: ["editor", "toolbarItems", "align", "containerClass", "isMore", "afterTemplate"] }], directives: [{ type: i4.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }] });
92
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheToolbarGroupComponent, decorators: [{
93
- type: Component,
94
- args: [{
95
- selector: 'the-toolbar-group',
96
- templateUrl: './toolbar-group.component.html',
97
- host: {
98
- class: 'the-toolbar-group'
99
- }
100
- }]
101
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ThyPopover }, { type: i0.ViewContainerRef }]; }, propDecorators: { menus: [{
102
- type: Input
103
- }], item: [{
104
- type: Input
105
- }], groupTemplate: [{
106
- type: ViewChild,
107
- args: ['groupTemplate', { read: TemplateRef, static: true }]
108
- }], mousedownHandler: [{
109
- type: HostListener,
110
- args: ['mousedown', ['$event']]
111
- }], clickHandle: [{
112
- type: HostListener,
113
- args: ['click', ['$event']]
114
- }] } });
115
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy90b29sYmFyLWdyb3VwL3Rvb2xiYXItZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvdG9vbGJhci1ncm91cC90b29sYmFyLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXNCLEtBQUssRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUErQixZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVl4SSxNQUFNLE9BQU8sd0JBQXdCO0lBc0NqQyxZQUFtQixVQUFzQixFQUFVLFVBQXNCLEVBQVUsZ0JBQWtDO1FBQWxHLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQWxCckgsV0FBTSxHQUFHLEtBQUssQ0FBQztJQWtCeUcsQ0FBQztJQWpDekgsSUFDSSxJQUFJLENBQUMsQ0FBcUI7UUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlILENBQUM7SUFXRCxnQkFBZ0IsQ0FBQyxLQUFLO1FBQ2xCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUdELFdBQVcsQ0FBQyxLQUFLO1FBQ2IsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFJRCxRQUFRLEtBQUksQ0FBQztJQUViLFdBQVc7UUFDUCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQWlCOztRQUM5QixJQUFJLE1BQUEsSUFBSSxDQUFDLE1BQU0sMENBQUUsUUFBUSxFQUFFO1lBQ3ZCLE9BQU87U0FDVjtRQUNELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNyQjthQUFNO1lBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUN6QjtJQUNMLENBQUM7SUFFTSxlQUFlLENBQUMsTUFBYztRQUNqQyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxjQUFjLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNyRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBYztRQUN0QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFOztZQUN2QixJQUFJLENBQUEsTUFBQSxJQUFJLENBQUMsTUFBTSwwQ0FBRSxTQUFTLE1BQUksQ0FBQyxhQUFELENBQUMsdUJBQUQsQ0FBQyxDQUFFLE1BQU0sQ0FBQSxFQUFFO2dCQUNyQyxPQUFPLENBQUMsYUFBRCxDQUFDLHVCQUFELENBQUMsQ0FBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDNUI7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxZQUFZO1FBQ1IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakQsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQzlCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM1QyxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWlCO1FBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUM1RCxVQUFVLEVBQUUsNkJBQTZCO1lBQ3pDLE1BQU0sRUFBRSxFQUFFO1lBQ1YsU0FBUyxFQUFFLGFBQWE7WUFDeEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxhQUE0QjtZQUMxQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQ3ZDLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLGVBQWUsRUFBRSxJQUFJO1NBQ3hCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM5QyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDaEM7SUFDTCxDQUFDOztzSEFyR1Esd0JBQXdCOzBHQUF4Qix3QkFBd0IscVVBd0JHLFdBQVcsMkNDcENuRCx3VEFLQTs0RkRPYSx3QkFBd0I7a0JBUHBDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsV0FBVyxFQUFFLGdDQUFnQztvQkFDN0MsSUFBSSxFQUFFO3dCQUNGLEtBQUssRUFBRSxtQkFBbUI7cUJBQzdCO2lCQUNKO3lKQUlZLEtBQUs7c0JBQWIsS0FBSztnQkFHRixJQUFJO3NCQURQLEtBQUs7Z0JBb0JOLGFBQWE7c0JBRFosU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSS9ELGdCQUFnQjtzQkFEZixZQUFZO3VCQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFPckMsV0FBVztzQkFEVixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBFbGVtZW50UmVmLCBJbnB1dCwgVmlld0NoaWxkLCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiwgT25EZXN0cm95LCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoeVBvcG92ZXIsIFRoeVBvcG92ZXJSZWYgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgRGVmYXVsdFRvb2xiYXJJdGVtIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGhlLXRvb2xiYXItZ3JvdXAnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi90b29sYmFyLWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAndGhlLXRvb2xiYXItZ3JvdXAnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBUaGVUb29sYmFyR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSBfaXRlbTogRGVmYXVsdFRvb2xiYXJJdGVtO1xuXG4gICAgQElucHV0KCkgbWVudXM6IERlZmF1bHRUb29sYmFySXRlbVtdO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgaXRlbShpOiBEZWZhdWx0VG9vbGJhckl0ZW0pIHtcbiAgICAgICAgdGhpcy5faXRlbSA9IGk7XG4gICAgICAgIHRoaXMuYWN0aXZlTWVudUl0ZW0gPSBpO1xuICAgIH1cblxuICAgIGdldCBpdGVtKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXRlbTtcbiAgICB9XG5cbiAgICBnZXQgaXNPcGVuZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyb3VwUG9wb3ZlclJlZiAmJiB0aGlzLmdyb3VwUG9wb3ZlclJlZi5nZXRPdmVybGF5UmVmKCkgJiYgdGhpcy5ncm91cFBvcG92ZXJSZWYuZ2V0T3ZlcmxheVJlZigpLmhhc0F0dGFjaGVkKCk7XG4gICAgfVxuXG4gICAgZWRpdG9yOiBFZGl0b3I7XG4gICAgYWN0aXZlID0gZmFsc2U7XG4gICAgYWN0aXZlTWVudUl0ZW06IERlZmF1bHRUb29sYmFySXRlbTtcbiAgICBncm91cFBvcG92ZXJSZWY6IFRoeVBvcG92ZXJSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoJ2dyb3VwVGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICBncm91cFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgICBtb3VzZWRvd25IYW5kbGVyKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMudG9nZ2xlR3JvdXBNZW51cyhldmVudCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIGNsaWNrSGFuZGxlKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIHRoeVBvcG92ZXI6IFRoeVBvcG92ZXIsIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge31cblxuICAgIG5nT25Jbml0KCkge31cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbHNlR3JvdXAoKTtcbiAgICB9XG5cbiAgICB0b2dnbGVHcm91cE1lbnVzKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmVkaXRvcj8uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc09wZW5lZCkge1xuICAgICAgICAgICAgdGhpcy5jb2xzZUdyb3VwKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5Hcm91cChldmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0aW9uQ2hhbmdlKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IGFjdGl2ZUl0ZW0gPSB0aGlzLm1lbnVzQWN0aXZlKGVkaXRvcik7XG4gICAgICAgIHRoaXMuYWN0aXZlTWVudUl0ZW0gPSBhY3RpdmVJdGVtID8gYWN0aXZlSXRlbSA6IG51bGw7XG4gICAgICAgIHRoaXMuYWN0aXZlQ2hhbmdlKCk7XG4gICAgICAgIHRoaXMuY29sc2VHcm91cCgpO1xuICAgIH1cblxuICAgIG1lbnVzQWN0aXZlKGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1lbnVzLmZpbmQoaSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5lZGl0b3I/LnNlbGVjdGlvbiAmJiBpPy5hY3RpdmUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaT8uYWN0aXZlKGVkaXRvcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFjdGl2ZUNoYW5nZSgpIHtcbiAgICAgICAgY29uc3QgYWN0aXZlSXRlbSA9IHRoaXMubWVudXNBY3RpdmUodGhpcy5lZGl0b3IpO1xuICAgICAgICBpZiAodGhpcy5pc09wZW5lZCAmJiAhYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFjdGl2ZSA9IGFjdGl2ZUl0ZW0gPyB0cnVlIDogZmFsc2U7XG4gICAgfVxuXG4gICAgb3Blbkdyb3VwKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5ncm91cFBvcG92ZXJSZWYgPSB0aGlzLnRoeVBvcG92ZXIub3Blbih0aGlzLmdyb3VwVGVtcGxhdGUsIHtcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6ICd0aGUtdG9vbGJhci1ncm91cC1jb250YWluZXInLFxuICAgICAgICAgICAgb2Zmc2V0OiAxMCxcbiAgICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbVJpZ2h0JyxcbiAgICAgICAgICAgIG9yaWdpbjogZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICAgIG91dHNpZGVDbG9zYWJsZTogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5ncm91cFBvcG92ZXJSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVDaGFuZ2UoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29sc2VHcm91cCgpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuZWQpIHtcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBQb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8YSB0aHlJY29uTmF2TGluayBbdGh5SWNvbk5hdkxpbmtJY29uXT1cIml0ZW0uaWNvblwiIFt0aHlUb29sdGlwXT1cIml0ZW0/Lm5hbWVcIiB0aHlUb29sdGlwUGxhY2VtZW50PVwidG9wXCIgW3RoeUljb25OYXZMaW5rQWN0aXZlXT1cImFjdGl2ZVwiPjwvYT5cblxuPG5nLXRlbXBsYXRlICNncm91cFRlbXBsYXRlPlxuICAgIDx0aGUtdG9vbGJhciBjbGFzcz1cImdyb3VwXCIgW2VkaXRvcl09XCJlZGl0b3JcIiBbdG9vbGJhckl0ZW1zXT1cIm1lbnVzXCIgW2lzTW9yZV09XCJmYWxzZVwiPjwvdGhlLXRvb2xiYXI+XG48L25nLXRlbXBsYXRlPlxuIl19
1
+ import { Component, Input, ViewChild, TemplateRef, HostListener } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "ngx-tethys/popover";
4
+ import * as i2 from "ngx-tethys/nav";
5
+ import * as i3 from "../toolbar/toolbar.component";
6
+ import * as i4 from "ngx-tethys/tooltip";
7
+ export class TheToolbarGroupComponent {
8
+ constructor(elementRef, thyPopover, viewContainerRef) {
9
+ this.elementRef = elementRef;
10
+ this.thyPopover = thyPopover;
11
+ this.viewContainerRef = viewContainerRef;
12
+ this.active = false;
13
+ }
14
+ set item(i) {
15
+ this._item = i;
16
+ this.activeMenuItem = i;
17
+ }
18
+ get item() {
19
+ return this._item;
20
+ }
21
+ get isOpened() {
22
+ return this.groupPopoverRef && this.groupPopoverRef.getOverlayRef() && this.groupPopoverRef.getOverlayRef().hasAttached();
23
+ }
24
+ mousedownHandler(event) {
25
+ event.preventDefault();
26
+ this.toggleGroupMenus(event);
27
+ }
28
+ clickHandle(event) {
29
+ event.stopPropagation();
30
+ }
31
+ ngOnInit() { }
32
+ ngOnDestroy() {
33
+ this.colseGroup();
34
+ }
35
+ toggleGroupMenus(event) {
36
+ var _a;
37
+ if ((_a = this.editor) === null || _a === void 0 ? void 0 : _a.disabled) {
38
+ return;
39
+ }
40
+ if (this.isOpened) {
41
+ this.colseGroup();
42
+ }
43
+ else {
44
+ this.openGroup(event);
45
+ }
46
+ }
47
+ selectionChange(editor) {
48
+ const activeItem = this.menusActive(editor);
49
+ this.activeMenuItem = activeItem ? activeItem : null;
50
+ this.activeChange();
51
+ this.colseGroup();
52
+ }
53
+ menusActive(editor) {
54
+ return this.menus.find(i => {
55
+ var _a;
56
+ if (((_a = this.editor) === null || _a === void 0 ? void 0 : _a.selection) && (i === null || i === void 0 ? void 0 : i.active)) {
57
+ return i === null || i === void 0 ? void 0 : i.active(editor);
58
+ }
59
+ });
60
+ }
61
+ activeChange() {
62
+ const activeItem = this.menusActive(this.editor);
63
+ if (this.isOpened && !activeItem) {
64
+ this.active = false;
65
+ return;
66
+ }
67
+ this.active = activeItem ? true : false;
68
+ }
69
+ openGroup(event) {
70
+ this.active = true;
71
+ this.groupPopoverRef = this.thyPopover.open(this.groupTemplate, {
72
+ panelClass: 'the-toolbar-group-container',
73
+ offset: 10,
74
+ minWidth: 0,
75
+ placement: 'bottomRight',
76
+ origin: event.currentTarget,
77
+ viewContainerRef: this.viewContainerRef,
78
+ hasBackdrop: false,
79
+ outsideClosable: true
80
+ });
81
+ this.groupPopoverRef.afterClosed().subscribe(() => {
82
+ this.activeChange();
83
+ });
84
+ }
85
+ colseGroup() {
86
+ if (this.isOpened) {
87
+ this.groupPopoverRef.close();
88
+ }
89
+ }
90
+ }
91
+ TheToolbarGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheToolbarGroupComponent, deps: [{ token: i0.ElementRef }, { token: i1.ThyPopover }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component });
92
+ TheToolbarGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheToolbarGroupComponent, selector: "the-toolbar-group", inputs: { menus: "menus", item: "item" }, host: { listeners: { "mousedown": "mousedownHandler($event)", "click": "clickHandle($event)" }, classAttribute: "the-toolbar-group" }, viewQueries: [{ propertyName: "groupTemplate", first: true, predicate: ["groupTemplate"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: "<a thyIconNavLink [thyIconNavLinkIcon]=\"item.icon\" [thyTooltip]=\"item?.name\" thyTooltipPlacement=\"top\" [thyIconNavLinkActive]=\"active\"></a>\r\n\r\n<ng-template #groupTemplate>\r\n <the-toolbar class=\"group\" [editor]=\"editor\" [toolbarItems]=\"menus\" [isMore]=\"false\"></the-toolbar>\r\n</ng-template>\r\n", components: [{ type: i2.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: i3.TheToolbarComponent, selector: "the-toolbar", inputs: ["editor", "toolbarItems", "align", "containerClass", "isMore", "afterTemplate"] }], directives: [{ type: i4.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }] });
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheToolbarGroupComponent, decorators: [{
94
+ type: Component,
95
+ args: [{
96
+ selector: 'the-toolbar-group',
97
+ templateUrl: './toolbar-group.component.html',
98
+ host: {
99
+ class: 'the-toolbar-group'
100
+ }
101
+ }]
102
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.ThyPopover }, { type: i0.ViewContainerRef }]; }, propDecorators: { menus: [{
103
+ type: Input
104
+ }], item: [{
105
+ type: Input
106
+ }], groupTemplate: [{
107
+ type: ViewChild,
108
+ args: ['groupTemplate', { read: TemplateRef, static: true }]
109
+ }], mousedownHandler: [{
110
+ type: HostListener,
111
+ args: ['mousedown', ['$event']]
112
+ }], clickHandle: [{
113
+ type: HostListener,
114
+ args: ['click', ['$event']]
115
+ }] } });
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbGJhci1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvY29tcG9uZW50cy90b29sYmFyLWdyb3VwL3Rvb2xiYXItZ3JvdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2NvbXBvbmVudHMvdG9vbGJhci1ncm91cC90b29sYmFyLWdyb3VwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXNCLEtBQUssRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUErQixZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQVl4SSxNQUFNLE9BQU8sd0JBQXdCO0lBc0NqQyxZQUFtQixVQUFzQixFQUFVLFVBQXNCLEVBQVUsZ0JBQWtDO1FBQWxHLGVBQVUsR0FBVixVQUFVLENBQVk7UUFBVSxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQVUscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQWxCckgsV0FBTSxHQUFHLEtBQUssQ0FBQztJQWtCeUcsQ0FBQztJQWpDekgsSUFDSSxJQUFJLENBQUMsQ0FBcUI7UUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ0osT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlILENBQUM7SUFXRCxnQkFBZ0IsQ0FBQyxLQUFLO1FBQ2xCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztR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UzttQkFBQztvQkFDUCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixXQUFXLEVBQUUsZ0NBQWdDO29CQUM3QyxJQUFJLEVBQUU7d0JBQ0YsS0FBSyxFQUFFLG1CQUFtQjtxQkFDN0I7aUJBQ0o7eUpBSVksS0FBSztzQkFBYixLQUFLO2dCQUdGLElBQUk7c0JBRFAsS0FBSztnQkFvQk4sYUFBYTtzQkFEWixTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJL0QsZ0JBQWdCO3NCQURmLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQU9yQyxXQUFXO3NCQURWLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIEVsZW1lbnRSZWYsIElucHV0LCBWaWV3Q2hpbGQsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmLCBPbkRlc3Ryb3ksIEhvc3RMaXN0ZW5lciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgeyBFZGl0b3IgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBEZWZhdWx0VG9vbGJhckl0ZW0gfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aGUtdG9vbGJhci1ncm91cCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Rvb2xiYXItZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICd0aGUtdG9vbGJhci1ncm91cCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFRoZVRvb2xiYXJHcm91cENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIF9pdGVtOiBEZWZhdWx0VG9vbGJhckl0ZW07XG5cbiAgICBASW5wdXQoKSBtZW51czogRGVmYXVsdFRvb2xiYXJJdGVtW107XG5cbiAgICBASW5wdXQoKVxuICAgIHNldCBpdGVtKGk6IERlZmF1bHRUb29sYmFySXRlbSkge1xuICAgICAgICB0aGlzLl9pdGVtID0gaTtcbiAgICAgICAgdGhpcy5hY3RpdmVNZW51SXRlbSA9IGk7XG4gICAgfVxuXG4gICAgZ2V0IGl0ZW0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pdGVtO1xuICAgIH1cblxuICAgIGdldCBpc09wZW5lZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JvdXBQb3BvdmVyUmVmICYmIHRoaXMuZ3JvdXBQb3BvdmVyUmVmLmdldE92ZXJsYXlSZWYoKSAmJiB0aGlzLmdyb3VwUG9wb3ZlclJlZi5nZXRPdmVybGF5UmVmKCkuaGFzQXR0YWNoZWQoKTtcbiAgICB9XG5cbiAgICBlZGl0b3I6IEVkaXRvcjtcbiAgICBhY3RpdmUgPSBmYWxzZTtcbiAgICBhY3RpdmVNZW51SXRlbTogRGVmYXVsdFRvb2xiYXJJdGVtO1xuICAgIGdyb3VwUG9wb3ZlclJlZjogVGh5UG9wb3ZlclJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgnZ3JvdXBUZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIGdyb3VwVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICAgIG1vdXNlZG93bkhhbmRsZXIoZXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy50b2dnbGVHcm91cE1lbnVzKGV2ZW50KTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgY2xpY2tIYW5kbGUoZXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgdGh5UG9wb3ZlcjogVGh5UG9wb3ZlciwgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7fVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY29sc2VHcm91cCgpO1xuICAgIH1cblxuICAgIHRvZ2dsZUdyb3VwTWVudXMoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZWRpdG9yPy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzT3BlbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmNvbHNlR3JvdXAoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMub3Blbkdyb3VwKGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZWxlY3Rpb25DaGFuZ2UoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgY29uc3QgYWN0aXZlSXRlbSA9IHRoaXMubWVudXNBY3RpdmUoZWRpdG9yKTtcbiAgICAgICAgdGhpcy5hY3RpdmVNZW51SXRlbSA9IGFjdGl2ZUl0ZW0gPyBhY3RpdmVJdGVtIDogbnVsbDtcbiAgICAgICAgdGhpcy5hY3RpdmVDaGFuZ2UoKTtcbiAgICAgICAgdGhpcy5jb2xzZUdyb3VwKCk7XG4gICAgfVxuXG4gICAgbWVudXNBY3RpdmUoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWVudXMuZmluZChpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmVkaXRvcj8uc2VsZWN0aW9uICYmIGk/LmFjdGl2ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpPy5hY3RpdmUoZWRpdG9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYWN0aXZlQ2hhbmdlKCkge1xuICAgICAgICBjb25zdCBhY3RpdmVJdGVtID0gdGhpcy5tZW51c0FjdGl2ZSh0aGlzLmVkaXRvcik7XG4gICAgICAgIGlmICh0aGlzLmlzT3BlbmVkICYmICFhY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWN0aXZlID0gYWN0aXZlSXRlbSA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBvcGVuR3JvdXAoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB0aGlzLmdyb3VwUG9wb3ZlclJlZiA9IHRoaXMudGh5UG9wb3Zlci5vcGVuKHRoaXMuZ3JvdXBUZW1wbGF0ZSwge1xuICAgICAgICAgICAgcGFuZWxDbGFzczogJ3RoZS10b29sYmFyLWdyb3VwLWNvbnRhaW5lcicsXG4gICAgICAgICAgICBvZmZzZXQ6IDEwLFxuICAgICAgICAgICAgbWluV2lkdGg6IDAsXG4gICAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b21SaWdodCcsXG4gICAgICAgICAgICBvcmlnaW46IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQsXG4gICAgICAgICAgICB2aWV3Q29udGFpbmVyUmVmOiB0aGlzLnZpZXdDb250YWluZXJSZWYsXG4gICAgICAgICAgICBoYXNCYWNrZHJvcDogZmFsc2UsXG4gICAgICAgICAgICBvdXRzaWRlQ2xvc2FibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZ3JvdXBQb3BvdmVyUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlQ2hhbmdlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbHNlR3JvdXAoKSB7XG4gICAgICAgIGlmICh0aGlzLmlzT3BlbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmdyb3VwUG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGEgdGh5SWNvbk5hdkxpbmsgW3RoeUljb25OYXZMaW5rSWNvbl09XCJpdGVtLmljb25cIiBbdGh5VG9vbHRpcF09XCJpdGVtPy5uYW1lXCIgdGh5VG9vbHRpcFBsYWNlbWVudD1cInRvcFwiIFt0aHlJY29uTmF2TGlua0FjdGl2ZV09XCJhY3RpdmVcIj48L2E+XHJcblxyXG48bmctdGVtcGxhdGUgI2dyb3VwVGVtcGxhdGU+XHJcbiAgICA8dGhlLXRvb2xiYXIgY2xhc3M9XCJncm91cFwiIFtlZGl0b3JdPVwiZWRpdG9yXCIgW3Rvb2xiYXJJdGVtc109XCJtZW51c1wiIFtpc01vcmVdPVwiZmFsc2VcIj48L3RoZS10b29sYmFyPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=