@worktile/theia 3.0.8 → 3.1.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (397) 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/esm2020/components/color-select/color-select.component.mjs +109 -0
  5. package/{esm2015/components/column-resize/column-resize-notifier.js → esm2020/components/column-resize/column-resize-notifier.mjs} +4 -4
  6. package/{esm2015/components/column-resize/column-resize.directive.js → esm2020/components/column-resize/column-resize.directive.mjs} +4 -4
  7. package/esm2020/components/column-resize/column-resize.module.mjs +33 -0
  8. package/{esm2015/components/column-resize/event-dispatcher.js → esm2020/components/column-resize/event-dispatcher.mjs} +4 -4
  9. package/{esm2015/components/column-resize/overlay-handle.component.js → esm2020/components/column-resize/overlay-handle.component.mjs} +4 -4
  10. package/{esm2015/components/column-resize/resize-ref.js → esm2020/components/column-resize/resize-ref.mjs} +0 -0
  11. package/{esm2015/components/column-resize/resizing.store.js → esm2020/components/column-resize/resizing.store.mjs} +4 -4
  12. package/{esm2015/components/column-resize/selectors.js → esm2020/components/column-resize/selectors.mjs} +0 -0
  13. package/esm2020/components/contextmenu/contextmenu.component.mjs +61 -0
  14. package/esm2020/components/conversion-hint/conversion-hint.component.mjs +54 -0
  15. package/esm2020/components/element/element.component.mjs +23 -0
  16. package/esm2020/components/inline-toolbar/inline-toolbar.component.mjs +138 -0
  17. package/{esm2015/components/nav-split-line/nav-split-line.component.js → esm2020/components/nav-split-line/nav-split-line.component.mjs} +4 -4
  18. package/esm2020/components/table-select/table-select.component.mjs +50 -0
  19. package/esm2020/components/template/template.component.mjs +62 -0
  20. package/{esm2015/components/text/text.component.js → esm2020/components/text/text.component.mjs} +4 -4
  21. package/esm2020/components/toolbar/toolbar.component.mjs +241 -0
  22. package/esm2020/components/toolbar-dropdown/toolbar-dropdown.component.mjs +129 -0
  23. package/esm2020/components/toolbar-group/toolbar-group.component.mjs +110 -0
  24. package/esm2020/components/toolbar-item/toolbar-item.component.mjs +101 -0
  25. package/{esm2015/constants/auto-format-rules.js → esm2020/constants/auto-format-rules.mjs} +0 -0
  26. package/{esm2015/constants/code.js → esm2020/constants/code.mjs} +0 -0
  27. package/{esm2015/constants/color-select.js → esm2020/constants/color-select.mjs} +0 -0
  28. package/{esm2015/constants/default.js → esm2020/constants/default.mjs} +0 -0
  29. package/{esm2015/constants/error.js → esm2020/constants/error.mjs} +0 -0
  30. package/{esm2015/constants/index.js → esm2020/constants/index.mjs} +0 -0
  31. package/{esm2015/constants/node-types.js → esm2020/constants/node-types.mjs} +0 -0
  32. package/{esm2015/constants/selector.js → esm2020/constants/selector.mjs} +0 -0
  33. package/{esm2015/constants/toolbar.js → esm2020/constants/toolbar.mjs} +0 -0
  34. package/{esm2015/core/create-plugin.js → esm2020/core/create-plugin.mjs} +0 -0
  35. package/esm2020/core/create-toolbar.mjs +56 -0
  36. package/{esm2015/core/index.js → esm2020/core/index.mjs} +0 -0
  37. package/esm2020/core/toolbar-item/base-toolbar-item.mjs +90 -0
  38. package/{esm2015/core/utils/combine-plugins.js → esm2020/core/utils/combine-plugins.mjs} +0 -0
  39. package/{esm2015/core/utils/flatten-deep-plugins.js → esm2020/core/utils/flatten-deep-plugins.mjs} +0 -0
  40. package/esm2020/core/utils/get-plugin-options.mjs +3 -0
  41. package/{esm2015/core/utils/get-plugin.js → esm2020/core/utils/get-plugin.mjs} +0 -0
  42. package/esm2020/core/utils/get-plugins.mjs +4 -0
  43. package/{esm2015/core/utils/index.js → esm2020/core/utils/index.mjs} +0 -0
  44. package/esm2020/core/utils/merge-array.mjs +18 -0
  45. package/{esm2015/core/utils/merge-deep-plugins.js → esm2020/core/utils/merge-deep-plugins.mjs} +0 -0
  46. package/{esm2015/core/utils/merge-options.js → esm2020/core/utils/merge-options.mjs} +0 -0
  47. package/{esm2015/core/utils/nested-structure-by-key.js → esm2020/core/utils/nested-structure-by-key.mjs} +0 -0
  48. package/{esm2015/core/utils/plugins-by-key.js → esm2020/core/utils/plugins-by-key.mjs} +0 -0
  49. package/{esm2015/core/with-theia.js → esm2020/core/with-theia.mjs} +0 -0
  50. package/{esm2015/custom-types.js → esm2020/custom-types.mjs} +0 -0
  51. package/esm2020/editor.component.mjs +431 -0
  52. package/{esm2015/editor.module.js → esm2020/editor.module.mjs} +5 -6
  53. package/{esm2015/interfaces/auto-format.js → esm2020/interfaces/auto-format.mjs} +0 -0
  54. package/esm2020/interfaces/editor.mjs +25 -0
  55. package/{esm2015/interfaces/element.js → esm2020/interfaces/element.mjs} +0 -0
  56. package/{esm2015/interfaces/image.js → esm2020/interfaces/image.mjs} +0 -0
  57. package/{esm2015/interfaces/index.js → esm2020/interfaces/index.mjs} +0 -0
  58. package/{esm2015/interfaces/plugins/index.js → esm2020/interfaces/plugins/index.mjs} +0 -0
  59. package/{esm2015/interfaces/plugins/no-infer.js → esm2020/interfaces/plugins/no-infer.mjs} +0 -0
  60. package/{esm2015/interfaces/plugins/plugin-key.js → esm2020/interfaces/plugins/plugin-key.mjs} +0 -0
  61. package/{esm2015/interfaces/plugins/plugins.js → esm2020/interfaces/plugins/plugins.mjs} +0 -0
  62. package/{esm2015/interfaces/plugins/with-override.js → esm2020/interfaces/plugins/with-override.mjs} +0 -0
  63. package/{esm2015/interfaces/reset-block-type-plugin-options.js → esm2020/interfaces/reset-block-type-plugin-options.mjs} +0 -0
  64. package/{esm2015/interfaces/toolbar.js → esm2020/interfaces/toolbar.mjs} +0 -0
  65. package/{esm2015/interfaces/upload.js → esm2020/interfaces/upload.mjs} +1 -1
  66. package/{esm2015/interfaces/utility/index.js → esm2020/interfaces/utility/index.mjs} +0 -0
  67. package/{esm2015/interfaces/utility/nested-structure-by-key.js → esm2020/interfaces/utility/nested-structure-by-key.mjs} +0 -0
  68. package/{esm2015/interfaces/utility/override-by-key.js → esm2020/interfaces/utility/override-by-key.mjs} +0 -0
  69. package/{esm2015/interfaces/utility/types.js → esm2020/interfaces/utility/types.mjs} +0 -0
  70. package/{esm2015/interfaces/valid-children-types.js → esm2020/interfaces/valid-children-types.mjs} +0 -0
  71. package/{esm2015/interfaces/view-base.js → esm2020/interfaces/view-base.mjs} +4 -4
  72. package/{esm2015/pipes.js → esm2020/pipes.mjs} +7 -7
  73. package/esm2020/plugins/align/align.editor.mjs +47 -0
  74. package/{esm2015/plugins/align/align.plugin.js → esm2020/plugins/align/align.plugin.mjs} +0 -0
  75. package/esm2020/plugins/autoformat/autoformat.plugin.mjs +109 -0
  76. package/{esm2015/plugins/autoformat/transforms/auto-format-block.js → esm2020/plugins/autoformat/transforms/auto-format-block.mjs} +0 -0
  77. package/{esm2015/plugins/autoformat/transforms/auto-format-inline.js → esm2020/plugins/autoformat/transforms/auto-format-inline.mjs} +0 -0
  78. package/{esm2015/plugins/blockquote/blockquote.component.js → esm2020/plugins/blockquote/blockquote.component.mjs} +4 -4
  79. package/esm2020/plugins/blockquote/blockquote.editor.mjs +20 -0
  80. package/{esm2015/plugins/blockquote/blockquote.plugin.js → esm2020/plugins/blockquote/blockquote.plugin.mjs} +0 -0
  81. package/esm2020/plugins/code/code.component.mjs +241 -0
  82. package/{esm2015/plugins/code/code.editor.js → esm2020/plugins/code/code.editor.mjs} +0 -0
  83. package/{esm2015/plugins/code/code.plugin.js → esm2020/plugins/code/code.plugin.mjs} +0 -0
  84. package/esm2020/plugins/color/color.editor.mjs +44 -0
  85. package/{esm2015/plugins/color/color.plugin.js → esm2020/plugins/color/color.plugin.mjs} +0 -0
  86. package/esm2020/plugins/color/toolbar-item.component.mjs +123 -0
  87. package/esm2020/plugins/common/auto-insert-data..mjs +77 -0
  88. package/{esm2015/plugins/common/block-card.plugin.js → esm2020/plugins/common/block-card.plugin.mjs} +2 -2
  89. package/esm2020/plugins/common/get-fragment.plugin.mjs +24 -0
  90. package/{esm2015/plugins/common/history.plugin.js → esm2020/plugins/common/history.plugin.mjs} +0 -0
  91. package/{esm2015/plugins/common/move-selection.plugin.js → esm2020/plugins/common/move-selection.plugin.mjs} +0 -0
  92. package/{esm2015/plugins/common/remove-empty.plugin.js → esm2020/plugins/common/remove-empty.plugin.mjs} +0 -0
  93. package/{esm2015/plugins/common/remove-void.plugin.js → esm2020/plugins/common/remove-void.plugin.mjs} +0 -0
  94. package/{esm2015/plugins/common/reset-type.plugin.js → esm2020/plugins/common/reset-type.plugin.mjs} +0 -0
  95. package/{esm2015/plugins/common/transforms.plugin.js → esm2020/plugins/common/transforms.plugin.mjs} +0 -0
  96. package/{esm2015/plugins/deserializers/deserialize-html.plugin.js → esm2020/plugins/deserializers/deserialize-html.plugin.mjs} +0 -0
  97. package/{esm2015/plugins/deserializers/deserialize-md.plugin.js → esm2020/plugins/deserializers/deserialize-md.plugin.mjs} +0 -0
  98. package/esm2020/plugins/font-size/font-size.editor.mjs +98 -0
  99. package/{esm2015/plugins/heading/heading.editor.js → esm2020/plugins/heading/heading.editor.mjs} +0 -0
  100. package/{esm2015/plugins/heading/heading.plugin.js → esm2020/plugins/heading/heading.plugin.mjs} +0 -0
  101. package/{esm2015/plugins/hr/hr.component.js → esm2020/plugins/hr/hr.component.mjs} +4 -4
  102. package/{esm2015/plugins/hr/hr.editor.js → esm2020/plugins/hr/hr.editor.mjs} +0 -0
  103. package/{esm2015/plugins/hr/hr.plugin.js → esm2020/plugins/hr/hr.plugin.mjs} +0 -0
  104. package/esm2020/plugins/image/image.component.mjs +365 -0
  105. package/{esm2015/plugins/image/image.editor.js → esm2020/plugins/image/image.editor.mjs} +0 -0
  106. package/esm2020/plugins/image/image.plugin.mjs +57 -0
  107. package/esm2020/plugins/indent/indent.editor.mjs +71 -0
  108. package/esm2020/plugins/indent/indent.plugin.mjs +58 -0
  109. package/{esm2015/plugins/indent/on-keydown-indent.js → esm2020/plugins/indent/on-keydown-indent.mjs} +0 -0
  110. package/{esm2015/plugins/index.js → esm2020/plugins/index.mjs} +0 -0
  111. package/{esm2015/plugins/inline-code/inline-code.component.js → esm2020/plugins/inline-code/inline-code.component.mjs} +4 -4
  112. package/{esm2015/plugins/inline-code/inline-code.editor.js → esm2020/plugins/inline-code/inline-code.editor.mjs} +2 -3
  113. package/{esm2015/plugins/inline-code/inline-code.plugin.js → esm2020/plugins/inline-code/inline-code.plugin.mjs} +0 -0
  114. package/esm2020/plugins/link/edit/link-edit.component.mjs +105 -0
  115. package/esm2020/plugins/link/hover/link-hover.component.mjs +36 -0
  116. package/{esm2015/plugins/link/link.component.js → esm2020/plugins/link/link.component.mjs} +7 -7
  117. package/{esm2015/plugins/link/link.editor.js → esm2020/plugins/link/link.editor.mjs} +0 -0
  118. package/{esm2015/plugins/link/link.plugin.js → esm2020/plugins/link/link.plugin.mjs} +0 -0
  119. package/{esm2015/plugins/link/link.types.js → esm2020/plugins/link/link.types.mjs} +0 -0
  120. package/esm2020/plugins/list/components/bulleted-list.component.mjs +33 -0
  121. package/esm2020/plugins/list/components/list-item.component.mjs +93 -0
  122. package/esm2020/plugins/list/components/numbered-list.component.mjs +39 -0
  123. package/{esm2015/plugins/list/list.editor.js → esm2020/plugins/list/list.editor.mjs} +0 -0
  124. package/esm2020/plugins/list/list.plugin.mjs +286 -0
  125. package/{esm2015/plugins/list/normalizers/get-list-normalizer.js → esm2020/plugins/list/normalizers/get-list-normalizer.mjs} +0 -0
  126. package/esm2020/plugins/list/normalizers/normalize-list-item.mjs +18 -0
  127. package/{esm2015/plugins/list/normalizers/normalize-no.js → esm2020/plugins/list/normalizers/normalize-no.mjs} +0 -0
  128. package/{esm2015/plugins/list/on-key-down-list.js → esm2020/plugins/list/on-key-down-list.mjs} +0 -0
  129. package/{esm2015/plugins/list/queries/get-list-item-entry.js → esm2020/plugins/list/queries/get-list-item-entry.mjs} +0 -0
  130. package/{esm2015/plugins/list/queries/get-list-item-sublist.js → esm2020/plugins/list/queries/get-list-item-sublist.mjs} +0 -0
  131. package/{esm2015/plugins/list/queries/get-list-types.js → esm2020/plugins/list/queries/get-list-types.mjs} +0 -0
  132. package/{esm2015/plugins/list/queries/get-start-list-item.js → esm2020/plugins/list/queries/get-start-list-item.mjs} +0 -0
  133. package/{esm2015/plugins/list/queries/has-list-in-list-item.js → esm2020/plugins/list/queries/has-list-in-list-item.mjs} +0 -0
  134. package/{esm2015/plugins/list/queries/is-in-list.js → esm2020/plugins/list/queries/is-in-list.mjs} +0 -0
  135. package/{esm2015/plugins/list/queries/is-list-nested.js → esm2020/plugins/list/queries/is-list-nested.mjs} +0 -0
  136. package/{esm2015/plugins/list/queries/is-list.js → esm2020/plugins/list/queries/is-list.mjs} +0 -0
  137. package/{esm2015/plugins/list/queries/is-node-type-list.js → esm2020/plugins/list/queries/is-node-type-list.mjs} +0 -0
  138. 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
  139. 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
  140. package/{esm2015/plugins/list/queries/is-single-list-item.js → esm2020/plugins/list/queries/is-single-list-item.mjs} +0 -0
  141. package/{esm2015/plugins/list/transforms/insert-list-data.js → esm2020/plugins/list/transforms/insert-list-data.mjs} +0 -0
  142. package/{esm2015/plugins/list/transforms/insert-list-item.js → esm2020/plugins/list/transforms/insert-list-item.mjs} +0 -0
  143. package/{esm2015/plugins/list/transforms/move-list-item-down.js → esm2020/plugins/list/transforms/move-list-item-down.mjs} +0 -0
  144. 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
  145. 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
  146. package/{esm2015/plugins/list/transforms/move-list-item-up.js → esm2020/plugins/list/transforms/move-list-item-up.mjs} +0 -0
  147. package/{esm2015/plugins/list/transforms/unwrap-list.js → esm2020/plugins/list/transforms/unwrap-list.mjs} +0 -0
  148. package/{esm2015/plugins/list/types.js → esm2020/plugins/list/types.mjs} +0 -0
  149. package/esm2020/plugins/mark/mark.editor.mjs +28 -0
  150. package/esm2020/plugins/mark/mark.plugin.mjs +105 -0
  151. package/esm2020/plugins/node-id/node-id.plugin.mjs +78 -0
  152. package/esm2020/plugins/normalizers/insert-paragraph-nodes.mjs +28 -0
  153. package/{esm2015/plugins/normalizers/remove-empty-nodes.js → esm2020/plugins/normalizers/remove-empty-nodes.mjs} +0 -0
  154. package/esm2020/plugins/normalizers/trailing-node.plugin.mjs +33 -0
  155. package/{esm2015/plugins/paint-format/paint-format.editor.js → esm2020/plugins/paint-format/paint-format.editor.mjs} +0 -0
  156. package/{esm2015/plugins/public-api.js → esm2020/plugins/public-api.mjs} +0 -0
  157. package/esm2020/plugins/quick-insert/components/quick-insert.component.mjs +96 -0
  158. package/esm2020/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.mjs +80 -0
  159. package/{esm2015/plugins/quick-insert/quick-insert.editor.js → esm2020/plugins/quick-insert/quick-insert.editor.mjs} +0 -0
  160. package/esm2020/plugins/quick-insert/quick-insert.plugin.mjs +74 -0
  161. package/esm2020/plugins/soft-break/soft-break.plugin.mjs +36 -0
  162. package/{esm2015/plugins/soft-break/soft-break.types.js → esm2020/plugins/soft-break/soft-break.types.mjs} +0 -0
  163. package/esm2020/plugins/table/components/insert-mark/insert-mark.component.mjs +100 -0
  164. package/{esm2015/plugins/table/components/row/row.component.js → esm2020/plugins/table/components/row/row.component.mjs} +4 -4
  165. package/esm2020/plugins/table/components/table.component.mjs +461 -0
  166. package/esm2020/plugins/table/components/td/td.component.mjs +696 -0
  167. package/{esm2015/plugins/table/components/toolbar/table-options.component.js → esm2020/plugins/table/components/toolbar/table-options.component.mjs} +8 -5
  168. package/esm2020/plugins/table/components/toolbar/table-toolbar.component.mjs +159 -0
  169. package/{esm2015/plugins/table/table.editor.js → esm2020/plugins/table/table.editor.mjs} +0 -0
  170. package/esm2020/plugins/table/table.plugin.mjs +427 -0
  171. package/{esm2015/plugins/table/table.service.js → esm2020/plugins/table/table.service.mjs} +4 -4
  172. package/esm2020/plugins/table/table.store.mjs +484 -0
  173. package/{esm2015/plugins/table/table.types.js → esm2020/plugins/table/table.types.mjs} +0 -0
  174. package/esm2020/plugins/table/toolbar-item.component.mjs +85 -0
  175. package/esm2020/plugins/table/transforms/clear-cell.mjs +14 -0
  176. package/{esm2015/plugins/table/transforms/clear-table-node.js → esm2020/plugins/table/transforms/clear-table-node.mjs} +0 -0
  177. package/{esm2015/plugins/table/transforms/insert-column.js → esm2020/plugins/table/transforms/insert-column.mjs} +0 -0
  178. package/{esm2015/plugins/table/transforms/insert-row.js → esm2020/plugins/table/transforms/insert-row.mjs} +0 -0
  179. package/esm2020/plugins/table/transforms/insert-table.mjs +15 -0
  180. package/{esm2015/plugins/table/transforms/remove-column.js → esm2020/plugins/table/transforms/remove-column.mjs} +0 -0
  181. package/{esm2015/plugins/table/transforms/remove-row.js → esm2020/plugins/table/transforms/remove-row.mjs} +0 -0
  182. package/{esm2015/plugins/table/transforms/remove-table.js → esm2020/plugins/table/transforms/remove-table.mjs} +0 -0
  183. package/{esm2015/plugins/table/utils/add-columns.js → esm2020/plugins/table/utils/add-columns.mjs} +0 -0
  184. package/{esm2015/plugins/table/utils/calc-anchor-position.js → esm2020/plugins/table/utils/calc-anchor-position.mjs} +0 -0
  185. package/{esm2015/plugins/table/utils/calc-span.js → esm2020/plugins/table/utils/calc-span.mjs} +0 -0
  186. package/{esm2015/plugins/table/utils/create-cell.js → esm2020/plugins/table/utils/create-cell.mjs} +0 -0
  187. package/{esm2015/plugins/table/utils/create-row.js → esm2020/plugins/table/utils/create-row.mjs} +0 -0
  188. package/{esm2015/plugins/table/utils/create-table.js → esm2020/plugins/table/utils/create-table.mjs} +0 -0
  189. package/{esm2015/plugins/table/utils/get-base-height.js → esm2020/plugins/table/utils/get-base-height.mjs} +0 -0
  190. package/{esm2015/plugins/table/utils/get-select-cell-node.js → esm2020/plugins/table/utils/get-select-cell-node.mjs} +5 -2
  191. package/{esm2015/plugins/table/utils/index.js → esm2020/plugins/table/utils/index.mjs} +0 -0
  192. package/{esm2015/plugins/table/utils/is-range-in-table.js → esm2020/plugins/table/utils/is-range-in-table.mjs} +0 -0
  193. package/{esm2015/plugins/table/utils/is-selection-in-table.js → esm2020/plugins/table/utils/is-selection-in-table.mjs} +0 -0
  194. package/{esm2015/plugins/table/utils/is-virtual-key.js → esm2020/plugins/table/utils/is-virtual-key.mjs} +0 -0
  195. package/{esm2015/plugins/table/utils/merge-cell.js → esm2020/plugins/table/utils/merge-cell.mjs} +0 -0
  196. package/{esm2015/plugins/table/utils/next-path.js → esm2020/plugins/table/utils/next-path.mjs} +0 -0
  197. package/{esm2015/plugins/table/utils/normalize-table.js → esm2020/plugins/table/utils/normalize-table.mjs} +0 -0
  198. package/{esm2015/plugins/table/utils/remove-columns.js → esm2020/plugins/table/utils/remove-columns.mjs} +0 -0
  199. package/{esm2015/plugins/table/utils/set-menu-cell-invisibility.js → esm2020/plugins/table/utils/set-menu-cell-invisibility.mjs} +0 -0
  200. package/{esm2015/plugins/table/utils/split-cell.js → esm2020/plugins/table/utils/split-cell.mjs} +0 -0
  201. package/{esm2015/plugins/table/utils/table-position.js → esm2020/plugins/table/utils/table-position.mjs} +0 -0
  202. package/esm2020/plugins/todo-item/todo-item.component.mjs +64 -0
  203. package/{esm2015/plugins/todo-item/todo-item.editor.js → esm2020/plugins/todo-item/todo-item.editor.mjs} +0 -0
  204. package/{esm2015/plugins/todo-item/todo-item.plugin.js → esm2020/plugins/todo-item/todo-item.plugin.mjs} +0 -0
  205. package/esm2020/plugins/vertical-align/toolbar-item.component.mjs +83 -0
  206. package/{esm2015/plugins/vertical-align/vertical-align.editor.js → esm2020/plugins/vertical-align/vertical-align.editor.mjs} +0 -0
  207. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  208. package/{esm2015/queries/anchor-block-entry.js → esm2020/queries/anchor-block-entry.mjs} +0 -0
  209. package/{esm2015/queries/anchor-block.js → esm2020/queries/anchor-block.mjs} +0 -0
  210. package/{esm2015/queries/anchor-inline-entry.js → esm2020/queries/anchor-inline-entry.mjs} +0 -0
  211. package/{esm2015/queries/find-descendant.js → esm2020/queries/find-descendant.mjs} +0 -0
  212. package/{esm2015/queries/find-node.js → esm2020/queries/find-node.mjs} +0 -0
  213. package/{esm2015/queries/find-path.js → esm2020/queries/find-path.mjs} +0 -0
  214. package/esm2020/queries/get-above-by-type.mjs +14 -0
  215. package/{esm2015/queries/get-above.js → esm2020/queries/get-above.mjs} +0 -0
  216. package/{esm2015/queries/get-anchor-block-entry.js → esm2020/queries/get-anchor-block-entry.mjs} +0 -0
  217. package/esm2020/queries/get-block-above.mjs +10 -0
  218. package/esm2020/queries/get-block-card-above.mjs +10 -0
  219. package/{esm2015/queries/get-block-card-cursor.js → esm2020/queries/get-block-card-cursor.mjs} +0 -0
  220. package/{esm2015/queries/get-container-blocks.js → esm2020/queries/get-container-blocks.mjs} +0 -0
  221. package/{esm2015/queries/get-directly-parent.js → esm2020/queries/get-directly-parent.mjs} +0 -0
  222. package/{esm2015/queries/get-insert-elements-path.js → esm2020/queries/get-insert-elements-path.mjs} +0 -0
  223. package/{esm2015/queries/get-last-child-path.js → esm2020/queries/get-last-child-path.mjs} +0 -0
  224. package/{esm2015/queries/get-last-node.js → esm2020/queries/get-last-node.mjs} +0 -0
  225. package/{esm2015/queries/get-next-sibling-nodes.js → esm2020/queries/get-next-sibling-nodes.mjs} +0 -0
  226. package/{esm2015/queries/get-node.js → esm2020/queries/get-node.mjs} +0 -0
  227. package/esm2020/queries/get-nodes-by-type.mjs +15 -0
  228. package/{esm2015/queries/get-nodes.js → esm2020/queries/get-nodes.mjs} +0 -0
  229. package/{esm2015/queries/get-parent.js → esm2020/queries/get-parent.mjs} +0 -0
  230. package/esm2020/queries/get-plain-text.mjs +16 -0
  231. package/{esm2015/queries/get-plugin-by-toolbar.js → esm2020/queries/get-plugin-by-toolbar.mjs} +0 -0
  232. package/{esm2015/queries/get-point-before.js → esm2020/queries/get-point-before.mjs} +0 -0
  233. package/{esm2015/queries/get-point-from-location.js → esm2020/queries/get-point-from-location.mjs} +0 -0
  234. package/{esm2015/queries/get-previous-path.js → esm2020/queries/get-previous-path.mjs} +0 -0
  235. package/{esm2015/queries/get-rang-from-block-start.js → esm2020/queries/get-rang-from-block-start.mjs} +0 -0
  236. package/{esm2015/queries/get-range-before.js → esm2020/queries/get-range-before.mjs} +0 -0
  237. package/esm2020/queries/get-selection-marks.mjs +18 -0
  238. package/{esm2015/queries/get-selection-nodes-by-type.js → esm2020/queries/get-selection-nodes-by-type.mjs} +0 -0
  239. package/{esm2015/queries/get-text.js → esm2020/queries/get-text.mjs} +0 -0
  240. package/esm2020/queries/get-toolbar-disabled.mjs +13 -0
  241. package/esm2020/queries/index.mjs +59 -0
  242. package/{esm2015/queries/is-across-blocks.js → esm2020/queries/is-across-blocks.mjs} +0 -0
  243. package/{esm2015/queries/is-ancestor-empty.js → esm2020/queries/is-ancestor-empty.mjs} +0 -0
  244. package/{esm2015/queries/is-ancestor.js → esm2020/queries/is-ancestor.mjs} +0 -0
  245. package/{esm2015/queries/is-block-above-empty.js → esm2020/queries/is-block-above-empty.mjs} +0 -0
  246. package/{esm2015/queries/is-block-active.js → esm2020/queries/is-block-active.mjs} +0 -0
  247. package/{esm2015/queries/is-block-card-cursor.js → esm2020/queries/is-block-card-cursor.mjs} +0 -0
  248. package/{esm2015/queries/is-block-text-empty-after-selection.js → esm2020/queries/is-block-text-empty-after-selection.mjs} +0 -0
  249. package/{esm2015/queries/is-collapsed.js → esm2020/queries/is-collapsed.mjs} +0 -0
  250. package/{esm2015/queries/is-contain-nested-type.js → esm2020/queries/is-contain-nested-type.mjs} +0 -0
  251. package/{esm2015/queries/is-container-type.js → esm2020/queries/is-container-type.mjs} +0 -0
  252. package/{esm2015/queries/is-descendant.js → esm2020/queries/is-descendant.mjs} +0 -0
  253. package/esm2020/queries/is-empty-content.mjs +15 -0
  254. package/{esm2015/queries/is-empty-paragraph-by-path.js → esm2020/queries/is-empty-paragraph-by-path.mjs} +0 -0
  255. package/{esm2015/queries/is-empty-paragraph.js → esm2020/queries/is-empty-paragraph.mjs} +0 -0
  256. package/{esm2015/queries/is-first-child.js → esm2020/queries/is-first-child.mjs} +0 -0
  257. package/{esm2015/queries/is-include-types.js → esm2020/queries/is-include-types.mjs} +0 -0
  258. package/{esm2015/queries/is-node-type-in.js → esm2020/queries/is-node-type-in.mjs} +0 -0
  259. package/{esm2015/queries/is-node-type.js → esm2020/queries/is-node-type.mjs} +0 -0
  260. package/{esm2015/queries/is-paragraph.js → esm2020/queries/is-paragraph.mjs} +0 -0
  261. package/{esm2015/queries/is-point-at-root.js → esm2020/queries/is-point-at-root.mjs} +0 -0
  262. package/esm2020/queries/is-range-across-blocks.mjs +22 -0
  263. package/{esm2015/queries/is-range-at-root.js → esm2020/queries/is-range-at-root.mjs} +0 -0
  264. package/{esm2015/queries/is-start.js → esm2020/queries/is-start.mjs} +0 -0
  265. package/{esm2015/queries/some-node.js → esm2020/queries/some-node.mjs} +0 -0
  266. package/{esm2015/services/color-select.service.js → esm2020/services/color-select.service.mjs} +4 -4
  267. package/esm2020/services/context.service.mjs +59 -0
  268. package/{esm2015/services/table-contextmenu.service.js → esm2020/services/table-contextmenu.service.mjs} +4 -4
  269. package/esm2020/services/toolbar.service.mjs +48 -0
  270. package/{esm2015/shortcuts/index.js → esm2020/shortcuts/index.mjs} +0 -0
  271. package/{esm2015/shortcuts/mark.js → esm2020/shortcuts/mark.mjs} +0 -0
  272. package/{esm2015/transforms/apply-deep-to-nodes.js → esm2020/transforms/apply-deep-to-nodes.mjs} +0 -0
  273. package/{esm2015/transforms/clear-marks.js → esm2020/transforms/clear-marks.mjs} +0 -0
  274. package/{esm2015/transforms/close-conversion-hint.js → esm2020/transforms/close-conversion-hint.mjs} +0 -0
  275. package/{esm2015/transforms/delete-element.js → esm2020/transforms/delete-element.mjs} +0 -0
  276. package/{esm2015/transforms/handle-continual-delete-backward.js → esm2020/transforms/handle-continual-delete-backward.mjs} +0 -0
  277. package/{esm2015/transforms/handle-continual-insert-break.js → esm2020/transforms/handle-continual-insert-break.mjs} +0 -0
  278. package/{esm2015/transforms/index.js → esm2020/transforms/index.mjs} +0 -0
  279. package/esm2020/transforms/insert-elements.mjs +34 -0
  280. package/{esm2015/transforms/insert-paragraph.js → esm2020/transforms/insert-paragraph.mjs} +0 -0
  281. package/esm2020/transforms/merge-deep-to-nodes.mjs +9 -0
  282. package/{esm2015/transforms/move-children.js → esm2020/transforms/move-children.mjs} +0 -0
  283. package/{esm2015/transforms/on-keydown-reset-block-type.js → esm2020/transforms/on-keydown-reset-block-type.mjs} +0 -0
  284. package/{esm2015/transforms/set-end-selection.js → esm2020/transforms/set-end-selection.mjs} +0 -0
  285. package/{esm2015/transforms/set-marks.js → esm2020/transforms/set-marks.mjs} +0 -0
  286. package/{esm2015/transforms/set-node.js → esm2020/transforms/set-node.mjs} +0 -0
  287. package/{esm2015/transforms/split-node.js → esm2020/transforms/split-node.mjs} +0 -0
  288. package/{esm2015/transforms/un-hang-range.js → esm2020/transforms/un-hang-range.mjs} +0 -0
  289. package/{esm2015/transforms/un-wrap.js → esm2020/transforms/un-wrap.mjs} +0 -0
  290. package/esm2020/transforms/unwrap-nodes-by-type.mjs +14 -0
  291. package/{esm2015/utils/auto-focus.js → esm2020/utils/auto-focus.mjs} +0 -0
  292. package/{esm2015/utils/auto-scroll-view.js → esm2020/utils/auto-scroll-view.mjs} +0 -0
  293. package/{esm2015/utils/cast-array.js → esm2020/utils/cast-array.mjs} +0 -0
  294. package/{esm2015/utils/common.js → esm2020/utils/common.mjs} +0 -0
  295. package/{esm2015/utils/create-empty-paragraph.js → esm2020/utils/create-empty-paragraph.mjs} +0 -0
  296. package/{esm2015/utils/data-transform.js → esm2020/utils/data-transform.mjs} +0 -0
  297. package/{esm2015/utils/dom.js → esm2020/utils/dom.mjs} +0 -0
  298. package/{esm2015/utils/editor-uuid.js → esm2020/utils/editor-uuid.mjs} +0 -0
  299. package/{esm2015/utils/fragment.js → esm2020/utils/fragment.mjs} +0 -0
  300. package/{esm2015/utils/get-editable-element-height.js → esm2020/utils/get-editable-element-height.mjs} +0 -0
  301. package/{esm2015/utils/get-toolbar-class.js → esm2020/utils/get-toolbar-class.mjs} +0 -0
  302. package/{esm2015/utils/id-creator.js → esm2020/utils/id-creator.mjs} +0 -0
  303. package/{esm2015/utils/index.js → esm2020/utils/index.mjs} +0 -0
  304. package/{esm2015/utils/is-clean-empty-paragraph.js → esm2020/utils/is-clean-empty-paragraph.mjs} +0 -0
  305. package/esm2020/utils/is-inline.mjs +9 -0
  306. package/{esm2015/utils/lodash.js → esm2020/utils/lodash.mjs} +0 -0
  307. package/esm2020/utils/match.mjs +32 -0
  308. package/{esm2015/utils/merge-element-options.js → esm2020/utils/merge-element-options.mjs} +0 -0
  309. package/{esm2015/utils/weak-maps.js → esm2020/utils/weak-maps.mjs} +0 -0
  310. package/{esm2015/worktile-theia.js → esm2020/worktile-theia.mjs} +0 -0
  311. package/fesm2015/{worktile-theia.js → worktile-theia.mjs} +257 -316
  312. package/fesm2015/worktile-theia.mjs.map +1 -0
  313. package/fesm2020/worktile-theia.mjs +13739 -0
  314. package/fesm2020/worktile-theia.mjs.map +1 -0
  315. package/interfaces/editor.d.ts +3 -3
  316. package/interfaces/upload.d.ts +1 -1
  317. package/package.json +20 -6
  318. package/queries/index.d.ts +2 -1
  319. package/queries/is-empty-content.d.ts +2 -0
  320. package/bundles/worktile-theia.umd.js +0 -14905
  321. package/bundles/worktile-theia.umd.js.map +0 -1
  322. package/esm2015/components/color-select/color-select.component.js +0 -113
  323. package/esm2015/components/column-resize/column-resize.module.js +0 -34
  324. package/esm2015/components/contextmenu/contextmenu.component.js +0 -64
  325. package/esm2015/components/conversion-hint/conversion-hint.component.js +0 -59
  326. package/esm2015/components/element/element.component.js +0 -24
  327. package/esm2015/components/inline-toolbar/inline-toolbar.component.js +0 -139
  328. package/esm2015/components/table-select/table-select.component.js +0 -53
  329. package/esm2015/components/template/template.component.js +0 -66
  330. package/esm2015/components/toolbar/toolbar.component.js +0 -250
  331. package/esm2015/components/toolbar-dropdown/toolbar-dropdown.component.js +0 -133
  332. package/esm2015/components/toolbar-group/toolbar-group.component.js +0 -116
  333. package/esm2015/components/toolbar-item/toolbar-item.component.js +0 -105
  334. package/esm2015/core/create-toolbar.js +0 -57
  335. package/esm2015/core/toolbar-item/base-toolbar-item.js +0 -92
  336. package/esm2015/core/utils/get-plugin-options.js +0 -3
  337. package/esm2015/core/utils/get-plugins.js +0 -5
  338. package/esm2015/core/utils/merge-array.js +0 -18
  339. package/esm2015/editor.component.js +0 -440
  340. package/esm2015/interfaces/editor.js +0 -23
  341. package/esm2015/plugins/align/align.editor.js +0 -48
  342. package/esm2015/plugins/autoformat/autoformat.plugin.js +0 -110
  343. package/esm2015/plugins/blockquote/blockquote.editor.js +0 -21
  344. package/esm2015/plugins/code/code.component.js +0 -245
  345. package/esm2015/plugins/color/color.editor.js +0 -45
  346. package/esm2015/plugins/color/toolbar-item.component.js +0 -124
  347. package/esm2015/plugins/common/auto-insert-data..js +0 -78
  348. package/esm2015/plugins/common/get-fragment.plugin.js +0 -25
  349. package/esm2015/plugins/font-size/font-size.editor.js +0 -98
  350. package/esm2015/plugins/image/image.component.js +0 -370
  351. package/esm2015/plugins/image/image.plugin.js +0 -58
  352. package/esm2015/plugins/indent/indent.editor.js +0 -73
  353. package/esm2015/plugins/indent/indent.plugin.js +0 -60
  354. package/esm2015/plugins/link/edit/link-edit.component.js +0 -108
  355. package/esm2015/plugins/link/hover/link-hover.component.js +0 -39
  356. package/esm2015/plugins/list/components/bulleted-list.component.js +0 -34
  357. package/esm2015/plugins/list/components/list-item.component.js +0 -95
  358. package/esm2015/plugins/list/components/numbered-list.component.js +0 -40
  359. package/esm2015/plugins/list/list.plugin.js +0 -281
  360. package/esm2015/plugins/list/normalizers/normalize-list-item.js +0 -19
  361. package/esm2015/plugins/mark/mark.editor.js +0 -29
  362. package/esm2015/plugins/mark/mark.plugin.js +0 -102
  363. package/esm2015/plugins/node-id/node-id.plugin.js +0 -69
  364. package/esm2015/plugins/normalizers/insert-paragraph-nodes.js +0 -29
  365. package/esm2015/plugins/normalizers/trailing-node.plugin.js +0 -34
  366. package/esm2015/plugins/quick-insert/components/quick-insert.component.js +0 -102
  367. package/esm2015/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.js +0 -84
  368. package/esm2015/plugins/quick-insert/quick-insert.plugin.js +0 -75
  369. package/esm2015/plugins/soft-break/soft-break.plugin.js +0 -37
  370. package/esm2015/plugins/table/components/insert-mark/insert-mark.component.js +0 -103
  371. package/esm2015/plugins/table/components/table.component.js +0 -470
  372. package/esm2015/plugins/table/components/td/td.component.js +0 -698
  373. package/esm2015/plugins/table/components/toolbar/table-toolbar.component.js +0 -162
  374. package/esm2015/plugins/table/table.plugin.js +0 -424
  375. package/esm2015/plugins/table/table.store.js +0 -480
  376. package/esm2015/plugins/table/toolbar-item.component.js +0 -86
  377. package/esm2015/plugins/table/transforms/clear-cell.js +0 -11
  378. package/esm2015/plugins/table/transforms/insert-table.js +0 -15
  379. package/esm2015/plugins/todo-item/todo-item.component.js +0 -66
  380. package/esm2015/plugins/vertical-align/toolbar-item.component.js +0 -90
  381. package/esm2015/queries/get-above-by-type.js +0 -11
  382. package/esm2015/queries/get-block-above.js +0 -7
  383. package/esm2015/queries/get-block-card-above.js +0 -7
  384. package/esm2015/queries/get-nodes-by-type.js +0 -12
  385. package/esm2015/queries/get-plain-text.js +0 -16
  386. package/esm2015/queries/get-selection-marks.js +0 -19
  387. package/esm2015/queries/get-toolbar-disabled.js +0 -14
  388. package/esm2015/queries/index.js +0 -58
  389. package/esm2015/queries/is-range-across-blocks.js +0 -18
  390. package/esm2015/services/context.service.js +0 -60
  391. package/esm2015/services/toolbar.service.js +0 -48
  392. package/esm2015/transforms/insert-elements.js +0 -35
  393. package/esm2015/transforms/merge-deep-to-nodes.js +0 -9
  394. package/esm2015/transforms/unwrap-nodes-by-type.js +0 -11
  395. package/esm2015/utils/is-inline.js +0 -10
  396. package/esm2015/utils/match.js +0 -29
  397. package/fesm2015/worktile-theia.js.map +0 -1
@@ -1,440 +0,0 @@
1
- import { Component, Input, ViewChild, forwardRef, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { mixinUnsubscribe, MixinBase } from 'ngx-tethys/core';
4
- import isHotkey from 'is-hotkey';
5
- import { Editor, Transforms, createEditor, Range, Path } from 'slate';
6
- import { withHistory } from 'slate-history';
7
- import { AngularEditor, withAngular } from 'slate-angular';
8
- import { TheDataMode } from './interfaces';
9
- import { MarkTypes, CLIPBOARD_FORMAT_KEY, DEFAULT_SCROLL_CONTAINER } from './constants';
10
- import { TheTextComponent } from './components/text/text.component';
11
- import { TheContextService } from './services/context.service';
12
- import { TheColorSelectService } from './services/color-select.service';
13
- import { autoFocus, autoScrollViewHandle, dataDeserialize, dataSerializing, idCreator, setEditorUUID, coercePixelsFromCssValue } from './utils';
14
- import { _ } from './utils/lodash';
15
- import { withTheia, createToolbar } from './core';
16
- import { internalPlugins } from './plugins';
17
- import { shortcuts } from './shortcuts';
18
- import * as TheTransforms from './transforms';
19
- import * as TheQueries from './queries';
20
- import * as i0 from "@angular/core";
21
- import * as i1 from "./services/context.service";
22
- import * as i2 from "./components/toolbar/toolbar.component";
23
- import * as i3 from "slate-angular";
24
- import * as i4 from "./components/inline-toolbar/inline-toolbar.component";
25
- import * as i5 from "./plugins/quick-insert/components/quick-insert.component";
26
- import * as i6 from "./components/template/template.component";
27
- import * as i7 from "@angular/common";
28
- import * as i8 from "@angular/forms";
29
- export class TheEditorComponent extends mixinUnsubscribe(MixinBase) {
30
- constructor(theContextService, viewContainerRef, elementRef, ngZone, cdr) {
31
- super();
32
- this.theContextService = theContextService;
33
- this.viewContainerRef = viewContainerRef;
34
- this.elementRef = elementRef;
35
- this.ngZone = ngZone;
36
- this.cdr = cdr;
37
- this.thePlugins = [];
38
- this.theOnSave = new EventEmitter();
39
- this.theOnDOMEvent = new EventEmitter();
40
- this.theEditorCreated = new EventEmitter();
41
- this.theUploadingStatus = new EventEmitter(); // true 上传结束 false 上传中
42
- this.autoScrollView = _.debounce(function (editor, scrollContainer) {
43
- return autoScrollViewHandle(editor, scrollContainer);
44
- }, 80);
45
- this.elementToHtml = new WeakMap();
46
- this.onChangeCallback = () => { };
47
- this.onTouchedCallback = () => { };
48
- this.renderElement = (element) => {
49
- const template = this.templateInstance.renderElement(element);
50
- const component = this.editor.renderElement(element);
51
- return component ? component : template;
52
- };
53
- this.renderLeaf = (text) => {
54
- const leaf = this.editor.renderLeaf(text);
55
- return leaf ? leaf : null;
56
- };
57
- this.renderText = (text) => {
58
- for (const key in MarkTypes) {
59
- if (text[MarkTypes[key]]) {
60
- return TheTextComponent;
61
- }
62
- }
63
- if (text.text.length === 0) {
64
- return;
65
- }
66
- };
67
- this.onKeyDown = (event) => {
68
- shortcuts(this.editor, event);
69
- this.theOnDOMEvent.emit({
70
- nativeEvent: event,
71
- data: {
72
- key: event.key
73
- }
74
- });
75
- if (isHotkey('mod+s', event)) {
76
- this.ngZone.run(() => {
77
- this.theOnSave.emit(this.editorValue);
78
- });
79
- event.preventDefault();
80
- return;
81
- }
82
- if (isHotkey('mod+a', event)) {
83
- this.handleSelectAll();
84
- }
85
- AngularEditor.onKeydown(this.editor, event);
86
- };
87
- this.onClick = (event) => {
88
- AngularEditor.onClick(this.editor, event);
89
- this.theOnDOMEvent.emit({
90
- nativeEvent: event
91
- });
92
- };
93
- this.onSlaPaste = (event) => {
94
- this.theOnDOMEvent.emit({
95
- data: Object.assign({}, this.getTextAndJSON(event.clipboardData)),
96
- nativeEvent: event
97
- });
98
- };
99
- this.onSlaBeforeInput = (event) => {
100
- let data = {
101
- inputType: event.inputType,
102
- text: (event.data || event.dataTransfer)
103
- };
104
- if (event.inputType === 'insertFromPaste') {
105
- data = Object.assign(Object.assign({}, data), this.getTextAndJSON((event.data || event.dataTransfer)));
106
- }
107
- this.theOnDOMEvent.emit({
108
- data,
109
- nativeEvent: event
110
- });
111
- };
112
- this.onSlaBlur = (event) => {
113
- this.theOnDOMEvent.emit({
114
- nativeEvent: event
115
- });
116
- };
117
- this.onSlaFocus = (event) => {
118
- this.theOnDOMEvent.emit({
119
- nativeEvent: event
120
- });
121
- };
122
- this.onSlaCut = (event) => {
123
- this.theOnDOMEvent.emit({
124
- nativeEvent: event
125
- });
126
- };
127
- this.onSlaCopy = (event) => { };
128
- this.onSlaCompositionStart = (event) => { };
129
- this.onSlaCompositionEnd = (event) => { };
130
- this.onSlaDragStart = (event) => { };
131
- this.onSlaDragOver = (event) => { };
132
- this.onDrop = (event) => {
133
- this.theOnDOMEvent.emit({
134
- nativeEvent: event
135
- });
136
- };
137
- }
138
- get theGlobalToolbarInstance() {
139
- return this.theGlobalToolbar ? this.theGlobalToolbar : this.globalToolbarInstance;
140
- }
141
- get maxHeight() {
142
- var _a, _b;
143
- return ((_a = this.theOptions) === null || _a === void 0 ? void 0 : _a.maxHeight) ? `${(_b = this.theOptions) === null || _b === void 0 ? void 0 : _b.maxHeight}px` : null;
144
- }
145
- get quickToolbarItems() {
146
- var _a;
147
- return (_a = this.toolbarEntity) === null || _a === void 0 ? void 0 : _a.quick;
148
- }
149
- ngOnInit() {
150
- this.initialize();
151
- this.theContextService.uploadingStatus$.subscribe(isUploading => {
152
- if (isUploading) {
153
- this.theUploadingStatus.emit(true);
154
- }
155
- else {
156
- if (this.theContextService.uploadingFiles.length === 0) {
157
- this.theUploadingStatus.emit(false);
158
- }
159
- }
160
- });
161
- this.onErrorHandler();
162
- }
163
- ngOnChanges(changes) {
164
- var _a, _b, _c, _d, _e;
165
- const options = changes.theOptions;
166
- if (options) {
167
- this.initializeOptions();
168
- }
169
- if (options && ((_a = options.currentValue) === null || _a === void 0 ? void 0 : _a.readonly) !== ((_b = options.previousValue) === null || _b === void 0 ? void 0 : _b.readonly)) {
170
- this.applyAutoFocus();
171
- }
172
- if (changes['theDecorate']) {
173
- this.generateDecorate();
174
- }
175
- if (((_c = this.editor) === null || _c === void 0 ? void 0 : _c.selection) && (((_d = options === null || options === void 0 ? void 0 : options.currentValue) === null || _d === void 0 ? void 0 : _d.readonly) || ((_e = options === null || options === void 0 ? void 0 : options.currentValue) === null || _e === void 0 ? void 0 : _e.disabled))) {
176
- Transforms.deselect(this.editor);
177
- }
178
- }
179
- ngOnDestroy() {
180
- super.ngOnDestroy();
181
- }
182
- initialize() {
183
- var _a, _b;
184
- const defaultPlugins = internalPlugins();
185
- const plugins = [...defaultPlugins, ...this.thePlugins];
186
- this.editor = withTheia(withHistory(withAngular(createEditor(), CLIPBOARD_FORMAT_KEY)), plugins);
187
- this.generateDecorate();
188
- this.editor.disabled = (_a = this.theOptions) === null || _a === void 0 ? void 0 : _a.disabled;
189
- this.editor.extraElementOptions = (_b = this.theOptions) === null || _b === void 0 ? void 0 : _b.extraElementOptions;
190
- this.editor.options = this.theOptions;
191
- setEditorUUID(this.editor, idCreator());
192
- this.theContextService.initialize({
193
- theOptions: this.theOptions,
194
- nativeElement: this.elementRef.nativeElement,
195
- viewContainerRef: this.viewContainerRef
196
- });
197
- this.toolbarCalculate();
198
- setTimeout(() => {
199
- // You need to wait for the editor rendering to complete
200
- // before triggering the external toolbar assignment detection
201
- this.globalToolbarInit();
202
- this.theEditorCreated.emit(this.editor);
203
- this.applyAutoFocus();
204
- });
205
- }
206
- initializeOptions() {
207
- if (!this.theOptions) {
208
- this.theOptions = {
209
- readonly: false,
210
- mode: TheDataMode.html
211
- };
212
- }
213
- if (!this.theOptions.mode) {
214
- this.theOptions = Object.assign(Object.assign({}, this.theOptions), { mode: TheDataMode.html });
215
- }
216
- }
217
- applyAutoFocus() {
218
- var _a, _b, _c;
219
- if (!((_a = this.theOptions) === null || _a === void 0 ? void 0 : _a.disabled) && !((_b = this.theOptions) === null || _b === void 0 ? void 0 : _b.readonly)) {
220
- autoFocus(this.editor, (_c = this.theOptions) === null || _c === void 0 ? void 0 : _c.autoFocus);
221
- }
222
- }
223
- toolbarCalculate() {
224
- var _a;
225
- const { globalToolbarClass, toolbarEntity } = createToolbar(this.editor, (_a = this === null || this === void 0 ? void 0 : this.theOptions) === null || _a === void 0 ? void 0 : _a.toolbar);
226
- this.globalToolbarClass = globalToolbarClass;
227
- this.toolbarEntity = toolbarEntity;
228
- }
229
- globalToolbarInit() {
230
- var _a, _b;
231
- if (this.theGlobalToolbar) {
232
- this.theGlobalToolbarInstance.editor = this.editor;
233
- this.theGlobalToolbarInstance.toolbarItems = this.toolbarEntity.global;
234
- this.theGlobalToolbarInstance.containerClass = this.globalToolbarClass;
235
- this.theGlobalToolbarInstance.align = (_b = (_a = this === null || this === void 0 ? void 0 : this.theOptions) === null || _a === void 0 ? void 0 : _a.toolbar) === null || _b === void 0 ? void 0 : _b.align;
236
- this.theGlobalToolbarInstance.setToolbarClass();
237
- this.theGlobalToolbarInstance.renderToolbarView();
238
- }
239
- }
240
- writeValue(value) {
241
- var _a;
242
- const data = dataDeserialize((_a = this.theOptions) === null || _a === void 0 ? void 0 : _a.mode, value);
243
- // data-deserialize
244
- this.editorValue = data;
245
- this.cdr.markForCheck();
246
- }
247
- registerOnChange(fn) {
248
- this.onChangeCallback = fn;
249
- }
250
- registerOnTouched(fn) {
251
- this.onTouchedCallback = fn;
252
- }
253
- valueChange(value) {
254
- var _a, _b, _c, _d, _e, _f;
255
- const isEditable = !((_a = this.theOptions) === null || _a === void 0 ? void 0 : _a.readonly) && !((_b = this.theOptions) === null || _b === void 0 ? void 0 : _b.disabled);
256
- (_c = this.theGlobalToolbarInstance) === null || _c === void 0 ? void 0 : _c.selectionChange(this.editor);
257
- // quick insert button
258
- if (isEditable) {
259
- (_d = this.quickInsertInstance) === null || _d === void 0 ? void 0 : _d.checkStatus();
260
- }
261
- // auto scroll view
262
- const scrollContainer = (_e = this.theOptions) === null || _e === void 0 ? void 0 : _e.scrollContainer;
263
- const maxHeight = (_f = this.theOptions) === null || _f === void 0 ? void 0 : _f.maxHeight;
264
- if (isEditable && (scrollContainer || maxHeight)) {
265
- const container = maxHeight ? DEFAULT_SCROLL_CONTAINER : scrollContainer;
266
- this.autoScrollView(this.editor, container);
267
- }
268
- if (this.editorValue === value) {
269
- return;
270
- }
271
- this.editorValue = value;
272
- // serializing
273
- let newValue = this.serializingValue(value);
274
- this.onChangeCallback(newValue);
275
- }
276
- serializingValue(value) {
277
- var _a;
278
- if (((_a = this.theOptions) === null || _a === void 0 ? void 0 : _a.mode) === TheDataMode.html) {
279
- let htmlValue = '';
280
- value.forEach((element) => {
281
- var _a;
282
- let elementHtml = this.elementToHtml.get(element);
283
- if (elementHtml === undefined) {
284
- // serializing
285
- elementHtml = dataSerializing((_a = this.theOptions) === null || _a === void 0 ? void 0 : _a.mode, [element]);
286
- htmlValue += elementHtml;
287
- this.elementToHtml.set(element, elementHtml);
288
- return;
289
- }
290
- htmlValue += elementHtml;
291
- });
292
- return htmlValue;
293
- }
294
- return value;
295
- }
296
- onErrorHandler() {
297
- this.editor.onError = (errorData) => {
298
- if (this.theOnError) {
299
- this.theOnError(errorData);
300
- return;
301
- }
302
- if (errorData.nativeError) {
303
- console.error(errorData.nativeError);
304
- }
305
- };
306
- }
307
- generateDecorate() {
308
- this.decorate = (nodeEntry) => {
309
- const decorations = [];
310
- if (this.theDecorate) {
311
- decorations.push(...this.theDecorate(this.editor, nodeEntry));
312
- }
313
- return decorations;
314
- };
315
- }
316
- mousedown(event) {
317
- const editableElement = AngularEditor.toDOMNode(this.editor, this.editor);
318
- const rectEditable = editableElement.getBoundingClientRect();
319
- const absoluteElement = document.elementFromPoint(event.x, event.y);
320
- if (!editableElement.isEqualNode(absoluteElement)) {
321
- const blockCardElement = absoluteElement.querySelector('.slate-block-card');
322
- if (!blockCardElement)
323
- return;
324
- }
325
- let { paddingRight } = window.getComputedStyle(editableElement, null);
326
- const paddingRightPixels = coercePixelsFromCssValue(paddingRight);
327
- const fakeRightX = rectEditable.right - paddingRightPixels - 50;
328
- let relativeElement = document.elementFromPoint(fakeRightX, event.y);
329
- let relativeBlockCardElement = relativeElement.closest('.slate-block-card');
330
- if (relativeBlockCardElement) {
331
- const centerX = rectEditable.x + rectEditable.width / 2;
332
- const blockCardEntry = AngularEditor.toSlateCardEntry(this.editor, relativeBlockCardElement.firstElementChild);
333
- if (blockCardEntry && this.editor.isBlockCard(blockCardEntry[0])) {
334
- event.preventDefault();
335
- AngularEditor.moveBlockCard(this.editor, blockCardEntry[0], { direction: event.x < centerX ? 'left' : 'right' });
336
- }
337
- }
338
- }
339
- handleSelectAll() {
340
- let node;
341
- if (!this.editor.selection) {
342
- TheTransforms.setEndSelection(this.editor);
343
- }
344
- const [start, end] = Range.edges(this.editor.selection);
345
- const selectionRange = Editor.range(this.editor, start, end);
346
- const containerBlocks = TheQueries.getContainerBlocks(this.editor);
347
- for (let i = 0; i < containerBlocks.length; i++) {
348
- [node] = TheQueries.getNodesByType(this.editor, containerBlocks[i]);
349
- if (node) {
350
- const [, path] = node;
351
- const isStartParent = Path.equals(path, start.path.slice(0, path.length));
352
- const isEndParent = Path.equals(path, end.path.slice(0, path.length));
353
- if (isStartParent && isEndParent) {
354
- const nodeRange = Editor.range(this.editor, path);
355
- if (!Range.equals(nodeRange, selectionRange)) {
356
- Transforms.select(this.editor, nodeRange);
357
- break;
358
- }
359
- node = null;
360
- }
361
- }
362
- }
363
- if (!node) {
364
- Transforms.select(this.editor, []);
365
- }
366
- event.preventDefault();
367
- return;
368
- }
369
- getTextAndJSON(data) {
370
- const fragment = data.getData(`application/${CLIPBOARD_FORMAT_KEY}`);
371
- let json = [];
372
- if (fragment) {
373
- json = JSON.parse(decodeURIComponent(window.atob(fragment)));
374
- }
375
- const text = data.getData('text/plain');
376
- return {
377
- json,
378
- text
379
- };
380
- }
381
- }
382
- TheEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheEditorComponent, deps: [{ token: i1.TheContextService }, { token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
383
- TheEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: TheEditorComponent, selector: "the-editor, theEditor", inputs: { theOptions: "theOptions", thePlugins: "thePlugins", theGlobalToolbar: "theGlobalToolbar", theDecorate: "theDecorate", theOnError: "theOnError" }, outputs: { theOnSave: "theOnSave", theOnDOMEvent: "theOnDOMEvent", theEditorCreated: "theEditorCreated", theUploadingStatus: "theUploadingStatus" }, host: { properties: { "class.the-editor-readonly": "theOptions?.readonly" }, classAttribute: "the-editor" }, providers: [
384
- TheContextService,
385
- TheColorSelectService,
386
- {
387
- provide: NG_VALUE_ACCESSOR,
388
- useExisting: forwardRef(() => TheEditorComponent),
389
- multi: true
390
- }
391
- ], viewQueries: [{ propertyName: "templateInstance", first: true, predicate: ["templateInstance"], descendants: true, static: true }, { propertyName: "globalToolbarInstance", first: true, predicate: ["globalToolbar"], descendants: true }, { propertyName: "quickInsertInstance", first: true, predicate: ["quickInsert"], descendants: true, static: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<the-toolbar\n *ngIf=\"!theOptions?.readonly && !theGlobalToolbar\"\n [ngClass]=\"{\n 'the-toolbar-disabled': theOptions?.disabled\n }\"\n #globalToolbar\n [editor]=\"editor\"\n [toolbarItems]=\"toolbarEntity.global\"\n [containerClass]=\"globalToolbarClass\"\n [align]=\"theOptions?.toolbar?.align\"\n></the-toolbar>\n\n<div\n class=\"the-editable-container\"\n [ngClass]=\"{\n 'the-editor-disabled': theOptions?.disabled,\n 'max-height': maxHeight\n }\"\n [ngStyle]=\"{ 'max-height': maxHeight }\"\n>\n <slate-editable\n class=\"the-editor-typo\"\n [editor]=\"editor\"\n [ngModel]=\"editorValue\"\n (ngModelChange)=\"valueChange($event)\"\n [decorate]=\"decorate\"\n [placeholder]=\"theOptions?.placeholder\"\n [placeholderDecorate]=\"theOptions?.placeholderDecorate ? theOptions?.placeholderDecorate : null\"\n [renderElement]=\"renderElement\"\n [renderText]=\"renderText\"\n [renderLeaf]=\"renderLeaf\"\n [readonly]=\"theOptions?.readonly || theOptions?.disabled\"\n [keydown]=\"onKeyDown\"\n [click]=\"onClick\"\n [paste]=\"onSlaPaste\"\n [beforeInput]=\"onSlaBeforeInput\"\n [blur]=\"onSlaBlur\"\n [focus]=\"onSlaFocus\"\n [copy]=\"onSlaCopy\"\n [cut]=\"onSlaCut\"\n [isStrictDecorate]=\"false\"\n [compositionStart]=\"onSlaCompositionStart\"\n [compositionEnd]=\"onSlaCompositionEnd\"\n [dragStart]=\"onSlaDragStart\"\n [dragOver]=\"onSlaDragOver\"\n [drop]=\"onDrop\"\n (mousedown)=\"mousedown($event)\"\n ></slate-editable>\n <the-inline-toolbar\n *ngIf=\"!theOptions?.readonly && theOptions?.inlineToobarVisible\"\n [editor]=\"editor\"\n [toolbarItems]=\"toolbarEntity.inline\"\n ></the-inline-toolbar>\n <div\n #quickInsert\n theQuickInsert\n [editor]=\"editor\"\n [quickToolbarItems]=\"quickToolbarItems\"\n [isVisible]=\"theOptions?.quickInsertVisible\"\n ></div>\n <the-template #templateInstance></the-template>\n</div>\n", components: [{ type: i2.TheToolbarComponent, selector: "the-toolbar", inputs: ["editor", "toolbarItems", "align", "containerClass", "isMore", "afterTemplate"] }, { type: i3.SlateEditableComponent, selector: "slate-editable", inputs: ["editor", "renderElement", "renderLeaf", "renderText", "decorate", "placeholderDecorate", "isStrictDecorate", "trackBy", "readonly", "placeholder", "beforeInput", "blur", "click", "compositionEnd", "compositionStart", "copy", "cut", "dragOver", "dragStart", "dragEnd", "drop", "focus", "keydown", "paste", "spellCheck", "autoCorrect", "autoCapitalize"] }, { type: i4.TheInlineToolbarComponent, selector: "the-inline-toolbar", inputs: ["editor", "toolbarItems"] }, { type: i5.TheQuickInsertComponent, selector: "[theQuickInsert]", inputs: ["editor", "quickToolbarItems", "isVisible"] }, { type: i6.TheTemplateComponent, selector: "the-template,[theTemplate]" }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
392
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: TheEditorComponent, decorators: [{
393
- type: Component,
394
- args: [{
395
- selector: 'the-editor, theEditor',
396
- templateUrl: 'editor.component.html',
397
- providers: [
398
- TheContextService,
399
- TheColorSelectService,
400
- {
401
- provide: NG_VALUE_ACCESSOR,
402
- useExisting: forwardRef(() => TheEditorComponent),
403
- multi: true
404
- }
405
- ],
406
- host: {
407
- class: 'the-editor',
408
- '[class.the-editor-readonly]': 'theOptions?.readonly'
409
- },
410
- changeDetection: ChangeDetectionStrategy.OnPush
411
- }]
412
- }], ctorParameters: function () { return [{ type: i1.TheContextService }, { type: i0.ViewContainerRef }, { type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { theOptions: [{
413
- type: Input
414
- }], thePlugins: [{
415
- type: Input
416
- }], theGlobalToolbar: [{
417
- type: Input
418
- }], theDecorate: [{
419
- type: Input
420
- }], theOnError: [{
421
- type: Input
422
- }], theOnSave: [{
423
- type: Output
424
- }], theOnDOMEvent: [{
425
- type: Output
426
- }], theEditorCreated: [{
427
- type: Output
428
- }], theUploadingStatus: [{
429
- type: Output
430
- }], templateInstance: [{
431
- type: ViewChild,
432
- args: ['templateInstance', { static: true }]
433
- }], globalToolbarInstance: [{
434
- type: ViewChild,
435
- args: ['globalToolbar']
436
- }], quickInsertInstance: [{
437
- type: ViewChild,
438
- args: ['quickInsert', { static: true }]
439
- }] } });
440
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3NyYy9lZGl0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vcGFja2FnZXMvc3JjL2VkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0gsU0FBUyxFQUNULEtBQUssRUFFTCxTQUFTLEVBRVQsVUFBVSxFQUNWLE1BQU0sRUFDTixZQUFZLEVBSVosdUJBQXVCLEVBRTFCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5RCxPQUFPLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFDakMsT0FBTyxFQUFFLE1BQU0sRUFBUSxVQUFVLEVBQUUsWUFBWSxFQUF1QixLQUFLLEVBQUUsSUFBSSxFQUFhLE1BQU0sT0FBTyxDQUFDO0FBQzVHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGFBQWEsRUFBYyxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUEyQyxXQUFXLEVBQWlCLE1BQU0sY0FBYyxDQUFDO0FBQ25HLE9BQU8sRUFBRSxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHeEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxFQUNILFNBQVMsRUFDVCxvQkFBb0IsRUFDcEIsZUFBZSxFQUNmLGVBQWUsRUFDZixTQUFTLEVB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LEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDO1lBQ2pELEtBQUssRUFBRSxJQUFJO1NBQ2Q7S0FDSixzYUMzREwsMm1FQThEQTs0RkRJYSxrQkFBa0I7a0JBbEI5QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFdBQVcsRUFBRSx1QkFBdUI7b0JBQ3BDLFNBQVMsRUFBRTt3QkFDUCxpQkFBaUI7d0JBQ2pCLHFCQUFxQjt3QkFDckI7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsbUJBQW1CLENBQUM7NEJBQ2pELEtBQUssRUFBRSxJQUFJO3lCQUNkO3FCQUNKO29CQUNELElBQUksRUFBRTt3QkFDRixLQUFLLEVBQUUsWUFBWTt3QkFDbkIsNkJBQTZCLEVBQUUsc0JBQXNCO3FCQUN4RDtvQkFDRCxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQ7cU5BRVksVUFBVTtzQkFBbEIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLO2dCQUVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksU0FBUztzQkFBbEIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQUVHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFFRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBR1AsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUkvQyxxQkFBcUI7c0JBRHBCLFNBQVM7dUJBQUMsZUFBZTtnQkFJMUIsbUJBQW1CO3NCQURsQixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIE9uSW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgQ29tcG9uZW50LFxuICAgIElucHV0LFxuICAgIFZpZXdDb250YWluZXJSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgZm9yd2FyZFJlZixcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIE5nWm9uZSxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgbWl4aW5VbnN1YnNjcmliZSwgTWl4aW5CYXNlIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCBpc0hvdGtleSBmcm9tICdpcy1ob3RrZXknO1xuaW1wb3J0IHsgRWRpdG9yLCBUZXh0LCBUcmFuc2Zvcm1zLCBjcmVhdGVFZGl0b3IsIEVsZW1lbnQsIERlc2NlbmRhbnQsIFJhbmdlLCBQYXRoLCBOb2RlRW50cnkgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyB3aXRoSGlzdG9yeSB9IGZyb20gJ3NsYXRlLWhpc3RvcnknO1xuaW1wb3J0IHsgQW5ndWxhckVkaXRvciwgU2xhdGVFcnJvciwgd2l0aEFuZ3VsYXIgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IFRoZU9wdGlvbnMsIERvbUV2ZW50RGF0YUluZm8sIFRoZUVkaXRvciwgVGhlRGF0YU1vZGUsIFRvb2xiYXJFbnRpdHkgfSBmcm9tICcuL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgTWFya1R5cGVzLCBDTElQQk9BUkRfRk9STUFUX0tFWSwgREVGQVVMVF9TQ1JPTExfQ09OVEFJTkVSIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVGhlVGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGVtcGxhdGUvdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IFRoZVRvb2xiYXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdG9vbGJhci90b29sYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaGVUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGhlQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyBUaGVDb2xvclNlbGVjdFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2NvbG9yLXNlbGVjdC5zZXJ2aWNlJztcbmltcG9ydCB7XG4gICAgYXV0b0ZvY3VzLFxuICAgIGF1dG9TY3JvbGxWaWV3SGFuZGxlLFxuICAgIGRhdGFEZXNlcmlhbGl6ZSxcbiAgICBkYXRhU2VyaWFsaXppbmcsXG4gICAgaWRDcmVhdG9yLFxuICAgIHNldEVkaXRvclVVSUQsXG4gICAgY29lcmNlUGl4ZWxzRnJvbUNzc1ZhbHVlXG59IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgXyB9IGZyb20gJy4vdXRpbHMvbG9kYXNoJztcbmltcG9ydCB7IFRoZVF1aWNrSW5zZXJ0Q29tcG9uZW50IH0gZnJvbSAnLi9wbHVnaW5zL3F1aWNrLWluc2VydC9jb21wb25lbnRzL3F1aWNrLWluc2VydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgd2l0aFRoZWlhLCBjcmVhdGVUb29sYmFyIH0gZnJvbSAnLi9jb3JlJztcbmltcG9ydCB7IGludGVybmFsUGx1Z2lucyB9IGZyb20gJy4vcGx1Z2lucyc7XG5pbXBvcnQgeyBzaG9ydGN1dHMgfSBmcm9tICcuL3Nob3J0Y3V0cyc7XG5pbXBvcnQgKiBhcyBUaGVUcmFuc2Zvcm1zIGZyb20gJy4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgKiBhcyBUaGVRdWVyaWVzIGZyb20gJy4vcXVlcmllcyc7XG5pbXBvcnQgeyBUaGVQbHVnaW4gfSBmcm9tICcuL2ludGVyZmFjZXMvcGx1Z2lucy9wbHVnaW5zJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aGUtZWRpdG9yLCB0aGVFZGl0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAnZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgVGhlQ29udGV4dFNlcnZpY2UsXG4gICAgICAgIFRoZUNvbG9yU2VsZWN0U2VydmljZSxcbiAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBUaGVFZGl0b3JDb21wb25lbnQpLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3RoZS1lZGl0b3InLFxuICAgICAgICAnW2NsYXNzLnRoZS1lZGl0b3ItcmVhZG9ubHldJzogJ3RoZU9wdGlvbnM/LnJlYWRvbmx5J1xuICAgIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgVGhlRWRpdG9yQ29tcG9uZW50IGV4dGVuZHMgbWl4aW5VbnN1YnNjcmliZShNaXhpbkJhc2UpIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgdGhlT3B0aW9uczogVGhlT3B0aW9ucztcblxuICAgIEBJbnB1dCgpIHRoZVBsdWdpbnM6IFRoZVBsdWdpbltdID0gW107XG5cbiAgICBASW5wdXQoKSB0aGVHbG9iYWxUb29sYmFyPzogVGhlVG9vbGJhckNvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpIHRoZURlY29yYXRlOiAoZWRpdG9yOiBUaGVFZGl0b3IsIG5vZGVFbnRyeTogTm9kZUVudHJ5KSA9PiBSYW5nZVtdO1xuXG4gICAgQElucHV0KCkgdGhlT25FcnJvcj86IChlcnJvcjogU2xhdGVFcnJvcikgPT4gdm9pZDtcblxuICAgIEBPdXRwdXQoKSB0aGVPblNhdmU6IEV2ZW50RW1pdHRlcjxEZXNjZW5kYW50W10+ID0gbmV3IEV2ZW50RW1pdHRlcjxEZXNjZW5kYW50W10+KCk7XG5cbiAgICBAT3V0cHV0KCkgdGhlT25ET01FdmVudDogRXZlbnRFbWl0dGVyPHsgbmF0aXZlRXZlbnQ6IEV2ZW50OyBkYXRhPzogRG9tRXZlbnREYXRhSW5mbyB9PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSB0aGVFZGl0b3JDcmVhdGVkOiBFdmVudEVtaXR0ZXI8RWRpdG9yPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIEBPdXRwdXQoKSB0aGVVcGxvYWRpbmdTdGF0dXM6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTsgLy8gdHJ1ZSDkuIrkvKDnu5PmnZ8gZmFsc2Ug5LiK5Lyg5LitXG5cbiAgICBAVmlld0NoaWxkKCd0ZW1wbGF0ZUluc3RhbmNlJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICB0ZW1wbGF0ZUluc3RhbmNlOiBUaGVUZW1wbGF0ZUNvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoJ2dsb2JhbFRvb2xiYXInKVxuICAgIGdsb2JhbFRvb2xiYXJJbnN0YW5jZTogVGhlVG9vbGJhckNvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoJ3F1aWNrSW5zZXJ0JywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBxdWlja0luc2VydEluc3RhbmNlOiBUaGVRdWlja0luc2VydENvbXBvbmVudDtcblxuICAgIHRvb2xiYXJFbnRpdHk6IFRvb2xiYXJFbnRpdHk7XG5cbiAgICBlZGl0b3I6IFRoZUVkaXRvcjtcblxuICAgIGVkaXRvclZhbHVlOiBEZXNjZW5kYW50W107XG5cbiAgICBnbG9iYWxUb29sYmFyQ2xhc3M6IHN0cmluZ1tdO1xuXG4gICAgZGVjb3JhdGU6IChub2RlRW50cnk6IE5vZGVFbnRyeSkgPT4gUmFuZ2VbXTtcblxuICAgIGdldCB0aGVHbG9iYWxUb29sYmFySW5zdGFuY2UoKTogVGhlVG9vbGJhckNvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoZUdsb2JhbFRvb2xiYXIgPyB0aGlzLnRoZUdsb2JhbFRvb2xiYXIgOiB0aGlzLmdsb2JhbFRvb2xiYXJJbnN0YW5jZTtcbiAgICB9XG5cbiAgICBnZXQgbWF4SGVpZ2h0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aGVPcHRpb25zPy5tYXhIZWlnaHQgPyBgJHt0aGlzLnRoZU9wdGlvbnM/Lm1heEhlaWdodH1weGAgOiBudWxsO1xuICAgIH1cblxuICAgIGdldCBxdWlja1Rvb2xiYXJJdGVtcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9vbGJhckVudGl0eT8ucXVpY2s7XG4gICAgfVxuXG4gICAgYXV0b1Njcm9sbFZpZXcgPSBfLmRlYm91bmNlKGZ1bmN0aW9uIChlZGl0b3I6IEVkaXRvciwgc2Nyb2xsQ29udGFpbmVyOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGF1dG9TY3JvbGxWaWV3SGFuZGxlKGVkaXRvciwgc2Nyb2xsQ29udGFpbmVyKTtcbiAgICB9LCA4MCk7XG5cbiAgICBlbGVtZW50VG9IdG1sOiBXZWFrTWFwPEVsZW1lbnQsIHN0cmluZz4gPSBuZXcgV2Vha01hcCgpO1xuXG4gICAgcHJpdmF0ZSBvbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICBwcml2YXRlIG9uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB0aGVDb250ZXh0U2VydmljZTogVGhlQ29udGV4dFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7XG4gICAgICAgIHRoaXMudGhlQ29udGV4dFNlcnZpY2UudXBsb2FkaW5nU3RhdHVzJC5zdWJzY3JpYmUoaXNVcGxvYWRpbmcgPT4ge1xuICAgICAgICAgICAgaWYgKGlzVXBsb2FkaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50aGVVcGxvYWRpbmdTdGF0dXMuZW1pdCh0cnVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudGhlQ29udGV4dFNlcnZpY2UudXBsb2FkaW5nRmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudGhlVXBsb2FkaW5nU3RhdHVzLmVtaXQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub25FcnJvckhhbmRsZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IG9wdGlvbnMgPSBjaGFuZ2VzLnRoZU9wdGlvbnM7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZU9wdGlvbnMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmN1cnJlbnRWYWx1ZT8ucmVhZG9ubHkgIT09IG9wdGlvbnMucHJldmlvdXNWYWx1ZT8ucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlBdXRvRm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhbmdlc1sndGhlRGVjb3JhdGUnXSkge1xuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZURlY29yYXRlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuZWRpdG9yPy5zZWxlY3Rpb24gJiYgKG9wdGlvbnM/LmN1cnJlbnRWYWx1ZT8ucmVhZG9ubHkgfHwgb3B0aW9ucz8uY3VycmVudFZhbHVlPy5kaXNhYmxlZCkpIHtcbiAgICAgICAgICAgIFRyYW5zZm9ybXMuZGVzZWxlY3QodGhpcy5lZGl0b3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxuXG4gICAgaW5pdGlhbGl6ZSgpIHtcbiAgICAgICAgY29uc3QgZGVmYXVsdFBsdWdpbnMgPSBpbnRlcm5hbFBsdWdpbnMoKTtcbiAgICAgICAgY29uc3QgcGx1Z2lucyA9IFsuLi5kZWZhdWx0UGx1Z2lucywgLi4udGhpcy50aGVQbHVnaW5zXTtcbiAgICAgICAgdGhpcy5lZGl0b3IgPSB3aXRoVGhlaWEod2l0aEhpc3Rvcnkod2l0aEFuZ3VsYXIoY3JlYXRlRWRpdG9yKCksIENMSVBCT0FSRF9GT1JNQVRfS0VZKSksIHBsdWdpbnMpO1xuICAgICAgICB0aGlzLmdlbmVyYXRlRGVjb3JhdGUoKTtcbiAgICAgICAgdGhpcy5lZGl0b3IuZGlzYWJsZWQgPSB0aGlzLnRoZU9wdGlvbnM/LmRpc2FibGVkO1xuICAgICAgICB0aGlzLmVkaXRvci5leHRyYUVsZW1lbnRPcHRpb25zID0gdGhpcy50aGVPcHRpb25zPy5leHRyYUVsZW1lbnRPcHRpb25zO1xuICAgICAgICB0aGlzLmVkaXRvci5vcHRpb25zID0gdGhpcy50aGVPcHRpb25zO1xuICAgICAgICBzZXRFZGl0b3JVVUlEKHRoaXMuZWRpdG9yLCBpZENyZWF0b3IoKSk7XG4gICAgICAgIHRoaXMudGhlQ29udGV4dFNlcnZpY2UuaW5pdGlhbGl6ZSh7XG4gICAgICAgICAgICB0aGVPcHRpb25zOiB0aGlzLnRoZU9wdGlvbnMsXG4gICAgICAgICAgICBuYXRpdmVFbGVtZW50OiB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZlxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy50b29sYmFyQ2FsY3VsYXRlKCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgLy8gWW91IG5lZWQgdG8gd2FpdCBmb3IgdGhlIGVkaXRvciByZW5kZXJpbmcgdG8gY29tcGxldGVcbiAgICAgICAgICAgIC8vIGJlZm9yZSB0cmlnZ2VyaW5nIHRoZSBleHRlcm5hbCB0b29sYmFyIGFzc2lnbm1lbnQgZGV0ZWN0aW9uXG4gICAgICAgICAgICB0aGlzLmdsb2JhbFRvb2xiYXJJbml0KCk7XG4gICAgICAgICAgICB0aGlzLnRoZUVkaXRvckNyZWF0ZWQuZW1pdCh0aGlzLmVkaXRvcik7XG4gICAgICAgICAgICB0aGlzLmFwcGx5QXV0b0ZvY3VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGluaXRpYWxpemVPcHRpb25zKCkge1xuICAgICAgICBpZiAoIXRoaXMudGhlT3B0aW9ucykge1xuICAgICAgICAgICAgdGhpcy50aGVPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIHJlYWRvbmx5OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBtb2RlOiBUaGVEYXRhTW9kZS5odG1sXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy50aGVPcHRpb25zLm1vZGUpIHtcbiAgICAgICAgICAgIHRoaXMudGhlT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLnRoZU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgbW9kZTogVGhlRGF0YU1vZGUuaHRtbFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFwcGx5QXV0b0ZvY3VzKCkge1xuICAgICAgICBpZiAoIXRoaXMudGhlT3B0aW9ucz8uZGlzYWJsZWQgJiYgIXRoaXMudGhlT3B0aW9ucz8ucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIGF1dG9Gb2N1cyh0aGlzLmVkaXRvciwgdGhpcy50aGVPcHRpb25zPy5hdXRvRm9jdXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdG9vbGJhckNhbGN1bGF0ZSgpIHtcbiAgICAgICAgY29uc3QgeyBnbG9iYWxUb29sYmFyQ2xhc3MsIHRvb2xiYXJFbnRpdHkgfSA9IGNyZWF0ZVRvb2xiYXIodGhpcy5lZGl0b3IsIHRoaXM/LnRoZU9wdGlvbnM/LnRvb2xiYXIpO1xuICAgICAgICB0aGlzLmdsb2JhbFRvb2xiYXJDbGFzcyA9IGdsb2JhbFRvb2xiYXJDbGFzcztcbiAgICAgICAgdGhpcy50b29sYmFyRW50aXR5ID0gdG9vbGJhckVudGl0eTtcbiAgICB9XG5cbiAgICBnbG9iYWxUb29sYmFySW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMudGhlR2xvYmFsVG9vbGJhcikge1xuICAgICAgICAgICAgdGhpcy50aGVHbG9iYWxUb29sYmFySW5zdGFuY2UuZWRpdG9yID0gdGhpcy5lZGl0b3I7XG4gICAgICAgICAgICB0aGlzLnRoZUdsb2JhbFRvb2xiYXJJbnN0YW5jZS50b29sYmFySXRlbXMgPSB0aGlzLnRvb2xiYXJFbnRpdHkuZ2xvYmFsO1xuICAgICAgICAgICAgdGhpcy50aGVHbG9iYWxUb29sYmFySW5zdGFuY2UuY29udGFpbmVyQ2xhc3MgPSB0aGlzLmdsb2JhbFRvb2xiYXJDbGFzcztcbiAgICAgICAgICAgIHRoaXMudGhlR2xvYmFsVG9vbGJhckluc3RhbmNlLmFsaWduID0gdGhpcz8udGhlT3B0aW9ucz8udG9vbGJhcj8uYWxpZ247XG4gICAgICAgICAgICB0aGlzLnRoZUdsb2JhbFRvb2xiYXJJbnN0YW5jZS5zZXRUb29sYmFyQ2xhc3MoKTtcbiAgICAgICAgICAgIHRoaXMudGhlR2xvYmFsVG9vbGJhckluc3RhbmNlLnJlbmRlclRvb2xiYXJWaWV3KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBEZXNjZW5kYW50W10pIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IGRhdGFEZXNlcmlhbGl6ZSh0aGlzLnRoZU9wdGlvbnM/Lm1vZGUsIHZhbHVlKTtcbiAgICAgICAgLy8gZGF0YS1kZXNlcmlhbGl6ZVxuICAgICAgICB0aGlzLmVkaXRvclZhbHVlID0gZGF0YTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xuICAgIH1cblxuICAgIHZhbHVlQ2hhbmdlKHZhbHVlOiBEZXNjZW5kYW50W10pIHtcbiAgICAgICAgY29uc3QgaXNFZGl0YWJsZSA9ICF0aGlzLnRoZU9wdGlvbnM/LnJlYWRvbmx5ICYmICF0aGlzLnRoZU9wdGlvbnM/LmRpc2FibGVkO1xuXG4gICAgICAgIHRoaXMudGhlR2xvYmFsVG9vbGJhckluc3RhbmNlPy5zZWxlY3Rpb25DaGFuZ2UodGhpcy5lZGl0b3IpO1xuXG4gICAgICAgIC8vIHF1aWNrIGluc2VydCBidXR0b25cbiAgICAgICAgaWYgKGlzRWRpdGFibGUpIHtcbiAgICAgICAgICAgIHRoaXMucXVpY2tJbnNlcnRJbnN0YW5jZT8uY2hlY2tTdGF0dXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGF1dG8gc2Nyb2xsIHZpZXdcbiAgICAgICAgY29uc3Qgc2Nyb2xsQ29udGFpbmVyID0gdGhpcy50aGVPcHRpb25zPy5zY3JvbGxDb250YWluZXI7XG4gICAgICAgIGNvbnN0IG1heEhlaWdodCA9IHRoaXMudGhlT3B0aW9ucz8ubWF4SGVpZ2h0O1xuICAgICAgICBpZiAoaXNFZGl0YWJsZSAmJiAoc2Nyb2xsQ29udGFpbmVyIHx8IG1heEhlaWdodCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IG1heEhlaWdodCA/IERFRkFVTFRfU0NST0xMX0NPTlRBSU5FUiA6IHNjcm9sbENvbnRhaW5lcjtcbiAgICAgICAgICAgIHRoaXMuYXV0b1Njcm9sbFZpZXcodGhpcy5lZGl0b3IsIGNvbnRhaW5lcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5lZGl0b3JWYWx1ZSA9PT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVkaXRvclZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgLy8gc2VyaWFsaXppbmdcbiAgICAgICAgbGV0IG5ld1ZhbHVlID0gdGhpcy5zZXJpYWxpemluZ1ZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICBzZXJpYWxpemluZ1ZhbHVlKHZhbHVlOiBEZXNjZW5kYW50W10pOiBzdHJpbmcgfCBEZXNjZW5kYW50W10ge1xuICAgICAgICBpZiAodGhpcy50aGVPcHRpb25zPy5tb2RlID09PSBUaGVEYXRhTW9kZS5odG1sKSB7XG4gICAgICAgICAgICBsZXQgaHRtbFZhbHVlID0gJyc7XG4gICAgICAgICAgICB2YWx1ZS5mb3JFYWNoKChlbGVtZW50OiBFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRIdG1sID0gdGhpcy5lbGVtZW50VG9IdG1sLmdldChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudEh0bWwgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBzZXJpYWxpemluZ1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50SHRtbCA9IGRhdGFTZXJpYWxpemluZyh0aGlzLnRoZU9wdGlvbnM/Lm1vZGUsIFtlbGVtZW50XSkgYXMgc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICBodG1sVmFsdWUgKz0gZWxlbWVudEh0bWw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudFRvSHRtbC5zZXQoZWxlbWVudCwgZWxlbWVudEh0bWwpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGh0bWxWYWx1ZSArPSBlbGVtZW50SHRtbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGh0bWxWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgb25FcnJvckhhbmRsZXIoKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yLm9uRXJyb3IgPSAoZXJyb3JEYXRhOiBTbGF0ZUVycm9yKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy50aGVPbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50aGVPbkVycm9yKGVycm9yRGF0YSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVycm9yRGF0YS5uYXRpdmVFcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3JEYXRhLm5hdGl2ZUVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICByZW5kZXJFbGVtZW50ID0gKGVsZW1lbnQ6IEVsZW1lbnQpID0+IHtcbiAgICAgICAgY29uc3QgdGVtcGxhdGUgPSB0aGlzLnRlbXBsYXRlSW5zdGFuY2UucmVuZGVyRWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgY29uc3QgY29tcG9uZW50ID0gdGhpcy5lZGl0b3IucmVuZGVyRWxlbWVudChlbGVtZW50KTtcbiAgICAgICAgcmV0dXJuIGNvbXBvbmVudCA/IGNvbXBvbmVudCA6IHRlbXBsYXRlO1xuICAgIH07XG5cbiAgICByZW5kZXJMZWFmID0gKHRleHQ6IFRleHQpID0+IHtcbiAgICAgICAgY29uc3QgbGVhZiA9IHRoaXMuZWRpdG9yLnJlbmRlckxlYWYodGV4dCk7XG4gICAgICAgIHJldHVybiBsZWFmID8gbGVhZiA6IG51bGw7XG4gICAgfTtcblxuICAgIHJlbmRlclRleHQgPSAodGV4dDogVGV4dCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBNYXJrVHlwZXMpIHtcbiAgICAgICAgICAgIGlmICh0ZXh0W01hcmtUeXBlc1trZXldXSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBUaGVUZXh0Q29tcG9uZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0ZXh0LnRleHQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgZ2VuZXJhdGVEZWNvcmF0ZSgpIHtcbiAgICAgICAgdGhpcy5kZWNvcmF0ZSA9IChub2RlRW50cnk6IE5vZGVFbnRyeSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZGVjb3JhdGlvbnMgPSBbXTtcblxuICAgICAgICAgICAgaWYgKHRoaXMudGhlRGVjb3JhdGUpIHtcbiAgICAgICAgICAgICAgICBkZWNvcmF0aW9ucy5wdXNoKC4uLnRoaXMudGhlRGVjb3JhdGUodGhpcy5lZGl0b3IsIG5vZGVFbnRyeSkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gZGVjb3JhdGlvbnM7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgb25LZXlEb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIHNob3J0Y3V0cyh0aGlzLmVkaXRvciwgZXZlbnQpO1xuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnQsXG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAga2V5OiBldmVudC5rZXlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChpc0hvdGtleSgnbW9kK3MnLCBldmVudCkpIHtcbiAgICAgICAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy50aGVPblNhdmUuZW1pdCh0aGlzLmVkaXRvclZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNIb3RrZXkoJ21vZCthJywgZXZlbnQpKSB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVNlbGVjdEFsbCgpO1xuICAgICAgICB9XG4gICAgICAgIEFuZ3VsYXJFZGl0b3Iub25LZXlkb3duKHRoaXMuZWRpdG9yLCBldmVudCk7XG4gICAgfTtcblxuICAgIG1vdXNlZG93bihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBjb25zdCBlZGl0YWJsZUVsZW1lbnQgPSBBbmd1bGFyRWRpdG9yLnRvRE9NTm9kZSh0aGlzLmVkaXRvciwgdGhpcy5lZGl0b3IpO1xuICAgICAgICBjb25zdCByZWN0RWRpdGFibGUgPSBlZGl0YWJsZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IGFic29sdXRlRWxlbWVudCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZXZlbnQueCwgZXZlbnQueSk7XG4gICAgICAgIGlmICghZWRpdGFibGVFbGVtZW50LmlzRXF1YWxOb2RlKGFic29sdXRlRWxlbWVudCkpIHtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrQ2FyZEVsZW1lbnQgPSBhYnNvbHV0ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnNsYXRlLWJsb2NrLWNhcmQnKTtcbiAgICAgICAgICAgIGlmICghYmxvY2tDYXJkRWxlbWVudCkgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxldCB7IHBhZGRpbmdSaWdodCB9ID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWRpdGFibGVFbGVtZW50LCBudWxsKTtcbiAgICAgICAgY29uc3QgcGFkZGluZ1JpZ2h0UGl4ZWxzID0gY29lcmNlUGl4ZWxzRnJvbUNzc1ZhbHVlKHBhZGRpbmdSaWdodCk7XG4gICAgICAgIGNvbnN0IGZha2VSaWdodFggPSByZWN0RWRpdGFibGUucmlnaHQgLSBwYWRkaW5nUmlnaHRQaXhlbHMgLSA1MDtcbiAgICAgICAgbGV0IHJlbGF0aXZlRWxlbWVudCA9IGRvY3VtZW50LmVsZW1lbnRGcm9tUG9pbnQoZmFrZVJpZ2h0WCwgZXZlbnQueSk7XG4gICAgICAgIGxldCByZWxhdGl2ZUJsb2NrQ2FyZEVsZW1lbnQgPSByZWxhdGl2ZUVsZW1lbnQuY2xvc2VzdCgnLnNsYXRlLWJsb2NrLWNhcmQnKTtcbiAgICAgICAgaWYgKHJlbGF0aXZlQmxvY2tDYXJkRWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgY2VudGVyWCA9IHJlY3RFZGl0YWJsZS54ICsgcmVjdEVkaXRhYmxlLndpZHRoIC8gMjtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrQ2FyZEVudHJ5ID0gQW5ndWxhckVkaXRvci50b1NsYXRlQ2FyZEVudHJ5KHRoaXMuZWRpdG9yLCByZWxhdGl2ZUJsb2NrQ2FyZEVsZW1lbnQuZmlyc3RFbGVtZW50Q2hpbGQpO1xuICAgICAgICAgICAgaWYgKGJsb2NrQ2FyZEVudHJ5ICYmIHRoaXMuZWRpdG9yLmlzQmxvY2tDYXJkKGJsb2NrQ2FyZEVudHJ5WzBdKSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgQW5ndWxhckVkaXRvci5tb3ZlQmxvY2tDYXJkKHRoaXMuZWRpdG9yLCBibG9ja0NhcmRFbnRyeVswXSwgeyBkaXJlY3Rpb246IGV2ZW50LnggPCBjZW50ZXJYID8gJ2xlZnQnIDogJ3JpZ2h0JyB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVNlbGVjdEFsbCgpIHtcbiAgICAgICAgbGV0IG5vZGU7XG4gICAgICAgIGlmICghdGhpcy5lZGl0b3Iuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBUaGVUcmFuc2Zvcm1zLnNldEVuZFNlbGVjdGlvbih0aGlzLmVkaXRvcik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gUmFuZ2UuZWRnZXModGhpcy5lZGl0b3Iuc2VsZWN0aW9uKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0aW9uUmFuZ2UgPSBFZGl0b3IucmFuZ2UodGhpcy5lZGl0b3IsIHN0YXJ0LCBlbmQpO1xuICAgICAgICBjb25zdCBjb250YWluZXJCbG9ja3MgPSBUaGVRdWVyaWVzLmdldENvbnRhaW5lckJsb2Nrcyh0aGlzLmVkaXRvcik7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29udGFpbmVyQmxvY2tzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBbbm9kZV0gPSBUaGVRdWVyaWVzLmdldE5vZGVzQnlUeXBlKHRoaXMuZWRpdG9yLCBjb250YWluZXJCbG9ja3NbaV0pO1xuICAgICAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbLCBwYXRoXSA9IG5vZGU7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNTdGFydFBhcmVudCA9IFBhdGguZXF1YWxzKHBhdGgsIHN0YXJ0LnBhdGguc2xpY2UoMCwgcGF0aC5sZW5ndGgpKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0VuZFBhcmVudCA9IFBhdGguZXF1YWxzKHBhdGgsIGVuZC5wYXRoLnNsaWNlKDAsIHBhdGgubGVuZ3RoKSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzU3RhcnRQYXJlbnQgJiYgaXNFbmRQYXJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZVJhbmdlID0gRWRpdG9yLnJhbmdlKHRoaXMuZWRpdG9yLCBwYXRoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFSYW5nZS5lcXVhbHMobm9kZVJhbmdlLCBzZWxlY3Rpb25SYW5nZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2VsZWN0KHRoaXMuZWRpdG9yLCBub2RlUmFuZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbm9kZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghbm9kZSkge1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZWxlY3QodGhpcy5lZGl0b3IsIFtdKTtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgb25DbGljayA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBBbmd1bGFyRWRpdG9yLm9uQ2xpY2sodGhpcy5lZGl0b3IsIGV2ZW50KTtcbiAgICAgICAgdGhpcy50aGVPbkRPTUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgbmF0aXZlRXZlbnQ6IGV2ZW50XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICBvblNsYVBhc3RlID0gKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5nZXRUZXh0QW5kSlNPTihldmVudC5jbGlwYm9hcmREYXRhKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBldmVudFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgb25TbGFCZWZvcmVJbnB1dCA9IChcbiAgICAgICAgZXZlbnQ6IEV2ZW50ICYge1xuICAgICAgICAgICAgaW5wdXRUeXBlOiBzdHJpbmc7XG4gICAgICAgICAgICBkYXRhOiBzdHJpbmcgfCBudWxsO1xuICAgICAgICAgICAgZGF0YVRyYW5zZmVyOiBEYXRhVHJhbnNmZXIgfCBudWxsO1xuICAgICAgICB9XG4gICAgKSA9PiB7XG4gICAgICAgIGxldCBkYXRhID0ge1xuICAgICAgICAgICAgaW5wdXRUeXBlOiBldmVudC5pbnB1dFR5cGUsXG4gICAgICAgICAgICB0ZXh0OiAoZXZlbnQuZGF0YSB8fCBldmVudC5kYXRhVHJhbnNmZXIpIGFzIHN0cmluZ1xuICAgICAgICB9O1xuICAgICAgICBpZiAoZXZlbnQuaW5wdXRUeXBlID09PSAnaW5zZXJ0RnJvbVBhc3RlJykge1xuICAgICAgICAgICAgZGF0YSA9IHtcbiAgICAgICAgICAgICAgICAuLi5kYXRhLFxuICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0VGV4dEFuZEpTT04oKGV2ZW50LmRhdGEgfHwgZXZlbnQuZGF0YVRyYW5zZmVyKSBhcyBEYXRhVHJhbnNmZXIpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGhlT25ET01FdmVudC5lbWl0KHtcbiAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnRcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIG9uU2xhQmx1ciA9IChldmVudDogRm9jdXNFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnRcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIG9uU2xhRm9jdXMgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMudGhlT25ET01FdmVudC5lbWl0KHtcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBldmVudFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgb25TbGFDdXQgPSAoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMudGhlT25ET01FdmVudC5lbWl0KHtcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50OiBldmVudFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgb25TbGFDb3B5ID0gKGV2ZW50OiBDbGlwYm9hcmRFdmVudCkgPT4ge307XG5cbiAgICBvblNsYUNvbXBvc2l0aW9uU3RhcnQgPSAoZXZlbnQ6IENvbXBvc2l0aW9uRXZlbnQpID0+IHt9O1xuXG4gICAgb25TbGFDb21wb3NpdGlvbkVuZCA9IChldmVudDogQ29tcG9zaXRpb25FdmVudCkgPT4ge307XG5cbiAgICBvblNsYURyYWdTdGFydCA9IChldmVudDogRHJhZ0V2ZW50KSA9PiB7fTtcblxuICAgIG9uU2xhRHJhZ092ZXIgPSAoZXZlbnQ6IERyYWdFdmVudCkgPT4ge307XG5cbiAgICBvbkRyb3AgPSAoZXZlbnQ6IERyYWdFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLnRoZU9uRE9NRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBuYXRpdmVFdmVudDogZXZlbnRcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIGdldFRleHRBbmRKU09OKGRhdGE6IERhdGFUcmFuc2Zlcikge1xuICAgICAgICBjb25zdCBmcmFnbWVudCA9IGRhdGEuZ2V0RGF0YShgYXBwbGljYXRpb24vJHtDTElQQk9BUkRfRk9STUFUX0tFWX1gKTtcbiAgICAgICAgbGV0IGpzb24gPSBbXTtcbiAgICAgICAgaWYgKGZyYWdtZW50KSB7XG4gICAgICAgICAgICBqc29uID0gSlNPTi5wYXJzZShkZWNvZGVVUklDb21wb25lbnQod2luZG93LmF0b2IoZnJhZ21lbnQpKSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdGV4dCA9IGRhdGEuZ2V0RGF0YSgndGV4dC9wbGFpbicpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAganNvbixcbiAgICAgICAgICAgIHRleHRcbiAgICAgICAgfTtcbiAgICB9XG59XG4iLCI8dGhlLXRvb2xiYXJcbiAgICAqbmdJZj1cIiF0aGVPcHRpb25zPy5yZWFkb25seSAmJiAhdGhlR2xvYmFsVG9vbGJhclwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAndGhlLXRvb2xiYXItZGlzYWJsZWQnOiB0aGVPcHRpb25zPy5kaXNhYmxlZFxuICAgIH1cIlxuICAgICNnbG9iYWxUb29sYmFyXG4gICAgW2VkaXRvcl09XCJlZGl0b3JcIlxuICAgIFt0b29sYmFySXRlbXNdPVwidG9vbGJhckVudGl0eS5nbG9iYWxcIlxuICAgIFtjb250YWluZXJDbGFzc109XCJnbG9iYWxUb29sYmFyQ2xhc3NcIlxuICAgIFthbGlnbl09XCJ0aGVPcHRpb25zPy50b29sYmFyPy5hbGlnblwiXG4+PC90aGUtdG9vbGJhcj5cblxuPGRpdlxuICAgIGNsYXNzPVwidGhlLWVkaXRhYmxlLWNvbnRhaW5lclwiXG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAndGhlLWVkaXRvci1kaXNhYmxlZCc6IHRoZU9wdGlvbnM/LmRpc2FibGVkLFxuICAgICAgICAnbWF4LWhlaWdodCc6IG1heEhlaWdodFxuICAgIH1cIlxuICAgIFtuZ1N0eWxlXT1cInsgJ21heC1oZWlnaHQnOiBtYXhIZWlnaHQgfVwiXG4+XG4gICAgPHNsYXRlLWVkaXRhYmxlXG4gICAgICAgIGNsYXNzPVwidGhlLWVkaXRvci10eXBvXCJcbiAgICAgICAgW2VkaXRvcl09XCJlZGl0b3JcIlxuICAgICAgICBbbmdNb2RlbF09XCJlZGl0b3JWYWx1ZVwiXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInZhbHVlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbZGVjb3JhdGVdPVwiZGVjb3JhdGVcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwidGhlT3B0aW9ucz8ucGxhY2Vob2xkZXJcIlxuICAgICAgICBbcGxhY2Vob2xkZXJEZWNvcmF0ZV09XCJ0aGVPcHRpb25zPy5wbGFjZWhvbGRlckRlY29yYXRlID8gdGhlT3B0aW9ucz8ucGxhY2Vob2xkZXJEZWNvcmF0ZSA6IG51bGxcIlxuICAgICAgICBbcmVuZGVyRWxlbWVudF09XCJyZW5kZXJFbGVtZW50XCJcbiAgICAgICAgW3JlbmRlclRleHRdPVwicmVuZGVyVGV4dFwiXG4gICAgICAgIFtyZW5kZXJMZWFmXT1cInJlbmRlckxlYWZcIlxuICAgICAgICBbcmVhZG9ubHldPVwidGhlT3B0aW9ucz8ucmVhZG9ubHkgfHwgdGhlT3B0aW9ucz8uZGlzYWJsZWRcIlxuICAgICAgICBba2V5ZG93bl09XCJvbktleURvd25cIlxuICAgICAgICBbY2xpY2tdPVwib25DbGlja1wiXG4gICAgICAgIFtwYXN0ZV09XCJvblNsYVBhc3RlXCJcbiAgICAgICAgW2JlZm9yZUlucHV0XT1cIm9uU2xhQmVmb3JlSW5wdXRcIlxuICAgICAgICBbYmx1cl09XCJvblNsYUJsdXJcIlxuICAgICAgICBbZm9jdXNdPVwib25TbGFGb2N1c1wiXG4gICAgICAgIFtjb3B5XT1cIm9uU2xhQ29weVwiXG4gICAgICAgIFtjdXRdPVwib25TbGFDdXRcIlxuICAgICAgICBbaXNTdHJpY3REZWNvcmF0ZV09XCJmYWxzZVwiXG4gICAgICAgIFtjb21wb3NpdGlvblN0YXJ0XT1cIm9uU2xhQ29tcG9zaXRpb25TdGFydFwiXG4gICAgICAgIFtjb21wb3NpdGlvbkVuZF09XCJvblNsYUNvbXBvc2l0aW9uRW5kXCJcbiAgICAgICAgW2RyYWdTdGFydF09XCJvblNsYURyYWdTdGFydFwiXG4gICAgICAgIFtkcmFnT3Zlcl09XCJvblNsYURyYWdPdmVyXCJcbiAgICAgICAgW2Ryb3BdPVwib25Ecm9wXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJtb3VzZWRvd24oJGV2ZW50KVwiXG4gICAgPjwvc2xhdGUtZWRpdGFibGU+XG4gICAgPHRoZS1pbmxpbmUtdG9vbGJhclxuICAgICAgICAqbmdJZj1cIiF0aGVPcHRpb25zPy5yZWFkb25seSAmJiB0aGVPcHRpb25zPy5pbmxpbmVUb29iYXJWaXNpYmxlXCJcbiAgICAgICAgW2VkaXRvcl09XCJlZGl0b3JcIlxuICAgICAgICBbdG9vbGJhckl0ZW1zXT1cInRvb2xiYXJFbnRpdHkuaW5saW5lXCJcbiAgICA+PC90aGUtaW5saW5lLXRvb2xiYXI+XG4gICAgPGRpdlxuICAgICAgICAjcXVpY2tJbnNlcnRcbiAgICAgICAgdGhlUXVpY2tJbnNlcnRcbiAgICAgICAgW2VkaXRvcl09XCJlZGl0b3JcIlxuICAgICAgICBbcXVpY2tUb29sYmFySXRlbXNdPVwicXVpY2tUb29sYmFySXRlbXNcIlxuICAgICAgICBbaXNWaXNpYmxlXT1cInRoZU9wdGlvbnM/LnF1aWNrSW5zZXJ0VmlzaWJsZVwiXG4gICAgPjwvZGl2PlxuICAgIDx0aGUtdGVtcGxhdGUgI3RlbXBsYXRlSW5zdGFuY2U+PC90aGUtdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
@@ -1,23 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- import { AngularEditor } from 'slate-angular';
3
- export const TheEditor = Object.assign({}, AngularEditor);
4
- export var TheDataMode;
5
- (function (TheDataMode) {
6
- TheDataMode["json"] = "json";
7
- TheDataMode["html"] = "html";
8
- })(TheDataMode || (TheDataMode = {}));
9
- export var TheMode;
10
- (function (TheMode) {
11
- TheMode["default"] = "default";
12
- TheMode["print"] = "print";
13
- })(TheMode || (TheMode = {}));
14
- export class TheModeConfig {
15
- }
16
- export const THE_MODE_TOKEN = new InjectionToken('the-mode');
17
- export const THE_MODE_PROVIDER = {
18
- provide: THE_MODE_TOKEN,
19
- useValue: {
20
- mode: TheMode.default
21
- }
22
- };
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL2ludGVyZmFjZXMvZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsT0FBTyxFQUFFLGFBQWEsRUFBOEIsTUFBTSxlQUFlLENBQUM7QUF1QjFFLE1BQU0sQ0FBQyxNQUFNLFNBQVMscUJBQ2YsYUFBYSxDQUNuQixDQUFDO0FBRUYsTUFBTSxDQUFOLElBQVksV0FHWDtBQUhELFdBQVksV0FBVztJQUNuQiw0QkFBYSxDQUFBO0lBQ2IsNEJBQWEsQ0FBQTtBQUNqQixDQUFDLEVBSFcsV0FBVyxLQUFYLFdBQVcsUUFHdEI7QUFFRCxNQUFNLENBQU4sSUFBWSxPQUdYO0FBSEQsV0FBWSxPQUFPO0lBQ2YsOEJBQW1CLENBQUE7SUFDbkIsMEJBQWUsQ0FBQTtBQUNuQixDQUFDLEVBSFcsT0FBTyxLQUFQLE9BQU8sUUFHbEI7QUFFRCxNQUFNLE9BQU8sYUFBYTtDQUV6QjtBQUVELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxJQUFJLGNBQWMsQ0FBZ0IsVUFBVSxDQUFDLENBQUM7QUFFNUUsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUc7SUFDN0IsT0FBTyxFQUFFLGNBQWM7SUFDdkIsUUFBUSxFQUFFO1FBQ04sSUFBSSxFQUFFLE9BQU8sQ0FBQyxPQUFPO0tBQ3hCO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBbmNlc3RvciwgUmFuZ2UsIFBhdGgsIFBvaW50LCBOb2RlLCBTcGFuLCBOb2RlRW50cnksIEVkaXRvciwgRWxlbWVudCwgVGV4dCB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3IsIFNsYXRlUGxhY2Vob2xkZXIsIFZpZXdUeXBlIH0gZnJvbSAnc2xhdGUtYW5ndWxhcic7XG5pbXBvcnQgeyBIaXN0b3J5RWRpdG9yIH0gZnJvbSAnc2xhdGUtaGlzdG9yeSc7XG5pbXBvcnQgeyBFbGVtZW50T3B0aW9uc0luZm8gfSBmcm9tICcuL3ZhbGlkLWNoaWxkcmVuLXR5cGVzJztcbmltcG9ydCB7IFByZWRpY2F0ZSB9IGZyb20gJy4uL3V0aWxzL21hdGNoJztcbmltcG9ydCB7IFRvb2xiYXJPcHRpb24gfSBmcm9tICcuL3Rvb2xiYXInO1xuaW1wb3J0IHsgQ3VzdG9tRWxlbWVudEtpbmRzIH0gZnJvbSAnLi4vY3VzdG9tLXR5cGVzJztcbmltcG9ydCB7IEZvbnRTaXplcyB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUaGVQbHVnaW4gfSBmcm9tICcuL3BsdWdpbnMnO1xuaW1wb3J0IHsgT3ZlcnJpZGVCeUtleSwgTmVzdGVkU3RydWN0dXJlQnlLZXkgfSBmcm9tICcuL3V0aWxpdHknO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRoZUVkaXRvciBleHRlbmRzIEFuZ3VsYXJFZGl0b3IsIEhpc3RvcnlFZGl0b3Ige1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICBvcHRpb25zOiBUaGVPcHRpb25zO1xuICAgIHBsdWdpbnM6IFRoZVBsdWdpbltdO1xuICAgIGRpc2FibGVkOiBib29sZWFuO1xuICAgIHBsdWdpbnNCeUtleTogT3ZlcnJpZGVCeUtleTtcbiAgICBuZXN0ZWRTdHJ1Y3R1cmVCeUtleTogTmVzdGVkU3RydWN0dXJlQnlLZXk7XG4gICAgZXh0cmFFbGVtZW50T3B0aW9uczogRWxlbWVudE9wdGlvbnNJbmZvW107XG4gICAgcmVuZGVyRWxlbWVudDogKGVsZW1lbnQ6IEVsZW1lbnQpID0+IFZpZXdUeXBlO1xuICAgIHJlbmRlckxlYWY6ICh0ZXh0OiBUZXh0KSA9PiBWaWV3VHlwZTtcbiAgICBpc0NvbnRhaW5lcjogKGVsZW1lbnQ6IEVsZW1lbnQpID0+IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjb25zdCBUaGVFZGl0b3IgPSB7XG4gICAgLi4uQW5ndWxhckVkaXRvclxufTtcblxuZXhwb3J0IGVudW0gVGhlRGF0YU1vZGUge1xuICAgIGpzb24gPSAnanNvbicsXG4gICAgaHRtbCA9ICdodG1sJ1xufVxuXG5leHBvcnQgZW51bSBUaGVNb2RlIHtcbiAgICBkZWZhdWx0ID0gJ2RlZmF1bHQnLFxuICAgIHByaW50ID0gJ3ByaW50J1xufVxuXG5leHBvcnQgY2xhc3MgVGhlTW9kZUNvbmZpZyB7XG4gICAgbW9kZTogVGhlTW9kZTtcbn1cblxuZXhwb3J0IGNvbnN0IFRIRV9NT0RFX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPFRoZU1vZGVDb25maWc+KCd0aGUtbW9kZScpO1xuXG5leHBvcnQgY29uc3QgVEhFX01PREVfUFJPVklERVIgPSB7XG4gICAgcHJvdmlkZTogVEhFX01PREVfVE9LRU4sXG4gICAgdXNlVmFsdWU6IHtcbiAgICAgICAgbW9kZTogVGhlTW9kZS5kZWZhdWx0XG4gICAgfVxufTtcblxuZXhwb3J0IGludGVyZmFjZSBUaGVPcHRpb25zIHtcbiAgICBtb2RlPzogVGhlRGF0YU1vZGU7XG4gICAgcmVhZG9ubHk/OiBib29sZWFuO1xuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICBhdXRvRm9jdXM/OiBib29sZWFuO1xuICAgIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIHBsYWNlaG9sZGVyRGVjb3JhdGU/OiAoZWRpdG9yOiBFZGl0b3IpID0+IFNsYXRlUGxhY2Vob2xkZXJbXTtcbiAgICBpbmxpbmVUb29iYXJWaXNpYmxlPzogYm9vbGVhbjtcbiAgICBxdWlja0luc2VydFZpc2libGU/OiBib29sZWFuO1xuICAgIHNjcm9sbENvbnRhaW5lcj86IHN0cmluZztcbiAgICBtYXhIZWlnaHQ/OiBudW1iZXI7XG4gICAgZm9udFNpemU/OiBGb250U2l6ZXM7XG4gICAgcmljaE1lZGlhPzogYm9vbGVhbjtcbiAgICB0b29sYmFyPzogVG9vbGJhck9wdGlvbjtcbiAgICBkaXNhYmxlUGx1Z2lucz86IHN0cmluZ1tdO1xuICAgIGV4dHJhRWxlbWVudE9wdGlvbnM/OiBFbGVtZW50T3B0aW9uc0luZm9bXTtcbn1cblxuZXhwb3J0IHR5cGUgTm9kZU1hdGNoPFQgPSBOb2RlPiA9IFByZWRpY2F0ZTxUPjtcblxuZXhwb3J0IGludGVyZmFjZSBNYXRjaE9wdGlvbnM8VCA9IE5vZGU+IHtcbiAgICBtYXRjaD86IE5vZGVNYXRjaDxUPjtcbiAgICBibG9jaz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5kZW50T3B0aW9ucyB7XG4gICAgaW5kZW50VHlwZXM/OiBDdXN0b21FbGVtZW50S2luZHNbXTtcbiAgICBkaXNhYmxlZEluZGVudFR5cGVzPzogQ3VzdG9tRWxlbWVudEtpbmRzW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWRpdG9yQWJvdmVPcHRpb25zPFQgPSBBbmNlc3Rvcj4gZXh0ZW5kcyBNYXRjaE9wdGlvbnM8VD4ge1xuICAgIGF0PzogUmFuZ2UgfCBQYXRoIHwgUG9pbnQ7XG4gICAgbW9kZT86ICdoaWdoZXN0JyB8ICdsb3dlc3QnO1xuICAgIHZvaWRzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFZGl0b3JOb2Rlc09wdGlvbnMge1xuICAgIGF0PzogUmFuZ2UgfCBQYXRoIHwgUG9pbnQgfCBTcGFuO1xuICAgIG1hdGNoPzogKG5vZGU6IE5vZGUpID0+IGJvb2xlYW47XG4gICAgbW9kZT86ICdoaWdoZXN0JyB8ICdsb3dlc3QnIHwgJ2FsbCc7XG4gICAgdW5pdmVyc2FsPzogYm9vbGVhbjtcbiAgICByZXZlcnNlPzogYm9vbGVhbjtcbiAgICB2b2lkcz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV3JhcE9wdGlvbnMge1xuICAgIGF0PzogUGF0aCB8IFBvaW50IHwgUmFuZ2U7XG4gICAgbWF0Y2g/OiAobm9kZTogTm9kZSkgPT4gYm9vbGVhbjtcbiAgICBtb2RlPzogJ2hpZ2hlc3QnIHwgJ2xvd2VzdCcgfCAnYWxsJztcbiAgICBzcGxpdD86IGJvb2xlYW47XG4gICAgdm9pZHM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVkaXRvclBhcmVudE9wdGlvbnMge1xuICAgIGRlcHRoPzogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIGVkZ2U/OiAnc3RhcnQnIHwgJ2VuZCcgfCB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlPcHRpb25zIHtcbiAgICAvLyBDb25kaXRpb24gb24gdGhlIG5vZGUgdG8gYmUgdmFsaWQuXG4gICAgZmlsdGVyPzogKGVudHJ5OiBOb2RlRW50cnk8Tm9kZT4pID0+IGJvb2xlYW47XG4gICAgLy8gTGlzdCBvZiB0eXBlcyB0aGF0IGFyZSB2YWxpZC4gSWYgZW1wdHkgb3IgdW5kZWZpbmVkIC0gYWxsb3cgYWxsLlxuICAgIGFsbG93Pzogc3RyaW5nW107XG4gICAgLy8gTGlzdCBvZiB0eXBlcyB0aGF0IGFyZSBpbnZhbGlkLlxuICAgIGV4Y2x1ZGU/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb21FdmVudERhdGFJbmZvIHtcbiAgICBpbnB1dFR5cGU/OiBzdHJpbmc7XG4gICAga2V5Pzogc3RyaW5nO1xuICAgIHRleHQ/OiBzdHJpbmc7XG4gICAganNvbj86IE5vZGVbXTtcbn1cbiJdfQ==
@@ -1,48 +0,0 @@
1
- import { Transforms } from 'slate';
2
- import { Alignment, ALIGN_BLOCK_TYPES, ElementKinds } from '../../constants';
3
- import { TableEditor } from '../table/table.editor';
4
- import { TheContextService } from '../../services/context.service';
5
- import * as TheQueries from '../../queries';
6
- import { PluginKeys } from '../../interfaces';
7
- export const AlignEditor = {
8
- isActive(editor, alignment) {
9
- if (!(editor === null || editor === void 0 ? void 0 : editor.selection)) {
10
- return;
11
- }
12
- const tableCellAlign = TableEditor.isAlignActive(editor, alignment);
13
- if (tableCellAlign !== null) {
14
- return tableCellAlign;
15
- }
16
- const blockElement = TheQueries.anchorBlock(editor);
17
- if (blockElement) {
18
- const { align } = blockElement;
19
- if (!align && alignment === Alignment.left) {
20
- return true;
21
- }
22
- return align === alignment;
23
- }
24
- if (alignment === Alignment.left) {
25
- return true;
26
- }
27
- return false;
28
- },
29
- isDisabled(editor) {
30
- var _a;
31
- const contextService = (_a = editor === null || editor === void 0 ? void 0 : editor.injector) === null || _a === void 0 ? void 0 : _a.get(TheContextService);
32
- const { theOptions: { richMedia } } = contextService.getOptions();
33
- return TheQueries.getToolbarItemDisabled(editor, PluginKeys.align, richMedia ? [ElementKinds.image] : []);
34
- },
35
- setAlign(editor, alignment) {
36
- if (TableEditor.setAlign(editor, alignment)) {
37
- return;
38
- }
39
- const props = {
40
- align: alignment !== Alignment.left ? alignment : null
41
- };
42
- Transforms.setNodes(editor, props, {
43
- at: editor.selection,
44
- match: (n) => ALIGN_BLOCK_TYPES.includes(n.type)
45
- });
46
- }
47
- };
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpZ24uZWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvc3JjL3BsdWdpbnMvYWxpZ24vYWxpZ24uZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBVSxVQUFVLEVBQVcsTUFBTSxPQUFPLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxLQUFLLFVBQVUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTlDLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN2QixRQUFRLENBQUMsTUFBYyxFQUFFLFNBQW9CO1FBQ3pDLElBQUksQ0FBQyxDQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxTQUFTLENBQUEsRUFBRTtZQUNwQixPQUFPO1NBQ1Y7UUFDRCxNQUFNLGNBQWMsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNwRSxJQUFJLGNBQWMsS0FBSyxJQUFJLEVBQUU7WUFDekIsT0FBTyxjQUFjLENBQUM7U0FDekI7UUFFRCxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BELElBQUksWUFBWSxFQUFFO1lBQ2QsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLFlBQVksQ0FBQztZQUMvQixJQUFJLENBQUMsS0FBSyxJQUFJLFNBQVMsS0FBSyxTQUFTLENBQUMsSUFBSSxFQUFFO2dCQUN4QyxPQUFPLElBQUksQ0FBQzthQUNmO1lBQ0QsT0FBTyxLQUFLLEtBQUssU0FBUyxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxTQUFTLEtBQUssU0FBUyxDQUFDLElBQUksRUFBRTtZQUM5QixPQUFPLElBQUksQ0FBQztTQUNmO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUNELFVBQVUsQ0FBQyxNQUFjOztRQUNyQixNQUFNLGNBQWMsR0FBRyxNQUFBLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxRQUFRLDBDQUFFLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sRUFDRixVQUFVLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFDNUIsR0FBRyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEMsT0FBTyxVQUFVLENBQUMsc0JBQXNCLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDOUcsQ0FBQztJQUNELFFBQVEsQ0FBQyxNQUFjLEVBQUUsU0FBb0I7UUFDekMsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsRUFBRTtZQUN6QyxPQUFPO1NBQ1Y7UUFDRCxNQUFNLEtBQUssR0FBRztZQUNWLEtBQUssRUFBRSxTQUFTLEtBQUssU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJO1NBQ3pELENBQUM7UUFDRixVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUU7WUFDL0IsRUFBRSxFQUFFLE1BQU0sQ0FBQyxTQUFTO1lBQ3BCLEtBQUssRUFBRSxDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDNUQsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFZGl0b3IsIFRyYW5zZm9ybXMsIEVsZW1lbnQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBBbGlnbm1lbnQsIEFMSUdOX0JMT0NLX1RZUEVTLCBFbGVtZW50S2luZHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVGFibGVFZGl0b3IgfSBmcm9tICcuLi90YWJsZS90YWJsZS5lZGl0b3InO1xuaW1wb3J0IHsgVGhlQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCB7IFBsdWdpbktleXMgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcblxuZXhwb3J0IGNvbnN0IEFsaWduRWRpdG9yID0ge1xuICAgIGlzQWN0aXZlKGVkaXRvcjogRWRpdG9yLCBhbGlnbm1lbnQ6IEFsaWdubWVudCkge1xuICAgICAgICBpZiAoIWVkaXRvcj8uc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdGFibGVDZWxsQWxpZ24gPSBUYWJsZUVkaXRvci5pc0FsaWduQWN0aXZlKGVkaXRvciwgYWxpZ25tZW50KTtcbiAgICAgICAgaWYgKHRhYmxlQ2VsbEFsaWduICE9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGFibGVDZWxsQWxpZ247XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBibG9ja0VsZW1lbnQgPSBUaGVRdWVyaWVzLmFuY2hvckJsb2NrKGVkaXRvcik7XG4gICAgICAgIGlmIChibG9ja0VsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgYWxpZ24gfSA9IGJsb2NrRWxlbWVudDtcbiAgICAgICAgICAgIGlmICghYWxpZ24gJiYgYWxpZ25tZW50ID09PSBBbGlnbm1lbnQubGVmdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFsaWduID09PSBhbGlnbm1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFsaWdubWVudCA9PT0gQWxpZ25tZW50LmxlZnQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9LFxuICAgIGlzRGlzYWJsZWQoZWRpdG9yOiBFZGl0b3IpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgY29udGV4dFNlcnZpY2UgPSBlZGl0b3I/LmluamVjdG9yPy5nZXQoVGhlQ29udGV4dFNlcnZpY2UpO1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICB0aGVPcHRpb25zOiB7IHJpY2hNZWRpYSB9XG4gICAgICAgIH0gPSBjb250ZXh0U2VydmljZS5nZXRPcHRpb25zKCk7XG4gICAgICAgIHJldHVybiBUaGVRdWVyaWVzLmdldFRvb2xiYXJJdGVtRGlzYWJsZWQoZWRpdG9yLCBQbHVnaW5LZXlzLmFsaWduLCByaWNoTWVkaWEgPyBbRWxlbWVudEtpbmRzLmltYWdlXSA6IFtdKTtcbiAgICB9LFxuICAgIHNldEFsaWduKGVkaXRvcjogRWRpdG9yLCBhbGlnbm1lbnQ6IEFsaWdubWVudCkge1xuICAgICAgICBpZiAoVGFibGVFZGl0b3Iuc2V0QWxpZ24oZWRpdG9yLCBhbGlnbm1lbnQpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJvcHMgPSB7XG4gICAgICAgICAgICBhbGlnbjogYWxpZ25tZW50ICE9PSBBbGlnbm1lbnQubGVmdCA/IGFsaWdubWVudCA6IG51bGxcbiAgICAgICAgfTtcbiAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlcyhlZGl0b3IsIHByb3BzLCB7XG4gICAgICAgICAgICBhdDogZWRpdG9yLnNlbGVjdGlvbixcbiAgICAgICAgICAgIG1hdGNoOiAobjogRWxlbWVudCkgPT4gQUxJR05fQkxPQ0tfVFlQRVMuaW5jbHVkZXMobi50eXBlKVxuICAgICAgICB9KTtcbiAgICB9XG59O1xuIl19