@worktile/theia 3.0.7 → 3.1.0-next.0

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 (400) hide show
  1. package/components/toolbar/toolbar.component.d.ts +2 -3
  2. package/components/toolbar-dropdown/toolbar-dropdown.component.scss +0 -1
  3. package/components/toolbar-item/toolbar-item.component.d.ts +2 -3
  4. package/editor.component.d.ts +2 -1
  5. package/esm2020/components/color-select/color-select.component.mjs +109 -0
  6. package/{esm2015/components/column-resize/column-resize-notifier.js → esm2020/components/column-resize/column-resize-notifier.mjs} +4 -4
  7. package/{esm2015/components/column-resize/column-resize.directive.js → esm2020/components/column-resize/column-resize.directive.mjs} +4 -4
  8. package/esm2020/components/column-resize/column-resize.module.mjs +33 -0
  9. package/{esm2015/components/column-resize/event-dispatcher.js → esm2020/components/column-resize/event-dispatcher.mjs} +4 -4
  10. package/{esm2015/components/column-resize/overlay-handle.component.js → esm2020/components/column-resize/overlay-handle.component.mjs} +4 -4
  11. package/{esm2015/components/column-resize/resize-ref.js → esm2020/components/column-resize/resize-ref.mjs} +0 -0
  12. package/{esm2015/components/column-resize/resizing.store.js → esm2020/components/column-resize/resizing.store.mjs} +4 -4
  13. package/{esm2015/components/column-resize/selectors.js → esm2020/components/column-resize/selectors.mjs} +0 -0
  14. package/esm2020/components/contextmenu/contextmenu.component.mjs +61 -0
  15. package/esm2020/components/conversion-hint/conversion-hint.component.mjs +54 -0
  16. package/esm2020/components/element/element.component.mjs +23 -0
  17. package/esm2020/components/inline-toolbar/inline-toolbar.component.mjs +138 -0
  18. package/{esm2015/components/nav-split-line/nav-split-line.component.js → esm2020/components/nav-split-line/nav-split-line.component.mjs} +4 -4
  19. package/esm2020/components/table-select/table-select.component.mjs +50 -0
  20. package/esm2020/components/template/template.component.mjs +62 -0
  21. package/{esm2015/components/text/text.component.js → esm2020/components/text/text.component.mjs} +4 -4
  22. package/esm2020/components/toolbar/toolbar.component.mjs +241 -0
  23. package/esm2020/components/toolbar-dropdown/toolbar-dropdown.component.mjs +129 -0
  24. package/esm2020/components/toolbar-group/toolbar-group.component.mjs +110 -0
  25. package/esm2020/components/toolbar-item/toolbar-item.component.mjs +101 -0
  26. package/{esm2015/constants/auto-format-rules.js → esm2020/constants/auto-format-rules.mjs} +0 -0
  27. package/{esm2015/constants/code.js → esm2020/constants/code.mjs} +0 -0
  28. package/{esm2015/constants/color-select.js → esm2020/constants/color-select.mjs} +0 -0
  29. package/{esm2015/constants/default.js → esm2020/constants/default.mjs} +0 -0
  30. package/{esm2015/constants/error.js → esm2020/constants/error.mjs} +0 -0
  31. package/{esm2015/constants/index.js → esm2020/constants/index.mjs} +0 -0
  32. package/{esm2015/constants/node-types.js → esm2020/constants/node-types.mjs} +0 -0
  33. package/{esm2015/constants/selector.js → esm2020/constants/selector.mjs} +0 -0
  34. package/{esm2015/constants/toolbar.js → esm2020/constants/toolbar.mjs} +0 -0
  35. package/{esm2015/core/create-plugin.js → esm2020/core/create-plugin.mjs} +0 -0
  36. package/esm2020/core/create-toolbar.mjs +56 -0
  37. package/{esm2015/core/index.js → esm2020/core/index.mjs} +0 -0
  38. package/esm2020/core/toolbar-item/base-toolbar-item.mjs +90 -0
  39. package/{esm2015/core/utils/combine-plugins.js → esm2020/core/utils/combine-plugins.mjs} +0 -0
  40. package/{esm2015/core/utils/flatten-deep-plugins.js → esm2020/core/utils/flatten-deep-plugins.mjs} +0 -0
  41. package/esm2020/core/utils/get-plugin-options.mjs +3 -0
  42. package/{esm2015/core/utils/get-plugin.js → esm2020/core/utils/get-plugin.mjs} +0 -0
  43. package/esm2020/core/utils/get-plugins.mjs +4 -0
  44. package/{esm2015/core/utils/index.js → esm2020/core/utils/index.mjs} +0 -0
  45. package/esm2020/core/utils/merge-array.mjs +18 -0
  46. package/{esm2015/core/utils/merge-deep-plugins.js → esm2020/core/utils/merge-deep-plugins.mjs} +0 -0
  47. package/{esm2015/core/utils/merge-options.js → esm2020/core/utils/merge-options.mjs} +0 -0
  48. package/{esm2015/core/utils/nested-structure-by-key.js → esm2020/core/utils/nested-structure-by-key.mjs} +0 -0
  49. package/{esm2015/core/utils/plugins-by-key.js → esm2020/core/utils/plugins-by-key.mjs} +0 -0
  50. package/{esm2015/core/with-theia.js → esm2020/core/with-theia.mjs} +0 -0
  51. package/{esm2015/custom-types.js → esm2020/custom-types.mjs} +0 -0
  52. package/esm2020/editor.component.mjs +431 -0
  53. package/{esm2015/editor.module.js → esm2020/editor.module.mjs} +5 -6
  54. package/{esm2015/interfaces/auto-format.js → esm2020/interfaces/auto-format.mjs} +0 -0
  55. package/esm2020/interfaces/editor.mjs +25 -0
  56. package/{esm2015/interfaces/element.js → esm2020/interfaces/element.mjs} +0 -0
  57. package/{esm2015/interfaces/image.js → esm2020/interfaces/image.mjs} +0 -0
  58. package/{esm2015/interfaces/index.js → esm2020/interfaces/index.mjs} +0 -0
  59. package/{esm2015/interfaces/plugins/index.js → esm2020/interfaces/plugins/index.mjs} +0 -0
  60. package/{esm2015/interfaces/plugins/no-infer.js → esm2020/interfaces/plugins/no-infer.mjs} +0 -0
  61. package/{esm2015/interfaces/plugins/plugin-key.js → esm2020/interfaces/plugins/plugin-key.mjs} +0 -0
  62. package/{esm2015/interfaces/plugins/plugins.js → esm2020/interfaces/plugins/plugins.mjs} +0 -0
  63. package/{esm2015/interfaces/plugins/with-override.js → esm2020/interfaces/plugins/with-override.mjs} +0 -0
  64. package/{esm2015/interfaces/reset-block-type-plugin-options.js → esm2020/interfaces/reset-block-type-plugin-options.mjs} +0 -0
  65. package/{esm2015/interfaces/toolbar.js → esm2020/interfaces/toolbar.mjs} +0 -0
  66. package/{esm2015/interfaces/upload.js → esm2020/interfaces/upload.mjs} +1 -1
  67. package/{esm2015/interfaces/utility/index.js → esm2020/interfaces/utility/index.mjs} +0 -0
  68. package/{esm2015/interfaces/utility/nested-structure-by-key.js → esm2020/interfaces/utility/nested-structure-by-key.mjs} +0 -0
  69. package/{esm2015/interfaces/utility/override-by-key.js → esm2020/interfaces/utility/override-by-key.mjs} +0 -0
  70. package/{esm2015/interfaces/utility/types.js → esm2020/interfaces/utility/types.mjs} +0 -0
  71. package/{esm2015/interfaces/valid-children-types.js → esm2020/interfaces/valid-children-types.mjs} +0 -0
  72. package/{esm2015/interfaces/view-base.js → esm2020/interfaces/view-base.mjs} +4 -4
  73. package/{esm2015/pipes.js → esm2020/pipes.mjs} +7 -7
  74. package/esm2020/plugins/align/align.editor.mjs +47 -0
  75. package/{esm2015/plugins/align/align.plugin.js → esm2020/plugins/align/align.plugin.mjs} +0 -0
  76. package/esm2020/plugins/autoformat/autoformat.plugin.mjs +109 -0
  77. package/{esm2015/plugins/autoformat/transforms/auto-format-block.js → esm2020/plugins/autoformat/transforms/auto-format-block.mjs} +0 -0
  78. package/{esm2015/plugins/autoformat/transforms/auto-format-inline.js → esm2020/plugins/autoformat/transforms/auto-format-inline.mjs} +0 -0
  79. package/{esm2015/plugins/blockquote/blockquote.component.js → esm2020/plugins/blockquote/blockquote.component.mjs} +4 -4
  80. package/esm2020/plugins/blockquote/blockquote.editor.mjs +20 -0
  81. package/{esm2015/plugins/blockquote/blockquote.plugin.js → esm2020/plugins/blockquote/blockquote.plugin.mjs} +0 -0
  82. package/esm2020/plugins/code/code.component.mjs +241 -0
  83. package/{esm2015/plugins/code/code.editor.js → esm2020/plugins/code/code.editor.mjs} +0 -0
  84. package/{esm2015/plugins/code/code.plugin.js → esm2020/plugins/code/code.plugin.mjs} +0 -0
  85. package/esm2020/plugins/color/color.editor.mjs +44 -0
  86. package/{esm2015/plugins/color/color.plugin.js → esm2020/plugins/color/color.plugin.mjs} +0 -0
  87. package/esm2020/plugins/color/toolbar-item.component.mjs +123 -0
  88. package/esm2020/plugins/common/auto-insert-data..mjs +77 -0
  89. package/{esm2015/plugins/common/block-card.plugin.js → esm2020/plugins/common/block-card.plugin.mjs} +2 -2
  90. package/esm2020/plugins/common/get-fragment.plugin.mjs +24 -0
  91. package/{esm2015/plugins/common/history.plugin.js → esm2020/plugins/common/history.plugin.mjs} +0 -0
  92. package/{esm2015/plugins/common/move-selection.plugin.js → esm2020/plugins/common/move-selection.plugin.mjs} +0 -0
  93. package/{esm2015/plugins/common/remove-empty.plugin.js → esm2020/plugins/common/remove-empty.plugin.mjs} +0 -0
  94. package/{esm2015/plugins/common/remove-void.plugin.js → esm2020/plugins/common/remove-void.plugin.mjs} +0 -0
  95. package/{esm2015/plugins/common/reset-type.plugin.js → esm2020/plugins/common/reset-type.plugin.mjs} +0 -0
  96. package/{esm2015/plugins/common/transforms.plugin.js → esm2020/plugins/common/transforms.plugin.mjs} +0 -0
  97. package/{esm2015/plugins/deserializers/deserialize-html.plugin.js → esm2020/plugins/deserializers/deserialize-html.plugin.mjs} +0 -0
  98. package/{esm2015/plugins/deserializers/deserialize-md.plugin.js → esm2020/plugins/deserializers/deserialize-md.plugin.mjs} +0 -0
  99. package/esm2020/plugins/font-size/font-size.editor.mjs +98 -0
  100. package/{esm2015/plugins/heading/heading.editor.js → esm2020/plugins/heading/heading.editor.mjs} +0 -0
  101. package/{esm2015/plugins/heading/heading.plugin.js → esm2020/plugins/heading/heading.plugin.mjs} +0 -0
  102. package/{esm2015/plugins/hr/hr.component.js → esm2020/plugins/hr/hr.component.mjs} +4 -4
  103. package/{esm2015/plugins/hr/hr.editor.js → esm2020/plugins/hr/hr.editor.mjs} +0 -0
  104. package/{esm2015/plugins/hr/hr.plugin.js → esm2020/plugins/hr/hr.plugin.mjs} +0 -0
  105. package/esm2020/plugins/image/image.component.mjs +365 -0
  106. package/{esm2015/plugins/image/image.editor.js → esm2020/plugins/image/image.editor.mjs} +3 -5
  107. package/esm2020/plugins/image/image.plugin.mjs +57 -0
  108. package/esm2020/plugins/indent/indent.editor.mjs +71 -0
  109. package/esm2020/plugins/indent/indent.plugin.mjs +58 -0
  110. package/{esm2015/plugins/indent/on-keydown-indent.js → esm2020/plugins/indent/on-keydown-indent.mjs} +0 -0
  111. package/{esm2015/plugins/index.js → esm2020/plugins/index.mjs} +0 -0
  112. package/{esm2015/plugins/inline-code/inline-code.component.js → esm2020/plugins/inline-code/inline-code.component.mjs} +4 -4
  113. package/{esm2015/plugins/inline-code/inline-code.editor.js → esm2020/plugins/inline-code/inline-code.editor.mjs} +2 -3
  114. package/{esm2015/plugins/inline-code/inline-code.plugin.js → esm2020/plugins/inline-code/inline-code.plugin.mjs} +0 -0
  115. package/esm2020/plugins/link/edit/link-edit.component.mjs +105 -0
  116. package/esm2020/plugins/link/hover/link-hover.component.mjs +36 -0
  117. package/{esm2015/plugins/link/link.component.js → esm2020/plugins/link/link.component.mjs} +7 -7
  118. package/{esm2015/plugins/link/link.editor.js → esm2020/plugins/link/link.editor.mjs} +0 -0
  119. package/{esm2015/plugins/link/link.plugin.js → esm2020/plugins/link/link.plugin.mjs} +0 -0
  120. package/{esm2015/plugins/link/link.types.js → esm2020/plugins/link/link.types.mjs} +0 -0
  121. package/esm2020/plugins/list/components/bulleted-list.component.mjs +33 -0
  122. package/esm2020/plugins/list/components/list-item.component.mjs +93 -0
  123. package/esm2020/plugins/list/components/numbered-list.component.mjs +39 -0
  124. package/{esm2015/plugins/list/list.editor.js → esm2020/plugins/list/list.editor.mjs} +0 -0
  125. package/esm2020/plugins/list/list.plugin.mjs +286 -0
  126. package/{esm2015/plugins/list/normalizers/get-list-normalizer.js → esm2020/plugins/list/normalizers/get-list-normalizer.mjs} +0 -0
  127. package/esm2020/plugins/list/normalizers/normalize-list-item.mjs +18 -0
  128. package/{esm2015/plugins/list/normalizers/normalize-no.js → esm2020/plugins/list/normalizers/normalize-no.mjs} +0 -0
  129. package/{esm2015/plugins/list/on-key-down-list.js → esm2020/plugins/list/on-key-down-list.mjs} +0 -0
  130. package/{esm2015/plugins/list/queries/get-list-item-entry.js → esm2020/plugins/list/queries/get-list-item-entry.mjs} +0 -0
  131. package/{esm2015/plugins/list/queries/get-list-item-sublist.js → esm2020/plugins/list/queries/get-list-item-sublist.mjs} +0 -0
  132. package/{esm2015/plugins/list/queries/get-list-types.js → esm2020/plugins/list/queries/get-list-types.mjs} +0 -0
  133. package/{esm2015/plugins/list/queries/get-start-list-item.js → esm2020/plugins/list/queries/get-start-list-item.mjs} +0 -0
  134. package/{esm2015/plugins/list/queries/has-list-in-list-item.js → esm2020/plugins/list/queries/has-list-in-list-item.mjs} +0 -0
  135. package/{esm2015/plugins/list/queries/is-in-list.js → esm2020/plugins/list/queries/is-in-list.mjs} +0 -0
  136. package/{esm2015/plugins/list/queries/is-list-nested.js → esm2020/plugins/list/queries/is-list-nested.mjs} +0 -0
  137. package/{esm2015/plugins/list/queries/is-list.js → esm2020/plugins/list/queries/is-list.mjs} +0 -0
  138. package/{esm2015/plugins/list/queries/is-node-type-list.js → esm2020/plugins/list/queries/is-node-type-list.mjs} +0 -0
  139. package/{esm2015/plugins/list/queries/is-selection-at-list-item-start.js → esm2020/plugins/list/queries/is-selection-at-list-item-start.mjs} +0 -0
  140. package/{esm2015/plugins/list/queries/is-selection-in-same-list-item.js → esm2020/plugins/list/queries/is-selection-in-same-list-item.mjs} +0 -0
  141. package/{esm2015/plugins/list/queries/is-single-list-item.js → esm2020/plugins/list/queries/is-single-list-item.mjs} +0 -0
  142. package/{esm2015/plugins/list/transforms/insert-list-data.js → esm2020/plugins/list/transforms/insert-list-data.mjs} +0 -0
  143. package/{esm2015/plugins/list/transforms/insert-list-item.js → esm2020/plugins/list/transforms/insert-list-item.mjs} +0 -0
  144. package/{esm2015/plugins/list/transforms/move-list-item-down.js → esm2020/plugins/list/transforms/move-list-item-down.mjs} +0 -0
  145. package/{esm2015/plugins/list/transforms/move-list-item-sublist-items-to-list-item-sublist.js → esm2020/plugins/list/transforms/move-list-item-sublist-items-to-list-item-sublist.mjs} +0 -0
  146. package/{esm2015/plugins/list/transforms/move-list-item-sublist-items-to-list.js → esm2020/plugins/list/transforms/move-list-item-sublist-items-to-list.mjs} +0 -0
  147. package/{esm2015/plugins/list/transforms/move-list-item-up.js → esm2020/plugins/list/transforms/move-list-item-up.mjs} +0 -0
  148. package/{esm2015/plugins/list/transforms/unwrap-list.js → esm2020/plugins/list/transforms/unwrap-list.mjs} +0 -0
  149. package/{esm2015/plugins/list/types.js → esm2020/plugins/list/types.mjs} +0 -0
  150. package/esm2020/plugins/mark/mark.editor.mjs +28 -0
  151. package/esm2020/plugins/mark/mark.plugin.mjs +105 -0
  152. package/esm2020/plugins/node-id/node-id.plugin.mjs +78 -0
  153. package/esm2020/plugins/normalizers/insert-paragraph-nodes.mjs +28 -0
  154. package/{esm2015/plugins/normalizers/remove-empty-nodes.js → esm2020/plugins/normalizers/remove-empty-nodes.mjs} +0 -0
  155. package/esm2020/plugins/normalizers/trailing-node.plugin.mjs +33 -0
  156. package/{esm2015/plugins/paint-format/paint-format.editor.js → esm2020/plugins/paint-format/paint-format.editor.mjs} +0 -0
  157. package/{esm2015/plugins/public-api.js → esm2020/plugins/public-api.mjs} +0 -0
  158. package/esm2020/plugins/quick-insert/components/quick-insert.component.mjs +96 -0
  159. package/esm2020/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.mjs +80 -0
  160. package/{esm2015/plugins/quick-insert/quick-insert.editor.js → esm2020/plugins/quick-insert/quick-insert.editor.mjs} +0 -0
  161. package/esm2020/plugins/quick-insert/quick-insert.plugin.mjs +74 -0
  162. package/esm2020/plugins/soft-break/soft-break.plugin.mjs +36 -0
  163. package/{esm2015/plugins/soft-break/soft-break.types.js → esm2020/plugins/soft-break/soft-break.types.mjs} +0 -0
  164. package/esm2020/plugins/table/components/insert-mark/insert-mark.component.mjs +100 -0
  165. package/{esm2015/plugins/table/components/row/row.component.js → esm2020/plugins/table/components/row/row.component.mjs} +4 -4
  166. package/esm2020/plugins/table/components/table.component.mjs +461 -0
  167. package/esm2020/plugins/table/components/td/td.component.mjs +696 -0
  168. package/{esm2015/plugins/table/components/toolbar/table-options.component.js → esm2020/plugins/table/components/toolbar/table-options.component.mjs} +8 -5
  169. package/esm2020/plugins/table/components/toolbar/table-toolbar.component.mjs +159 -0
  170. package/{esm2015/plugins/table/table.editor.js → esm2020/plugins/table/table.editor.mjs} +0 -0
  171. package/esm2020/plugins/table/table.plugin.mjs +427 -0
  172. package/{esm2015/plugins/table/table.service.js → esm2020/plugins/table/table.service.mjs} +4 -4
  173. package/esm2020/plugins/table/table.store.mjs +484 -0
  174. package/{esm2015/plugins/table/table.types.js → esm2020/plugins/table/table.types.mjs} +0 -0
  175. package/esm2020/plugins/table/toolbar-item.component.mjs +85 -0
  176. package/esm2020/plugins/table/transforms/clear-cell.mjs +14 -0
  177. package/{esm2015/plugins/table/transforms/clear-table-node.js → esm2020/plugins/table/transforms/clear-table-node.mjs} +0 -0
  178. package/{esm2015/plugins/table/transforms/insert-column.js → esm2020/plugins/table/transforms/insert-column.mjs} +0 -0
  179. package/{esm2015/plugins/table/transforms/insert-row.js → esm2020/plugins/table/transforms/insert-row.mjs} +0 -0
  180. package/esm2020/plugins/table/transforms/insert-table.mjs +15 -0
  181. package/{esm2015/plugins/table/transforms/remove-column.js → esm2020/plugins/table/transforms/remove-column.mjs} +0 -0
  182. package/{esm2015/plugins/table/transforms/remove-row.js → esm2020/plugins/table/transforms/remove-row.mjs} +0 -0
  183. package/{esm2015/plugins/table/transforms/remove-table.js → esm2020/plugins/table/transforms/remove-table.mjs} +0 -0
  184. package/{esm2015/plugins/table/utils/add-columns.js → esm2020/plugins/table/utils/add-columns.mjs} +0 -0
  185. package/{esm2015/plugins/table/utils/calc-anchor-position.js → esm2020/plugins/table/utils/calc-anchor-position.mjs} +0 -0
  186. package/{esm2015/plugins/table/utils/calc-span.js → esm2020/plugins/table/utils/calc-span.mjs} +0 -0
  187. package/{esm2015/plugins/table/utils/create-cell.js → esm2020/plugins/table/utils/create-cell.mjs} +0 -0
  188. package/{esm2015/plugins/table/utils/create-row.js → esm2020/plugins/table/utils/create-row.mjs} +0 -0
  189. package/{esm2015/plugins/table/utils/create-table.js → esm2020/plugins/table/utils/create-table.mjs} +0 -0
  190. package/{esm2015/plugins/table/utils/get-base-height.js → esm2020/plugins/table/utils/get-base-height.mjs} +0 -0
  191. package/{esm2015/plugins/table/utils/get-select-cell-node.js → esm2020/plugins/table/utils/get-select-cell-node.mjs} +5 -2
  192. package/{esm2015/plugins/table/utils/index.js → esm2020/plugins/table/utils/index.mjs} +0 -0
  193. package/{esm2015/plugins/table/utils/is-range-in-table.js → esm2020/plugins/table/utils/is-range-in-table.mjs} +0 -0
  194. package/{esm2015/plugins/table/utils/is-selection-in-table.js → esm2020/plugins/table/utils/is-selection-in-table.mjs} +0 -0
  195. package/{esm2015/plugins/table/utils/is-virtual-key.js → esm2020/plugins/table/utils/is-virtual-key.mjs} +0 -0
  196. package/{esm2015/plugins/table/utils/merge-cell.js → esm2020/plugins/table/utils/merge-cell.mjs} +0 -0
  197. package/{esm2015/plugins/table/utils/next-path.js → esm2020/plugins/table/utils/next-path.mjs} +0 -0
  198. package/{esm2015/plugins/table/utils/normalize-table.js → esm2020/plugins/table/utils/normalize-table.mjs} +0 -0
  199. package/{esm2015/plugins/table/utils/remove-columns.js → esm2020/plugins/table/utils/remove-columns.mjs} +0 -0
  200. package/{esm2015/plugins/table/utils/set-menu-cell-invisibility.js → esm2020/plugins/table/utils/set-menu-cell-invisibility.mjs} +0 -0
  201. package/{esm2015/plugins/table/utils/split-cell.js → esm2020/plugins/table/utils/split-cell.mjs} +0 -0
  202. package/{esm2015/plugins/table/utils/table-position.js → esm2020/plugins/table/utils/table-position.mjs} +0 -0
  203. package/esm2020/plugins/todo-item/todo-item.component.mjs +64 -0
  204. package/{esm2015/plugins/todo-item/todo-item.editor.js → esm2020/plugins/todo-item/todo-item.editor.mjs} +0 -0
  205. package/{esm2015/plugins/todo-item/todo-item.plugin.js → esm2020/plugins/todo-item/todo-item.plugin.mjs} +0 -0
  206. package/esm2020/plugins/vertical-align/toolbar-item.component.mjs +83 -0
  207. package/{esm2015/plugins/vertical-align/vertical-align.editor.js → esm2020/plugins/vertical-align/vertical-align.editor.mjs} +0 -0
  208. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  209. package/{esm2015/queries/anchor-block-entry.js → esm2020/queries/anchor-block-entry.mjs} +0 -0
  210. package/{esm2015/queries/anchor-block.js → esm2020/queries/anchor-block.mjs} +0 -0
  211. package/{esm2015/queries/anchor-inline-entry.js → esm2020/queries/anchor-inline-entry.mjs} +0 -0
  212. package/{esm2015/queries/find-descendant.js → esm2020/queries/find-descendant.mjs} +0 -0
  213. package/{esm2015/queries/find-node.js → esm2020/queries/find-node.mjs} +0 -0
  214. package/{esm2015/queries/find-path.js → esm2020/queries/find-path.mjs} +0 -0
  215. package/esm2020/queries/get-above-by-type.mjs +14 -0
  216. package/{esm2015/queries/get-above.js → esm2020/queries/get-above.mjs} +0 -0
  217. package/{esm2015/queries/get-anchor-block-entry.js → esm2020/queries/get-anchor-block-entry.mjs} +0 -0
  218. package/esm2020/queries/get-block-above.mjs +10 -0
  219. package/esm2020/queries/get-block-card-above.mjs +10 -0
  220. package/{esm2015/queries/get-block-card-cursor.js → esm2020/queries/get-block-card-cursor.mjs} +0 -0
  221. package/{esm2015/queries/get-container-blocks.js → esm2020/queries/get-container-blocks.mjs} +0 -0
  222. package/{esm2015/queries/get-directly-parent.js → esm2020/queries/get-directly-parent.mjs} +0 -0
  223. package/{esm2015/queries/get-insert-elements-path.js → esm2020/queries/get-insert-elements-path.mjs} +0 -0
  224. package/{esm2015/queries/get-last-child-path.js → esm2020/queries/get-last-child-path.mjs} +0 -0
  225. package/{esm2015/queries/get-last-node.js → esm2020/queries/get-last-node.mjs} +0 -0
  226. package/{esm2015/queries/get-next-sibling-nodes.js → esm2020/queries/get-next-sibling-nodes.mjs} +0 -0
  227. package/{esm2015/queries/get-node.js → esm2020/queries/get-node.mjs} +0 -0
  228. package/esm2020/queries/get-nodes-by-type.mjs +15 -0
  229. package/{esm2015/queries/get-nodes.js → esm2020/queries/get-nodes.mjs} +0 -0
  230. package/{esm2015/queries/get-parent.js → esm2020/queries/get-parent.mjs} +0 -0
  231. package/esm2020/queries/get-plain-text.mjs +16 -0
  232. package/{esm2015/queries/get-plugin-by-toolbar.js → esm2020/queries/get-plugin-by-toolbar.mjs} +0 -0
  233. package/{esm2015/queries/get-point-before.js → esm2020/queries/get-point-before.mjs} +0 -0
  234. package/{esm2015/queries/get-point-from-location.js → esm2020/queries/get-point-from-location.mjs} +0 -0
  235. package/{esm2015/queries/get-previous-path.js → esm2020/queries/get-previous-path.mjs} +0 -0
  236. package/{esm2015/queries/get-rang-from-block-start.js → esm2020/queries/get-rang-from-block-start.mjs} +0 -0
  237. package/{esm2015/queries/get-range-before.js → esm2020/queries/get-range-before.mjs} +0 -0
  238. package/esm2020/queries/get-selection-marks.mjs +18 -0
  239. package/{esm2015/queries/get-selection-nodes-by-type.js → esm2020/queries/get-selection-nodes-by-type.mjs} +0 -0
  240. package/{esm2015/queries/get-text.js → esm2020/queries/get-text.mjs} +0 -0
  241. package/esm2020/queries/get-toolbar-disabled.mjs +13 -0
  242. package/esm2020/queries/index.mjs +59 -0
  243. package/{esm2015/queries/is-across-blocks.js → esm2020/queries/is-across-blocks.mjs} +0 -0
  244. package/{esm2015/queries/is-ancestor-empty.js → esm2020/queries/is-ancestor-empty.mjs} +0 -0
  245. package/{esm2015/queries/is-ancestor.js → esm2020/queries/is-ancestor.mjs} +0 -0
  246. package/{esm2015/queries/is-block-above-empty.js → esm2020/queries/is-block-above-empty.mjs} +0 -0
  247. package/{esm2015/queries/is-block-active.js → esm2020/queries/is-block-active.mjs} +0 -0
  248. package/{esm2015/queries/is-block-card-cursor.js → esm2020/queries/is-block-card-cursor.mjs} +0 -0
  249. package/{esm2015/queries/is-block-text-empty-after-selection.js → esm2020/queries/is-block-text-empty-after-selection.mjs} +0 -0
  250. package/{esm2015/queries/is-collapsed.js → esm2020/queries/is-collapsed.mjs} +0 -0
  251. package/{esm2015/queries/is-contain-nested-type.js → esm2020/queries/is-contain-nested-type.mjs} +0 -0
  252. package/{esm2015/queries/is-container-type.js → esm2020/queries/is-container-type.mjs} +0 -0
  253. package/{esm2015/queries/is-descendant.js → esm2020/queries/is-descendant.mjs} +0 -0
  254. package/esm2020/queries/is-empty-content.mjs +15 -0
  255. package/{esm2015/queries/is-empty-paragraph-by-path.js → esm2020/queries/is-empty-paragraph-by-path.mjs} +0 -0
  256. package/{esm2015/queries/is-empty-paragraph.js → esm2020/queries/is-empty-paragraph.mjs} +0 -0
  257. package/{esm2015/queries/is-first-child.js → esm2020/queries/is-first-child.mjs} +0 -0
  258. package/{esm2015/queries/is-include-types.js → esm2020/queries/is-include-types.mjs} +0 -0
  259. package/{esm2015/queries/is-node-type-in.js → esm2020/queries/is-node-type-in.mjs} +0 -0
  260. package/{esm2015/queries/is-node-type.js → esm2020/queries/is-node-type.mjs} +0 -0
  261. package/{esm2015/queries/is-paragraph.js → esm2020/queries/is-paragraph.mjs} +0 -0
  262. package/{esm2015/queries/is-point-at-root.js → esm2020/queries/is-point-at-root.mjs} +0 -0
  263. package/esm2020/queries/is-range-across-blocks.mjs +22 -0
  264. package/{esm2015/queries/is-range-at-root.js → esm2020/queries/is-range-at-root.mjs} +0 -0
  265. package/{esm2015/queries/is-start.js → esm2020/queries/is-start.mjs} +0 -0
  266. package/{esm2015/queries/some-node.js → esm2020/queries/some-node.mjs} +0 -0
  267. package/{esm2015/services/color-select.service.js → esm2020/services/color-select.service.mjs} +4 -4
  268. package/esm2020/services/context.service.mjs +59 -0
  269. package/{esm2015/services/table-contextmenu.service.js → esm2020/services/table-contextmenu.service.mjs} +4 -4
  270. package/esm2020/services/toolbar.service.mjs +48 -0
  271. package/{esm2015/shortcuts/index.js → esm2020/shortcuts/index.mjs} +0 -0
  272. package/{esm2015/shortcuts/mark.js → esm2020/shortcuts/mark.mjs} +0 -0
  273. package/{esm2015/transforms/apply-deep-to-nodes.js → esm2020/transforms/apply-deep-to-nodes.mjs} +0 -0
  274. package/{esm2015/transforms/clear-marks.js → esm2020/transforms/clear-marks.mjs} +0 -0
  275. package/{esm2015/transforms/close-conversion-hint.js → esm2020/transforms/close-conversion-hint.mjs} +0 -0
  276. package/{esm2015/transforms/delete-element.js → esm2020/transforms/delete-element.mjs} +0 -0
  277. package/{esm2015/transforms/handle-continual-delete-backward.js → esm2020/transforms/handle-continual-delete-backward.mjs} +0 -0
  278. package/{esm2015/transforms/handle-continual-insert-break.js → esm2020/transforms/handle-continual-insert-break.mjs} +0 -0
  279. package/{esm2015/transforms/index.js → esm2020/transforms/index.mjs} +0 -0
  280. package/esm2020/transforms/insert-elements.mjs +34 -0
  281. package/{esm2015/transforms/insert-paragraph.js → esm2020/transforms/insert-paragraph.mjs} +0 -0
  282. package/esm2020/transforms/merge-deep-to-nodes.mjs +9 -0
  283. package/{esm2015/transforms/move-children.js → esm2020/transforms/move-children.mjs} +0 -0
  284. package/{esm2015/transforms/on-keydown-reset-block-type.js → esm2020/transforms/on-keydown-reset-block-type.mjs} +0 -0
  285. package/{esm2015/transforms/set-end-selection.js → esm2020/transforms/set-end-selection.mjs} +0 -0
  286. package/{esm2015/transforms/set-marks.js → esm2020/transforms/set-marks.mjs} +0 -0
  287. package/{esm2015/transforms/set-node.js → esm2020/transforms/set-node.mjs} +0 -0
  288. package/{esm2015/transforms/split-node.js → esm2020/transforms/split-node.mjs} +0 -0
  289. package/{esm2015/transforms/un-hang-range.js → esm2020/transforms/un-hang-range.mjs} +0 -0
  290. package/{esm2015/transforms/un-wrap.js → esm2020/transforms/un-wrap.mjs} +0 -0
  291. package/esm2020/transforms/unwrap-nodes-by-type.mjs +14 -0
  292. package/{esm2015/utils/auto-focus.js → esm2020/utils/auto-focus.mjs} +0 -0
  293. package/{esm2015/utils/auto-scroll-view.js → esm2020/utils/auto-scroll-view.mjs} +0 -0
  294. package/{esm2015/utils/cast-array.js → esm2020/utils/cast-array.mjs} +0 -0
  295. package/{esm2015/utils/common.js → esm2020/utils/common.mjs} +0 -0
  296. package/{esm2015/utils/create-empty-paragraph.js → esm2020/utils/create-empty-paragraph.mjs} +0 -0
  297. package/{esm2015/utils/data-transform.js → esm2020/utils/data-transform.mjs} +0 -0
  298. package/{esm2015/utils/dom.js → esm2020/utils/dom.mjs} +0 -0
  299. package/{esm2015/utils/editor-uuid.js → esm2020/utils/editor-uuid.mjs} +0 -0
  300. package/{esm2015/utils/fragment.js → esm2020/utils/fragment.mjs} +0 -0
  301. package/{esm2015/utils/get-editable-element-height.js → esm2020/utils/get-editable-element-height.mjs} +0 -0
  302. package/{esm2015/utils/get-toolbar-class.js → esm2020/utils/get-toolbar-class.mjs} +0 -0
  303. package/{esm2015/utils/id-creator.js → esm2020/utils/id-creator.mjs} +0 -0
  304. package/{esm2015/utils/index.js → esm2020/utils/index.mjs} +0 -0
  305. package/{esm2015/utils/is-clean-empty-paragraph.js → esm2020/utils/is-clean-empty-paragraph.mjs} +0 -0
  306. package/esm2020/utils/is-inline.mjs +9 -0
  307. package/{esm2015/utils/lodash.js → esm2020/utils/lodash.mjs} +0 -0
  308. package/esm2020/utils/match.mjs +32 -0
  309. package/{esm2015/utils/merge-element-options.js → esm2020/utils/merge-element-options.mjs} +0 -0
  310. package/{esm2015/utils/weak-maps.js → esm2020/utils/weak-maps.mjs} +0 -0
  311. package/{esm2015/worktile-theia.js → esm2020/worktile-theia.mjs} +0 -0
  312. package/fesm2015/{worktile-theia.js → worktile-theia.mjs} +289 -332
  313. package/fesm2015/worktile-theia.mjs.map +1 -0
  314. package/fesm2020/worktile-theia.mjs +13739 -0
  315. package/fesm2020/worktile-theia.mjs.map +1 -0
  316. package/interfaces/editor.d.ts +3 -3
  317. package/interfaces/upload.d.ts +1 -1
  318. package/package.json +19 -6
  319. package/plugins/image/image.component.d.ts +4 -1
  320. package/queries/index.d.ts +2 -1
  321. package/queries/is-empty-content.d.ts +2 -0
  322. package/services/context.service.d.ts +8 -4
  323. package/bundles/worktile-theia.umd.js +0 -14888
  324. package/bundles/worktile-theia.umd.js.map +0 -1
  325. package/esm2015/components/color-select/color-select.component.js +0 -113
  326. package/esm2015/components/column-resize/column-resize.module.js +0 -34
  327. package/esm2015/components/contextmenu/contextmenu.component.js +0 -64
  328. package/esm2015/components/conversion-hint/conversion-hint.component.js +0 -59
  329. package/esm2015/components/element/element.component.js +0 -24
  330. package/esm2015/components/inline-toolbar/inline-toolbar.component.js +0 -139
  331. package/esm2015/components/table-select/table-select.component.js +0 -53
  332. package/esm2015/components/template/template.component.js +0 -66
  333. package/esm2015/components/toolbar/toolbar.component.js +0 -250
  334. package/esm2015/components/toolbar-dropdown/toolbar-dropdown.component.js +0 -133
  335. package/esm2015/components/toolbar-group/toolbar-group.component.js +0 -116
  336. package/esm2015/components/toolbar-item/toolbar-item.component.js +0 -105
  337. package/esm2015/core/create-toolbar.js +0 -57
  338. package/esm2015/core/toolbar-item/base-toolbar-item.js +0 -92
  339. package/esm2015/core/utils/get-plugin-options.js +0 -3
  340. package/esm2015/core/utils/get-plugins.js +0 -5
  341. package/esm2015/core/utils/merge-array.js +0 -18
  342. package/esm2015/editor.component.js +0 -427
  343. package/esm2015/interfaces/editor.js +0 -23
  344. package/esm2015/plugins/align/align.editor.js +0 -48
  345. package/esm2015/plugins/autoformat/autoformat.plugin.js +0 -110
  346. package/esm2015/plugins/blockquote/blockquote.editor.js +0 -21
  347. package/esm2015/plugins/code/code.component.js +0 -245
  348. package/esm2015/plugins/color/color.editor.js +0 -45
  349. package/esm2015/plugins/color/toolbar-item.component.js +0 -124
  350. package/esm2015/plugins/common/auto-insert-data..js +0 -78
  351. package/esm2015/plugins/common/get-fragment.plugin.js +0 -25
  352. package/esm2015/plugins/font-size/font-size.editor.js +0 -98
  353. package/esm2015/plugins/image/image.component.js +0 -366
  354. package/esm2015/plugins/image/image.plugin.js +0 -58
  355. package/esm2015/plugins/indent/indent.editor.js +0 -73
  356. package/esm2015/plugins/indent/indent.plugin.js +0 -60
  357. package/esm2015/plugins/link/edit/link-edit.component.js +0 -108
  358. package/esm2015/plugins/link/hover/link-hover.component.js +0 -39
  359. package/esm2015/plugins/list/components/bulleted-list.component.js +0 -34
  360. package/esm2015/plugins/list/components/list-item.component.js +0 -95
  361. package/esm2015/plugins/list/components/numbered-list.component.js +0 -40
  362. package/esm2015/plugins/list/list.plugin.js +0 -281
  363. package/esm2015/plugins/list/normalizers/normalize-list-item.js +0 -19
  364. package/esm2015/plugins/mark/mark.editor.js +0 -29
  365. package/esm2015/plugins/mark/mark.plugin.js +0 -102
  366. package/esm2015/plugins/node-id/node-id.plugin.js +0 -69
  367. package/esm2015/plugins/normalizers/insert-paragraph-nodes.js +0 -29
  368. package/esm2015/plugins/normalizers/trailing-node.plugin.js +0 -34
  369. package/esm2015/plugins/quick-insert/components/quick-insert.component.js +0 -102
  370. package/esm2015/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.js +0 -84
  371. package/esm2015/plugins/quick-insert/quick-insert.plugin.js +0 -75
  372. package/esm2015/plugins/soft-break/soft-break.plugin.js +0 -37
  373. package/esm2015/plugins/table/components/insert-mark/insert-mark.component.js +0 -103
  374. package/esm2015/plugins/table/components/table.component.js +0 -470
  375. package/esm2015/plugins/table/components/td/td.component.js +0 -698
  376. package/esm2015/plugins/table/components/toolbar/table-toolbar.component.js +0 -162
  377. package/esm2015/plugins/table/table.plugin.js +0 -424
  378. package/esm2015/plugins/table/table.store.js +0 -480
  379. package/esm2015/plugins/table/toolbar-item.component.js +0 -86
  380. package/esm2015/plugins/table/transforms/clear-cell.js +0 -11
  381. package/esm2015/plugins/table/transforms/insert-table.js +0 -15
  382. package/esm2015/plugins/todo-item/todo-item.component.js +0 -66
  383. package/esm2015/plugins/vertical-align/toolbar-item.component.js +0 -90
  384. package/esm2015/queries/get-above-by-type.js +0 -11
  385. package/esm2015/queries/get-block-above.js +0 -7
  386. package/esm2015/queries/get-block-card-above.js +0 -7
  387. package/esm2015/queries/get-nodes-by-type.js +0 -12
  388. package/esm2015/queries/get-plain-text.js +0 -16
  389. package/esm2015/queries/get-selection-marks.js +0 -19
  390. package/esm2015/queries/get-toolbar-disabled.js +0 -14
  391. package/esm2015/queries/index.js +0 -58
  392. package/esm2015/queries/is-range-across-blocks.js +0 -18
  393. package/esm2015/services/context.service.js +0 -59
  394. package/esm2015/services/toolbar.service.js +0 -48
  395. package/esm2015/transforms/insert-elements.js +0 -35
  396. package/esm2015/transforms/merge-deep-to-nodes.js +0 -9
  397. package/esm2015/transforms/unwrap-nodes-by-type.js +0 -11
  398. package/esm2015/utils/is-inline.js +0 -10
  399. package/esm2015/utils/match.js +0 -29
  400. package/fesm2015/worktile-theia.js.map +0 -1
@@ -45,12 +45,15 @@ export class TheTableOptionsComponent {
45
45
  currentOption.isActive = !option.isActive;
46
46
  const tableOption = {};
47
47
  tableOption[option.key] = currentOption.isActive || null;
48
- this.tableStore.setTableOptions(this.editor, Object.assign(Object.assign({}, this.table.options), tableOption));
48
+ this.tableStore.setTableOptions(this.editor, {
49
+ ...this.table.options,
50
+ ...tableOption
51
+ });
49
52
  this.popoverRef.close();
50
53
  }
51
54
  }
52
- TheTableOptionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheTableOptionsComponent, deps: [{ token: i1.ThyPopoverRef }], target: i0.ɵɵFactoryTarget.Component });
53
- TheTableOptionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheTableOptionsComponent, selector: "the-table-options", inputs: { tableStore: "tableStore", editor: "editor" }, host: { listeners: { "document: mousedown": "handleDocumentMouseDown($event)" } }, ngImport: i0, template: `
55
+ TheTableOptionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TheTableOptionsComponent, deps: [{ token: i1.ThyPopoverRef }], target: i0.ɵɵFactoryTarget.Component });
56
+ TheTableOptionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: TheTableOptionsComponent, selector: "the-table-options", inputs: { tableStore: "tableStore", editor: "editor" }, host: { listeners: { "document: mousedown": "handleDocumentMouseDown($event)" } }, ngImport: i0, template: `
54
57
  <thy-action-menu class="table-drop-menu">
55
58
  <ng-container *ngFor="let option of tableDropdownList">
56
59
  <a thyActionMenuItem href="javascript:;" (mousedown)="setTableOptions($event, option)">
@@ -62,7 +65,7 @@ TheTableOptionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0
62
65
  </ng-container>
63
66
  </thy-action-menu>
64
67
  `, isInline: true, components: [{ type: i2.ThyActionMenuComponent, selector: "thy-action-menu", inputs: ["thyTheme", "thyWidth"] }, { type: i3.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], directives: [{ type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.ThyActionMenuItemDirective, selector: "[thyActionMenuItem]", inputs: ["thyDisabled", "thyType"] }, { type: i2.ThyActionMenuItemNameDirective, selector: "[thyActionMenuItemName]" }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.ThyActionMenuItemExtendIconDirective, selector: "[thyActionMenuItemExtendIcon]" }] });
65
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheTableOptionsComponent, decorators: [{
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TheTableOptionsComponent, decorators: [{
66
69
  type: Component,
67
70
  args: [{
68
71
  selector: 'the-table-options',
@@ -87,4 +90,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
87
90
  type: HostListener,
88
91
  args: ['document: mousedown', ['$event']]
89
92
  }] } });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtb3B0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS9jb21wb25lbnRzL3Rvb2xiYXIvdGFibGUtb3B0aW9ucy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFxQnZFLE1BQU0sT0FBTyx3QkFBd0I7SUErQmpDLFlBQW9CLFVBQW1EO1FBQW5ELGVBQVUsR0FBVixVQUFVLENBQXlDO1FBdEJ2RSxzQkFBaUIsR0FBMEI7WUFDdkMsSUFBSTtZQUNKLG1CQUFtQjtZQUNuQix1QkFBdUI7WUFDdkIsS0FBSztZQUNMLElBQUk7WUFDSixtQkFBbUI7WUFDbkIsMEJBQTBCO1lBQzFCLEtBQUs7WUFDTDtnQkFDSSxJQUFJLEVBQUUsS0FBSztnQkFDWCxHQUFHLEVBQUUsZ0JBQWdCO2FBQ3hCO1NBQ0osQ0FBQztJQVN3RSxDQUFDO0lBMUIzRSxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFrQkQsdUJBQXVCLENBQUMsS0FBaUI7UUFDckMsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBcUIsQ0FBQyxFQUFFO1lBQzNHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDM0I7SUFDTCxDQUFDO0lBSUQsUUFBUTtRQUNKLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUM7UUFDbEYsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWlCLEVBQUUsTUFBMkI7UUFDMUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkYsYUFBYSxDQUFDLFFBQVEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDMUMsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUM7UUFDekQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sa0NBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUNsQixXQUFXLEVBQ2hCLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzVCLENBQUM7O3NIQXZEUSx3QkFBd0I7MEdBQXhCLHdCQUF3QixvTUFidkI7Ozs7Ozs7Ozs7O0tBV1Q7NEZBRVEsd0JBQXdCO2tCQWZwQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7S0FXVDtpQkFDSjtvR0FFWSxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFzQk4sdUJBQXVCO3NCQUR0QixZQUFZO3VCQUFDLHFCQUFxQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoeVBvcG92ZXJSZWYgfSBmcm9tICduZ3gtdGV0aHlzJztcbmltcG9ydCB7IEVkaXRvciB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IFRhYmxlU3RvcmUgfSBmcm9tICcuLi8uLi90YWJsZS5zdG9yZSc7XG5pbXBvcnQgeyBUYWJsZURyb3Bkb3duT3B0aW9uIH0gZnJvbSAnLi4vLi4vdGFibGUudHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoZS10YWJsZS1vcHRpb25zJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8dGh5LWFjdGlvbi1tZW51IGNsYXNzPVwidGFibGUtZHJvcC1tZW51XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgdGFibGVEcm9wZG93bkxpc3RcIj5cbiAgICAgICAgICAgICAgICA8YSB0aHlBY3Rpb25NZW51SXRlbSBocmVmPVwiamF2YXNjcmlwdDo7XCIgKG1vdXNlZG93bik9XCJzZXRUYWJsZU9wdGlvbnMoJGV2ZW50LCBvcHRpb24pXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHRoeUFjdGlvbk1lbnVJdGVtTmFtZT57eyBvcHRpb24ubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gdGh5QWN0aW9uTWVudUl0ZW1FeHRlbmRJY29uIGNsYXNzPVwidGV4dC1wcmltYXJ5XCIgKm5nSWY9XCJvcHRpb24uaXNBY3RpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cImNoZWNrXCI+PC90aHktaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L3RoeS1hY3Rpb24tbWVudT5cbiAgICBgXG59KVxuZXhwb3J0IGNsYXNzIFRoZVRhYmxlT3B0aW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgQElucHV0KCkgdGFibGVTdG9yZTogVGFibGVTdG9yZTtcblxuICAgIEBJbnB1dCgpIGVkaXRvcjogRWRpdG9yO1xuXG4gICAgZ2V0IHRhYmxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50YWJsZVN0b3JlICYmIHRoaXMudGFibGVTdG9yZS5nZXRUYWJsZUVudHJ5KHRoaXMuZWRpdG9yKVswXTtcbiAgICB9XG5cbiAgICB0YWJsZURyb3Bkb3duTGlzdDogVGFibGVEcm9wZG93bk9wdGlvbltdID0gW1xuICAgICAgICAvLyB7XG4gICAgICAgIC8vICAgICBuYW1lOiAn6KGo5aS06KGMJyxcbiAgICAgICAgLy8gICAgIGtleTogJ2hlYWRlclJvdydcbiAgICAgICAgLy8gfSxcbiAgICAgICAgLy8ge1xuICAgICAgICAvLyAgICAgbmFtZTogJ+ihqOWktOWIlycsXG4gICAgICAgIC8vICAgICBrZXk6ICdoZWFkZXJDb2x1bW4nXG4gICAgICAgIC8vIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICfluo/lj7fliJcnLFxuICAgICAgICAgICAga2V5OiAnbnVtYmVyZWRDb2x1bW4nXG4gICAgICAgIH1cbiAgICBdO1xuXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6IG1vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gICAgaGFuZGxlRG9jdW1lbnRNb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKHRoaXMucG9wb3ZlclJlZiAmJiAhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnRhYmxlLW9wdGlvbnMtcGFubmVsJykuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KSkge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHBvcG92ZXJSZWY6IFRoeVBvcG92ZXJSZWY8VGhlVGFibGVPcHRpb25zQ29tcG9uZW50Pikge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldENvbHVtbk9wdGlvbnMoKTtcbiAgICB9XG5cbiAgICBzZXRDb2x1bW5PcHRpb25zKCkge1xuICAgICAgICB0aGlzLnRhYmxlRHJvcGRvd25MaXN0LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpdGVtLmlzQWN0aXZlID0gKHRoaXMudGFibGUub3B0aW9ucyAmJiB0aGlzLnRhYmxlLm9wdGlvbnNbaXRlbS5rZXldKSB8fCBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2V0VGFibGVPcHRpb25zKGV2ZW50OiBNb3VzZUV2ZW50LCBvcHRpb246IFRhYmxlRHJvcGRvd25PcHRpb24pIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRPcHRpb24gPSB0aGlzLnRhYmxlRHJvcGRvd25MaXN0LmZpbmQoaXRlbSA9PiBpdGVtLmtleSA9PT0gb3B0aW9uLmtleSk7XG4gICAgICAgIGN1cnJlbnRPcHRpb24uaXNBY3RpdmUgPSAhb3B0aW9uLmlzQWN0aXZlO1xuICAgICAgICBjb25zdCB0YWJsZU9wdGlvbiA9IHt9O1xuICAgICAgICB0YWJsZU9wdGlvbltvcHRpb24ua2V5XSA9IGN1cnJlbnRPcHRpb24uaXNBY3RpdmUgfHwgbnVsbDtcbiAgICAgICAgdGhpcy50YWJsZVN0b3JlLnNldFRhYmxlT3B0aW9ucyh0aGlzLmVkaXRvciwge1xuICAgICAgICAgICAgLi4udGhpcy50YWJsZS5vcHRpb25zLFxuICAgICAgICAgICAgLi4udGFibGVPcHRpb25cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMucG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgIH1cbn1cbiJdfQ==
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtb3B0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS9jb21wb25lbnRzL3Rvb2xiYXIvdGFibGUtb3B0aW9ucy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7Ozs7QUFxQnZFLE1BQU0sT0FBTyx3QkFBd0I7SUErQmpDLFlBQW9CLFVBQW1EO1FBQW5ELGVBQVUsR0FBVixVQUFVLENBQXlDO1FBdEJ2RSxzQkFBaUIsR0FBMEI7WUFDdkMsSUFBSTtZQUNKLG1CQUFtQjtZQUNuQix1QkFBdUI7WUFDdkIsS0FBSztZQUNMLElBQUk7WUFDSixtQkFBbUI7WUFDbkIsMEJBQTBCO1lBQzFCLEtBQUs7WUFDTDtnQkFDSSxJQUFJLEVBQUUsS0FBSztnQkFDWCxHQUFHLEVBQUUsZ0JBQWdCO2FBQ3hCO1NBQ0osQ0FBQztJQVN3RSxDQUFDO0lBMUIzRSxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFrQkQsdUJBQXVCLENBQUMsS0FBaUI7UUFDckMsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBcUIsQ0FBQyxFQUFFO1lBQzNHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDM0I7SUFDTCxDQUFDO0lBSUQsUUFBUTtRQUNKLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxnQkFBZ0I7UUFDWixJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUM7UUFDbEYsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWlCLEVBQUUsTUFBMkI7UUFDMUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkYsYUFBYSxDQUFDLFFBQVEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7UUFDMUMsTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsYUFBYSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUM7UUFDekQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUN6QyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTztZQUNyQixHQUFHLFdBQVc7U0FDakIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUM1QixDQUFDOztxSEF2RFEsd0JBQXdCO3lHQUF4Qix3QkFBd0Isb01BYnZCOzs7Ozs7Ozs7OztLQVdUOzJGQUVRLHdCQUF3QjtrQkFmcEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7O0tBV1Q7aUJBQ0o7b0dBRVksVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxNQUFNO3NCQUFkLEtBQUs7Z0JBc0JOLHVCQUF1QjtzQkFEdEIsWUFBWTt1QkFBQyxxQkFBcUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgSG9zdExpc3RlbmVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHlQb3BvdmVyUmVmIH0gZnJvbSAnbmd4LXRldGh5cyc7XG5pbXBvcnQgeyBFZGl0b3IgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBUYWJsZVN0b3JlIH0gZnJvbSAnLi4vLi4vdGFibGUuc3RvcmUnO1xuaW1wb3J0IHsgVGFibGVEcm9wZG93bk9wdGlvbiB9IGZyb20gJy4uLy4uL3RhYmxlLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aGUtdGFibGUtb3B0aW9ucycsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHRoeS1hY3Rpb24tbWVudSBjbGFzcz1cInRhYmxlLWRyb3AtbWVudVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHRhYmxlRHJvcGRvd25MaXN0XCI+XG4gICAgICAgICAgICAgICAgPGEgdGh5QWN0aW9uTWVudUl0ZW0gaHJlZj1cImphdmFzY3JpcHQ6O1wiIChtb3VzZWRvd24pPVwic2V0VGFibGVPcHRpb25zKCRldmVudCwgb3B0aW9uKVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiB0aHlBY3Rpb25NZW51SXRlbU5hbWU+e3sgb3B0aW9uLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIHRoeUFjdGlvbk1lbnVJdGVtRXh0ZW5kSWNvbiBjbGFzcz1cInRleHQtcHJpbWFyeVwiICpuZ0lmPVwib3B0aW9uLmlzQWN0aXZlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJjaGVja1wiPjwvdGh5LWljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC90aHktYWN0aW9uLW1lbnU+XG4gICAgYFxufSlcbmV4cG9ydCBjbGFzcyBUaGVUYWJsZU9wdGlvbnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIHRhYmxlU3RvcmU6IFRhYmxlU3RvcmU7XG5cbiAgICBASW5wdXQoKSBlZGl0b3I6IEVkaXRvcjtcblxuICAgIGdldCB0YWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVTdG9yZSAmJiB0aGlzLnRhYmxlU3RvcmUuZ2V0VGFibGVFbnRyeSh0aGlzLmVkaXRvcilbMF07XG4gICAgfVxuXG4gICAgdGFibGVEcm9wZG93bkxpc3Q6IFRhYmxlRHJvcGRvd25PcHRpb25bXSA9IFtcbiAgICAgICAgLy8ge1xuICAgICAgICAvLyAgICAgbmFtZTogJ+ihqOWktOihjCcsXG4gICAgICAgIC8vICAgICBrZXk6ICdoZWFkZXJSb3cnXG4gICAgICAgIC8vIH0sXG4gICAgICAgIC8vIHtcbiAgICAgICAgLy8gICAgIG5hbWU6ICfooajlpLTliJcnLFxuICAgICAgICAvLyAgICAga2V5OiAnaGVhZGVyQ29sdW1uJ1xuICAgICAgICAvLyB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAn5bqP5Y+35YiXJyxcbiAgICAgICAgICAgIGtleTogJ251bWJlcmVkQ29sdW1uJ1xuICAgICAgICB9XG4gICAgXTtcblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OiBtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICAgIGhhbmRsZURvY3VtZW50TW91c2VEb3duKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXJSZWYgJiYgIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy50YWJsZS1vcHRpb25zLXBhbm5lbCcpLmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBwb3BvdmVyUmVmOiBUaHlQb3BvdmVyUmVmPFRoZVRhYmxlT3B0aW9uc0NvbXBvbmVudD4pIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZXRDb2x1bW5PcHRpb25zKCk7XG4gICAgfVxuXG4gICAgc2V0Q29sdW1uT3B0aW9ucygpIHtcbiAgICAgICAgdGhpcy50YWJsZURyb3Bkb3duTGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgaXRlbS5pc0FjdGl2ZSA9ICh0aGlzLnRhYmxlLm9wdGlvbnMgJiYgdGhpcy50YWJsZS5vcHRpb25zW2l0ZW0ua2V5XSkgfHwgZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHNldFRhYmxlT3B0aW9ucyhldmVudDogTW91c2VFdmVudCwgb3B0aW9uOiBUYWJsZURyb3Bkb3duT3B0aW9uKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBjb25zdCBjdXJyZW50T3B0aW9uID0gdGhpcy50YWJsZURyb3Bkb3duTGlzdC5maW5kKGl0ZW0gPT4gaXRlbS5rZXkgPT09IG9wdGlvbi5rZXkpO1xuICAgICAgICBjdXJyZW50T3B0aW9uLmlzQWN0aXZlID0gIW9wdGlvbi5pc0FjdGl2ZTtcbiAgICAgICAgY29uc3QgdGFibGVPcHRpb24gPSB7fTtcbiAgICAgICAgdGFibGVPcHRpb25bb3B0aW9uLmtleV0gPSBjdXJyZW50T3B0aW9uLmlzQWN0aXZlIHx8IG51bGw7XG4gICAgICAgIHRoaXMudGFibGVTdG9yZS5zZXRUYWJsZU9wdGlvbnModGhpcy5lZGl0b3IsIHtcbiAgICAgICAgICAgIC4uLnRoaXMudGFibGUub3B0aW9ucyxcbiAgICAgICAgICAgIC4uLnRhYmxlT3B0aW9uXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,159 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { BackgroundColors, TableHeaderBackgroundColor, SpecialBackgroundColor } from '../../../../constants/color-select';
3
+ import { splitCell } from '../../utils/split-cell';
4
+ import { setCellMenuInvisibility } from '../../utils/set-menu-cell-invisibility';
5
+ import { TableEditor } from '../../table.editor';
6
+ import { TheTableOptionsComponent } from './table-options.component';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "../../../../services/color-select.service";
9
+ import * as i2 from "ngx-tethys/popover";
10
+ import * as i3 from "ngx-tethys/nav";
11
+ import * as i4 from "ngx-tethys/icon";
12
+ import * as i5 from "../../../../components/nav-split-line/nav-split-line.component";
13
+ import * as i6 from "ngx-tethys/button";
14
+ import * as i7 from "@angular/common";
15
+ import * as i8 from "ngx-tethys/tooltip";
16
+ export class TheTableToolbarComponent {
17
+ constructor(ngZone, colorSelectService, thyPopover, popoverRef) {
18
+ this.ngZone = ngZone;
19
+ this.colorSelectService = colorSelectService;
20
+ this.thyPopover = thyPopover;
21
+ this.popoverRef = popoverRef;
22
+ this.cellMenuList = [
23
+ {
24
+ key: 'merge-cells',
25
+ name: '合并单元格',
26
+ invisibility: false,
27
+ icon: 'table-merge-cells',
28
+ actionHandle: () => {
29
+ event.preventDefault();
30
+ event.stopPropagation();
31
+ this.tableStore.mergeCell(this.editor);
32
+ this.popoverRef.close();
33
+ this.tableStore.clearSelectedCells();
34
+ }
35
+ },
36
+ {
37
+ key: 'split-cells',
38
+ name: '拆分单元格',
39
+ invisibility: false,
40
+ icon: 'table-unmerge-cells',
41
+ actionHandle: () => {
42
+ event.preventDefault();
43
+ event.stopPropagation();
44
+ splitCell(this.editor);
45
+ this.popoverRef.close();
46
+ this.tableStore.clearSelectedCells();
47
+ }
48
+ }
49
+ ];
50
+ }
51
+ get editor() {
52
+ return this.tableStore && this.tableStore.editor;
53
+ }
54
+ get isShowSplitLine() {
55
+ return this.cellMenuList.filter(item => !item.invisibility).length > 1;
56
+ }
57
+ ngOnInit() {
58
+ this.deleteIcon = DeleteIcon[this.getDeleteIcon()];
59
+ this.getIconName(this.deleteIcon);
60
+ setCellMenuInvisibility(this.editor, this.cellMenuList, this.tableStore.selectedCells, this.isActiveSelect);
61
+ this.selectedColor = this.tableStore.getSelectedCellBackgroundColor();
62
+ }
63
+ ngOnDestroy() {
64
+ this.colorSelectService.closeColorSelect();
65
+ }
66
+ getIconName(key) {
67
+ switch (key) {
68
+ case 'trash':
69
+ this.iconName = '删除表格';
70
+ break;
71
+ case 'table-delete-columns':
72
+ this.iconName = '删除整列';
73
+ break;
74
+ case 'table-delete-rows':
75
+ this.iconName = '删除整行';
76
+ break;
77
+ }
78
+ }
79
+ getDeleteIcon() {
80
+ if (this.tableStore.isSelectedTable) {
81
+ return DeleteIcon.trash;
82
+ }
83
+ if (this.tableStore.selectedRowsIndex.length > 0) {
84
+ return DeleteIcon['table-delete-rows'];
85
+ }
86
+ if (this.tableStore.selectedColumnsIndex.length > 0) {
87
+ return DeleteIcon['table-delete-columns'];
88
+ }
89
+ return null;
90
+ }
91
+ onDelete(event) {
92
+ event.preventDefault();
93
+ this.tableStore.removeColumnOrRows();
94
+ this.tableStore.clearDangerousCells();
95
+ this.tableStore.clearSelectedCells();
96
+ this.popoverRef.close();
97
+ }
98
+ onEnterDelete(event) {
99
+ this.tableStore.setDangerousCells();
100
+ }
101
+ onLeaveDelete(event) {
102
+ this.tableStore.clearDangerousCells();
103
+ }
104
+ openSelectColor(event) {
105
+ event.preventDefault();
106
+ event.stopPropagation();
107
+ const element = event.target.closest('.thy-icon-nav-link');
108
+ const isHeader = TableEditor.isActiveHeader(this.editor);
109
+ this.ngZone.run(() => {
110
+ this.colorSelectService.toggleColorSelect(element, this.selectedColor, BackgroundColors, {
111
+ perRowColorNumbers: 7,
112
+ rowOptions: { 1: '#bbb', 2: '#bbb' },
113
+ specialColor: isHeader ? TableHeaderBackgroundColor : SpecialBackgroundColor
114
+ }, (newColor) => {
115
+ if ((newColor === TableHeaderBackgroundColor && isHeader) || (newColor === SpecialBackgroundColor && !isHeader)) {
116
+ this.tableStore.setSelectedCellsBackgroundColor(null);
117
+ }
118
+ else {
119
+ this.tableStore.setSelectedCellsBackgroundColor(newColor);
120
+ }
121
+ this.selectedColor = newColor;
122
+ });
123
+ });
124
+ }
125
+ openTableOptionMenu(event) {
126
+ event.preventDefault();
127
+ event.stopPropagation();
128
+ this.thyPopover.open(TheTableOptionsComponent, {
129
+ origin: event.currentTarget,
130
+ initialState: {
131
+ tableStore: this.tableStore,
132
+ editor: this.editor
133
+ },
134
+ minWidth: 0,
135
+ insideClosable: false,
136
+ hasBackdrop: false,
137
+ placement: 'bottomLeft',
138
+ originActiveClass: 'table-options-active',
139
+ panelClass: 'table-options-pannel'
140
+ });
141
+ }
142
+ }
143
+ TheTableToolbarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TheTableToolbarComponent, deps: [{ token: i0.NgZone }, { token: i1.TheColorSelectService }, { token: i2.ThyPopover }, { token: i2.ThyPopoverRef }], target: i0.ɵɵFactoryTarget.Component });
144
+ TheTableToolbarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: TheTableToolbarComponent, selector: "the-table-toolbar", inputs: { tableStore: "tableStore", isActiveSelect: "isActiveSelect" }, ngImport: i0, template: "<thy-icon-nav>\n <ng-container *ngFor=\"let item of cellMenuList\">\n <a href=\"javascript:;\" thyIconNavLink *ngIf=\"!item.invisibility\" [thyTooltip]=\"item.name\" (mousedown)=\"item.actionHandle()\">\n <thy-icon [thyIconName]=\"item.icon\"></thy-icon>\n </a>\n </ng-container>\n <nav-split-line *ngIf=\"!isActiveSelect && isShowSplitLine\"></nav-split-line>\n <a href=\"javascript:;\" thyIconNavLink thyTooltip=\"\u5355\u5143\u683C\u80CC\u666F\" (mousedown)=\"openSelectColor($event)\">\n <thy-icon thyIconName=\"background-tt\" thyIconType=\"twotone\" [thyTwotoneColor]=\"selectedColor\"></thy-icon>\n </a>\n <nav-split-line *ngIf=\"tableStore.isSelectedTable\"></nav-split-line>\n <button\n thyButton=\"default\"\n *ngIf=\"tableStore.isSelectedTable\"\n class=\"mr-2\"\n thySize=\"md\"\n class=\"table-options\"\n (mousedown)=\"openTableOptionMenu($event)\"\n >\n <span>\u8868\u683C\u9009\u9879</span>\n <thy-icon thyIconName=\"caret-down\"></thy-icon>\n </button>\n <nav-split-line *ngIf=\"deleteIcon\"></nav-split-line>\n <a\n *ngIf=\"deleteIcon\"\n href=\"javascript:;\"\n thyIconNavLink\n [thyTooltip]=\"iconName\"\n class=\"danger\"\n [thyIconNavLinkIcon]=\"deleteIcon\"\n (mousedown)=\"onDelete($event)\"\n (mouseenter)=\"onEnterDelete($event)\"\n (mouseleave)=\"onLeaveDelete($event)\"\n ></a>\n</thy-icon-nav>\n", components: [{ type: i3.ThyIconNavComponent, selector: "thy-icon-nav", inputs: ["thyType"] }, { type: i3.ThyIconNavLinkComponent, selector: "[thyIconNavLink]", inputs: ["thyIconNavLinkIcon", "thyIconNavLinkActive"] }, { type: i4.ThyIconComponent, selector: "thy-icon", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }, { type: i5.NavSplitLineComponent, selector: "nav-split-line", inputs: ["mode"] }, { type: i6.ThyButtonComponent, selector: "thy-button,[thy-button],[thyButton]", inputs: ["thyButton", "thyType", "thyLoading", "thyLoadingText", "thySize", "thyIcon", "thySquare", "thyBlock"] }], directives: [{ type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i8.ThyTooltipDirective, selector: "[thyTooltip],[thy-tooltip]", inputs: ["thyTooltip", "thyTooltipPlacement", "thyTooltipClass", "thyTooltipShowDelay", "thyTooltipHideDelay", "thyTooltipTrigger", "thyTooltipDisabled", "thyTooltipTemplateContext", "thyTooltipOffset", "thyTooltipPin"], exportAs: ["thyTooltip"] }] });
145
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: TheTableToolbarComponent, decorators: [{
146
+ type: Component,
147
+ args: [{ selector: 'the-table-toolbar', template: "<thy-icon-nav>\n <ng-container *ngFor=\"let item of cellMenuList\">\n <a href=\"javascript:;\" thyIconNavLink *ngIf=\"!item.invisibility\" [thyTooltip]=\"item.name\" (mousedown)=\"item.actionHandle()\">\n <thy-icon [thyIconName]=\"item.icon\"></thy-icon>\n </a>\n </ng-container>\n <nav-split-line *ngIf=\"!isActiveSelect && isShowSplitLine\"></nav-split-line>\n <a href=\"javascript:;\" thyIconNavLink thyTooltip=\"\u5355\u5143\u683C\u80CC\u666F\" (mousedown)=\"openSelectColor($event)\">\n <thy-icon thyIconName=\"background-tt\" thyIconType=\"twotone\" [thyTwotoneColor]=\"selectedColor\"></thy-icon>\n </a>\n <nav-split-line *ngIf=\"tableStore.isSelectedTable\"></nav-split-line>\n <button\n thyButton=\"default\"\n *ngIf=\"tableStore.isSelectedTable\"\n class=\"mr-2\"\n thySize=\"md\"\n class=\"table-options\"\n (mousedown)=\"openTableOptionMenu($event)\"\n >\n <span>\u8868\u683C\u9009\u9879</span>\n <thy-icon thyIconName=\"caret-down\"></thy-icon>\n </button>\n <nav-split-line *ngIf=\"deleteIcon\"></nav-split-line>\n <a\n *ngIf=\"deleteIcon\"\n href=\"javascript:;\"\n thyIconNavLink\n [thyTooltip]=\"iconName\"\n class=\"danger\"\n [thyIconNavLinkIcon]=\"deleteIcon\"\n (mousedown)=\"onDelete($event)\"\n (mouseenter)=\"onEnterDelete($event)\"\n (mouseleave)=\"onLeaveDelete($event)\"\n ></a>\n</thy-icon-nav>\n" }]
148
+ }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.TheColorSelectService }, { type: i2.ThyPopover }, { type: i2.ThyPopoverRef }]; }, propDecorators: { tableStore: [{
149
+ type: Input
150
+ }], isActiveSelect: [{
151
+ type: Input
152
+ }] } });
153
+ export var DeleteIcon;
154
+ (function (DeleteIcon) {
155
+ DeleteIcon[DeleteIcon["table-delete-rows"] = 0] = "table-delete-rows";
156
+ DeleteIcon[DeleteIcon["table-delete-columns"] = 1] = "table-delete-columns";
157
+ DeleteIcon[DeleteIcon["trash"] = 2] = "trash";
158
+ })(DeleteIcon || (DeleteIcon = {}));
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdG9vbGJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS9jb21wb25lbnRzL3Rvb2xiYXIvdGFibGUtdG9vbGJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy90YWJsZS9jb21wb25lbnRzL3Rvb2xiYXIvdGFibGUtdG9vbGJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFJNUUsT0FBTyxFQUFhLGdCQUFnQixFQUFFLDBCQUEwQixFQUFFLHNCQUFzQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFckksT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRWpGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7Ozs7OztBQU1yRSxNQUFNLE9BQU8sd0JBQXdCO0lBZ0RqQyxZQUNZLE1BQWMsRUFDZCxrQkFBeUMsRUFDekMsVUFBc0IsRUFDdEIsVUFBbUQ7UUFIbkQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBdUI7UUFDekMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUF5QztRQXJDL0QsaUJBQVksR0FBaUI7WUFDekI7Z0JBQ0ksR0FBRyxFQUFFLGFBQWE7Z0JBQ2xCLElBQUksRUFBRSxPQUFPO2dCQUNiLFlBQVksRUFBRSxLQUFLO2dCQUNuQixJQUFJLEVBQUUsbUJBQW1CO2dC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cUVBQW1CLENBQUE7SUFDbkIsMkVBQXNCLENBQUE7SUFDdEIsNkNBQU8sQ0FBQTtBQUNYLENBQUMsRUFKVyxVQUFVLEtBQVYsVUFBVSxRQUlyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgTmdab25lLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoeVBvcG92ZXIsIFRoeVBvcG92ZXJSZWYgfSBmcm9tICduZ3gtdGV0aHlzL3BvcG92ZXInO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgVGFibGVTdG9yZSB9IGZyb20gJy4uLy4uL3RhYmxlLnN0b3JlJztcbmltcG9ydCB7IENvbG9yVHlwZSwgQmFja2dyb3VuZENvbG9ycywgVGFibGVIZWFkZXJCYWNrZ3JvdW5kQ29sb3IsIFNwZWNpYWxCYWNrZ3JvdW5kQ29sb3IgfSBmcm9tICcuLi8uLi8uLi8uLi9jb25zdGFudHMvY29sb3Itc2VsZWN0JztcbmltcG9ydCB7IFRoZUNvbG9yU2VsZWN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL2NvbG9yLXNlbGVjdC5zZXJ2aWNlJztcbmltcG9ydCB7IHNwbGl0Q2VsbCB9IGZyb20gJy4uLy4uL3V0aWxzL3NwbGl0LWNlbGwnO1xuaW1wb3J0IHsgc2V0Q2VsbE1lbnVJbnZpc2liaWxpdHkgfSBmcm9tICcuLi8uLi91dGlscy9zZXQtbWVudS1jZWxsLWludmlzaWJpbGl0eSc7XG5pbXBvcnQgeyBNZW51RW50aXR5IH0gZnJvbSAnLi4vLi4vdGFibGUudHlwZXMnO1xuaW1wb3J0IHsgVGFibGVFZGl0b3IgfSBmcm9tICcuLi8uLi90YWJsZS5lZGl0b3InO1xuaW1wb3J0IHsgVGhlVGFibGVPcHRpb25zQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZS1vcHRpb25zLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGhlLXRhYmxlLXRvb2xiYXInLFxuICAgIHRlbXBsYXRlVXJsOiAndGFibGUtdG9vbGJhci5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVGhlVGFibGVUb29sYmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIHNlbGVjdGVkQ29sb3I6IHN0cmluZztcblxuICAgIGRlbGV0ZUljb246IHN0cmluZztcblxuICAgIGljb25OYW1lOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSB0YWJsZVN0b3JlOiBUYWJsZVN0b3JlO1xuXG4gICAgQElucHV0KCkgaXNBY3RpdmVTZWxlY3Q6IGJvb2xlYW47XG5cbiAgICBnZXQgZWRpdG9yKCk6IEVkaXRvciB7XG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlU3RvcmUgJiYgdGhpcy50YWJsZVN0b3JlLmVkaXRvcjtcbiAgICB9XG5cbiAgICBjZWxsTWVudUxpc3Q6IE1lbnVFbnRpdHlbXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAga2V5OiAnbWVyZ2UtY2VsbHMnLFxuICAgICAgICAgICAgbmFtZTogJ+WQiOW5tuWNleWFg+agvCcsXG4gICAgICAgICAgICBpbnZpc2liaWxpdHk6IGZhbHNlLFxuICAgICAgICAgICAgaWNvbjogJ3RhYmxlLW1lcmdlLWNlbGxzJyxcbiAgICAgICAgICAgIGFjdGlvbkhhbmRsZTogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLm1lcmdlQ2VsbCh0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNsZWFyU2VsZWN0ZWRDZWxscygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBrZXk6ICdzcGxpdC1jZWxscycsXG4gICAgICAgICAgICBuYW1lOiAn5ouG5YiG5Y2V5YWD5qC8JyxcbiAgICAgICAgICAgIGludmlzaWJpbGl0eTogZmFsc2UsXG4gICAgICAgICAgICBpY29uOiAndGFibGUtdW5tZXJnZS1jZWxscycsXG4gICAgICAgICAgICBhY3Rpb25IYW5kbGU6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIHNwbGl0Q2VsbCh0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLmNsb3NlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNsZWFyU2VsZWN0ZWRDZWxscygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgXTtcblxuICAgIGdldCBpc1Nob3dTcGxpdExpbmUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNlbGxNZW51TGlzdC5maWx0ZXIoaXRlbSA9PiAhaXRlbS5pbnZpc2liaWxpdHkpLmxlbmd0aCA+IDE7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgY29sb3JTZWxlY3RTZXJ2aWNlOiBUaGVDb2xvclNlbGVjdFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdGh5UG9wb3ZlcjogVGh5UG9wb3ZlcixcbiAgICAgICAgcHJpdmF0ZSBwb3BvdmVyUmVmOiBUaHlQb3BvdmVyUmVmPFRoZVRhYmxlVG9vbGJhckNvbXBvbmVudD5cbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5kZWxldGVJY29uID0gRGVsZXRlSWNvblt0aGlzLmdldERlbGV0ZUljb24oKV07XG4gICAgICAgIHRoaXMuZ2V0SWNvbk5hbWUodGhpcy5kZWxldGVJY29uKTtcbiAgICAgICAgc2V0Q2VsbE1lbnVJbnZpc2liaWxpdHkodGhpcy5lZGl0b3IsIHRoaXMuY2VsbE1lbnVMaXN0LCB0aGlzLnRhYmxlU3RvcmUuc2VsZWN0ZWRDZWxscywgdGhpcy5pc0FjdGl2ZVNlbGVjdCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb2xvciA9IHRoaXMudGFibGVTdG9yZS5nZXRTZWxlY3RlZENlbGxCYWNrZ3JvdW5kQ29sb3IoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5jb2xvclNlbGVjdFNlcnZpY2UuY2xvc2VDb2xvclNlbGVjdCgpO1xuICAgIH1cblxuICAgIGdldEljb25OYW1lKGtleTogc3RyaW5nKSB7XG4gICAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgICAgICBjYXNlICd0cmFzaCc6XG4gICAgICAgICAgICAgICAgdGhpcy5pY29uTmFtZSA9ICfliKDpmaTooajmoLwnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndGFibGUtZGVsZXRlLWNvbHVtbnMnOlxuICAgICAgICAgICAgICAgIHRoaXMuaWNvbk5hbWUgPSAn5Yig6Zmk5pW05YiXJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3RhYmxlLWRlbGV0ZS1yb3dzJzpcbiAgICAgICAgICAgICAgICB0aGlzLmljb25OYW1lID0gJ+WIoOmZpOaVtOihjCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXREZWxldGVJY29uKCkge1xuICAgICAgICBpZiAodGhpcy50YWJsZVN0b3JlLmlzU2VsZWN0ZWRUYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuIERlbGV0ZUljb24udHJhc2g7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudGFibGVTdG9yZS5zZWxlY3RlZFJvd3NJbmRleC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICByZXR1cm4gRGVsZXRlSWNvblsndGFibGUtZGVsZXRlLXJvd3MnXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy50YWJsZVN0b3JlLnNlbGVjdGVkQ29sdW1uc0luZGV4Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHJldHVybiBEZWxldGVJY29uWyd0YWJsZS1kZWxldGUtY29sdW1ucyddO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIG9uRGVsZXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMudGFibGVTdG9yZS5yZW1vdmVDb2x1bW5PclJvd3MoKTtcbiAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNsZWFyRGFuZ2Vyb3VzQ2VsbHMoKTtcbiAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNsZWFyU2VsZWN0ZWRDZWxscygpO1xuICAgICAgICB0aGlzLnBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBvbkVudGVyRGVsZXRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMudGFibGVTdG9yZS5zZXREYW5nZXJvdXNDZWxscygpO1xuICAgIH1cblxuICAgIG9uTGVhdmVEZWxldGUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy50YWJsZVN0b3JlLmNsZWFyRGFuZ2Vyb3VzQ2VsbHMoKTtcbiAgICB9XG5cbiAgICBvcGVuU2VsZWN0Q29sb3IoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50KS5jbG9zZXN0KCcudGh5LWljb24tbmF2LWxpbmsnKTtcbiAgICAgICAgY29uc3QgaXNIZWFkZXIgPSBUYWJsZUVkaXRvci5pc0FjdGl2ZUhlYWRlcih0aGlzLmVkaXRvcik7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNvbG9yU2VsZWN0U2VydmljZS50b2dnbGVDb2xvclNlbGVjdChcbiAgICAgICAgICAgICAgICBlbGVtZW50IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRDb2xvcixcbiAgICAgICAgICAgICAgICBCYWNrZ3JvdW5kQ29sb3JzLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGVyUm93Q29sb3JOdW1iZXJzOiA3LFxuICAgICAgICAgICAgICAgICAgICByb3dPcHRpb25zOiB7IDE6ICcjYmJiJywgMjogJyNiYmInIH0sXG4gICAgICAgICAgICAgICAgICAgIHNwZWNpYWxDb2xvcjogaXNIZWFkZXIgPyBUYWJsZUhlYWRlckJhY2tncm91bmRDb2xvciA6IFNwZWNpYWxCYWNrZ3JvdW5kQ29sb3JcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIChuZXdDb2xvcjogQ29sb3JUeXBlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICgobmV3Q29sb3IgPT09IFRhYmxlSGVhZGVyQmFja2dyb3VuZENvbG9yICYmIGlzSGVhZGVyKSB8fCAobmV3Q29sb3IgPT09IFNwZWNpYWxCYWNrZ3JvdW5kQ29sb3IgJiYgIWlzSGVhZGVyKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZVN0b3JlLnNldFNlbGVjdGVkQ2VsbHNCYWNrZ3JvdW5kQ29sb3IobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU3RvcmUuc2V0U2VsZWN0ZWRDZWxsc0JhY2tncm91bmRDb2xvcihuZXdDb2xvcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZENvbG9yID0gbmV3Q29sb3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3BlblRhYmxlT3B0aW9uTWVudShldmVudDogRXZlbnQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMudGh5UG9wb3Zlci5vcGVuKFRoZVRhYmxlT3B0aW9uc0NvbXBvbmVudCwge1xuICAgICAgICAgICAgb3JpZ2luOiBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlOiB7XG4gICAgICAgICAgICAgICAgdGFibGVTdG9yZTogdGhpcy50YWJsZVN0b3JlLFxuICAgICAgICAgICAgICAgIGVkaXRvcjogdGhpcy5lZGl0b3JcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBtaW5XaWR0aDogMCxcbiAgICAgICAgICAgIGluc2lkZUNsb3NhYmxlOiBmYWxzZSxcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICAgIHBsYWNlbWVudDogJ2JvdHRvbUxlZnQnLFxuICAgICAgICAgICAgb3JpZ2luQWN0aXZlQ2xhc3M6ICd0YWJsZS1vcHRpb25zLWFjdGl2ZScsXG4gICAgICAgICAgICBwYW5lbENsYXNzOiAndGFibGUtb3B0aW9ucy1wYW5uZWwnXG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuZXhwb3J0IGVudW0gRGVsZXRlSWNvbiB7XG4gICAgJ3RhYmxlLWRlbGV0ZS1yb3dzJyxcbiAgICAndGFibGUtZGVsZXRlLWNvbHVtbnMnLFxuICAgICd0cmFzaCdcbn1cbiIsIjx0aHktaWNvbi1uYXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBjZWxsTWVudUxpc3RcIj5cbiAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIHRoeUljb25OYXZMaW5rICpuZ0lmPVwiIWl0ZW0uaW52aXNpYmlsaXR5XCIgW3RoeVRvb2x0aXBdPVwiaXRlbS5uYW1lXCIgKG1vdXNlZG93bik9XCJpdGVtLmFjdGlvbkhhbmRsZSgpXCI+XG4gICAgICAgICAgICA8dGh5LWljb24gW3RoeUljb25OYW1lXT1cIml0ZW0uaWNvblwiPjwvdGh5LWljb24+XG4gICAgICAgIDwvYT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmF2LXNwbGl0LWxpbmUgKm5nSWY9XCIhaXNBY3RpdmVTZWxlY3QgJiYgaXNTaG93U3BsaXRMaW5lXCI+PC9uYXYtc3BsaXQtbGluZT5cbiAgICA8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgdGh5SWNvbk5hdkxpbmsgdGh5VG9vbHRpcD1cIuWNleWFg+agvOiDjOaZr1wiIChtb3VzZWRvd24pPVwib3BlblNlbGVjdENvbG9yKCRldmVudClcIj5cbiAgICAgICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiYmFja2dyb3VuZC10dFwiIHRoeUljb25UeXBlPVwidHdvdG9uZVwiIFt0aHlUd290b25lQ29sb3JdPVwic2VsZWN0ZWRDb2xvclwiPjwvdGh5LWljb24+XG4gICAgPC9hPlxuICAgIDxuYXYtc3BsaXQtbGluZSAqbmdJZj1cInRhYmxlU3RvcmUuaXNTZWxlY3RlZFRhYmxlXCI+PC9uYXYtc3BsaXQtbGluZT5cbiAgICA8YnV0dG9uXG4gICAgICAgIHRoeUJ1dHRvbj1cImRlZmF1bHRcIlxuICAgICAgICAqbmdJZj1cInRhYmxlU3RvcmUuaXNTZWxlY3RlZFRhYmxlXCJcbiAgICAgICAgY2xhc3M9XCJtci0yXCJcbiAgICAgICAgdGh5U2l6ZT1cIm1kXCJcbiAgICAgICAgY2xhc3M9XCJ0YWJsZS1vcHRpb25zXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJvcGVuVGFibGVPcHRpb25NZW51KCRldmVudClcIlxuICAgID5cbiAgICAgICAgPHNwYW4+6KGo5qC86YCJ6aG5PC9zcGFuPlxuICAgICAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJjYXJldC1kb3duXCI+PC90aHktaWNvbj5cbiAgICA8L2J1dHRvbj5cbiAgICA8bmF2LXNwbGl0LWxpbmUgKm5nSWY9XCJkZWxldGVJY29uXCI+PC9uYXYtc3BsaXQtbGluZT5cbiAgICA8YVxuICAgICAgICAqbmdJZj1cImRlbGV0ZUljb25cIlxuICAgICAgICBocmVmPVwiamF2YXNjcmlwdDo7XCJcbiAgICAgICAgdGh5SWNvbk5hdkxpbmtcbiAgICAgICAgW3RoeVRvb2x0aXBdPVwiaWNvbk5hbWVcIlxuICAgICAgICBjbGFzcz1cImRhbmdlclwiXG4gICAgICAgIFt0aHlJY29uTmF2TGlua0ljb25dPVwiZGVsZXRlSWNvblwiXG4gICAgICAgIChtb3VzZWRvd24pPVwib25EZWxldGUoJGV2ZW50KVwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cIm9uRW50ZXJEZWxldGUoJGV2ZW50KVwiXG4gICAgICAgIChtb3VzZWxlYXZlKT1cIm9uTGVhdmVEZWxldGUoJGV2ZW50KVwiXG4gICAgPjwvYT5cbjwvdGh5LWljb24tbmF2PlxuIl19