@worktile/theia 18.0.15 → 18.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. package/constants/node-types.d.ts +1 -0
  2. package/core/toolbar-item/base-toolbar-item.d.ts +2 -2
  3. package/fesm2022/worktile-theia.mjs +304 -311
  4. package/fesm2022/worktile-theia.mjs.map +1 -1
  5. package/interfaces/view-base.d.ts +1 -1
  6. package/package.json +2 -4
  7. package/plugins/code/code.component.scss +1 -2
  8. package/plugins/image/image.component.d.ts +1 -1
  9. package/plugins/link/link.component.d.ts +1 -1
  10. package/plugins/mention/suggestion.component.d.ts +1 -1
  11. package/plugins/vertical-align/toolbar-item.component.d.ts +3 -2
  12. package/esm2022/components/action/prevent-default.mjs +0 -21
  13. package/esm2022/components/column-resize/column-resize-notifier.mjs +0 -31
  14. package/esm2022/components/column-resize/column-resize.directive.mjs +0 -124
  15. package/esm2022/components/column-resize/event-dispatcher.mjs +0 -56
  16. package/esm2022/components/column-resize/overlay-handle.component.mjs +0 -144
  17. package/esm2022/components/column-resize/resize-ref.mjs +0 -26
  18. package/esm2022/components/column-resize/resizing.store.mjs +0 -92
  19. package/esm2022/components/column-resize/selectors.mjs +0 -4
  20. package/esm2022/components/contextmenu/contextmenu.component.mjs +0 -99
  21. package/esm2022/components/conversion-hint/conversion-hint.component.mjs +0 -56
  22. package/esm2022/components/element/element.component.mjs +0 -23
  23. package/esm2022/components/index.mjs +0 -24
  24. package/esm2022/components/inline-toolbar/inline-toolbar.component.mjs +0 -131
  25. package/esm2022/components/listbox/listbox.mjs +0 -380
  26. package/esm2022/components/listbox/listbox.type.mjs +0 -5
  27. package/esm2022/components/plugin-menu/plugin-menu.component.mjs +0 -272
  28. package/esm2022/components/table-select/table-select.component.mjs +0 -49
  29. package/esm2022/components/template/template.component.mjs +0 -62
  30. package/esm2022/components/text/text.component.mjs +0 -57
  31. package/esm2022/components/toolbar/toolbar.component.mjs +0 -262
  32. package/esm2022/components/toolbar-dropdown/toolbar-dropdown.component.mjs +0 -137
  33. package/esm2022/components/toolbar-group/toolbar-group.component.mjs +0 -125
  34. package/esm2022/components/toolbar-item/toolbar-item.component.mjs +0 -80
  35. package/esm2022/constants/auto-format-rules.mjs +0 -167
  36. package/esm2022/constants/code.mjs +0 -85
  37. package/esm2022/constants/color-select.mjs +0 -3
  38. package/esm2022/constants/default.mjs +0 -11
  39. package/esm2022/constants/error.mjs +0 -7
  40. package/esm2022/constants/index.mjs +0 -9
  41. package/esm2022/constants/node-types.mjs +0 -136
  42. package/esm2022/constants/plugin-menu.mjs +0 -311
  43. package/esm2022/constants/selector.mjs +0 -3
  44. package/esm2022/constants/toolbar.mjs +0 -53
  45. package/esm2022/core/create-plugin.mjs +0 -5
  46. package/esm2022/core/create-toolbar.mjs +0 -55
  47. package/esm2022/core/index.mjs +0 -6
  48. package/esm2022/core/toolbar-item/base-toolbar-item.mjs +0 -95
  49. package/esm2022/core/utils/combine-plugins.mjs +0 -10
  50. package/esm2022/core/utils/flatten-deep-plugins.mjs +0 -19
  51. package/esm2022/core/utils/get-plugin-options.mjs +0 -3
  52. package/esm2022/core/utils/get-plugin.mjs +0 -2
  53. package/esm2022/core/utils/get-plugins.mjs +0 -4
  54. package/esm2022/core/utils/index.mjs +0 -12
  55. package/esm2022/core/utils/merge-array.mjs +0 -18
  56. package/esm2022/core/utils/merge-deep-plugins.mjs +0 -14
  57. package/esm2022/core/utils/merge-options.mjs +0 -25
  58. package/esm2022/core/utils/nested-structure-by-key.mjs +0 -11
  59. package/esm2022/core/utils/plugin-menu.mjs +0 -63
  60. package/esm2022/core/utils/plugins-by-key.mjs +0 -10
  61. package/esm2022/core/with-theia.mjs +0 -25
  62. package/esm2022/custom-types.mjs +0 -2
  63. package/esm2022/editor.component.mjs +0 -488
  64. package/esm2022/editor.module.mjs +0 -18
  65. package/esm2022/i18n/i18n.mjs +0 -10
  66. package/esm2022/i18n/i18n.service.mjs +0 -46
  67. package/esm2022/i18n/i18n.token.mjs +0 -9
  68. package/esm2022/i18n/index.mjs +0 -10
  69. package/esm2022/i18n/locales/de-de.mjs +0 -102
  70. package/esm2022/i18n/locales/en-us.mjs +0 -102
  71. package/esm2022/i18n/locales/ja-jp.mjs +0 -102
  72. package/esm2022/i18n/locales/ru-ru.mjs +0 -102
  73. package/esm2022/i18n/locales/zh-hans.mjs +0 -102
  74. package/esm2022/i18n/locales/zh-hant.mjs +0 -102
  75. package/esm2022/interfaces/auto-format.mjs +0 -2
  76. package/esm2022/interfaces/editor.mjs +0 -26
  77. package/esm2022/interfaces/element.mjs +0 -2
  78. package/esm2022/interfaces/image.mjs +0 -3
  79. package/esm2022/interfaces/index.mjs +0 -11
  80. package/esm2022/interfaces/plugins/index.mjs +0 -6
  81. package/esm2022/interfaces/plugins/no-infer.mjs +0 -2
  82. package/esm2022/interfaces/plugins/plugin-key.mjs +0 -42
  83. package/esm2022/interfaces/plugins/plugin-menu.mjs +0 -19
  84. package/esm2022/interfaces/plugins/plugins.mjs +0 -2
  85. package/esm2022/interfaces/plugins/with-override.mjs +0 -2
  86. package/esm2022/interfaces/preset.mjs +0 -3
  87. package/esm2022/interfaces/reset-block-type-plugin-options.mjs +0 -2
  88. package/esm2022/interfaces/toolbar.mjs +0 -12
  89. package/esm2022/interfaces/upload.mjs +0 -2
  90. package/esm2022/interfaces/utility/index.mjs +0 -4
  91. package/esm2022/interfaces/utility/nested-structure-by-key.mjs +0 -2
  92. package/esm2022/interfaces/utility/override-by-key.mjs +0 -2
  93. package/esm2022/interfaces/utility/types.mjs +0 -2
  94. package/esm2022/interfaces/valid-children-types.mjs +0 -36
  95. package/esm2022/interfaces/view-base.mjs +0 -38
  96. package/esm2022/pipes.mjs +0 -61
  97. package/esm2022/plugins/align/align.editor.mjs +0 -41
  98. package/esm2022/plugins/align/align.plugin.mjs +0 -64
  99. package/esm2022/plugins/autoformat/autoformat.plugin.mjs +0 -109
  100. package/esm2022/plugins/autoformat/transforms/auto-format-block.mjs +0 -14
  101. package/esm2022/plugins/autoformat/transforms/auto-format-inline.mjs +0 -78
  102. package/esm2022/plugins/blockquote/blockquote.component.mjs +0 -16
  103. package/esm2022/plugins/blockquote/blockquote.editor.mjs +0 -20
  104. package/esm2022/plugins/blockquote/blockquote.plugin.mjs +0 -84
  105. package/esm2022/plugins/code/code.component.mjs +0 -255
  106. package/esm2022/plugins/code/code.editor.mjs +0 -59
  107. package/esm2022/plugins/code/code.plugin.mjs +0 -67
  108. package/esm2022/plugins/color/color.editor.mjs +0 -27
  109. package/esm2022/plugins/color/color.plugin.mjs +0 -32
  110. package/esm2022/plugins/color/toolbar-item.component.mjs +0 -99
  111. package/esm2022/plugins/common/block-card.plugin.mjs +0 -330
  112. package/esm2022/plugins/common/common.plugin.mjs +0 -49
  113. package/esm2022/plugins/common/get-fragment.plugin.mjs +0 -24
  114. package/esm2022/plugins/common/history.plugin.mjs +0 -31
  115. package/esm2022/plugins/common/insert-data-by-invalid-type.mjs +0 -23
  116. package/esm2022/plugins/common/move-selection.plugin.mjs +0 -105
  117. package/esm2022/plugins/common/remove-empty.plugin.mjs +0 -61
  118. package/esm2022/plugins/common/remove-void.plugin.mjs +0 -60
  119. package/esm2022/plugins/common/reset-type.plugin.mjs +0 -35
  120. package/esm2022/plugins/deserialize/deserialize-html.plugin.mjs +0 -61
  121. package/esm2022/plugins/deserialize/deserialize-md.plugin.mjs +0 -142
  122. package/esm2022/plugins/font-size/font-size.editor.mjs +0 -98
  123. package/esm2022/plugins/heading/heading.editor.mjs +0 -54
  124. package/esm2022/plugins/heading/heading.plugin.mjs +0 -136
  125. package/esm2022/plugins/hr/hr.component.mjs +0 -37
  126. package/esm2022/plugins/hr/hr.editor.mjs +0 -16
  127. package/esm2022/plugins/hr/hr.plugin.mjs +0 -56
  128. package/esm2022/plugins/image/image.component.mjs +0 -474
  129. package/esm2022/plugins/image/image.editor.mjs +0 -116
  130. package/esm2022/plugins/image/image.plugin.mjs +0 -90
  131. package/esm2022/plugins/indent/indent.editor.mjs +0 -78
  132. package/esm2022/plugins/indent/indent.plugin.mjs +0 -59
  133. package/esm2022/plugins/indent/on-keydown-indent.mjs +0 -59
  134. package/esm2022/plugins/index.mjs +0 -73
  135. package/esm2022/plugins/inline-code/inline-code.component.mjs +0 -28
  136. package/esm2022/plugins/inline-code/inline-code.editor.mjs +0 -49
  137. package/esm2022/plugins/inline-code/inline-code.plugin.mjs +0 -67
  138. package/esm2022/plugins/link/edit/link-edit.component.mjs +0 -104
  139. package/esm2022/plugins/link/hover/link-hover.component.mjs +0 -38
  140. package/esm2022/plugins/link/link.component.mjs +0 -170
  141. package/esm2022/plugins/link/link.editor.mjs +0 -87
  142. package/esm2022/plugins/link/link.plugin.mjs +0 -89
  143. package/esm2022/plugins/link/link.types.mjs +0 -12
  144. package/esm2022/plugins/list/components/bulleted-list.component.mjs +0 -28
  145. package/esm2022/plugins/list/components/list-item.component.mjs +0 -88
  146. package/esm2022/plugins/list/components/numbered-list.component.mjs +0 -37
  147. package/esm2022/plugins/list/list.editor.mjs +0 -128
  148. package/esm2022/plugins/list/list.plugin.mjs +0 -302
  149. package/esm2022/plugins/list/normalizers/get-list-normalizer.mjs +0 -39
  150. package/esm2022/plugins/list/normalizers/normalize-list-item.mjs +0 -18
  151. package/esm2022/plugins/list/normalizers/normalize-no.mjs +0 -43
  152. package/esm2022/plugins/list/on-key-down-list.mjs +0 -33
  153. package/esm2022/plugins/list/queries/get-list-item-entry.mjs +0 -28
  154. package/esm2022/plugins/list/queries/get-list-item-sublist.mjs +0 -12
  155. package/esm2022/plugins/list/queries/get-list-types.mjs +0 -5
  156. package/esm2022/plugins/list/queries/get-start-list-item.mjs +0 -27
  157. package/esm2022/plugins/list/queries/has-list-in-list-item.mjs +0 -27
  158. package/esm2022/plugins/list/queries/is-in-list.mjs +0 -6
  159. package/esm2022/plugins/list/queries/is-list-nested.mjs +0 -10
  160. package/esm2022/plugins/list/queries/is-list.mjs +0 -5
  161. package/esm2022/plugins/list/queries/is-node-type-list.mjs +0 -5
  162. package/esm2022/plugins/list/queries/is-selection-at-list-item-start.mjs +0 -13
  163. package/esm2022/plugins/list/queries/is-selection-in-same-list-item.mjs +0 -17
  164. package/esm2022/plugins/list/queries/is-single-list-item.mjs +0 -9
  165. package/esm2022/plugins/list/transforms/insert-list-data.mjs +0 -72
  166. package/esm2022/plugins/list/transforms/insert-list-item.mjs +0 -73
  167. package/esm2022/plugins/list/transforms/move-list-item-down.mjs +0 -41
  168. package/esm2022/plugins/list/transforms/move-list-item-sublist-items-to-list-item-sublist.mjs +0 -43
  169. package/esm2022/plugins/list/transforms/move-list-item-sublist-items-to-list.mjs +0 -30
  170. package/esm2022/plugins/list/transforms/move-list-item-up.mjs +0 -78
  171. package/esm2022/plugins/list/transforms/unwrap-list.mjs +0 -10
  172. package/esm2022/plugins/list/types.mjs +0 -2
  173. package/esm2022/plugins/mark/mark.editor.mjs +0 -28
  174. package/esm2022/plugins/mark/mark.plugin.mjs +0 -105
  175. package/esm2022/plugins/mention/index.mjs +0 -5
  176. package/esm2022/plugins/mention/mention.editor.mjs +0 -179
  177. package/esm2022/plugins/mention/mention.plugin.mjs +0 -92
  178. package/esm2022/plugins/mention/mention.type.mjs +0 -2
  179. package/esm2022/plugins/mention/suggestion.component.mjs +0 -22
  180. package/esm2022/plugins/node-id/node-id.plugin.mjs +0 -78
  181. package/esm2022/plugins/normalizers/insert-paragraph-nodes.mjs +0 -28
  182. package/esm2022/plugins/normalizers/remove-empty-nodes.mjs +0 -18
  183. package/esm2022/plugins/normalizers/trailing-node.plugin.mjs +0 -33
  184. package/esm2022/plugins/paint-format/paint-format.editor.mjs +0 -126
  185. package/esm2022/plugins/public-api.mjs +0 -20
  186. package/esm2022/plugins/quick-insert/components/quick-insert.component.mjs +0 -126
  187. package/esm2022/plugins/quick-insert/index.mjs +0 -4
  188. package/esm2022/plugins/quick-insert/quick-insert.editor.mjs +0 -70
  189. package/esm2022/plugins/quick-insert/quick-insert.plugin.mjs +0 -109
  190. package/esm2022/plugins/soft-break/soft-break.plugin.mjs +0 -36
  191. package/esm2022/plugins/soft-break/soft-break.types.mjs +0 -2
  192. package/esm2022/plugins/table/components/insert-mark/insert-mark.component.mjs +0 -132
  193. package/esm2022/plugins/table/components/row/row.component.mjs +0 -93
  194. package/esm2022/plugins/table/components/table.component.mjs +0 -887
  195. package/esm2022/plugins/table/components/td/td.component.mjs +0 -610
  196. package/esm2022/plugins/table/components/toolbar/table-options.component.mjs +0 -102
  197. package/esm2022/plugins/table/components/toolbar/table-toolbar.component.mjs +0 -179
  198. package/esm2022/plugins/table/table.editor.mjs +0 -301
  199. package/esm2022/plugins/table/table.pipe.mjs +0 -66
  200. package/esm2022/plugins/table/table.plugin.mjs +0 -556
  201. package/esm2022/plugins/table/table.service.mjs +0 -122
  202. package/esm2022/plugins/table/table.store.mjs +0 -417
  203. package/esm2022/plugins/table/table.types.mjs +0 -68
  204. package/esm2022/plugins/table/toolbar-item.component.mjs +0 -95
  205. package/esm2022/plugins/table/transforms/clear-cell.mjs +0 -14
  206. package/esm2022/plugins/table/transforms/clear-table-node.mjs +0 -27
  207. package/esm2022/plugins/table/transforms/index.mjs +0 -8
  208. package/esm2022/plugins/table/transforms/insert-column.mjs +0 -69
  209. package/esm2022/plugins/table/transforms/insert-row.mjs +0 -50
  210. package/esm2022/plugins/table/transforms/insert-table.mjs +0 -15
  211. package/esm2022/plugins/table/transforms/move-selection-from-cell.mjs +0 -91
  212. package/esm2022/plugins/table/transforms/remove-column.mjs +0 -51
  213. package/esm2022/plugins/table/transforms/remove-row.mjs +0 -48
  214. package/esm2022/plugins/table/transforms/remove-table.mjs +0 -49
  215. package/esm2022/plugins/table/utils/add-columns.mjs +0 -38
  216. package/esm2022/plugins/table/utils/calc-anchor-position.mjs +0 -26
  217. package/esm2022/plugins/table/utils/calc-span.mjs +0 -73
  218. package/esm2022/plugins/table/utils/calculate-table.mjs +0 -116
  219. package/esm2022/plugins/table/utils/cell-position.mjs +0 -57
  220. package/esm2022/plugins/table/utils/create-cell.mjs +0 -19
  221. package/esm2022/plugins/table/utils/create-row.mjs +0 -12
  222. package/esm2022/plugins/table/utils/create-table-position.mjs +0 -10
  223. package/esm2022/plugins/table/utils/create-table.mjs +0 -15
  224. package/esm2022/plugins/table/utils/get-grid-columns.mjs +0 -79
  225. package/esm2022/plugins/table/utils/get-min-max-cell-index.mjs +0 -69
  226. package/esm2022/plugins/table/utils/get-next-cell.mjs +0 -44
  227. package/esm2022/plugins/table/utils/get-select-cell-node.mjs +0 -16
  228. package/esm2022/plugins/table/utils/handle-cell.mjs +0 -25
  229. package/esm2022/plugins/table/utils/index.mjs +0 -16
  230. package/esm2022/plugins/table/utils/is-header-row.mjs +0 -15
  231. package/esm2022/plugins/table/utils/is-legal-table.mjs +0 -26
  232. package/esm2022/plugins/table/utils/is-range-in-table.mjs +0 -16
  233. package/esm2022/plugins/table/utils/is-selection-in-table.mjs +0 -51
  234. package/esm2022/plugins/table/utils/is-virtual-key.mjs +0 -13
  235. package/esm2022/plugins/table/utils/merge-cell.mjs +0 -110
  236. package/esm2022/plugins/table/utils/next-path.mjs +0 -5
  237. package/esm2022/plugins/table/utils/normalize-table.mjs +0 -31
  238. package/esm2022/plugins/table/utils/remove-columns.mjs +0 -23
  239. package/esm2022/plugins/table/utils/remove-row-column.mjs +0 -45
  240. package/esm2022/plugins/table/utils/set-menu-cell-invisibility.mjs +0 -45
  241. package/esm2022/plugins/table/utils/split-cell.mjs +0 -29
  242. package/esm2022/plugins/table/utils/table-entry.mjs +0 -21
  243. package/esm2022/plugins/table/utils/table-position.mjs +0 -251
  244. package/esm2022/plugins/table/utils/table-viewport.mjs +0 -41
  245. package/esm2022/plugins/todo-item/todo-item.component.mjs +0 -65
  246. package/esm2022/plugins/todo-item/todo-item.editor.mjs +0 -32
  247. package/esm2022/plugins/todo-item/todo-item.plugin.mjs +0 -93
  248. package/esm2022/plugins/vertical-align/toolbar-item.component.mjs +0 -89
  249. package/esm2022/plugins/vertical-align/vertical-align.editor.mjs +0 -59
  250. package/esm2022/public-api.mjs +0 -22
  251. package/esm2022/queries/anchor-block-entry.mjs +0 -13
  252. package/esm2022/queries/anchor-block.mjs +0 -6
  253. package/esm2022/queries/anchor-inline-entry.mjs +0 -10
  254. package/esm2022/queries/find-descendant.mjs +0 -47
  255. package/esm2022/queries/find-node.mjs +0 -45
  256. package/esm2022/queries/find-path.mjs +0 -28
  257. package/esm2022/queries/get-above-by-type.mjs +0 -14
  258. package/esm2022/queries/get-above.mjs +0 -9
  259. package/esm2022/queries/get-anchor-block-entry.mjs +0 -8
  260. package/esm2022/queries/get-block-above.mjs +0 -10
  261. package/esm2022/queries/get-block-card-above.mjs +0 -10
  262. package/esm2022/queries/get-block-card-cursor.mjs +0 -9
  263. package/esm2022/queries/get-container-blocks.mjs +0 -12
  264. package/esm2022/queries/get-directly-parent.mjs +0 -12
  265. package/esm2022/queries/get-insert-elements-path.mjs +0 -46
  266. package/esm2022/queries/get-last-child-path.mjs +0 -9
  267. package/esm2022/queries/get-last-node.mjs +0 -17
  268. package/esm2022/queries/get-next-sibling-nodes.mjs +0 -17
  269. package/esm2022/queries/get-node.mjs +0 -10
  270. package/esm2022/queries/get-nodes-by-type.mjs +0 -15
  271. package/esm2022/queries/get-nodes.mjs +0 -7
  272. package/esm2022/queries/get-parent.mjs +0 -12
  273. package/esm2022/queries/get-plain-text.mjs +0 -16
  274. package/esm2022/queries/get-plugin-by-toolbar.mjs +0 -13
  275. package/esm2022/queries/get-point-before.mjs +0 -62
  276. package/esm2022/queries/get-point-from-location.mjs +0 -15
  277. package/esm2022/queries/get-previous-path.mjs +0 -9
  278. package/esm2022/queries/get-rang-from-block-start.mjs +0 -16
  279. package/esm2022/queries/get-range-before.mjs +0 -17
  280. package/esm2022/queries/get-selection-marks.mjs +0 -18
  281. package/esm2022/queries/get-selection-nodes-by-type.mjs +0 -30
  282. package/esm2022/queries/get-text.mjs +0 -9
  283. package/esm2022/queries/get-toolbar-disabled.mjs +0 -13
  284. package/esm2022/queries/index.mjs +0 -62
  285. package/esm2022/queries/is-across-blocks.mjs +0 -7
  286. package/esm2022/queries/is-ancestor-empty.mjs +0 -6
  287. package/esm2022/queries/is-ancestor.mjs +0 -3
  288. package/esm2022/queries/is-block-above-empty.mjs +0 -11
  289. package/esm2022/queries/is-block-active.mjs +0 -8
  290. package/esm2022/queries/is-block-card-cursor.mjs +0 -16
  291. package/esm2022/queries/is-block-text-empty-after-selection.mjs +0 -31
  292. package/esm2022/queries/is-collapsed.mjs +0 -7
  293. package/esm2022/queries/is-contain-nested-type.mjs +0 -29
  294. package/esm2022/queries/is-container-type.mjs +0 -3
  295. package/esm2022/queries/is-descendant.mjs +0 -3
  296. package/esm2022/queries/is-empty-content-filter.mjs +0 -22
  297. package/esm2022/queries/is-empty-content.mjs +0 -15
  298. package/esm2022/queries/is-empty-paragraph-by-path.mjs +0 -7
  299. package/esm2022/queries/is-empty-paragraph.mjs +0 -28
  300. package/esm2022/queries/is-first-child.mjs +0 -5
  301. package/esm2022/queries/is-global-collapsed.mjs +0 -5
  302. package/esm2022/queries/is-include-types.mjs +0 -12
  303. package/esm2022/queries/is-node-type-in.mjs +0 -9
  304. package/esm2022/queries/is-node-type.mjs +0 -15
  305. package/esm2022/queries/is-paragraph.mjs +0 -9
  306. package/esm2022/queries/is-point-at-root.mjs +0 -2
  307. package/esm2022/queries/is-range-across-blocks.mjs +0 -22
  308. package/esm2022/queries/is-range-at-root.mjs +0 -3
  309. package/esm2022/queries/is-root-path.mjs +0 -2
  310. package/esm2022/queries/is-start.mjs +0 -6
  311. package/esm2022/queries/some-node.mjs +0 -9
  312. package/esm2022/services/context.service.mjs +0 -140
  313. package/esm2022/services/table-contextmenu.service.mjs +0 -288
  314. package/esm2022/services/toolbar.service.mjs +0 -47
  315. package/esm2022/shortcuts/index.mjs +0 -5
  316. package/esm2022/shortcuts/mark.mjs +0 -25
  317. package/esm2022/test/basic/basic.component.mjs +0 -61
  318. package/esm2022/test/faker/data-transfer-faker.mjs +0 -13
  319. package/esm2022/test/faker/tethys-icon-faker.mjs +0 -22
  320. package/esm2022/test/index.mjs +0 -7
  321. package/esm2022/test/utils/mock-plugins.mjs +0 -104
  322. package/esm2022/test/utils/preset-config.mjs +0 -17
  323. package/esm2022/test/utils/with-plugin.mjs +0 -11
  324. package/esm2022/transforms/apply-deep-to-nodes.mjs +0 -22
  325. package/esm2022/transforms/clear-marks.mjs +0 -23
  326. package/esm2022/transforms/delete-element.mjs +0 -12
  327. package/esm2022/transforms/delete-node-by-type.mjs +0 -10
  328. package/esm2022/transforms/handle-continual-delete-backward.mjs +0 -18
  329. package/esm2022/transforms/handle-continual-insert-break.mjs +0 -20
  330. package/esm2022/transforms/index.mjs +0 -19
  331. package/esm2022/transforms/insert-elements.mjs +0 -55
  332. package/esm2022/transforms/insert-paragraph.mjs +0 -6
  333. package/esm2022/transforms/merge-deep-to-nodes.mjs +0 -9
  334. package/esm2022/transforms/move-children.mjs +0 -22
  335. package/esm2022/transforms/on-keydown-reset-block-type.mjs +0 -23
  336. package/esm2022/transforms/set-end-selection.mjs +0 -10
  337. package/esm2022/transforms/set-marks.mjs +0 -9
  338. package/esm2022/transforms/set-node-by-type.mjs +0 -10
  339. package/esm2022/transforms/set-node.mjs +0 -6
  340. package/esm2022/transforms/un-hang-range.mjs +0 -11
  341. package/esm2022/transforms/un-wrap.mjs +0 -12
  342. package/esm2022/transforms/unwrap-nodes-by-type.mjs +0 -14
  343. package/esm2022/utils/auto-focus.mjs +0 -24
  344. package/esm2022/utils/blob.mjs +0 -16
  345. package/esm2022/utils/cast-array.mjs +0 -7
  346. package/esm2022/utils/color-picker.mjs +0 -15
  347. package/esm2022/utils/common.mjs +0 -11
  348. package/esm2022/utils/copy-node.mjs +0 -38
  349. package/esm2022/utils/create-empty-paragraph.mjs +0 -14
  350. package/esm2022/utils/data-transform.mjs +0 -48
  351. package/esm2022/utils/dom.mjs +0 -56
  352. package/esm2022/utils/editor-uuid.mjs +0 -8
  353. package/esm2022/utils/fragment.mjs +0 -82
  354. package/esm2022/utils/get-editable-element-height.mjs +0 -6
  355. package/esm2022/utils/get-mode.mjs +0 -14
  356. package/esm2022/utils/get-toolbar-class.mjs +0 -6
  357. package/esm2022/utils/id-creator.mjs +0 -11
  358. package/esm2022/utils/index.mjs +0 -23
  359. package/esm2022/utils/insert-data-by-invalid-type.mjs +0 -70
  360. package/esm2022/utils/is-clean-empty-paragraph.mjs +0 -37
  361. package/esm2022/utils/is-inline.mjs +0 -9
  362. package/esm2022/utils/lodash.mjs +0 -3
  363. package/esm2022/utils/match.mjs +0 -32
  364. package/esm2022/utils/merge-element-options.mjs +0 -19
  365. package/esm2022/utils/normalize.mjs +0 -61
  366. package/esm2022/utils/refocus.mjs +0 -47
  367. package/esm2022/utils/scrolling.mjs +0 -43
  368. package/esm2022/utils/update-popover-position.mjs +0 -26
  369. package/esm2022/utils/weak-maps.mjs +0 -9
  370. package/esm2022/worktile-theia.mjs +0 -5
@@ -1,89 +0,0 @@
1
- import getUrls from 'get-urls';
2
- import isUrl from 'is-url';
3
- import { Transforms } from 'slate';
4
- import { getClipboardData } from 'slate-angular';
5
- import { DISABLED_OPERATE_TYPES, ElementKinds, PluginMenuIcons, ThePluginMenuItemType } from '../../constants';
6
- import { createPluginFactory } from '../../core';
7
- import { PluginKeys } from '../../interfaces';
8
- import { cloneDeep } from '../../utils/lodash';
9
- import { withRemoveEmptyNodes } from '../normalizers/remove-empty-nodes';
10
- import { TheLink } from './link.component';
11
- import { LinkEditor } from './link.editor';
12
- export const withLink = (editor) => {
13
- const { insertText, isInline, insertFragmentData, renderElement } = editor;
14
- editor.isInline = (element) => {
15
- return element.type === ElementKinds.link ? true : isInline(element);
16
- };
17
- editor.insertText = text => {
18
- if (text && isUrl(text)) {
19
- LinkEditor.wrapLink(editor, text, text);
20
- Transforms.move(editor, { distance: 1, unit: 'offset' });
21
- }
22
- else {
23
- insertText(text);
24
- }
25
- };
26
- editor.insertFragmentData = async (data) => {
27
- const clipboardData = await getClipboardData(data);
28
- const text = clipboardData?.text;
29
- if (!clipboardData?.elements && text && isUrl(text)) {
30
- const urls = Array.from(getUrls(text, { stripWWW: false, sortQueryParameters: false }));
31
- if (urls.length) {
32
- let str = cloneDeep(text);
33
- urls.forEach((url, index) => {
34
- const parts = str.split(url);
35
- const beforeUrl = parts[0];
36
- insertText(beforeUrl);
37
- LinkEditor.wrapLink(editor, url, url);
38
- Transforms.move(editor, { distance: 1, unit: 'offset' });
39
- str = parts[1];
40
- if (index === urls.length - 1) {
41
- insertText(str);
42
- }
43
- });
44
- return true;
45
- }
46
- }
47
- return insertFragmentData(data);
48
- };
49
- editor.renderElement = (element) => {
50
- if (element.type === ElementKinds.link) {
51
- return TheLink;
52
- }
53
- return renderElement(element);
54
- };
55
- editor = withRemoveEmptyNodes({ type: ElementKinds.link })(editor);
56
- return editor;
57
- };
58
- export const createLinkPlugin = (locale) => createPluginFactory({
59
- key: PluginKeys.link,
60
- withOverrides: withLink,
61
- toolbarItems: [
62
- {
63
- key: ElementKinds.link,
64
- icon: 'link-insert',
65
- name: locale().link,
66
- execute: editor => LinkEditor.insertLink(editor),
67
- active: editor => LinkEditor.isActive(editor)
68
- }
69
- ],
70
- menuItems: [
71
- {
72
- key: ElementKinds.link,
73
- keywords: `lj,lianjie,link,${locale().link}`,
74
- description: locale().linkDesc,
75
- execute: editor => LinkEditor.insertLink(editor),
76
- active: editor => LinkEditor.isActive(editor),
77
- type: ThePluginMenuItemType.icon,
78
- name: locale().link,
79
- displayKey: '/lj',
80
- icon: 'link-insert',
81
- menuIcon: PluginMenuIcons.link
82
- }
83
- ],
84
- options: {
85
- isInline: true,
86
- disabledOperateTypes: [ElementKinds.image, ...DISABLED_OPERATE_TYPES]
87
- }
88
- })();
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9saW5rL2xpbmsucGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sT0FBTyxNQUFNLFVBQVUsQ0FBQztBQUMvQixPQUFPLEtBQUssTUFBTSxRQUFRLENBQUM7QUFDM0IsT0FBTyxFQUFtQixVQUFVLEVBQUUsTUFBTSxPQUFPLENBQUM7QUFDcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLHFCQUFxQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0csT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFJM0MsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLENBQW1CLE1BQVMsRUFBSyxFQUFFO0lBQ3ZELE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUUzRSxNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsT0FBZ0IsRUFBRSxFQUFFO1FBQ25DLE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMs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UUFBUTtJQUN2QixZQUFZLEVBQUU7UUFDVjtZQUNJLEdBQUcsRUFBRSxZQUFZLENBQUMsSUFBSTtZQUN0QixJQUFJLEVBQUUsYUFBYTtZQUNuQixJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsSUFBSTtZQUNuQixPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztZQUNoRCxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztTQUNoRDtLQUNKO0lBQ0QsU0FBUyxFQUFFO1FBQ1A7WUFDSSxHQUFHLEVBQUUsWUFBWSxDQUFDLElBQUk7WUFDdEIsUUFBUSxFQUFFLG1CQUFtQixNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUU7WUFDNUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDLFFBQVE7WUFDOUIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDaEQsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7WUFDN0MsSUFBSSxFQUFFLHFCQUFxQixDQUFDLElBQUk7WUFDaEMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLElBQUk7WUFDbkIsVUFBVSxFQUFFLEtBQUs7WUFDakIsSUFBSSxFQUFFLGFBQWE7WUFDbkIsUUFBUSxFQUFFLGVBQWUsQ0FBQyxJQUFJO1NBQ2pDO0tBQ0o7SUFDRCxPQUFPLEVBQUU7UUFDTCxRQUFRLEVBQUUsSUFBSTtRQUNkLG9CQUFvQixFQUFFLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxHQUFHLHNCQUFzQixDQUFDO0tBQ3hFO0NBQ0osQ0FBQyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ2V0VXJscyBmcm9tICdnZXQtdXJscyc7XG5pbXBvcnQgaXNVcmwgZnJvbSAnaXMtdXJsJztcbmltcG9ydCB7IEVkaXRvciwgRWxlbWVudCwgVHJhbnNmb3JtcyB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IGdldENsaXBib2FyZERhdGEgfSBmcm9tICdzbGF0ZS1hbmd1bGFyJztcbmltcG9ydCB7IERJU0FCTEVEX09QRVJBVEVfVFlQRVMsIEVsZW1lbnRLaW5kcywgUGx1Z2luTWVudUljb25zLCBUaGVQbHVnaW5NZW51SXRlbVR5cGUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgY3JlYXRlUGx1Z2luRmFjdG9yeSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgUGx1Z2luS2V5cyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9kYXNoJztcbmltcG9ydCB7IHdpdGhSZW1vdmVFbXB0eU5vZGVzIH0gZnJvbSAnLi4vbm9ybWFsaXplcnMvcmVtb3ZlLWVtcHR5LW5vZGVzJztcbmltcG9ydCB7IFRoZUxpbmsgfSBmcm9tICcuL2xpbmsuY29tcG9uZW50JztcbmltcG9ydCB7IExpbmtFZGl0b3IgfSBmcm9tICcuL2xpbmsuZWRpdG9yJztcbmltcG9ydCB7IFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGhlSTE4blRyYW5zbGF0aW9uIH0gZnJvbSAnLi4vLi4vaTE4bic7XG5cbmV4cG9ydCBjb25zdCB3aXRoTGluayA9IDxUIGV4dGVuZHMgRWRpdG9yPihlZGl0b3I6IFQpOiBUID0+IHtcbiAgICBjb25zdCB7IGluc2VydFRleHQsIGlzSW5saW5lLCBpbnNlcnRGcmFnbWVudERhdGEsIHJlbmRlckVsZW1lbnQgfSA9IGVkaXRvcjtcblxuICAgIGVkaXRvci5pc0lubGluZSA9IChlbGVtZW50OiBFbGVtZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LnR5cGUgPT09IEVsZW1lbnRLaW5kcy5saW5rID8gdHJ1ZSA6IGlzSW5saW5lKGVsZW1lbnQpO1xuICAgIH07XG5cbiAgICBlZGl0b3IuaW5zZXJ0VGV4dCA9IHRleHQgPT4ge1xuICAgICAgICBpZiAodGV4dCAmJiBpc1VybCh0ZXh0KSkge1xuICAgICAgICAgICAgTGlua0VkaXRvci53cmFwTGluayhlZGl0b3IsIHRleHQsIHRleHQpO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy5tb3ZlKGVkaXRvciwgeyBkaXN0YW5jZTogMSwgdW5pdDogJ29mZnNldCcgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbnNlcnRUZXh0KHRleHQpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGVkaXRvci5pbnNlcnRGcmFnbWVudERhdGEgPSBhc3luYyBkYXRhID0+IHtcbiAgICAgICAgY29uc3QgY2xpcGJvYXJkRGF0YSA9IGF3YWl0IGdldENsaXBib2FyZERhdGEoZGF0YSk7XG4gICAgICAgIGNvbnN0IHRleHQgPSBjbGlwYm9hcmREYXRhPy50ZXh0O1xuICAgICAgICBpZiAoIWNsaXBib2FyZERhdGE/LmVsZW1lbnRzICYmIHRleHQgJiYgaXNVcmwodGV4dCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHVybHMgPSBBcnJheS5mcm9tKGdldFVybHModGV4dCwgeyBzdHJpcFdXVzogZmFsc2UsIHNvcnRRdWVyeVBhcmFtZXRlcnM6IGZhbHNlIH0pKTtcbiAgICAgICAgICAgIGlmICh1cmxzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGxldCBzdHIgPSBjbG9uZURlZXAodGV4dCk7XG4gICAgICAgICAgICAgICAgdXJscy5mb3JFYWNoKCh1cmwsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnRzID0gc3RyLnNwbGl0KHVybCk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmVmb3JlVXJsID0gcGFydHNbMF07XG4gICAgICAgICAgICAgICAgICAgIGluc2VydFRleHQoYmVmb3JlVXJsKTtcblxuICAgICAgICAgICAgICAgICAgICBMaW5rRWRpdG9yLndyYXBMaW5rKGVkaXRvciwgdXJsLCB1cmwpO1xuICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLm1vdmUoZWRpdG9yLCB7IGRpc3RhbmNlOiAxLCB1bml0OiAnb2Zmc2V0JyB9KTtcbiAgICAgICAgICAgICAgICAgICAgc3RyID0gcGFydHNbMV07XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gdXJscy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRUZXh0KHN0cik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5zZXJ0RnJhZ21lbnREYXRhKGRhdGEpO1xuICAgIH07XG5cbiAgICBlZGl0b3IucmVuZGVyRWxlbWVudCA9IChlbGVtZW50OiBFbGVtZW50KSA9PiB7XG4gICAgICAgIGlmIChlbGVtZW50LnR5cGUgPT09IEVsZW1lbnRLaW5kcy5saW5rKSB7XG4gICAgICAgICAgICByZXR1cm4gVGhlTGluaztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVuZGVyRWxlbWVudChlbGVtZW50KTtcbiAgICB9O1xuXG4gICAgZWRpdG9yID0gd2l0aFJlbW92ZUVtcHR5Tm9kZXMoeyB0eXBlOiBFbGVtZW50S2luZHMubGluayB9KShlZGl0b3IpO1xuXG4gICAgcmV0dXJuIGVkaXRvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVMaW5rUGx1Z2luID0gKGxvY2FsZTogU2lnbmFsPFRoZUkxOG5UcmFuc2xhdGlvbj4pID0+XG4gICAgY3JlYXRlUGx1Z2luRmFjdG9yeSh7XG4gICAgICAgIGtleTogUGx1Z2luS2V5cy5saW5rLFxuICAgICAgICB3aXRoT3ZlcnJpZGVzOiB3aXRoTGluayxcbiAgICAgICAgdG9vbGJhckl0ZW1zOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAga2V5OiBFbGVtZW50S2luZHMubGluayxcbiAgICAgICAgICAgICAgICBpY29uOiAnbGluay1pbnNlcnQnLFxuICAgICAgICAgICAgICAgIG5hbWU6IGxvY2FsZSgpLmxpbmssXG4gICAgICAgICAgICAgICAgZXhlY3V0ZTogZWRpdG9yID0+IExpbmtFZGl0b3IuaW5zZXJ0TGluayhlZGl0b3IpLFxuICAgICAgICAgICAgICAgIGFjdGl2ZTogZWRpdG9yID0+IExpbmtFZGl0b3IuaXNBY3RpdmUoZWRpdG9yKVxuICAgICAgICAgICAgfVxuICAgICAgICBdLFxuICAgICAgICBtZW51SXRlbXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBrZXk6IEVsZW1lbnRLaW5kcy5saW5rLFxuICAgICAgICAgICAgICAgIGtleXdvcmRzOiBgbGosbGlhbmppZSxsaW5rLCR7bG9jYWxlKCkubGlua31gLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBsb2NhbGUoKS5saW5rRGVzYyxcbiAgICAgICAgICAgICAgICBleGVjdXRlOiBlZGl0b3IgPT4gTGlua0VkaXRvci5pbnNlcnRMaW5rKGVkaXRvciksXG4gICAgICAgICAgICAgICAgYWN0aXZlOiBlZGl0b3IgPT4gTGlua0VkaXRvci5pc0FjdGl2ZShlZGl0b3IpLFxuICAgICAgICAgICAgICAgIHR5cGU6IFRoZVBsdWdpbk1lbnVJdGVtVHlwZS5pY29uLFxuICAgICAgICAgICAgICAgIG5hbWU6IGxvY2FsZSgpLmxpbmssXG4gICAgICAgICAgICAgICAgZGlzcGxheUtleTogJy9saicsXG4gICAgICAgICAgICAgICAgaWNvbjogJ2xpbmstaW5zZXJ0JyxcbiAgICAgICAgICAgICAgICBtZW51SWNvbjogUGx1Z2luTWVudUljb25zLmxpbmtcbiAgICAgICAgICAgIH1cbiAgICAgICAgXSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgICAgaXNJbmxpbmU6IHRydWUsXG4gICAgICAgICAgICBkaXNhYmxlZE9wZXJhdGVUeXBlczogW0VsZW1lbnRLaW5kcy5pbWFnZSwgLi4uRElTQUJMRURfT1BFUkFURV9UWVBFU11cbiAgICAgICAgfVxuICAgIH0pKCk7XG4iXX0=
@@ -1,12 +0,0 @@
1
- export var LinkTags;
2
- (function (LinkTags) {
3
- LinkTags["insert"] = "insert";
4
- LinkTags["edit"] = "edit";
5
- LinkTags["selection"] = "selection";
6
- })(LinkTags || (LinkTags = {}));
7
- export var LinkCloseTypes;
8
- (function (LinkCloseTypes) {
9
- LinkCloseTypes["apply"] = "apply";
10
- LinkCloseTypes["destroy"] = "destroy";
11
- })(LinkCloseTypes || (LinkCloseTypes = {}));
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL2xpbmsvbGluay50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxRQUlYO0FBSkQsV0FBWSxRQUFRO0lBQ2hCLDZCQUFpQixDQUFBO0lBQ2pCLHlCQUFhLENBQUE7SUFDYixtQ0FBdUIsQ0FBQTtBQUMzQixDQUFDLEVBSlcsUUFBUSxLQUFSLFFBQVEsUUFJbkI7QUFDRCxNQUFNLENBQU4sSUFBWSxjQUdYO0FBSEQsV0FBWSxjQUFjO0lBQ3RCLGlDQUFlLENBQUE7SUFDZixxQ0FBbUIsQ0FBQTtBQUN2QixDQUFDLEVBSFcsY0FBYyxLQUFkLGNBQWMsUUFHekIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBMaW5rVGFncyB7XG4gICAgaW5zZXJ0ID0gJ2luc2VydCcsXG4gICAgZWRpdCA9ICdlZGl0JyxcbiAgICBzZWxlY3Rpb24gPSAnc2VsZWN0aW9uJ1xufVxuZXhwb3J0IGVudW0gTGlua0Nsb3NlVHlwZXMge1xuICAgIGFwcGx5ID0gJ2FwcGx5JyxcbiAgICBkZXN0cm95ID0gJ2Rlc3Ryb3knXG59XG4iXX0=
@@ -1,28 +0,0 @@
1
- import { Component, HostBinding } from '@angular/core';
2
- import { TheBaseElement } from '../../../interfaces';
3
- import * as i0 from "@angular/core";
4
- export class TheBulletedList extends TheBaseElement {
5
- get level() {
6
- return this.element?.indent || null;
7
- }
8
- ngOnInit() {
9
- super.ngOnInit();
10
- }
11
- ngOnDestroy() {
12
- super.ngOnDestroy();
13
- }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TheBulletedList, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
15
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TheBulletedList, isStandalone: true, selector: "ul[theUl]", host: { properties: { "attr.the-level": "this.level" } }, usesInheritance: true, ngImport: i0, template: ``, isInline: true }); }
16
- }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TheBulletedList, decorators: [{
18
- type: Component,
19
- args: [{
20
- selector: 'ul[theUl]',
21
- template: ``,
22
- standalone: true
23
- }]
24
- }], propDecorators: { level: [{
25
- type: HostBinding,
26
- args: ['attr.the-level']
27
- }] } });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsbGV0ZWQtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9saXN0L2NvbXBvbmVudHMvYnVsbGV0ZWQtbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFPckQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsY0FBMkM7SUFDNUUsSUFDSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUM7SUFDeEMsQ0FBQztJQUVELFFBQVE7UUFDSixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVc7UUFDUCxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDeEIsQ0FBQzsrR0FaUSxlQUFlO21HQUFmLGVBQWUsc0pBSGQsRUFBRTs7NEZBR0gsZUFBZTtrQkFMM0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsV0FBVztvQkFDckIsUUFBUSxFQUFFLEVBQUU7b0JBQ1osVUFBVSxFQUFFLElBQUk7aUJBQ25COzhCQUdPLEtBQUs7c0JBRFIsV0FBVzt1QkFBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgQnVsbGV0ZWRMaXN0RWxlbWVudCB9IGZyb20gJy4uLy4uLy4uL2N1c3RvbS10eXBlcyc7XG5pbXBvcnQgeyBUaGVCYXNlRWxlbWVudCB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3VsW3RoZVVsXScsXG4gICAgdGVtcGxhdGU6IGBgLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgVGhlQnVsbGV0ZWRMaXN0IGV4dGVuZHMgVGhlQmFzZUVsZW1lbnQ8QnVsbGV0ZWRMaXN0RWxlbWVudCwgRWRpdG9yPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIudGhlLWxldmVsJylcbiAgICBnZXQgbGV2ZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQ/LmluZGVudCB8fCBudWxsO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICBzdXBlci5uZ09uSW5pdCgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,88 +0,0 @@
1
- import { Component } from '@angular/core';
2
- import { Node, Text } from 'slate';
3
- import { MarkTypes } from '../../../constants/node-types';
4
- import { TheBaseElement } from '../../../interfaces';
5
- import * as TheQueries from '../../../queries';
6
- import * as i0 from "@angular/core";
7
- export class TheListItem extends TheBaseElement {
8
- ngOnInit() {
9
- super.ngOnInit();
10
- }
11
- onContextChange() {
12
- super.onContextChange();
13
- this.addFontSize();
14
- this.addMultiDigit();
15
- }
16
- ngOnDestroy() {
17
- super.ngOnDestroy();
18
- }
19
- addFontSize() {
20
- let firstText;
21
- for (const entry of Node.descendants(this.element)) {
22
- const node = entry[0];
23
- if (Text.isText(node) && !firstText) {
24
- firstText = node;
25
- break;
26
- }
27
- }
28
- if (!firstText) {
29
- return;
30
- }
31
- const { text, ...rest } = firstText;
32
- const size = rest[MarkTypes.fontSize];
33
- if (size) {
34
- const sizeClass = `font-size-${size}`;
35
- const isContains = this.elementRef.nativeElement?.classList?.contains(sizeClass);
36
- if (isContains) {
37
- return;
38
- }
39
- this.clearFontSize();
40
- this.elementRef.nativeElement.classList.add(sizeClass);
41
- this.fontSizeClass = sizeClass;
42
- }
43
- else {
44
- this.clearFontSize();
45
- }
46
- }
47
- clearFontSize() {
48
- if (this.fontSizeClass) {
49
- this.elementRef.nativeElement.classList.remove(this.fontSizeClass);
50
- this.fontSizeClass = null;
51
- }
52
- }
53
- getStart() {
54
- const parent = this.elementRef.nativeElement.closest('.slate-element-numbered-list');
55
- const start = parent?.getAttribute('start') || 1;
56
- return Number(start);
57
- }
58
- getLiIndex() {
59
- const path = TheQueries.findPath(this.editor, this.element);
60
- const index = path[path.length - 1];
61
- return index || 0;
62
- }
63
- addMultiDigit() {
64
- const start = this.getStart();
65
- const index = this.getLiIndex();
66
- const multiDigit = 'data-multi-digit';
67
- // start number + index
68
- // when it is greater than 9, it is a multi-digit serial number
69
- // exclude Font size >= 20
70
- if (start + index > 9) {
71
- this.elementRef.nativeElement.setAttribute(multiDigit, true);
72
- }
73
- else {
74
- this.elementRef.nativeElement.removeAttribute(multiDigit);
75
- }
76
- }
77
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TheListItem, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
78
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TheListItem, isStandalone: true, selector: "li[theLi]", usesInheritance: true, ngImport: i0, template: ``, isInline: true }); }
79
- }
80
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TheListItem, decorators: [{
81
- type: Component,
82
- args: [{
83
- selector: 'li[theLi]',
84
- template: ``,
85
- standalone: true
86
- }]
87
- }] });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9wbHVnaW5zL2xpc3QvY29tcG9uZW50cy9saXN0LWl0ZW0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBbUIsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sS0FBSyxVQUFVLE1BQU0sa0JBQWtCLENBQUM7O0FBTy9DLE1BQU0sT0FBTyxXQUFZLFNBQVEsY0FBK0I7SUFHNUQsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsZUFBZTtRQUNYLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxXQUFXO1FBQ1AsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxTQUFlLENBQUM7UUFDcEIsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ2pELE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDbEMsU0FBUyxHQUFHLElBQUksQ0FBQztnQkFDakIsTUFBTTtZQUNWLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2IsT0FBTztRQUNYLENBQUM7UUFFRCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsU0FBUyxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFdEMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNQLE1BQU0sU0FBUyxHQUFHLGFBQWEsSUFBSSxFQUFFLENBQUM7WUFDdEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNqRixJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNiLE9BQU87WUFDWCxDQUFDO1lBQ0QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7UUFDbkMsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekIsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhO1FBQ1QsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDbkUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDOUIsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ0osTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDckYsTUFBTSxLQUFLLEdBQUcsTUFBTSxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakQsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELFVBQVU7UUFDTixNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsYUFBYTtRQUNULE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEMsTUFBTSxVQUFVLEdBQUcsa0JBQWtCLENBQUM7UUFFdEMsdUJBQXVCO1FBQ3ZCLCtEQUErRDtRQUMvRCwwQkFBMEI7UUFDMUIsSUFBSSxLQUFLLEdBQUcsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakUsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUQsQ0FBQztJQUNMLENBQUM7K0dBL0VRLFdBQVc7bUdBQVgsV0FBVyw0RkFIVixFQUFFOzs0RkFHSCxXQUFXO2tCQUx2QixTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSxXQUFXO29CQUNyQixRQUFRLEVBQUUsRUFBRTtvQkFDWixVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFZGl0b3IsIEVsZW1lbnQsIE5vZGUsIFRleHQgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBNYXJrVHlwZXMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvbm9kZS10eXBlcyc7XG5pbXBvcnQgeyBUaGVCYXNlRWxlbWVudCB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuLi8uLi8uLi9xdWVyaWVzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaVt0aGVMaV0nLFxuICAgIHRlbXBsYXRlOiBgYCxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRoZUxpc3RJdGVtIGV4dGVuZHMgVGhlQmFzZUVsZW1lbnQ8RWxlbWVudCwgRWRpdG9yPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBmb250U2l6ZUNsYXNzOiBzdHJpbmc7XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB9XG5cbiAgICBvbkNvbnRleHRDaGFuZ2UoKSB7XG4gICAgICAgIHN1cGVyLm9uQ29udGV4dENoYW5nZSgpO1xuICAgICAgICB0aGlzLmFkZEZvbnRTaXplKCk7XG4gICAgICAgIHRoaXMuYWRkTXVsdGlEaWdpdCgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cblxuICAgIGFkZEZvbnRTaXplKCkge1xuICAgICAgICBsZXQgZmlyc3RUZXh0OiBUZXh0O1xuICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIE5vZGUuZGVzY2VuZGFudHModGhpcy5lbGVtZW50KSkge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGVudHJ5WzBdO1xuICAgICAgICAgICAgaWYgKFRleHQuaXNUZXh0KG5vZGUpICYmICFmaXJzdFRleHQpIHtcbiAgICAgICAgICAgICAgICBmaXJzdFRleHQgPSBub2RlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghZmlyc3RUZXh0KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7IHRleHQsIC4uLnJlc3QgfSA9IGZpcnN0VGV4dDtcbiAgICAgICAgY29uc3Qgc2l6ZSA9IHJlc3RbTWFya1R5cGVzLmZvbnRTaXplXTtcblxuICAgICAgICBpZiAoc2l6ZSkge1xuICAgICAgICAgICAgY29uc3Qgc2l6ZUNsYXNzID0gYGZvbnQtc2l6ZS0ke3NpemV9YDtcbiAgICAgICAgICAgIGNvbnN0IGlzQ29udGFpbnMgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudD8uY2xhc3NMaXN0Py5jb250YWlucyhzaXplQ2xhc3MpO1xuICAgICAgICAgICAgaWYgKGlzQ29udGFpbnMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNsZWFyRm9udFNpemUoKTtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoc2l6ZUNsYXNzKTtcbiAgICAgICAgICAgIHRoaXMuZm9udFNpemVDbGFzcyA9IHNpemVDbGFzcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJGb250U2l6ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xlYXJGb250U2l6ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9udFNpemVDbGFzcykge1xuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLmZvbnRTaXplQ2xhc3MpO1xuICAgICAgICAgICAgdGhpcy5mb250U2l6ZUNsYXNzID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldFN0YXJ0KCkge1xuICAgICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbG9zZXN0KCcuc2xhdGUtZWxlbWVudC1udW1iZXJlZC1saXN0Jyk7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gcGFyZW50Py5nZXRBdHRyaWJ1dGUoJ3N0YXJ0JykgfHwgMTtcbiAgICAgICAgcmV0dXJuIE51bWJlcihzdGFydCk7XG4gICAgfVxuXG4gICAgZ2V0TGlJbmRleCgpIHtcbiAgICAgICAgY29uc3QgcGF0aCA9IFRoZVF1ZXJpZXMuZmluZFBhdGgodGhpcy5lZGl0b3IsIHRoaXMuZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gcGF0aFtwYXRoLmxlbmd0aCAtIDFdO1xuICAgICAgICByZXR1cm4gaW5kZXggfHwgMDtcbiAgICB9XG5cbiAgICBhZGRNdWx0aURpZ2l0KCkge1xuICAgICAgICBjb25zdCBzdGFydCA9IHRoaXMuZ2V0U3RhcnQoKTtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmdldExpSW5kZXgoKTtcbiAgICAgICAgY29uc3QgbXVsdGlEaWdpdCA9ICdkYXRhLW11bHRpLWRpZ2l0JztcblxuICAgICAgICAvLyBzdGFydCBudW1iZXIgKyBpbmRleFxuICAgICAgICAvLyB3aGVuIGl0IGlzIGdyZWF0ZXIgdGhhbiA5LCBpdCBpcyBhIG11bHRpLWRpZ2l0IHNlcmlhbCBudW1iZXJcbiAgICAgICAgLy8gZXhjbHVkZSBGb250IHNpemUgPj0gMjBcbiAgICAgICAgaWYgKHN0YXJ0ICsgaW5kZXggPiA5KSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUobXVsdGlEaWdpdCwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUobXVsdGlEaWdpdCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -1,37 +0,0 @@
1
- import { Component, HostBinding } from '@angular/core';
2
- import { TheBaseElement } from '../../../interfaces';
3
- import * as i0 from "@angular/core";
4
- export class TheNumberedList extends TheBaseElement {
5
- get start() {
6
- return this.element.start;
7
- }
8
- get level() {
9
- return this.element?.indent || null;
10
- }
11
- constructor() {
12
- super();
13
- }
14
- ngOnInit() {
15
- super.ngOnInit();
16
- }
17
- ngOnDestroy() {
18
- super.ngOnDestroy();
19
- }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TheNumberedList, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
21
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: TheNumberedList, isStandalone: true, selector: "ol[theOl]", host: { properties: { "attr.start": "this.start", "attr.the-level": "this.level" } }, usesInheritance: true, ngImport: i0, template: ``, isInline: true }); }
22
- }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TheNumberedList, decorators: [{
24
- type: Component,
25
- args: [{
26
- selector: 'ol[theOl]',
27
- template: ``,
28
- standalone: true
29
- }]
30
- }], ctorParameters: () => [], propDecorators: { start: [{
31
- type: HostBinding,
32
- args: ['attr.start']
33
- }], level: [{
34
- type: HostBinding,
35
- args: ['attr.the-level']
36
- }] } });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyZWQtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9saXN0L2NvbXBvbmVudHMvbnVtYmVyZWQtbGlzdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBRzFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFPckQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsY0FBMkM7SUFDNUUsSUFDSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFDSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUM7SUFDeEMsQ0FBQztJQUVEO1FBQ0ksS0FBSyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsUUFBUTtRQUNKLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsV0FBVztRQUNQLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QixDQUFDOytHQXJCUSxlQUFlO21HQUFmLGVBQWUsa0xBSGQsRUFBRTs7NEZBR0gsZUFBZTtrQkFMM0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsV0FBVztvQkFDckIsUUFBUSxFQUFFLEVBQUU7b0JBQ1osVUFBVSxFQUFFLElBQUk7aUJBQ25CO3dEQUdPLEtBQUs7c0JBRFIsV0FBVzt1QkFBQyxZQUFZO2dCQU1yQixLQUFLO3NCQURSLFdBQVc7dUJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVkaXRvciB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IE51bWJlcmVkTGlzdEVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9jdXN0b20tdHlwZXMnO1xuaW1wb3J0IHsgVGhlQmFzZUVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdvbFt0aGVPbF0nLFxuICAgIHRlbXBsYXRlOiBgYCxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIFRoZU51bWJlcmVkTGlzdCBleHRlbmRzIFRoZUJhc2VFbGVtZW50PE51bWJlcmVkTGlzdEVsZW1lbnQsIEVkaXRvcj4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnN0YXJ0JylcbiAgICBnZXQgc3RhcnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsZW1lbnQuc3RhcnQ7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnRoZS1sZXZlbCcpXG4gICAgZ2V0IGxldmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50Py5pbmRlbnQgfHwgbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICB9XG59XG4iXX0=
@@ -1,128 +0,0 @@
1
- import { Editor, Element, Node, Path, Transforms } from 'slate';
2
- import { ElementKinds, LIST_BLOCK_TYPES } from '../../constants/node-types';
3
- import * as TheQueries from '../../queries';
4
- import * as TheTransforms from '../../transforms';
5
- import { isNodeTypeList } from './queries/is-node-type-list';
6
- export const ListEditor = {
7
- isList(editor, element, type) {
8
- return Editor.isBlock(editor, element) && element.type === type;
9
- },
10
- toggleList(editor, type, startIndex) {
11
- if (!editor.selection) {
12
- return;
13
- }
14
- if (!startIndex) {
15
- startIndex = 1;
16
- }
17
- const types = [ElementKinds.bulletedList, ElementKinds.numberedList];
18
- Editor.withoutNormalizing(editor, () => {
19
- const [...listItems] = Editor.nodes(editor, {
20
- match: node => Element.isElement(node) && node.type === ElementKinds.listItem,
21
- mode: 'lowest'
22
- });
23
- const firstListItemPath = listItems.length && listItems[0][1];
24
- const activeListPath = listItems.length && Path.parent(firstListItemPath);
25
- const activeListNode = listItems.length && Node.get(editor, activeListPath);
26
- // 同级且类型相同:unwrap
27
- const isLowestActive = listItems.length &&
28
- listItems.every(([, path]) => activeListNode.type === type && (Path.isSibling(firstListItemPath, path) || Path.equals(firstListItemPath, path)));
29
- if (isLowestActive) {
30
- const upListItem = Path.parent(activeListPath);
31
- Transforms.unwrapNodes(editor, {
32
- at: editor.selection,
33
- match: node => node === activeListNode,
34
- split: true,
35
- mode: 'lowest'
36
- });
37
- if (upListItem && Node.get(editor, upListItem).type === ElementKinds.listItem) {
38
- Transforms.moveNodes(editor, {
39
- at: editor.selection,
40
- to: Path.next(upListItem),
41
- match: node => Element.isElement(node) && node.type === ElementKinds.listItem
42
- });
43
- }
44
- else {
45
- Transforms.unwrapNodes(editor, {
46
- match: node => Element.isElement(node) && node.type === ElementKinds.listItem
47
- });
48
- }
49
- return;
50
- }
51
- // 跨级、同级且类型不同
52
- if (activeListNode && types.includes(activeListNode.type)) {
53
- Transforms.setNodes(editor, { type }, { match: node => Element.isElement(node) && node.type !== type && types.includes(node.type) });
54
- return;
55
- }
56
- // wrap
57
- ListEditor.buildListItem(editor);
58
- Transforms.wrapNodes(editor, { type, children: [], start: startIndex }, {
59
- at: editor.selection,
60
- match: node => Element.isElement(node) && node.type === ElementKinds.listItem
61
- });
62
- });
63
- },
64
- unwrapList(editor) {
65
- Editor.withoutNormalizing(editor, () => {
66
- TheTransforms.unwrapNodesByType(editor, [ElementKinds.bulletedList, ElementKinds.numberedList], { split: true, mode: 'all' });
67
- TheTransforms.unwrapNodesByType(editor, [ElementKinds.listItem], { split: true, mode: 'all' });
68
- });
69
- },
70
- wrapList(editor, type) {
71
- Editor.withoutNormalizing(editor, () => {
72
- const listItem = {
73
- type: ElementKinds.listItem,
74
- children: []
75
- };
76
- const list = {
77
- type,
78
- children: []
79
- };
80
- Transforms.wrapNodes(editor, list, { split: true });
81
- Transforms.wrapNodes(editor, listItem, { split: true });
82
- });
83
- },
84
- isActive(editor, type) {
85
- const [match] = TheQueries.getNodesByType(editor, type);
86
- return !!match;
87
- },
88
- getActiveList(editor) {
89
- const [match] = TheQueries.getNodesByType(editor, LIST_BLOCK_TYPES);
90
- return match;
91
- },
92
- buildListItem(editor) {
93
- const nodes = Editor.nodes(editor, {
94
- match: node => Element.isElement(node) && Editor.isBlock(editor, node),
95
- mode: 'lowest'
96
- });
97
- for (const [node, path] of nodes) {
98
- if (!(Element.isElement(node) && Editor.isVoid(editor, node)) &&
99
- Element.isElement(node) &&
100
- node.type !== ElementKinds.paragraph) {
101
- Transforms.setNodes(editor, { type: ElementKinds.paragraph, checked: undefined }, // todo remove checked
102
- { at: path });
103
- }
104
- else if (Element.isElement(node) && node.type === ElementKinds.paragraph) {
105
- let { textIndent } = node;
106
- if (textIndent) {
107
- Transforms.setNodes(editor, { textIndent: undefined, indent: undefined }, // remove indent
108
- { at: path });
109
- }
110
- }
111
- if (Node.parent(editor, path).type !== ElementKinds.listItem) {
112
- Transforms.wrapNodes(editor, { type: ElementKinds.listItem, children: [] }, {
113
- at: path,
114
- split: true
115
- });
116
- }
117
- }
118
- },
119
- buildInsertDataChildren(node) {
120
- const { children } = node;
121
- const listItem = children[0];
122
- if (isNodeTypeList(node) && Element.isElement(listItem) && listItem.children[0].type === ElementKinds.paragraph) {
123
- return node;
124
- }
125
- return ListEditor.buildInsertDataChildren(listItem);
126
- }
127
- };
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5lZGl0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9zcmMvcGx1Z2lucy9saXN0L2xpc3QuZWRpdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RSxPQUFPLEtBQUssVUFBVSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEtBQUssYUFBYSxNQUFNLGtCQUFrQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUU3RCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDdEIsTUFBTSxDQUFDLE1BQWMsRUFBRSxPQUFnQixFQUFFLElBQTJEO1FBQ2hHLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUM7SUFDcEUsQ0FBQztJQUNELFVBQVUsQ0FBQyxNQUFjLEVBQUUsSUFBMkQsRUFBRSxVQUFtQjtRQUN2RyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLE9BQU87UUFDWCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2QsVUFBVSxHQUFHLENBQUMsQ0FBQztRQUNuQixDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVyRSxNQUFNLENBQUMsa0JBQWtCLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRTtZQUNuQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRTtnQkFDeEMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxRQUFRO2dCQUM3RSxJQUFJLEVBQUUsUUFBUTthQUNqQixDQUFDLENBQUM7WUFDSCxNQUFNLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxNQUFNLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzlELE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzFFLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxNQUFNLElBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFhLENBQUM7WUFFekYsaUJBQWlCO1lBQ2pCLE1BQU0sY0FBYyxHQUNoQixTQUFTLENBQUMsTUFBTTtnQkFDaEIsU0FBUyxDQUFDLEtBQUssQ0FDWCxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQ1QsY0FBYyxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FDeEgsQ0FBQztZQUNOLElBQUksY0FBYyxFQUFFLENBQUM7Z0JBQ2pCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQy9DLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFO29CQUMzQixFQUFFLEVBQUUsTUFBTSxDQUFDLFNBQVM7b0JBQ3BCLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxjQUFjO29CQUN0QyxLQUFLLEVBQUUsSUFBSTtvQkFDWCxJQUFJLEVBQUUsUUFBUTtpQkFDakIsQ0FBQyxDQUFDO2dCQUNILElBQUksVUFBVSxJQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBYSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBQ3pGLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFO3dCQUN6QixFQUFFLEVBQUUsTUFBTSxDQUFDLFNBQVM7d0JBQ3BCLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQzt3QkFDekIsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxRQUFRO3FCQUNoRixDQUFDLENBQUM7Z0JBQ1AsQ0FBQztxQkFBTSxDQUFDO29CQUNKLFVBQVUsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFO3dCQUMzQixLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLFFBQVE7cUJBQ2hGLENBQUMsQ0FBQztnQkFDUCxDQUFDO2dCQUNELE9BQU87WUFDWCxDQUFDO1lBRUQsYUFBYTtZQUNiLElBQUksY0FBYyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3hELFVBQVUsQ0FBQyxRQUFRLENBQ2YsTUFBTSxFQUNOLEVBQUUsSUFBSSxFQUFFLEVBQ1IsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQ2hHLENBQUM7Z0JBQ0YsT0FBTztZQUNYLENBQUM7WUFFRCxPQUFPO1lBQ1AsVUFBVSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqQyxVQUFVLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQWEsRUFBRTtnQkFDL0UsRUFBRSxFQUFFLE1BQU0sQ0FBQyxTQUFTO2dCQUNwQixLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLFFBQVE7YUFDaEYsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsVUFBVSxDQUFDLE1BQWM7UUFDckIsTUFBTSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUU7WUFDbkMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUM5SCxhQUFhLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNuRyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRCxRQUFRLENBQUMsTUFBYyxFQUFFLElBQTJEO1FBQ2hGLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQ25DLE1BQU0sUUFBUSxHQUFZO2dCQUN0QixJQUFJLEVBQUUsWUFBWSxDQUFDLFFBQVE7Z0JBQzNCLFFBQVEsRUFBRSxFQUFFO2FBQ2YsQ0FBQztZQUNGLE1BQU0sSUFBSSxHQUFHO2dCQUNULElBQUk7Z0JBQ0osUUFBUSxFQUFFLEVBQUU7YUFDZixDQUFDO1lBQ0YsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDcEQsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsUUFBUSxDQUFDLE1BQWMsRUFBRSxJQUEyRDtRQUNoRixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDeEQsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ25CLENBQUM7SUFDRCxhQUFhLENBQUMsTUFBYztRQUN4QixNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUNwRSxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBQ0QsYUFBYSxDQUFDLE1BQWM7UUFDeEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFDdEUsSUFBSSxFQUFFLFFBQVE7U0FDakIsQ0FBQyxDQUFDO1FBQ0gsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQy9CLElBQ0ksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3pELE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUN2QixJQUFJLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxTQUFTLEVBQ3RDLENBQUM7Z0JBQ0MsVUFBVSxDQUFDLFFBQVEsQ0FDZixNQUFNLEVBQ04sRUFBRSxJQUFJLEVBQUUsWUFBWSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFTLEVBQUUsc0JBQXNCO2dCQUNuRixFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FDZixDQUFDO1lBQ04sQ0FBQztpQkFBTSxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3pFLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUM7Z0JBQzFCLElBQUksVUFBVSxFQUFFLENBQUM7b0JBQ2IsVUFBVSxDQUFDLFFBQVEsQ0FDZixNQUFNLEVBQ04sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsRUFBRSxnQkFBZ0I7b0JBQzlELEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUNmLENBQUM7Z0JBQ04sQ0FBQztZQUNMLENBQUM7WUFDRCxJQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBYSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3hFLFVBQVUsQ0FBQyxTQUFTLENBQ2hCLE1BQU0sRUFDTixFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFDN0M7b0JBQ0ksRUFBRSxFQUFFLElBQUk7b0JBQ1IsS0FBSyxFQUFFLElBQUk7aUJBQ2QsQ0FDSixDQUFDO1lBQ04sQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBQ0QsdUJBQXVCLENBQUMsSUFBYTtRQUNqQyxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQzFCLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFLLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFhLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMzSCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsT0FBTyxVQUFVLENBQUMsdUJBQXVCLENBQUMsUUFBbUIsQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWRpdG9yLCBFbGVtZW50LCBOb2RlLCBQYXRoLCBUcmFuc2Zvcm1zIH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgRWxlbWVudEtpbmRzLCBMSVNUX0JMT0NLX1RZUEVTIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL25vZGUtdHlwZXMnO1xuaW1wb3J0ICogYXMgVGhlUXVlcmllcyBmcm9tICcuLi8uLi9xdWVyaWVzJztcbmltcG9ydCAqIGFzIFRoZVRyYW5zZm9ybXMgZnJvbSAnLi4vLi4vdHJhbnNmb3Jtcyc7XG5pbXBvcnQgeyBpc05vZGVUeXBlTGlzdCB9IGZyb20gJy4vcXVlcmllcy9pcy1ub2RlLXR5cGUtbGlzdCc7XG5cbmV4cG9ydCBjb25zdCBMaXN0RWRpdG9yID0ge1xuICAgIGlzTGlzdChlZGl0b3I6IEVkaXRvciwgZWxlbWVudDogRWxlbWVudCwgdHlwZTogRWxlbWVudEtpbmRzLmJ1bGxldGVkTGlzdCB8IEVsZW1lbnRLaW5kcy5udW1iZXJlZExpc3QpIHtcbiAgICAgICAgcmV0dXJuIEVkaXRvci5pc0Jsb2NrKGVkaXRvciwgZWxlbWVudCkgJiYgZWxlbWVudC50eXBlID09PSB0eXBlO1xuICAgIH0sXG4gICAgdG9nZ2xlTGlzdChlZGl0b3I6IEVkaXRvciwgdHlwZTogRWxlbWVudEtpbmRzLmJ1bGxldGVkTGlzdCB8IEVsZW1lbnRLaW5kcy5udW1iZXJlZExpc3QsIHN0YXJ0SW5kZXg/OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKCFlZGl0b3Iuc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFzdGFydEluZGV4KSB7XG4gICAgICAgICAgICBzdGFydEluZGV4ID0gMTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB0eXBlcyA9IFtFbGVtZW50S2luZHMuYnVsbGV0ZWRMaXN0LCBFbGVtZW50S2luZHMubnVtYmVyZWRMaXN0XTtcblxuICAgICAgICBFZGl0b3Iud2l0aG91dE5vcm1hbGl6aW5nKGVkaXRvciwgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgWy4uLmxpc3RJdGVtc10gPSBFZGl0b3Iubm9kZXMoZWRpdG9yLCB7XG4gICAgICAgICAgICAgICAgbWF0Y2g6IG5vZGUgPT4gRWxlbWVudC5pc0VsZW1lbnQobm9kZSkgJiYgbm9kZS50eXBlID09PSBFbGVtZW50S2luZHMubGlzdEl0ZW0sXG4gICAgICAgICAgICAgICAgbW9kZTogJ2xvd2VzdCdcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgZmlyc3RMaXN0SXRlbVBhdGggPSBsaXN0SXRlbXMubGVuZ3RoICYmIGxpc3RJdGVtc1swXVsxXTtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUxpc3RQYXRoID0gbGlzdEl0ZW1zLmxlbmd0aCAmJiBQYXRoLnBhcmVudChmaXJzdExpc3RJdGVtUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmVMaXN0Tm9kZSA9IGxpc3RJdGVtcy5sZW5ndGggJiYgKE5vZGUuZ2V0KGVkaXRvciwgYWN0aXZlTGlzdFBhdGgpIGFzIEVsZW1lbnQpO1xuXG4gICAgICAgICAgICAvLyDlkIznuqfkuJTnsbvlnovnm7jlkIzvvJp1bndyYXBcbiAgICAgICAgICAgIGNvbnN0IGlzTG93ZXN0QWN0aXZlID1cbiAgICAgICAgICAgICAgICBsaXN0SXRlbXMubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgbGlzdEl0ZW1zLmV2ZXJ5KFxuICAgICAgICAgICAgICAgICAgICAoWywgcGF0aF0pID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVMaXN0Tm9kZS50eXBlID09PSB0eXBlICYmIChQYXRoLmlzU2libGluZyhmaXJzdExpc3RJdGVtUGF0aCwgcGF0aCkgfHwgUGF0aC5lcXVhbHMoZmlyc3RMaXN0SXRlbVBhdGgsIHBhdGgpKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoaXNMb3dlc3RBY3RpdmUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB1cExpc3RJdGVtID0gUGF0aC5wYXJlbnQoYWN0aXZlTGlzdFBhdGgpO1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMudW53cmFwTm9kZXMoZWRpdG9yLCB7XG4gICAgICAgICAgICAgICAgICAgIGF0OiBlZGl0b3Iuc2VsZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICBtYXRjaDogbm9kZSA9PiBub2RlID09PSBhY3RpdmVMaXN0Tm9kZSxcbiAgICAgICAgICAgICAgICAgICAgc3BsaXQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIG1vZGU6ICdsb3dlc3QnXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHVwTGlzdEl0ZW0gJiYgKE5vZGUuZ2V0KGVkaXRvciwgdXBMaXN0SXRlbSkgYXMgRWxlbWVudCkudHlwZSA9PT0gRWxlbWVudEtpbmRzLmxpc3RJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMubW92ZU5vZGVzKGVkaXRvciwge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXQ6IGVkaXRvci5zZWxlY3Rpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICB0bzogUGF0aC5uZXh0KHVwTGlzdEl0ZW0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2g6IG5vZGUgPT4gRWxlbWVudC5pc0VsZW1lbnQobm9kZSkgJiYgbm9kZS50eXBlID09PSBFbGVtZW50S2luZHMubGlzdEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy51bndyYXBOb2RlcyhlZGl0b3IsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoOiBub2RlID0+IEVsZW1lbnQuaXNFbGVtZW50KG5vZGUpICYmIG5vZGUudHlwZSA9PT0gRWxlbWVudEtpbmRzLmxpc3RJdGVtXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIOi3qOe6p+OAgeWQjOe6p+S4lOexu+Wei+S4jeWQjFxuICAgICAgICAgICAgaWYgKGFjdGl2ZUxpc3ROb2RlICYmIHR5cGVzLmluY2x1ZGVzKGFjdGl2ZUxpc3ROb2RlLnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgVHJhbnNmb3Jtcy5zZXROb2RlcyhcbiAgICAgICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICB7IHR5cGUgfSxcbiAgICAgICAgICAgICAgICAgICAgeyBtYXRjaDogbm9kZSA9PiBFbGVtZW50LmlzRWxlbWVudChub2RlKSAmJiBub2RlLnR5cGUgIT09IHR5cGUgJiYgdHlwZXMuaW5jbHVkZXMobm9kZS50eXBlKSB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIHdyYXBcbiAgICAgICAgICAgIExpc3RFZGl0b3IuYnVpbGRMaXN0SXRlbShlZGl0b3IpO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy53cmFwTm9kZXMoZWRpdG9yLCB7IHR5cGUsIGNoaWxkcmVuOiBbXSwgc3RhcnQ6IHN0YXJ0SW5kZXggfSBhcyBFbGVtZW50LCB7XG4gICAgICAgICAgICAgICAgYXQ6IGVkaXRvci5zZWxlY3Rpb24sXG4gICAgICAgICAgICAgICAgbWF0Y2g6IG5vZGUgPT4gRWxlbWVudC5pc0VsZW1lbnQobm9kZSkgJiYgbm9kZS50eXBlID09PSBFbGVtZW50S2luZHMubGlzdEl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIHVud3JhcExpc3QoZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgRWRpdG9yLndpdGhvdXROb3JtYWxpemluZyhlZGl0b3IsICgpID0+IHtcbiAgICAgICAgICAgIFRoZVRyYW5zZm9ybXMudW53cmFwTm9kZXNCeVR5cGUoZWRpdG9yLCBbRWxlbWVudEtpbmRzLmJ1bGxldGVkTGlzdCwgRWxlbWVudEtpbmRzLm51bWJlcmVkTGlzdF0sIHsgc3BsaXQ6IHRydWUsIG1vZGU6ICdhbGwnIH0pO1xuICAgICAgICAgICAgVGhlVHJhbnNmb3Jtcy51bndyYXBOb2Rlc0J5VHlwZShlZGl0b3IsIFtFbGVtZW50S2luZHMubGlzdEl0ZW1dLCB7IHNwbGl0OiB0cnVlLCBtb2RlOiAnYWxsJyB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICB3cmFwTGlzdChlZGl0b3I6IEVkaXRvciwgdHlwZTogRWxlbWVudEtpbmRzLmJ1bGxldGVkTGlzdCB8IEVsZW1lbnRLaW5kcy5udW1iZXJlZExpc3QpIHtcbiAgICAgICAgRWRpdG9yLndpdGhvdXROb3JtYWxpemluZyhlZGl0b3IsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxpc3RJdGVtOiBFbGVtZW50ID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6IEVsZW1lbnRLaW5kcy5saXN0SXRlbSxcbiAgICAgICAgICAgICAgICBjaGlsZHJlbjogW11cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBsaXN0ID0ge1xuICAgICAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICAgICAgY2hpbGRyZW46IFtdXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy53cmFwTm9kZXMoZWRpdG9yLCBsaXN0LCB7IHNwbGl0OiB0cnVlIH0pO1xuICAgICAgICAgICAgVHJhbnNmb3Jtcy53cmFwTm9kZXMoZWRpdG9yLCBsaXN0SXRlbSwgeyBzcGxpdDogdHJ1ZSB9KTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBpc0FjdGl2ZShlZGl0b3I6IEVkaXRvciwgdHlwZTogRWxlbWVudEtpbmRzLmJ1bGxldGVkTGlzdCB8IEVsZW1lbnRLaW5kcy5udW1iZXJlZExpc3QpIHtcbiAgICAgICAgY29uc3QgW21hdGNoXSA9IFRoZVF1ZXJpZXMuZ2V0Tm9kZXNCeVR5cGUoZWRpdG9yLCB0eXBlKTtcbiAgICAgICAgcmV0dXJuICEhbWF0Y2g7XG4gICAgfSxcbiAgICBnZXRBY3RpdmVMaXN0KGVkaXRvcjogRWRpdG9yKSB7XG4gICAgICAgIGNvbnN0IFttYXRjaF0gPSBUaGVRdWVyaWVzLmdldE5vZGVzQnlUeXBlKGVkaXRvciwgTElTVF9CTE9DS19UWVBFUyk7XG4gICAgICAgIHJldHVybiBtYXRjaDtcbiAgICB9LFxuICAgIGJ1aWxkTGlzdEl0ZW0oZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBFZGl0b3Iubm9kZXMoZWRpdG9yLCB7XG4gICAgICAgICAgICBtYXRjaDogbm9kZSA9PiBFbGVtZW50LmlzRWxlbWVudChub2RlKSAmJiBFZGl0b3IuaXNCbG9jayhlZGl0b3IsIG5vZGUpLFxuICAgICAgICAgICAgbW9kZTogJ2xvd2VzdCdcbiAgICAgICAgfSk7XG4gICAgICAgIGZvciAoY29uc3QgW25vZGUsIHBhdGhdIG9mIG5vZGVzKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIShFbGVtZW50LmlzRWxlbWVudChub2RlKSAmJiBFZGl0b3IuaXNWb2lkKGVkaXRvciwgbm9kZSkpICYmXG4gICAgICAgICAgICAgICAgRWxlbWVudC5pc0VsZW1lbnQobm9kZSkgJiZcbiAgICAgICAgICAgICAgICBub2RlLnR5cGUgIT09IEVsZW1lbnRLaW5kcy5wYXJhZ3JhcGhcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIFRyYW5zZm9ybXMuc2V0Tm9kZXMoXG4gICAgICAgICAgICAgICAgICAgIGVkaXRvcixcbiAgICAgICAgICAgICAgICAgICAgeyB0eXBlOiBFbGVtZW50S2luZHMucGFyYWdyYXBoLCBjaGVja2VkOiB1bmRlZmluZWQgfSBhcyBhbnksIC8vIHRvZG8gcmVtb3ZlIGNoZWNrZWRcbiAgICAgICAgICAgICAgICAgICAgeyBhdDogcGF0aCB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoRWxlbWVudC5pc0VsZW1lbnQobm9kZSkgJiYgbm9kZS50eXBlID09PSBFbGVtZW50S2luZHMucGFyYWdyYXBoKSB7XG4gICAgICAgICAgICAgICAgbGV0IHsgdGV4dEluZGVudCB9ID0gbm9kZTtcbiAgICAgICAgICAgICAgICBpZiAodGV4dEluZGVudCkge1xuICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLnNldE5vZGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyB0ZXh0SW5kZW50OiB1bmRlZmluZWQsIGluZGVudDogdW5kZWZpbmVkIH0sIC8vIHJlbW92ZSBpbmRlbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgYXQ6IHBhdGggfVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgoTm9kZS5wYXJlbnQoZWRpdG9yLCBwYXRoKSBhcyBFbGVtZW50KS50eXBlICE9PSBFbGVtZW50S2luZHMubGlzdEl0ZW0pIHtcbiAgICAgICAgICAgICAgICBUcmFuc2Zvcm1zLndyYXBOb2RlcyhcbiAgICAgICAgICAgICAgICAgICAgZWRpdG9yLFxuICAgICAgICAgICAgICAgICAgICB7IHR5cGU6IEVsZW1lbnRLaW5kcy5saXN0SXRlbSwgY2hpbGRyZW46IFtdIH0sXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0OiBwYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3BsaXQ6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGJ1aWxkSW5zZXJ0RGF0YUNoaWxkcmVuKG5vZGU6IEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gbm9kZTtcbiAgICAgICAgY29uc3QgbGlzdEl0ZW0gPSBjaGlsZHJlblswXTtcbiAgICAgICAgaWYgKGlzTm9kZVR5cGVMaXN0KG5vZGUpICYmIEVsZW1lbnQuaXNFbGVtZW50KGxpc3RJdGVtKSAmJiAobGlzdEl0ZW0uY2hpbGRyZW5bMF0gYXMgRWxlbWVudCkudHlwZSA9PT0gRWxlbWVudEtpbmRzLnBhcmFncmFwaCkge1xuICAgICAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gTGlzdEVkaXRvci5idWlsZEluc2VydERhdGFDaGlsZHJlbihsaXN0SXRlbSBhcyBFbGVtZW50KTtcbiAgICB9XG59O1xuIl19