@talrace/ngx-noder 0.0.7

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 (515) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +274 -0
  3. package/esm2022/lib/+shared/abstract/base-api.service.mjs +99 -0
  4. package/esm2022/lib/+shared/abstract/observer.component.mjs +24 -0
  5. package/esm2022/lib/+shared/confirm-dialog/confirm-dialog.component.mjs +28 -0
  6. package/esm2022/lib/+shared/constants/default-file-name.const.mjs +2 -0
  7. package/esm2022/lib/+shared/constants/paginator-sizes.const.mjs +3 -0
  8. package/esm2022/lib/+shared/editor/core/base/event-emitting.mjs +71 -0
  9. package/esm2022/lib/+shared/editor/core/components/edges/edge-type.enum.mjs +6 -0
  10. package/esm2022/lib/+shared/editor/core/components/edges/edge.component.mjs +100 -0
  11. package/esm2022/lib/+shared/editor/core/components/edges/edges.mjs +104 -0
  12. package/esm2022/lib/+shared/editor/core/constants/alignments.const.mjs +8 -0
  13. package/esm2022/lib/+shared/editor/core/constants/clipboardEventTypes.const.mjs +6 -0
  14. package/esm2022/lib/+shared/editor/core/constants/content-style-change.const.mjs +15 -0
  15. package/esm2022/lib/+shared/editor/core/constants/display-values.const.mjs +8 -0
  16. package/esm2022/lib/+shared/editor/core/constants/document-info.const.mjs +13 -0
  17. package/esm2022/lib/+shared/editor/core/constants/editor-version.const.mjs +2 -0
  18. package/esm2022/lib/+shared/editor/core/constants/editor.const.mjs +62 -0
  19. package/esm2022/lib/+shared/editor/core/constants/unicode-chars.const.mjs +5 -0
  20. package/esm2022/lib/+shared/editor/core/document.mjs +134 -0
  21. package/esm2022/lib/+shared/editor/core/edit.session.mjs +1102 -0
  22. package/esm2022/lib/+shared/editor/core/editor.mjs +1279 -0
  23. package/esm2022/lib/+shared/editor/core/enums/break-types.enum.mjs +7 -0
  24. package/esm2022/lib/+shared/editor/core/enums/hrule.enum.mjs +7 -0
  25. package/esm2022/lib/+shared/editor/core/enums/mouse-button.enum.mjs +7 -0
  26. package/esm2022/lib/+shared/editor/core/enums/numbering-marker-type.enum.mjs +12 -0
  27. package/esm2022/lib/+shared/editor/core/enums/page-type.enum.mjs +7 -0
  28. package/esm2022/lib/+shared/editor/core/enums/vertical-alignment.enum.mjs +11 -0
  29. package/esm2022/lib/+shared/editor/core/helpers/content-style.helper.mjs +156 -0
  30. package/esm2022/lib/+shared/editor/core/helpers/delta.helper.mjs +18 -0
  31. package/esm2022/lib/+shared/editor/core/helpers/dom.helper.mjs +42 -0
  32. package/esm2022/lib/+shared/editor/core/helpers/event.helper.mjs +18 -0
  33. package/esm2022/lib/+shared/editor/core/helpers/font-metrics.helper.mjs +88 -0
  34. package/esm2022/lib/+shared/editor/core/helpers/format-style.helper.mjs +72 -0
  35. package/esm2022/lib/+shared/editor/core/helpers/line-width.helper.mjs +13 -0
  36. package/esm2022/lib/+shared/editor/core/helpers/numbering.helper.mjs +83 -0
  37. package/esm2022/lib/+shared/editor/core/helpers/page.helper.mjs +12 -0
  38. package/esm2022/lib/+shared/editor/core/helpers/paragraph-style.helper.mjs +41 -0
  39. package/esm2022/lib/+shared/editor/core/helpers/paragraph.helper.mjs +132 -0
  40. package/esm2022/lib/+shared/editor/core/helpers/position.helper.mjs +191 -0
  41. package/esm2022/lib/+shared/editor/core/helpers/print.rendering.helper.mjs +7 -0
  42. package/esm2022/lib/+shared/editor/core/helpers/rendering.helper.mjs +186 -0
  43. package/esm2022/lib/+shared/editor/core/helpers/unicode.helper.mjs +20 -0
  44. package/esm2022/lib/+shared/editor/core/interfaces/cell.interface.mjs +2 -0
  45. package/esm2022/lib/+shared/editor/core/interfaces/cursor-position.interface.mjs +2 -0
  46. package/esm2022/lib/+shared/editor/core/interfaces/font-metric-size.interface.mjs +2 -0
  47. package/esm2022/lib/+shared/editor/core/interfaces/layer.config.mjs +2 -0
  48. package/esm2022/lib/+shared/editor/core/interfaces/paragraph-info.interface.mjs +2 -0
  49. package/esm2022/lib/+shared/editor/core/interfaces/render-changes.interface.mjs +2 -0
  50. package/esm2022/lib/+shared/editor/core/interfaces/replace.interface.mjs +2 -0
  51. package/esm2022/lib/+shared/editor/core/interfaces/search-iteration.interface.mjs +2 -0
  52. package/esm2022/lib/+shared/editor/core/interfaces/toolbar-styles.interface.mjs +2 -0
  53. package/esm2022/lib/+shared/editor/core/interfaces/visible-line-info.interface.mjs +2 -0
  54. package/esm2022/lib/+shared/editor/core/interfaces/visible-range.interface.mjs +2 -0
  55. package/esm2022/lib/+shared/editor/core/keyboard/text-input.mjs +53 -0
  56. package/esm2022/lib/+shared/editor/core/layers/cursor.layer.mjs +103 -0
  57. package/esm2022/lib/+shared/editor/core/layers/edges.layer.mjs +99 -0
  58. package/esm2022/lib/+shared/editor/core/layers/lines.mjs +96 -0
  59. package/esm2022/lib/+shared/editor/core/layers/pages.layer.mjs +106 -0
  60. package/esm2022/lib/+shared/editor/core/layers/print.edges.layer.mjs +7 -0
  61. package/esm2022/lib/+shared/editor/core/layers/print.pages.layer.mjs +7 -0
  62. package/esm2022/lib/+shared/editor/core/layers/print.text.layer.mjs +7 -0
  63. package/esm2022/lib/+shared/editor/core/layers/renderloop.mjs +26 -0
  64. package/esm2022/lib/+shared/editor/core/layers/scrollbar.mjs +100 -0
  65. package/esm2022/lib/+shared/editor/core/layers/selection.layer.mjs +115 -0
  66. package/esm2022/lib/+shared/editor/core/layers/text.layer.mjs +124 -0
  67. package/esm2022/lib/+shared/editor/core/models/display-token.model.mjs +12 -0
  68. package/esm2022/lib/+shared/editor/core/models/distance.model.mjs +10 -0
  69. package/esm2022/lib/+shared/editor/core/models/edge-element.model.mjs +9 -0
  70. package/esm2022/lib/+shared/editor/core/models/format-ext.model.mjs +10 -0
  71. package/esm2022/lib/+shared/editor/core/models/indent.model.mjs +9 -0
  72. package/esm2022/lib/+shared/editor/core/models/line-info.model.mjs +9 -0
  73. package/esm2022/lib/+shared/editor/core/models/margin.model.mjs +16 -0
  74. package/esm2022/lib/+shared/editor/core/models/numbering-data.model.mjs +9 -0
  75. package/esm2022/lib/+shared/editor/core/models/render-changes.model.mjs +25 -0
  76. package/esm2022/lib/+shared/editor/core/paging/page-vertical-data.model.mjs +9 -0
  77. package/esm2022/lib/+shared/editor/core/paging/pages.wrap.mjs +219 -0
  78. package/esm2022/lib/+shared/editor/core/paging/paragraph.mjs +52 -0
  79. package/esm2022/lib/+shared/editor/core/paging/text-line-info.mjs +34 -0
  80. package/esm2022/lib/+shared/editor/core/point.mjs +13 -0
  81. package/esm2022/lib/+shared/editor/core/print.renderer.mjs +72 -0
  82. package/esm2022/lib/+shared/editor/core/range.mjs +94 -0
  83. package/esm2022/lib/+shared/editor/core/renderer.mjs +217 -0
  84. package/esm2022/lib/+shared/editor/core/search.mjs +231 -0
  85. package/esm2022/lib/+shared/editor/core/virtual.renderer.mjs +356 -0
  86. package/esm2022/lib/+shared/editor/custom-components/external-element/element-toolbar/element-toolbar.component.mjs +35 -0
  87. package/esm2022/lib/+shared/editor/custom-components/external-element/external-element.service.mjs +6 -0
  88. package/esm2022/lib/+shared/editor/custom-components/external-element/external-elements.const.mjs +4 -0
  89. package/esm2022/lib/+shared/editor/custom-components/external-element/external-sidenav.interface.mjs +2 -0
  90. package/esm2022/lib/+shared/editor/custom-components/external-element/external.component.mjs +41 -0
  91. package/esm2022/lib/+shared/editor/custom-components/external-element/models/element-data.model.mjs +9 -0
  92. package/esm2022/lib/+shared/editor/custom-components/external-element/models/external-element.model.mjs +10 -0
  93. package/esm2022/lib/+shared/editor/custom-components/external-element/models/external-sidenav.model.mjs +15 -0
  94. package/esm2022/lib/+shared/editor/custom-components/image/components/image.component.mjs +87 -0
  95. package/esm2022/lib/+shared/editor/custom-components/image/input-handler/image-input.handler.mjs +38 -0
  96. package/esm2022/lib/+shared/editor/custom-components/image/interfaces/size.mjs +2 -0
  97. package/esm2022/lib/+shared/editor/custom-components/image/resizer/coordinate.mjs +2 -0
  98. package/esm2022/lib/+shared/editor/custom-components/image/resizer/direction-wrapper.mjs +19 -0
  99. package/esm2022/lib/+shared/editor/custom-components/image/resizer/direction.enum.mjs +12 -0
  100. package/esm2022/lib/+shared/editor/custom-components/image/resizer/resizer.component.mjs +106 -0
  101. package/esm2022/lib/+shared/editor/custom-components/image/resizer/size-delta.mjs +2 -0
  102. package/esm2022/lib/+shared/editor/custom-components/image/resizer/size-wrapper.mjs +52 -0
  103. package/esm2022/lib/+shared/editor/custom-components/image/services/image-api.service.mjs +14 -0
  104. package/esm2022/lib/+shared/editor/custom-components/shared/abstract/base.component.mjs +57 -0
  105. package/esm2022/lib/+shared/editor/custom-components/shared/constants/custom-content-markers.const.mjs +3 -0
  106. package/esm2022/lib/+shared/editor/custom-components/shared/helpers/custom-component.hepler.mjs +43 -0
  107. package/esm2022/lib/+shared/editor/custom-components/shared/interfaces/custom-components.interface.mjs +2 -0
  108. package/esm2022/lib/+shared/editor/custom-components/shared/services/component/component.service.mjs +64 -0
  109. package/esm2022/lib/+shared/editor/custom-components/shared/services/custom-content/custom-content.service.mjs +120 -0
  110. package/esm2022/lib/+shared/editor/custom-components/shared/services/overlay/overlay.service.mjs +55 -0
  111. package/esm2022/lib/+shared/editor/custom-components/shared/types/custom-content.mjs +2 -0
  112. package/esm2022/lib/+shared/editor/custom-components/tab/tab.component.mjs +43 -0
  113. package/esm2022/lib/+shared/editor/custom-components/table/cell-resizer/cell-resizer.mjs +118 -0
  114. package/esm2022/lib/+shared/editor/custom-components/table/components/table-cell.component.mjs +95 -0
  115. package/esm2022/lib/+shared/editor/custom-components/table/components/table.component.mjs +293 -0
  116. package/esm2022/lib/+shared/editor/custom-components/table/enums/reisizer-side.enum.mjs +8 -0
  117. package/esm2022/lib/+shared/editor/custom-components/table/enums/vertical-merge.enum.mjs +6 -0
  118. package/esm2022/lib/+shared/editor/custom-components/table/models/cell-data.model.mjs +18 -0
  119. package/esm2022/lib/+shared/editor/custom-components/table/models/cell-resizer-parameters.model.mjs +9 -0
  120. package/esm2022/lib/+shared/editor/custom-components/table/models/row-data.model.mjs +8 -0
  121. package/esm2022/lib/+shared/editor/custom-components/table/models/selection-range.model.mjs +7 -0
  122. package/esm2022/lib/+shared/editor/custom-components/table/overlay-menu/overlay-menu.component.mjs +74 -0
  123. package/esm2022/lib/+shared/editor/custom-components/table/selection/table-selection.mjs +358 -0
  124. package/esm2022/lib/+shared/editor/editor.component.mjs +103 -0
  125. package/esm2022/lib/+shared/editor/editor.module.mjs +85 -0
  126. package/esm2022/lib/+shared/editor/execution/models/cell-session-source.model.mjs +19 -0
  127. package/esm2022/lib/+shared/editor/execution/models/edge-session-source.model.mjs +15 -0
  128. package/esm2022/lib/+shared/editor/execution/models/general-properties.model.mjs +11 -0
  129. package/esm2022/lib/+shared/editor/execution/models/main-session-source.model.mjs +8 -0
  130. package/esm2022/lib/+shared/editor/execution/models/session-source.model.mjs +3 -0
  131. package/esm2022/lib/+shared/editor/execution/models/session.model.mjs +10 -0
  132. package/esm2022/lib/+shared/editor/execution/regulator.service.mjs +193 -0
  133. package/esm2022/lib/+shared/editor/helpers/break.helper.mjs +18 -0
  134. package/esm2022/lib/+shared/editor/helpers/content.helper.mjs +30 -0
  135. package/esm2022/lib/+shared/editor/helpers/format.helper.mjs +23 -0
  136. package/esm2022/lib/+shared/editor/helpers/indexed-element.helper.mjs +6 -0
  137. package/esm2022/lib/+shared/editor/helpers/tab.helper.mjs +6 -0
  138. package/esm2022/lib/+shared/editor/interaction/editor.service.mjs +309 -0
  139. package/esm2022/lib/+shared/editor/interaction/input.handler.mjs +160 -0
  140. package/esm2022/lib/+shared/editor/interaction/mouse.handler.mjs +49 -0
  141. package/esm2022/lib/+shared/editor/interfaces/contents.interface.mjs +2 -0
  142. package/esm2022/lib/+shared/editor/interfaces/insert-index.interface.mjs +2 -0
  143. package/esm2022/lib/+shared/editor/operation-history/operation-history.mjs +184 -0
  144. package/esm2022/lib/+shared/editor/operation-history/operation.type.mjs +2 -0
  145. package/esm2022/lib/+shared/editor/operation-history/operations-history-info.model.mjs +7 -0
  146. package/esm2022/lib/+shared/editor/operations/enums/command-type.enum.mjs +31 -0
  147. package/esm2022/lib/+shared/editor/operations/enums/target-type.enum.mjs +7 -0
  148. package/esm2022/lib/+shared/editor/operations/helpers/break-operations.helper.mjs +9 -0
  149. package/esm2022/lib/+shared/editor/operations/helpers/content-operations.helper.mjs +15 -0
  150. package/esm2022/lib/+shared/editor/operations/helpers/format-operations.helper.mjs +56 -0
  151. package/esm2022/lib/+shared/editor/operations/helpers/image-operations.helper.mjs +19 -0
  152. package/esm2022/lib/+shared/editor/operations/helpers/indexed-element-operations.helper.mjs +43 -0
  153. package/esm2022/lib/+shared/editor/operations/helpers/link-operations.helper.mjs +28 -0
  154. package/esm2022/lib/+shared/editor/operations/helpers/numbering-operations.helper.mjs +55 -0
  155. package/esm2022/lib/+shared/editor/operations/helpers/operations-helper.helper.mjs +394 -0
  156. package/esm2022/lib/+shared/editor/operations/helpers/paragraph-operations.helper.mjs +83 -0
  157. package/esm2022/lib/+shared/editor/operations/helpers/save-commands.helper.mjs +118 -0
  158. package/esm2022/lib/+shared/editor/operations/helpers/tab-operations.helper.mjs +16 -0
  159. package/esm2022/lib/+shared/editor/operations/helpers/table-operations.helper.mjs +371 -0
  160. package/esm2022/lib/+shared/editor/operations/helpers/target-operations.helper.mjs +23 -0
  161. package/esm2022/lib/+shared/editor/positioning/selection.mjs +307 -0
  162. package/esm2022/lib/+shared/editor/store/editor.actions.mjs +13 -0
  163. package/esm2022/lib/+shared/editor-header/editor-header.component.mjs +314 -0
  164. package/esm2022/lib/+shared/editor-search/editor-search-dialog.component.mjs +71 -0
  165. package/esm2022/lib/+shared/editor-toolbar/color-picker/color-picker.component.mjs +32 -0
  166. package/esm2022/lib/+shared/editor-toolbar/constants/numbering-templates.const.mjs +1148 -0
  167. package/esm2022/lib/+shared/editor-toolbar/constants/svg-icons.const.mjs +157 -0
  168. package/esm2022/lib/+shared/editor-toolbar/editor-toolbar.component.mjs +115 -0
  169. package/esm2022/lib/+shared/editor-toolbar/editor-toolbar.module.mjs +107 -0
  170. package/esm2022/lib/+shared/editor-toolbar/enums/alignment.enum.mjs +8 -0
  171. package/esm2022/lib/+shared/editor-toolbar/enums/numbering-template-type.enum.mjs +16 -0
  172. package/esm2022/lib/+shared/editor-toolbar/enums/numbering-type.enum.mjs +6 -0
  173. package/esm2022/lib/+shared/editor-toolbar/font/font.component.mjs +45 -0
  174. package/esm2022/lib/+shared/editor-toolbar/font-size/font-size.component.mjs +85 -0
  175. package/esm2022/lib/+shared/editor-toolbar/font-style/font-style.component.mjs +80 -0
  176. package/esm2022/lib/+shared/editor-toolbar/format/format.component.mjs +28 -0
  177. package/esm2022/lib/+shared/editor-toolbar/heading/heading.component.mjs +23 -0
  178. package/esm2022/lib/+shared/editor-toolbar/helpers/toolbar-styles.helper.mjs +55 -0
  179. package/esm2022/lib/+shared/editor-toolbar/numbering/numbering.component.mjs +53 -0
  180. package/esm2022/lib/+shared/editor-toolbar/print/print.component.mjs +18 -0
  181. package/esm2022/lib/+shared/editor-toolbar/undo-redo/undo-redo.component.mjs +27 -0
  182. package/esm2022/lib/+shared/editor-toolbar/zoom/zoom.component.mjs +74 -0
  183. package/esm2022/lib/+shared/enums/mode.enum.mjs +7 -0
  184. package/esm2022/lib/+shared/helpers/print.helper.mjs +40 -0
  185. package/esm2022/lib/+shared/insert-table/insert-table.component.mjs +54 -0
  186. package/esm2022/lib/+shared/services/commands.service.mjs +20 -0
  187. package/esm2022/lib/+shared/services/custom-icon.service.mjs +34 -0
  188. package/esm2022/lib/models/generated/add-numbering.model.mjs +8 -0
  189. package/esm2022/lib/models/generated/apply-element-style.model.mjs +8 -0
  190. package/esm2022/lib/models/generated/apply-image-style.model.mjs +8 -0
  191. package/esm2022/lib/models/generated/apply-paragraph-style.model.mjs +12 -0
  192. package/esm2022/lib/models/generated/apply-text-style.model.mjs +12 -0
  193. package/esm2022/lib/models/generated/borders-style.model.mjs +8 -0
  194. package/esm2022/lib/models/generated/break.model.mjs +8 -0
  195. package/esm2022/lib/models/generated/cell.model.mjs +12 -0
  196. package/esm2022/lib/models/generated/column-section.model.mjs +8 -0
  197. package/esm2022/lib/models/generated/column.model.mjs +8 -0
  198. package/esm2022/lib/models/generated/command.model.mjs +116 -0
  199. package/esm2022/lib/models/generated/delete.model.mjs +8 -0
  200. package/esm2022/lib/models/generated/document-name.model.mjs +8 -0
  201. package/esm2022/lib/models/generated/document.model.mjs +8 -0
  202. package/esm2022/lib/models/generated/docx.model.mjs +12 -0
  203. package/esm2022/lib/models/generated/edge-target.model.mjs +8 -0
  204. package/esm2022/lib/models/generated/edge.model.mjs +8 -0
  205. package/esm2022/lib/models/generated/element.model.mjs +8 -0
  206. package/esm2022/lib/models/generated/file-source.model.mjs +8 -0
  207. package/esm2022/lib/models/generated/format.model.mjs +12 -0
  208. package/esm2022/lib/models/generated/heading.model.mjs +16 -0
  209. package/esm2022/lib/models/generated/image-data.model.mjs +8 -0
  210. package/esm2022/lib/models/generated/image.model.mjs +12 -0
  211. package/esm2022/lib/models/generated/insert-break.model.mjs +8 -0
  212. package/esm2022/lib/models/generated/insert-element.model.mjs +12 -0
  213. package/esm2022/lib/models/generated/insert-image.model.mjs +12 -0
  214. package/esm2022/lib/models/generated/insert-link.model.mjs +12 -0
  215. package/esm2022/lib/models/generated/insert-styled-text.model.mjs +12 -0
  216. package/esm2022/lib/models/generated/insert-tab.model.mjs +8 -0
  217. package/esm2022/lib/models/generated/insert-table-columns.model.mjs +8 -0
  218. package/esm2022/lib/models/generated/insert-table-rows.model.mjs +8 -0
  219. package/esm2022/lib/models/generated/insert-table.model.mjs +8 -0
  220. package/esm2022/lib/models/generated/insert-text.model.mjs +8 -0
  221. package/esm2022/lib/models/generated/last-document-revision.model.mjs +12 -0
  222. package/esm2022/lib/models/generated/link-data.model.mjs +8 -0
  223. package/esm2022/lib/models/generated/link.model.mjs +8 -0
  224. package/esm2022/lib/models/generated/margins.model.mjs +8 -0
  225. package/esm2022/lib/models/generated/numbering-level.model.mjs +12 -0
  226. package/esm2022/lib/models/generated/numbering.model.mjs +8 -0
  227. package/esm2022/lib/models/generated/operation.model.mjs +12 -0
  228. package/esm2022/lib/models/generated/page-numbers.model.mjs +8 -0
  229. package/esm2022/lib/models/generated/paragraph-style.model.mjs +8 -0
  230. package/esm2022/lib/models/generated/paragraph.model.mjs +12 -0
  231. package/esm2022/lib/models/generated/remove-numberings.model.mjs +8 -0
  232. package/esm2022/lib/models/generated/remove-table-columns.model.mjs +8 -0
  233. package/esm2022/lib/models/generated/remove-table-rows.model.mjs +8 -0
  234. package/esm2022/lib/models/generated/replace-by-text.model.mjs +8 -0
  235. package/esm2022/lib/models/generated/replace.model.mjs +40 -0
  236. package/esm2022/lib/models/generated/resize-table-columns.model.mjs +8 -0
  237. package/esm2022/lib/models/generated/restore-numberings.model.mjs +8 -0
  238. package/esm2022/lib/models/generated/restore-paragraph-styles.model.mjs +8 -0
  239. package/esm2022/lib/models/generated/restore-table.model.mjs +12 -0
  240. package/esm2022/lib/models/generated/restore-text-styles.model.mjs +8 -0
  241. package/esm2022/lib/models/generated/restore.model.mjs +8 -0
  242. package/esm2022/lib/models/generated/revision.model.mjs +12 -0
  243. package/esm2022/lib/models/generated/row.model.mjs +8 -0
  244. package/esm2022/lib/models/generated/tab.model.mjs +8 -0
  245. package/esm2022/lib/models/generated/table-cell.model.mjs +8 -0
  246. package/esm2022/lib/models/generated/table.model.mjs +12 -0
  247. package/esm2022/lib/models/generated/target.model.mjs +16 -0
  248. package/esm2022/lib/models/generated/text-style.model.mjs +8 -0
  249. package/esm2022/public-api.mjs +43 -0
  250. package/esm2022/talrace-ngx-noder.mjs +5 -0
  251. package/fesm2022/talrace-ngx-noder.mjs +13736 -0
  252. package/fesm2022/talrace-ngx-noder.mjs.map +1 -0
  253. package/index.d.ts +5 -0
  254. package/lib/+shared/abstract/base-api.service.d.ts +23 -0
  255. package/lib/+shared/abstract/observer.component.d.ts +10 -0
  256. package/lib/+shared/confirm-dialog/confirm-dialog.component.d.ts +16 -0
  257. package/lib/+shared/constants/default-file-name.const.d.ts +1 -0
  258. package/lib/+shared/constants/paginator-sizes.const.d.ts +2 -0
  259. package/lib/+shared/editor/core/base/event-emitting.d.ts +17 -0
  260. package/lib/+shared/editor/core/components/edges/edge-type.enum.d.ts +4 -0
  261. package/lib/+shared/editor/core/components/edges/edge.component.d.ts +45 -0
  262. package/lib/+shared/editor/core/components/edges/edges.d.ts +26 -0
  263. package/lib/+shared/editor/core/constants/alignments.const.d.ts +7 -0
  264. package/lib/+shared/editor/core/constants/clipboardEventTypes.const.d.ts +5 -0
  265. package/lib/+shared/editor/core/constants/content-style-change.const.d.ts +14 -0
  266. package/lib/+shared/editor/core/constants/display-values.const.d.ts +7 -0
  267. package/lib/+shared/editor/core/constants/document-info.const.d.ts +12 -0
  268. package/lib/+shared/editor/core/constants/editor-version.const.d.ts +1 -0
  269. package/lib/+shared/editor/core/constants/editor.const.d.ts +16 -0
  270. package/lib/+shared/editor/core/constants/unicode-chars.const.d.ts +1 -0
  271. package/lib/+shared/editor/core/document.d.ts +56 -0
  272. package/lib/+shared/editor/core/edit.session.d.ts +159 -0
  273. package/lib/+shared/editor/core/editor.d.ts +206 -0
  274. package/lib/+shared/editor/core/enums/break-types.enum.d.ts +5 -0
  275. package/lib/+shared/editor/core/enums/hrule.enum.d.ts +5 -0
  276. package/lib/+shared/editor/core/enums/mouse-button.enum.d.ts +5 -0
  277. package/lib/+shared/editor/core/enums/numbering-marker-type.enum.d.ts +10 -0
  278. package/lib/+shared/editor/core/enums/page-type.enum.d.ts +5 -0
  279. package/lib/+shared/editor/core/enums/vertical-alignment.enum.d.ts +9 -0
  280. package/lib/+shared/editor/core/helpers/content-style.helper.d.ts +16 -0
  281. package/lib/+shared/editor/core/helpers/delta.helper.d.ts +6 -0
  282. package/lib/+shared/editor/core/helpers/dom.helper.d.ts +10 -0
  283. package/lib/+shared/editor/core/helpers/event.helper.d.ts +4 -0
  284. package/lib/+shared/editor/core/helpers/font-metrics.helper.d.ts +32 -0
  285. package/lib/+shared/editor/core/helpers/format-style.helper.d.ts +11 -0
  286. package/lib/+shared/editor/core/helpers/line-width.helper.d.ts +5 -0
  287. package/lib/+shared/editor/core/helpers/numbering.helper.d.ts +19 -0
  288. package/lib/+shared/editor/core/helpers/page.helper.d.ts +4 -0
  289. package/lib/+shared/editor/core/helpers/paragraph-style.helper.d.ts +6 -0
  290. package/lib/+shared/editor/core/helpers/paragraph.helper.d.ts +27 -0
  291. package/lib/+shared/editor/core/helpers/position.helper.d.ts +34 -0
  292. package/lib/+shared/editor/core/helpers/print.rendering.helper.d.ts +6 -0
  293. package/lib/+shared/editor/core/helpers/rendering.helper.d.ts +26 -0
  294. package/lib/+shared/editor/core/helpers/unicode.helper.d.ts +4 -0
  295. package/lib/+shared/editor/core/interfaces/cell.interface.d.ts +5 -0
  296. package/lib/+shared/editor/core/interfaces/cursor-position.interface.d.ts +11 -0
  297. package/lib/+shared/editor/core/interfaces/font-metric-size.interface.d.ts +11 -0
  298. package/lib/+shared/editor/core/interfaces/layer.config.d.ts +13 -0
  299. package/lib/+shared/editor/core/interfaces/paragraph-info.interface.d.ts +7 -0
  300. package/lib/+shared/editor/core/interfaces/render-changes.interface.d.ts +10 -0
  301. package/lib/+shared/editor/core/interfaces/replace.interface.d.ts +4 -0
  302. package/lib/+shared/editor/core/interfaces/search-iteration.interface.d.ts +4 -0
  303. package/lib/+shared/editor/core/interfaces/toolbar-styles.interface.d.ts +18 -0
  304. package/lib/+shared/editor/core/interfaces/visible-line-info.interface.d.ts +5 -0
  305. package/lib/+shared/editor/core/interfaces/visible-range.interface.d.ts +11 -0
  306. package/lib/+shared/editor/core/keyboard/text-input.d.ts +10 -0
  307. package/lib/+shared/editor/core/layers/cursor.layer.d.ts +24 -0
  308. package/lib/+shared/editor/core/layers/edges.layer.d.ts +24 -0
  309. package/lib/+shared/editor/core/layers/lines.d.ts +21 -0
  310. package/lib/+shared/editor/core/layers/pages.layer.d.ts +27 -0
  311. package/lib/+shared/editor/core/layers/print.edges.layer.d.ts +4 -0
  312. package/lib/+shared/editor/core/layers/print.pages.layer.d.ts +4 -0
  313. package/lib/+shared/editor/core/layers/print.text.layer.d.ts +5 -0
  314. package/lib/+shared/editor/core/layers/renderloop.d.ts +8 -0
  315. package/lib/+shared/editor/core/layers/scrollbar.d.ts +41 -0
  316. package/lib/+shared/editor/core/layers/selection.layer.d.ts +19 -0
  317. package/lib/+shared/editor/core/layers/text.layer.d.ts +22 -0
  318. package/lib/+shared/editor/core/models/display-token.model.d.ts +27 -0
  319. package/lib/+shared/editor/core/models/distance.model.d.ts +6 -0
  320. package/lib/+shared/editor/core/models/edge-element.model.d.ts +7 -0
  321. package/lib/+shared/editor/core/models/format-ext.model.d.ts +5 -0
  322. package/lib/+shared/editor/core/models/indent.model.d.ts +7 -0
  323. package/lib/+shared/editor/core/models/line-info.model.d.ts +14 -0
  324. package/lib/+shared/editor/core/models/margin.model.d.ts +9 -0
  325. package/lib/+shared/editor/core/models/numbering-data.model.d.ts +11 -0
  326. package/lib/+shared/editor/core/models/render-changes.model.d.ts +14 -0
  327. package/lib/+shared/editor/core/paging/page-vertical-data.model.d.ts +8 -0
  328. package/lib/+shared/editor/core/paging/pages.wrap.d.ts +41 -0
  329. package/lib/+shared/editor/core/paging/paragraph.d.ts +44 -0
  330. package/lib/+shared/editor/core/paging/text-line-info.d.ts +17 -0
  331. package/lib/+shared/editor/core/point.d.ts +7 -0
  332. package/lib/+shared/editor/core/print.renderer.d.ts +25 -0
  333. package/lib/+shared/editor/core/range.d.ts +32 -0
  334. package/lib/+shared/editor/core/renderer.d.ts +60 -0
  335. package/lib/+shared/editor/core/search.d.ts +32 -0
  336. package/lib/+shared/editor/core/virtual.renderer.d.ts +93 -0
  337. package/lib/+shared/editor/custom-components/external-element/element-toolbar/element-toolbar.component.d.ts +14 -0
  338. package/lib/+shared/editor/custom-components/external-element/external-element.service.d.ts +7 -0
  339. package/lib/+shared/editor/custom-components/external-element/external-elements.const.d.ts +5 -0
  340. package/lib/+shared/editor/custom-components/external-element/external-sidenav.interface.d.ts +5 -0
  341. package/lib/+shared/editor/custom-components/external-element/external.component.d.ts +17 -0
  342. package/lib/+shared/editor/custom-components/external-element/models/element-data.model.d.ts +7 -0
  343. package/lib/+shared/editor/custom-components/external-element/models/external-element.model.d.ts +20 -0
  344. package/lib/+shared/editor/custom-components/external-element/models/external-sidenav.model.d.ts +7 -0
  345. package/lib/+shared/editor/custom-components/image/components/image.component.d.ts +31 -0
  346. package/lib/+shared/editor/custom-components/image/input-handler/image-input.handler.d.ts +13 -0
  347. package/lib/+shared/editor/custom-components/image/interfaces/size.d.ts +4 -0
  348. package/lib/+shared/editor/custom-components/image/resizer/coordinate.d.ts +4 -0
  349. package/lib/+shared/editor/custom-components/image/resizer/direction-wrapper.d.ts +9 -0
  350. package/lib/+shared/editor/custom-components/image/resizer/direction.enum.d.ts +10 -0
  351. package/lib/+shared/editor/custom-components/image/resizer/resizer.component.d.ts +26 -0
  352. package/lib/+shared/editor/custom-components/image/resizer/size-delta.d.ts +4 -0
  353. package/lib/+shared/editor/custom-components/image/resizer/size-wrapper.d.ts +19 -0
  354. package/lib/+shared/editor/custom-components/image/services/image-api.service.d.ts +8 -0
  355. package/lib/+shared/editor/custom-components/shared/abstract/base.component.d.ts +24 -0
  356. package/lib/+shared/editor/custom-components/shared/constants/custom-content-markers.const.d.ts +2 -0
  357. package/lib/+shared/editor/custom-components/shared/helpers/custom-component.hepler.d.ts +8 -0
  358. package/lib/+shared/editor/custom-components/shared/interfaces/custom-components.interface.d.ts +13 -0
  359. package/lib/+shared/editor/custom-components/shared/services/component/component.service.d.ts +21 -0
  360. package/lib/+shared/editor/custom-components/shared/services/custom-content/custom-content.service.d.ts +30 -0
  361. package/lib/+shared/editor/custom-components/shared/services/overlay/overlay.service.d.ts +18 -0
  362. package/lib/+shared/editor/custom-components/shared/types/custom-content.d.ts +5 -0
  363. package/lib/+shared/editor/custom-components/tab/tab.component.d.ts +15 -0
  364. package/lib/+shared/editor/custom-components/table/cell-resizer/cell-resizer.d.ts +31 -0
  365. package/lib/+shared/editor/custom-components/table/components/table-cell.component.d.ts +45 -0
  366. package/lib/+shared/editor/custom-components/table/components/table.component.d.ts +55 -0
  367. package/lib/+shared/editor/custom-components/table/enums/reisizer-side.enum.d.ts +6 -0
  368. package/lib/+shared/editor/custom-components/table/enums/vertical-merge.enum.d.ts +4 -0
  369. package/lib/+shared/editor/custom-components/table/models/cell-data.model.d.ts +11 -0
  370. package/lib/+shared/editor/custom-components/table/models/cell-resizer-parameters.model.d.ts +9 -0
  371. package/lib/+shared/editor/custom-components/table/models/row-data.model.d.ts +7 -0
  372. package/lib/+shared/editor/custom-components/table/models/selection-range.model.d.ts +17 -0
  373. package/lib/+shared/editor/custom-components/table/overlay-menu/overlay-menu.component.d.ts +37 -0
  374. package/lib/+shared/editor/custom-components/table/selection/table-selection.d.ts +74 -0
  375. package/lib/+shared/editor/editor.component.d.ts +43 -0
  376. package/lib/+shared/editor/editor.module.d.ts +30 -0
  377. package/lib/+shared/editor/execution/models/cell-session-source.model.d.ts +11 -0
  378. package/lib/+shared/editor/execution/models/edge-session-source.model.d.ts +11 -0
  379. package/lib/+shared/editor/execution/models/general-properties.model.d.ts +7 -0
  380. package/lib/+shared/editor/execution/models/main-session-source.model.d.ts +5 -0
  381. package/lib/+shared/editor/execution/models/session-source.model.d.ts +5 -0
  382. package/lib/+shared/editor/execution/models/session.model.d.ts +12 -0
  383. package/lib/+shared/editor/execution/regulator.service.d.ts +45 -0
  384. package/lib/+shared/editor/helpers/break.helper.d.ts +7 -0
  385. package/lib/+shared/editor/helpers/content.helper.d.ts +9 -0
  386. package/lib/+shared/editor/helpers/format.helper.d.ts +4 -0
  387. package/lib/+shared/editor/helpers/indexed-element.helper.d.ts +4 -0
  388. package/lib/+shared/editor/helpers/tab.helper.d.ts +3 -0
  389. package/lib/+shared/editor/interaction/editor.service.d.ts +194 -0
  390. package/lib/+shared/editor/interaction/input.handler.d.ts +25 -0
  391. package/lib/+shared/editor/interaction/mouse.handler.d.ts +14 -0
  392. package/lib/+shared/editor/interfaces/contents.interface.d.ts +22 -0
  393. package/lib/+shared/editor/interfaces/insert-index.interface.d.ts +3 -0
  394. package/lib/+shared/editor/operation-history/operation-history.d.ts +65 -0
  395. package/lib/+shared/editor/operation-history/operation.type.d.ts +24 -0
  396. package/lib/+shared/editor/operation-history/operations-history-info.model.d.ts +5 -0
  397. package/lib/+shared/editor/operations/enums/command-type.enum.d.ts +29 -0
  398. package/lib/+shared/editor/operations/enums/target-type.enum.d.ts +5 -0
  399. package/lib/+shared/editor/operations/helpers/break-operations.helper.d.ts +5 -0
  400. package/lib/+shared/editor/operations/helpers/content-operations.helper.d.ts +5 -0
  401. package/lib/+shared/editor/operations/helpers/format-operations.helper.d.ts +11 -0
  402. package/lib/+shared/editor/operations/helpers/image-operations.helper.d.ts +7 -0
  403. package/lib/+shared/editor/operations/helpers/indexed-element-operations.helper.d.ts +8 -0
  404. package/lib/+shared/editor/operations/helpers/link-operations.helper.d.ts +6 -0
  405. package/lib/+shared/editor/operations/helpers/numbering-operations.helper.d.ts +11 -0
  406. package/lib/+shared/editor/operations/helpers/operations-helper.helper.d.ts +52 -0
  407. package/lib/+shared/editor/operations/helpers/paragraph-operations.helper.d.ts +13 -0
  408. package/lib/+shared/editor/operations/helpers/save-commands.helper.d.ts +43 -0
  409. package/lib/+shared/editor/operations/helpers/tab-operations.helper.d.ts +4 -0
  410. package/lib/+shared/editor/operations/helpers/table-operations.helper.d.ts +30 -0
  411. package/lib/+shared/editor/operations/helpers/target-operations.helper.d.ts +6 -0
  412. package/lib/+shared/editor/positioning/selection.d.ts +50 -0
  413. package/lib/+shared/editor/store/editor.actions.d.ts +11 -0
  414. package/lib/+shared/editor-header/editor-header.component.d.ts +101 -0
  415. package/lib/+shared/editor-search/editor-search-dialog.component.d.ts +24 -0
  416. package/lib/+shared/editor-toolbar/color-picker/color-picker.component.d.ts +12 -0
  417. package/lib/+shared/editor-toolbar/constants/numbering-templates.const.d.ts +6 -0
  418. package/lib/+shared/editor-toolbar/constants/svg-icons.const.d.ts +12 -0
  419. package/lib/+shared/editor-toolbar/editor-toolbar.component.d.ts +44 -0
  420. package/lib/+shared/editor-toolbar/editor-toolbar.module.d.ts +28 -0
  421. package/lib/+shared/editor-toolbar/enums/alignment.enum.d.ts +6 -0
  422. package/lib/+shared/editor-toolbar/enums/numbering-template-type.enum.d.ts +14 -0
  423. package/lib/+shared/editor-toolbar/enums/numbering-type.enum.d.ts +4 -0
  424. package/lib/+shared/editor-toolbar/font/font.component.d.ts +13 -0
  425. package/lib/+shared/editor-toolbar/font-size/font-size.component.d.ts +24 -0
  426. package/lib/+shared/editor-toolbar/font-style/font-style.component.d.ts +24 -0
  427. package/lib/+shared/editor-toolbar/format/format.component.d.ts +12 -0
  428. package/lib/+shared/editor-toolbar/heading/heading.component.d.ts +8 -0
  429. package/lib/+shared/editor-toolbar/helpers/toolbar-styles.helper.d.ts +6 -0
  430. package/lib/+shared/editor-toolbar/numbering/numbering.component.d.ts +18 -0
  431. package/lib/+shared/editor-toolbar/print/print.component.d.ts +7 -0
  432. package/lib/+shared/editor-toolbar/undo-redo/undo-redo.component.d.ts +10 -0
  433. package/lib/+shared/editor-toolbar/zoom/zoom.component.d.ts +22 -0
  434. package/lib/+shared/enums/mode.enum.d.ts +5 -0
  435. package/lib/+shared/helpers/print.helper.d.ts +9 -0
  436. package/lib/+shared/insert-table/insert-table.component.d.ts +21 -0
  437. package/lib/+shared/services/commands.service.d.ts +10 -0
  438. package/lib/+shared/services/custom-icon.service.d.ts +11 -0
  439. package/lib/models/generated/add-numbering.model.d.ts +7 -0
  440. package/lib/models/generated/apply-element-style.model.d.ts +6 -0
  441. package/lib/models/generated/apply-image-style.model.d.ts +6 -0
  442. package/lib/models/generated/apply-paragraph-style.model.d.ts +7 -0
  443. package/lib/models/generated/apply-text-style.model.d.ts +7 -0
  444. package/lib/models/generated/borders-style.model.d.ts +8 -0
  445. package/lib/models/generated/break.model.d.ts +5 -0
  446. package/lib/models/generated/cell.model.d.ts +32 -0
  447. package/lib/models/generated/column-section.model.d.ts +7 -0
  448. package/lib/models/generated/column.model.d.ts +5 -0
  449. package/lib/models/generated/command.model.d.ts +60 -0
  450. package/lib/models/generated/delete.model.d.ts +5 -0
  451. package/lib/models/generated/document-name.model.d.ts +5 -0
  452. package/lib/models/generated/document.model.d.ts +7 -0
  453. package/lib/models/generated/docx.model.d.ts +43 -0
  454. package/lib/models/generated/edge-target.model.d.ts +5 -0
  455. package/lib/models/generated/edge.model.d.ts +24 -0
  456. package/lib/models/generated/element.model.d.ts +9 -0
  457. package/lib/models/generated/file-source.model.d.ts +4 -0
  458. package/lib/models/generated/format.model.d.ts +7 -0
  459. package/lib/models/generated/heading.model.d.ts +12 -0
  460. package/lib/models/generated/image-data.model.d.ts +6 -0
  461. package/lib/models/generated/image.model.d.ts +31 -0
  462. package/lib/models/generated/insert-break.model.d.ts +6 -0
  463. package/lib/models/generated/insert-element.model.d.ts +5 -0
  464. package/lib/models/generated/insert-image.model.d.ts +6 -0
  465. package/lib/models/generated/insert-link.model.d.ts +7 -0
  466. package/lib/models/generated/insert-styled-text.model.d.ts +7 -0
  467. package/lib/models/generated/insert-tab.model.d.ts +4 -0
  468. package/lib/models/generated/insert-table-columns.model.d.ts +7 -0
  469. package/lib/models/generated/insert-table-rows.model.d.ts +7 -0
  470. package/lib/models/generated/insert-table.model.d.ts +8 -0
  471. package/lib/models/generated/insert-text.model.d.ts +5 -0
  472. package/lib/models/generated/last-document-revision.model.d.ts +9 -0
  473. package/lib/models/generated/link-data.model.d.ts +5 -0
  474. package/lib/models/generated/link.model.d.ts +7 -0
  475. package/lib/models/generated/margins.model.d.ts +7 -0
  476. package/lib/models/generated/numbering-level.model.d.ts +14 -0
  477. package/lib/models/generated/numbering.model.d.ts +7 -0
  478. package/lib/models/generated/operation.model.d.ts +8 -0
  479. package/lib/models/generated/page-numbers.model.d.ts +8 -0
  480. package/lib/models/generated/paragraph-style.model.d.ts +18 -0
  481. package/lib/models/generated/paragraph.model.d.ts +6 -0
  482. package/lib/models/generated/remove-numberings.model.d.ts +5 -0
  483. package/lib/models/generated/remove-table-columns.model.d.ts +6 -0
  484. package/lib/models/generated/remove-table-rows.model.d.ts +6 -0
  485. package/lib/models/generated/replace-by-text.model.d.ts +6 -0
  486. package/lib/models/generated/replace.model.d.ts +19 -0
  487. package/lib/models/generated/resize-table-columns.model.d.ts +9 -0
  488. package/lib/models/generated/restore-numberings.model.d.ts +7 -0
  489. package/lib/models/generated/restore-paragraph-styles.model.d.ts +5 -0
  490. package/lib/models/generated/restore-table.model.d.ts +6 -0
  491. package/lib/models/generated/restore-text-styles.model.d.ts +5 -0
  492. package/lib/models/generated/restore.model.d.ts +22 -0
  493. package/lib/models/generated/revision.model.d.ts +9 -0
  494. package/lib/models/generated/row.model.d.ts +9 -0
  495. package/lib/models/generated/tab.model.d.ts +6 -0
  496. package/lib/models/generated/table-cell.model.d.ts +6 -0
  497. package/lib/models/generated/table.model.d.ts +18 -0
  498. package/lib/models/generated/target.model.d.ts +9 -0
  499. package/lib/models/generated/text-style.model.d.ts +14 -0
  500. package/package.json +35 -0
  501. package/public-api.d.ts +42 -0
  502. package/src/_ngx-noder.theme.scss +22 -0
  503. package/src/assets/fonts/nc-iconfont.css +333 -0
  504. package/src/assets/fonts/nc-iconfont.eot +0 -0
  505. package/src/assets/fonts/nc-iconfont.svg +110 -0
  506. package/src/assets/fonts/nc-iconfont.ttf +0 -0
  507. package/src/assets/fonts/nc-iconfont.woff +0 -0
  508. package/src/lib/+shared/add-link-dialog/_add-link-dialog.theme.scss +21 -0
  509. package/src/lib/+shared/editor/_editor.theme.scss +35 -0
  510. package/src/lib/+shared/editor/custom-components/external-element/element-toolbar/_element-toolbar.theme.scss +10 -0
  511. package/src/lib/+shared/editor-header/_editor-header.theme.scss +106 -0
  512. package/src/lib/+shared/editor-toolbar/_editor-toolbar.theme.scss +33 -0
  513. package/src/lib/+shared/editor-toolbar/numbering/_numbering.theme.scss +29 -0
  514. package/src/lib/+shared/insert-table/_insert-table.theme.scss +22 -0
  515. package/src/styles.scss +58 -0
@@ -0,0 +1,160 @@
1
+ import { fromEvent } from 'rxjs';
2
+ import { Alignment } from '../core/constants/alignments.const';
3
+ import { BreakTypes } from '../core/enums/break-types.enum';
4
+ import { ParagraphStyleModel } from '../../../models/generated/paragraph-style.model';
5
+ import { TextStyleModel } from '../../../models/generated/text-style.model';
6
+ export class InputHandler {
7
+ constructor(textarea, editor) {
8
+ this.actions = {};
9
+ this.actionsWithScroll = {};
10
+ this.actionsWithSelection = {};
11
+ this.textareaKeyDown$ = fromEvent(textarea, 'keydown').subscribe((event) => this.onKeyDown(event, editor));
12
+ this.textareaBlur$ = fromEvent(textarea, 'blur').subscribe(() => editor.onBlur());
13
+ this.textareaFocus$ = fromEvent(textarea, 'focus').subscribe(() => editor.onFocus());
14
+ this.textareaInput$ = fromEvent(textarea, 'input').subscribe(() => this.onInput(editor));
15
+ this.textareaCut$ = fromEvent(textarea, 'cut').subscribe((event) => this.onCut(editor, event));
16
+ this.textareaCopy$ = fromEvent(textarea, 'copy').subscribe((event) => editor.onCopy(event));
17
+ this.textareaPaste$ = fromEvent(textarea, 'paste').subscribe((event) => this.onPaste(editor, event));
18
+ this.fillActions(editor);
19
+ this.fillActionsWithScroll(editor);
20
+ this.fillActionsWithSelection(editor);
21
+ }
22
+ destroy() {
23
+ this.textareaKeyDown$?.unsubscribe();
24
+ this.textareaBlur$?.unsubscribe();
25
+ this.textareaFocus$?.unsubscribe();
26
+ this.textareaInput$?.unsubscribe();
27
+ this.textareaCut$?.unsubscribe();
28
+ this.textareaCopy$?.unsubscribe();
29
+ this.textareaPaste$?.unsubscribe();
30
+ }
31
+ onInput(editor) {
32
+ if (editor.isViewOnly) {
33
+ return;
34
+ }
35
+ editor.onInput();
36
+ }
37
+ onCut(editor, event) {
38
+ if (editor.isViewOnly) {
39
+ return;
40
+ }
41
+ editor.onCut(event);
42
+ }
43
+ onPaste(editor, event) {
44
+ if (editor.isViewOnly) {
45
+ return;
46
+ }
47
+ editor.onPaste(event);
48
+ }
49
+ onKeyDown(event, editor) {
50
+ const keyCombination = this.getKeyCombination(event);
51
+ if (this.actions[keyCombination]) {
52
+ this.actions[keyCombination]();
53
+ }
54
+ else if (this.actionsWithScroll[keyCombination] && !editor.isViewOnly) {
55
+ this.actionsWithScroll[keyCombination]();
56
+ editor.scrollCursorIntoMainView();
57
+ }
58
+ else if (this.actionsWithSelection[keyCombination]) {
59
+ this.actionsWithSelection[keyCombination]();
60
+ editor.scrollCursorIntoMainView();
61
+ editor.onSelectionChange();
62
+ }
63
+ else {
64
+ return;
65
+ }
66
+ event.preventDefault();
67
+ }
68
+ getKeyCombination(event) {
69
+ let result = event.metaKey ? 'Command-' : '';
70
+ if (event.ctrlKey) {
71
+ result = `${result}Ctrl-`;
72
+ }
73
+ if (event.altKey) {
74
+ result = `${result}Alt-`;
75
+ }
76
+ if (event.shiftKey) {
77
+ result = `${result}Shift-`;
78
+ }
79
+ return `${result}${event.code}`;
80
+ }
81
+ selectAll(editor) {
82
+ editor.selection.selectAll(editor.session.model);
83
+ editor.onSelectionChange();
84
+ }
85
+ fillActions(editor) {
86
+ this.actions['Ctrl-KeyA'] = () => this.selectAll(editor);
87
+ this.actions['Command-KeyA'] = () => this.selectAll(editor);
88
+ this.actions['Ctrl-KeyF'] = () => editor.openSearch();
89
+ this.actions['Command-KeyF'] = () => editor.openSearch();
90
+ this.actions['Shift-PageDown'] = () => editor.selectPageDown();
91
+ this.actions['PageDown'] = () => editor.gotoPageDown();
92
+ this.actions['Shift-PageUp'] = () => editor.selectPageUp();
93
+ this.actions['PageUp'] = () => editor.gotoPageUp();
94
+ }
95
+ fillActionsWithScroll(editor) {
96
+ this.actionsWithScroll['Ctrl-KeyZ'] = () => editor.undo();
97
+ this.actionsWithScroll['Command-KeyZ'] = () => editor.undo();
98
+ this.actionsWithScroll['Ctrl-KeyY'] = () => editor.redo();
99
+ this.actionsWithScroll['Command-KeyY'] = () => editor.redo();
100
+ this.actionsWithScroll['Delete'] = () => editor.removeRight();
101
+ this.actionsWithScroll['Shift-Delete'] = () => editor.removeRight();
102
+ this.actionsWithScroll['Backspace'] = () => editor.removeLeft();
103
+ this.actionsWithScroll['Shift-Backspace'] = () => editor.removeLeft();
104
+ this.actionsWithScroll['Alt-Backspace'] = () => editor.removeToLineStart();
105
+ this.actionsWithScroll['Command-Backspace'] = () => editor.removeToLineStart();
106
+ this.actionsWithScroll['Alt-Delete'] = () => editor.removeToLineEnd();
107
+ this.actionsWithScroll['Command-Delete'] = () => editor.removeToLineEnd();
108
+ this.actionsWithScroll['Ctrl-Backspace'] = () => editor.removeWordLeft();
109
+ this.actionsWithScroll['Ctrl-Alt-Backspace'] = () => editor.removeWordLeft();
110
+ this.actionsWithScroll['Ctrl-Delete'] = () => editor.removeWordRight();
111
+ this.actionsWithScroll['Ctrl-Alt-Delete'] = () => editor.removeWordRight();
112
+ this.actionsWithScroll['Ctrl-KeyL'] = () => editor.applyParagraphStyles(new ParagraphStyleModel({ alignment: Alignment.left }));
113
+ this.actionsWithScroll['Ctrl-KeyM'] = () => editor.applyParagraphStyles(new ParagraphStyleModel({ alignment: Alignment.center }));
114
+ this.actionsWithScroll['Ctrl-KeyR'] = () => editor.applyParagraphStyles(new ParagraphStyleModel({ alignment: Alignment.right }));
115
+ this.actionsWithScroll['Ctrl-KeyB'] = () => editor.applyTextStyles(new TextStyleModel({ bold: !editor.session.stylesMap.bold }));
116
+ this.actionsWithScroll['Ctrl-KeyI'] = () => editor.applyTextStyles(new TextStyleModel({ italic: !editor.session.stylesMap.italic }));
117
+ this.actionsWithScroll['Ctrl-KeyU'] = () => editor.applyTextStyles(new TextStyleModel({ underline: !editor.session.stylesMap.underline }));
118
+ this.actionsWithScroll['Ctrl-Enter'] = () => editor.insertBreak(BreakTypes.Page);
119
+ this.actionsWithScroll['Shift-Enter'] = () => editor.insertBreak(BreakTypes.TextWrapping);
120
+ this.actionsWithScroll['Tab'] = () => editor.insertTab();
121
+ }
122
+ fillActionsWithSelection(editor) {
123
+ this.actionsWithSelection['Ctrl-Shift-Home'] = () => editor.selection.selectFileStart();
124
+ this.actionsWithSelection['Command-Shift-Home'] = () => editor.selection.selectFileStart();
125
+ this.actionsWithSelection['Command-Shift-ArrowUp'] = () => editor.selection.selectFileStart();
126
+ this.actionsWithSelection['Ctrl-Home'] = () => editor.selection.navigateFileStart();
127
+ this.actionsWithSelection['Command-Home'] = () => editor.selection.navigateFileStart();
128
+ this.actionsWithSelection['Command-ArrowUp'] = () => editor.selection.navigateFileStart();
129
+ this.actionsWithSelection['Shift-ArrowUp'] = () => editor.selection.selectUp(editor.session);
130
+ this.actionsWithSelection['ArrowUp'] = () => editor.selection.navigateUp(editor.session);
131
+ this.actionsWithSelection['Ctrl-Shift-End'] = () => editor.selection.selectFileEnd(editor.session);
132
+ this.actionsWithSelection['Command-Shift-End'] = () => editor.selection.selectFileEnd(editor.session);
133
+ this.actionsWithSelection['Command-Shift-ArrowDown'] = () => editor.selection.selectFileEnd(editor.session);
134
+ this.actionsWithSelection['Ctrl-End'] = () => editor.selection.navigateFileEnd(editor.session);
135
+ this.actionsWithSelection['Command-End'] = () => editor.selection.navigateFileEnd(editor.session);
136
+ this.actionsWithSelection['Command-ArrowDown'] = () => editor.selection.navigateFileEnd(editor.session);
137
+ this.actionsWithSelection['Shift-ArrowDown'] = () => editor.selection.selectDown(editor.session);
138
+ this.actionsWithSelection['ArrowDown'] = () => editor.selection.navigateDown(editor.session);
139
+ this.actionsWithSelection['Ctrl-Shift-ArrowLeft'] = () => editor.selection.selectWordLeft(editor.session);
140
+ this.actionsWithSelection['Ctrl-ArrowLeft'] = () => editor.selection.navigateWordLeft(editor.session);
141
+ this.actionsWithSelection['Alt-Shift-ArrowLeft'] = () => editor.selection.selectLineStart(editor.session);
142
+ this.actionsWithSelection['Command-Shift-ArrowLeft'] = () => editor.selection.selectLineStart(editor.session);
143
+ this.actionsWithSelection['Shift-Home'] = () => editor.selection.selectLineStart(editor.session);
144
+ this.actionsWithSelection['Alt-ArrowLeft'] = () => editor.selection.navigateLineStart(editor.session);
145
+ this.actionsWithSelection['Home'] = () => editor.selection.navigateLineStart(editor.session);
146
+ this.actionsWithSelection['Shift-ArrowLeft'] = () => editor.selection.selectLeft(editor.session);
147
+ this.actionsWithSelection['ArrowLeft'] = () => editor.selection.navigateLeft(editor.session);
148
+ this.actionsWithSelection['Ctrl-Shift-ArrowRight'] = () => editor.selection.selectWordRight(editor.session);
149
+ this.actionsWithSelection['Ctrl-ArrowRight'] = () => editor.selection.navigateWordRight(editor.session);
150
+ this.actionsWithSelection['Alt-Shift-ArrowRight'] = () => editor.selection.selectLineEnd(editor.session);
151
+ this.actionsWithSelection['Command-Shift-ArrowRight'] = () => editor.selection.selectLineEnd(editor.session);
152
+ this.actionsWithSelection['Shift-End'] = () => editor.selection.selectLineEnd(editor.session);
153
+ this.actionsWithSelection['Alt-ArrowRight'] = () => editor.selection.navigateLineEnd(editor.session);
154
+ this.actionsWithSelection['Command-ArrowRight'] = () => editor.selection.navigateLineEnd(editor.session);
155
+ this.actionsWithSelection['End'] = () => editor.selection.navigateLineEnd(editor.session);
156
+ this.actionsWithSelection['Shift-ArrowRight'] = () => editor.selection.selectRight(editor.session);
157
+ this.actionsWithSelection['ArrowRight'] = () => editor.selection.navigateRight(editor.session);
158
+ }
159
+ }
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliLytzaGFyZWQvZWRpdG9yL2ludGVyYWN0aW9uL2lucHV0LmhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFFL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUU1RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUN0RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFFNUUsTUFBTSxPQUFPLFlBQVk7SUFxQnJCLFlBQVksUUFBYyxFQUFFLE1BQWM7UUFOekIsWUFBTyxHQUFrQyxFQUFFLENBQUM7UUFFNUMsc0JBQWlCLEdBQWtDLEVBQUUsQ0FBQztRQUV0RCx5QkFBb0IsR0FBa0MsRUFBRSxDQUFDO1FBR3RFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQW9CLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDMUgsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNsRixJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxjQUFjLEdBQUcsU0FBUyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3pGLElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFxQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQy9HLElBQUksQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFxQixFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDNUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQXFCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDckgsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxhQUFhLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLGNBQWMsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUNuQyxJQUFJLENBQUMsY0FBYyxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLGFBQWEsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsY0FBYyxFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxPQUFPLENBQUMsTUFBYztRQUMxQixJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUU7WUFDbkIsT0FBTztTQUNWO1FBQ0QsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTyxLQUFLLENBQUMsTUFBYyxFQUFFLEtBQXFCO1FBQy9DLElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRTtZQUNuQixPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFTyxPQUFPLENBQUMsTUFBYyxFQUFFLEtBQXFCO1FBQ2pELElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRTtZQUNuQixPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFTyxTQUFTLENBQUMsS0FBb0IsRUFBRSxNQUFjO1FBQ2xELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1NBQ2xDO2FBQU0sSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFO1lBQ3JFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1NBQ3JDO2FBQU0sSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDbEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDNUMsTUFBTSxDQUFDLHdCQUF3QixFQUFFLENBQUM7WUFDbEMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDOUI7YUFBTTtZQUNILE9BQU87U0FDVjtRQUNELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8saUJBQWlCLENBQUMsS0FBb0I7UUFDMUMsSUFBSSxNQUFNLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDN0MsSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQ2YsTUFBTSxHQUFHLEdBQUcsTUFBTSxPQUFPLENBQUM7U0FDN0I7UUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDZCxNQUFNLEdBQUcsR0FBRyxNQUFNLE1BQU0sQ0FBQztTQUM1QjtRQUNELElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRTtZQUNoQixNQUFNLEdBQUcsR0FBRyxNQUFNLFFBQVEsQ0FBQztTQUM5QjtRQUNELE9BQU8sR0FBRyxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFTyxTQUFTLENBQUMsTUFBYztRQUM1QixNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFTyxXQUFXLENBQUMsTUFBYztRQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3pELElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDL0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDM0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdkQsQ0FBQztJQUVPLHFCQUFxQixDQUFDLE1BQWM7UUFDeEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMxRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3RCxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzlELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdEUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzNFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQy9FLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdEUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN6RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDN0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN2RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDM0UsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDaEksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLG1CQUFtQixDQUFDLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxjQUFjLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDakksSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUN2QyxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksY0FBYyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzdGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FDdkMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLGNBQWMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakYsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzFGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDN0QsQ0FBQztJQUVPLHdCQUF3QixDQUFDLE1BQWM7UUFDM0MsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4RixJQUFJLENBQUMsb0JBQW9CLENBQUMsb0JBQW9CLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzNGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDOUYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNwRixJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3ZGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUMxRixJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzdGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25HLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RyxJQUFJLENBQUMsb0JBQW9CLENBQUMseUJBQXlCLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvRixJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4RyxJQUFJLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM3RixJQUFJLENBQUMsb0JBQW9CLENBQUMsc0JBQXNCLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHFCQUFxQixDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5RyxJQUFJLENBQUMsb0JBQW9CLENBQUMsWUFBWSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN0RyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0YsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0YsSUFBSSxDQUFDLG9CQUFvQixDQUFDLHVCQUF1QixDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6RyxJQUFJLENBQUMsb0JBQW9CLENBQUMsMEJBQTBCLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0csSUFBSSxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5RixJQUFJLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLG9CQUFvQixDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUYsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGtCQUFrQixDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25HLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkcsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQWxpZ25tZW50IH0gZnJvbSAnLi4vY29yZS9jb25zdGFudHMvYWxpZ25tZW50cy5jb25zdCc7XG5pbXBvcnQgeyBCcmVha1R5cGVzIH0gZnJvbSAnLi4vY29yZS9lbnVtcy9icmVhay10eXBlcy5lbnVtJztcbmltcG9ydCB7IEVkaXRvciB9IGZyb20gJy4uL2NvcmUvZWRpdG9yJztcbmltcG9ydCB7IFBhcmFncmFwaFN0eWxlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3BhcmFncmFwaC1zdHlsZS5tb2RlbCc7XG5pbXBvcnQgeyBUZXh0U3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvdGV4dC1zdHlsZS5tb2RlbCc7XG5cbmV4cG9ydCBjbGFzcyBJbnB1dEhhbmRsZXIge1xuICAgIHJlYWRvbmx5IHRleHRhcmVhS2V5RG93biQ6IFN1YnNjcmlwdGlvbjtcblxuICAgIHJlYWRvbmx5IHRleHRhcmVhQmx1ciQ6IFN1YnNjcmlwdGlvbjtcblxuICAgIHJlYWRvbmx5IHRleHRhcmVhRm9jdXMkOiBTdWJzY3JpcHRpb247XG5cbiAgICByZWFkb25seSB0ZXh0YXJlYUlucHV0JDogU3Vic2NyaXB0aW9uO1xuXG4gICAgcmVhZG9ubHkgdGV4dGFyZWFDdXQkOiBTdWJzY3JpcHRpb247XG5cbiAgICByZWFkb25seSB0ZXh0YXJlYUNvcHkkOiBTdWJzY3JpcHRpb247XG5cbiAgICByZWFkb25seSB0ZXh0YXJlYVBhc3RlJDogU3Vic2NyaXB0aW9uO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBhY3Rpb25zOiB7IFtrZXk6IHN0cmluZ106ICgpID0+IHZvaWQgfSA9IHt9O1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBhY3Rpb25zV2l0aFNjcm9sbDogeyBba2V5OiBzdHJpbmddOiAoKSA9PiB2b2lkIH0gPSB7fTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aW9uc1dpdGhTZWxlY3Rpb246IHsgW2tleTogc3RyaW5nXTogKCkgPT4gdm9pZCB9ID0ge307XG5cbiAgICBjb25zdHJ1Y3Rvcih0ZXh0YXJlYTogTm9kZSwgZWRpdG9yOiBFZGl0b3IpIHtcbiAgICAgICAgdGhpcy50ZXh0YXJlYUtleURvd24kID0gZnJvbUV2ZW50KHRleHRhcmVhLCAna2V5ZG93bicpLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHRoaXMub25LZXlEb3duKGV2ZW50LCBlZGl0b3IpKTtcbiAgICAgICAgdGhpcy50ZXh0YXJlYUJsdXIkID0gZnJvbUV2ZW50KHRleHRhcmVhLCAnYmx1cicpLnN1YnNjcmliZSgoKSA9PiBlZGl0b3Iub25CbHVyKCkpO1xuICAgICAgICB0aGlzLnRleHRhcmVhRm9jdXMkID0gZnJvbUV2ZW50KHRleHRhcmVhLCAnZm9jdXMnKS5zdWJzY3JpYmUoKCkgPT4gZWRpdG9yLm9uRm9jdXMoKSk7XG4gICAgICAgIHRoaXMudGV4dGFyZWFJbnB1dCQgPSBmcm9tRXZlbnQodGV4dGFyZWEsICdpbnB1dCcpLnN1YnNjcmliZSgoKSA9PiB0aGlzLm9uSW5wdXQoZWRpdG9yKSk7XG4gICAgICAgIHRoaXMudGV4dGFyZWFDdXQkID0gZnJvbUV2ZW50KHRleHRhcmVhLCAnY3V0Jykuc3Vic2NyaWJlKChldmVudDogQ2xpcGJvYXJkRXZlbnQpID0+IHRoaXMub25DdXQoZWRpdG9yLCBldmVudCkpO1xuICAgICAgICB0aGlzLnRleHRhcmVhQ29weSQgPSBmcm9tRXZlbnQodGV4dGFyZWEsICdjb3B5Jykuc3Vic2NyaWJlKChldmVudDogQ2xpcGJvYXJkRXZlbnQpID0+IGVkaXRvci5vbkNvcHkoZXZlbnQpKTtcbiAgICAgICAgdGhpcy50ZXh0YXJlYVBhc3RlJCA9IGZyb21FdmVudCh0ZXh0YXJlYSwgJ3Bhc3RlJykuc3Vic2NyaWJlKChldmVudDogQ2xpcGJvYXJkRXZlbnQpID0+IHRoaXMub25QYXN0ZShlZGl0b3IsIGV2ZW50KSk7XG4gICAgICAgIHRoaXMuZmlsbEFjdGlvbnMoZWRpdG9yKTtcbiAgICAgICAgdGhpcy5maWxsQWN0aW9uc1dpdGhTY3JvbGwoZWRpdG9yKTtcbiAgICAgICAgdGhpcy5maWxsQWN0aW9uc1dpdGhTZWxlY3Rpb24oZWRpdG9yKTtcbiAgICB9XG5cbiAgICBkZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnRleHRhcmVhS2V5RG93biQ/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMudGV4dGFyZWFCbHVyJD8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy50ZXh0YXJlYUZvY3VzJD8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy50ZXh0YXJlYUlucHV0JD8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy50ZXh0YXJlYUN1dCQ/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMudGV4dGFyZWFDb3B5JD8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy50ZXh0YXJlYVBhc3RlJD8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uSW5wdXQoZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICAgICAgaWYgKGVkaXRvci5pc1ZpZXdPbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZWRpdG9yLm9uSW5wdXQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uQ3V0KGVkaXRvcjogRWRpdG9yLCBldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGVkaXRvci5pc1ZpZXdPbmx5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZWRpdG9yLm9uQ3V0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uUGFzdGUoZWRpdG9yOiBFZGl0b3IsIGV2ZW50OiBDbGlwYm9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZWRpdG9yLmlzVmlld09ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBlZGl0b3Iub25QYXN0ZShldmVudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGtleUNvbWJpbmF0aW9uID0gdGhpcy5nZXRLZXlDb21iaW5hdGlvbihldmVudCk7XG4gICAgICAgIGlmICh0aGlzLmFjdGlvbnNba2V5Q29tYmluYXRpb25dKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGlvbnNba2V5Q29tYmluYXRpb25dKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5hY3Rpb25zV2l0aFNjcm9sbFtrZXlDb21iaW5hdGlvbl0gJiYgIWVkaXRvci5pc1ZpZXdPbmx5KSB7XG4gICAgICAgICAgICB0aGlzLmFjdGlvbnNXaXRoU2Nyb2xsW2tleUNvbWJpbmF0aW9uXSgpO1xuICAgICAgICAgICAgZWRpdG9yLnNjcm9sbEN1cnNvckludG9NYWluVmlldygpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aW9uc1dpdGhTZWxlY3Rpb25ba2V5Q29tYmluYXRpb25dKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGlvbnNXaXRoU2VsZWN0aW9uW2tleUNvbWJpbmF0aW9uXSgpO1xuICAgICAgICAgICAgZWRpdG9yLnNjcm9sbEN1cnNvckludG9NYWluVmlldygpO1xuICAgICAgICAgICAgZWRpdG9yLm9uU2VsZWN0aW9uQ2hhbmdlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEtleUNvbWJpbmF0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGV2ZW50Lm1ldGFLZXkgPyAnQ29tbWFuZC0nIDogJyc7XG4gICAgICAgIGlmIChldmVudC5jdHJsS2V5KSB7XG4gICAgICAgICAgICByZXN1bHQgPSBgJHtyZXN1bHR9Q3RybC1gO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5hbHRLZXkpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGAke3Jlc3VsdH1BbHQtYDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGAke3Jlc3VsdH1TaGlmdC1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgJHtyZXN1bHR9JHtldmVudC5jb2RlfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWxlY3RBbGwoZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICAgICAgZWRpdG9yLnNlbGVjdGlvbi5zZWxlY3RBbGwoZWRpdG9yLnNlc3Npb24ubW9kZWwpO1xuICAgICAgICBlZGl0b3Iub25TZWxlY3Rpb25DaGFuZ2UoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbGxBY3Rpb25zKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aW9uc1snQ3RybC1LZXlBJ10gPSAoKSA9PiB0aGlzLnNlbGVjdEFsbChlZGl0b3IpO1xuICAgICAgICB0aGlzLmFjdGlvbnNbJ0NvbW1hbmQtS2V5QSddID0gKCkgPT4gdGhpcy5zZWxlY3RBbGwoZWRpdG9yKTtcbiAgICAgICAgdGhpcy5hY3Rpb25zWydDdHJsLUtleUYnXSA9ICgpID0+IGVkaXRvci5vcGVuU2VhcmNoKCk7XG4gICAgICAgIHRoaXMuYWN0aW9uc1snQ29tbWFuZC1LZXlGJ10gPSAoKSA9PiBlZGl0b3Iub3BlblNlYXJjaCgpO1xuICAgICAgICB0aGlzLmFjdGlvbnNbJ1NoaWZ0LVBhZ2VEb3duJ10gPSAoKSA9PiBlZGl0b3Iuc2VsZWN0UGFnZURvd24oKTtcbiAgICAgICAgdGhpcy5hY3Rpb25zWydQYWdlRG93biddID0gKCkgPT4gZWRpdG9yLmdvdG9QYWdlRG93bigpO1xuICAgICAgICB0aGlzLmFjdGlvbnNbJ1NoaWZ0LVBhZ2VVcCddID0gKCkgPT4gZWRpdG9yLnNlbGVjdFBhZ2VVcCgpO1xuICAgICAgICB0aGlzLmFjdGlvbnNbJ1BhZ2VVcCddID0gKCkgPT4gZWRpdG9yLmdvdG9QYWdlVXAoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbGxBY3Rpb25zV2l0aFNjcm9sbChlZGl0b3I6IEVkaXRvcik6IHZvaWQge1xuICAgICAgICB0aGlzLmFjdGlvbnNXaXRoU2Nyb2xsWydDdHJsLUtleVonXSA9ICgpID0+IGVkaXRvci51bmRvKCk7XG4gICAgICAgIHRoaXMuYWN0aW9uc1dpdGhTY3JvbGxbJ0NvbW1hbmQtS2V5WiddID0gKCkgPT4gZWRpdG9yLnVuZG8oKTtcbiAgICAgICAgdGhpcy5hY3Rpb25zV2l0aFNjcm9sbFsnQ3RybC1LZXlZJ10gPSAoKSA9PiBlZGl0b3IucmVkbygpO1xuICAgICAgICB0aGlzLmFjdGlvbnNXaXRoU2Nyb2xsWydDb21tYW5kLUtleVknXSA9ICgpID0+IGVkaXRvci5yZWRvKCk7XG4gICAgICAgIHRoaXMuYWN0aW9uc1dpdGhTY3JvbGxbJ0RlbGV0ZSddID0gKCkgPT4gZWRpdG9yLnJlbW92ZVJpZ2h0KCk7XG4gICAgICAgIHRoaXMuYWN0aW9uc1dpdGhTY3JvbGxbJ1NoaWZ0LURlbGV0ZSddID0gKCkgPT4gZWRpdG9yLnJlbW92ZVJpZ2h0KCk7XG4gICAgICAgIHRoaXMuYWN0aW9uc1dpdGhTY3JvbGxbJ0JhY2tzcGFjZSddID0gKCkgPT4gZWRpdG9yLnJlbW92ZUxlZnQoKTtcbiAgICAgICAgdGhpcy5hY3Rpb25zV2l0aFNjcm9sbFsnU2hpZnQtQmFja3NwYWNlJ10gPSAoKSA9PiBlZGl0b3IucmVtb3ZlTGVmdCgpO1xuICAgICAgICB0aGlzLmFjdGlvbnNXaXRoU2Nyb2xsWydBbHQtQmFja3NwYWNlJ10gPSAoKSA9PiBlZGl0b3IucmVtb3ZlVG9MaW5lU3RhcnQoKTtcbiAgICAgICAgdGhpcy5hY3Rpb25zV2l0aFNjcm9sbFsnQ29tbWFuZC1CYWNrc3BhY2UnXSA9ICgpID0+IGVkaXRvci5yZW1vdmVUb0xpbmVTdGFydCgpO1xuICAgICAgICB0aGlzLmFjdGlvbnNXaXRoU2Nyb2xsWydBbHQtRGVsZXRlJ10gPSAoKSA9PiBlZGl0b3IucmVtb3ZlVG9MaW5lRW5kKCk7XG4gICAgICAgIHRoaXMuYWN0aW9uc1dpdGhTY3JvbGxbJ0NvbW1hbmQtRGVsZXRlJ10gPSAoKSA9PiBlZGl0b3IucmVtb3ZlVG9MaW5lRW5kKCk7XG4gICAgICAgIHRoaXMuYWN0aW9uc1dpdGhTY3JvbGxbJ0N0cmwtQmFja3NwYWNlJ10gPSAoKSA9PiBlZGl0b3IucmVtb3ZlV29yZExlZnQoKTtcbiAgICAgICAgdGhpcy5hY3Rpb25zV2l0aFNjcm9sbFsnQ3RybC1BbHQtQmFja3NwYWNlJ10gPSAoKSA9PiBlZGl0b3IucmVtb3ZlV29yZExlZnQoKTtcbiAgICAgICAgdGhpcy5hY3Rpb25zV2l0aFNjcm9sbFsnQ3RybC1EZWxldGUnXSA9ICgpID0+IGVkaXRvci5yZW1vdmVXb3JkUmlnaHQoKTtcbiAgICAgICAgdGhpcy5hY3Rpb25zV2l0aFNjcm9sbFsnQ3RybC1BbHQtRGVsZXRlJ10gPSAoKSA9PiBlZGl0b3IucmVtb3ZlV29yZFJpZ2h0KCk7XG4gICAgICAgIHRoaXMuYWN0aW9uc1dpdGhTY3JvbGxbJ0N0cmwtS2V5TCddID0gKCkgPT4gZWRpdG9yLmFwcGx5UGFyYWdyYXBoU3R5bGVzKG5ldyBQYXJhZ3JhcGhTdHlsZU1vZGVsKHsgYWxpZ25tZW50OiBBbGlnbm1lbnQubGVmdCB9KSk7XG4gICAgICAgIHRoaXMuYWN0aW9uc1dpdGhTY3JvbGxbJ0N0cmwtS2V5TSddID0gKCkgPT4gZWRpdG9yLmFwcGx5UGFyYWdyYXBoU3R5bGVzKG5ldyBQYXJhZ3JhcGhTdHlsZU1vZGVsKHsgYWxpZ25tZW50OiBBbGlnbm1lbnQuY2VudGVyIH0pKTtcbiAgICAgICAgdGhpcy5hY3Rpb25zV2l0aFNjcm9sbFsnQ3RybC1LZXlSJ10gPSAoKSA9PiBlZGl0b3IuYXBwbHlQYXJhZ3JhcGhTdHlsZXMobmV3IFBhcmFncmFwaFN0eWxlTW9kZWwoeyBhbGlnbm1lbnQ6IEFsaWdubWVudC5yaWdodCB9KSk7XG4gICAgICAgIHRoaXMuYWN0aW9uc1dpdGhTY3JvbGxbJ0N0cmwtS2V5QiddID0gKCkgPT4gZWRpdG9yLmFwcGx5VGV4dFN0eWxlcyhuZXcgVGV4dFN0eWxlTW9kZWwoeyBib2xkOiAhZWRpdG9yLnNlc3Npb24uc3R5bGVzTWFwLmJvbGQgfSkpO1xuICAgICAgICB0aGlzLmFjdGlvbnNXaXRoU2Nyb2xsWydDdHJsLUtleUknXSA9ICgpID0+XG4gICAgICAgICAgICBlZGl0b3IuYXBwbHlUZXh0U3R5bGVzKG5ldyBUZXh0U3R5bGVNb2RlbCh7IGl0YWxpYzogIWVkaXRvci5zZXNzaW9uLnN0eWxlc01hcC5pdGFsaWMgfSkpO1xuICAgICAgICB0aGlzLmFjdGlvbnNXaXRoU2Nyb2xsWydDdHJsLUtleVUnXSA9ICgpID0+XG4gICAgICAgICAgICBlZGl0b3IuYXBwbHlUZXh0U3R5bGVzKG5ldyBUZXh0U3R5bGVNb2RlbCh7IHVuZGVybGluZTogIWVkaXRvci5zZXNzaW9uLnN0eWxlc01hcC51bmRlcmxpbmUgfSkpO1xuICAgICAgICB0aGlzLmFjdGlvbnNXaXRoU2Nyb2xsWydDdHJsLUVudGVyJ10gPSAoKSA9PiBlZGl0b3IuaW5zZXJ0QnJlYWsoQnJlYWtUeXBlcy5QYWdlKTtcbiAgICAgICAgdGhpcy5hY3Rpb25zV2l0aFNjcm9sbFsnU2hpZnQtRW50ZXInXSA9ICgpID0+IGVkaXRvci5pbnNlcnRCcmVhayhCcmVha1R5cGVzLlRleHRXcmFwcGluZyk7XG4gICAgICAgIHRoaXMuYWN0aW9uc1dpdGhTY3JvbGxbJ1RhYiddID0gKCkgPT4gZWRpdG9yLmluc2VydFRhYigpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZmlsbEFjdGlvbnNXaXRoU2VsZWN0aW9uKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aW9uc1dpdGhTZWxlY3Rpb25bJ0N0cmwtU2hpZnQtSG9tZSddID0gKCkgPT4gZWRpdG9yLnNlbGVjdGlvbi5zZWxlY3RGaWxlU3RhcnQoKTtcbiAgICAgICAgdGhpcy5hY3Rpb25zV2l0aFNlbGVjdGlvblsnQ29tbWFuZC1TaGlmdC1Ib21lJ10gPSAoKSA9PiBlZGl0b3Iuc2VsZWN0aW9uLnNlbGVjdEZpbGVTdGFydCgpO1xuICAgICAgICB0aGlzLmFjdGlvbnNXaXRoU2VsZWN0aW9uWydDb21tYW5kLVNoaWZ0LUFycm93VXAnXSA9ICgpID0+IGVkaXRvci5zZWxlY3Rpb24uc2VsZWN0RmlsZVN0YXJ0KCk7XG4gICAgICAgIHRoaXMuYWN0aW9uc1dpdGhTZWxlY3Rpb25bJ0N0cmwtSG9tZSddID0gKCkgPT4gZWRpdG9yLnNlbGVjdGlvbi5uYXZpZ2F0ZUZpbGVTdGFydCgpO1xuICAgICAgICB0aGlzLmFjdGlvbnNXaXRoU2VsZWN0aW9uWydDb21tYW5kLUhvbWUnXSA9ICgpID0+IGVkaXRvci5zZWxlY3Rpb24ubmF2aWdhdGVGaWxlU3RhcnQoKTtcbiAgICAgICAgdGhpcy5hY3Rpb25zV2l0aFNlbGVjdGlvblsnQ29tbWFuZC1BcnJvd1VwJ10gPSAoKSA9PiBlZGl0b3Iuc2VsZWN0aW9uLm5hdmlnYXRlRmlsZVN0YXJ0KCk7XG4gICAgICAgIHRoaXMuYWN0aW9uc1dpdGhTZWxlY3Rpb25bJ1NoaWZ0LUFycm93VXAnXSA9ICgpID0+IGVkaXRvci5zZWxlY3Rpb24uc2VsZWN0VXAoZWRpdG9yLnNlc3Npb24pO1xuICAgICAgICB0aGlzLmFjdGlvbnNXaXRoU2VsZWN0aW9uWydBcnJvd1VwJ10gPSAoKSA9PiBlZGl0b3Iuc2VsZWN0aW9uLm5hdmlnYXRlVXAoZWRpdG9yLnNlc3Npb24pO1xuICAgICAgICB0aGlzLmFjdGlvbnNXaXRoU2VsZWN0aW9uWydDdHJsLVNoaWZ0LUVuZCddID0gKCkgPT4gZWRpdG9yLnNlbGVjdGlvbi5zZWxlY3RGaWxlRW5kKGVkaXRvci5zZXNzaW9uKTtcbiAgICAgICAgdGhpcy5hY3Rpb25zV2l0aFNlbGVjdGlvblsnQ29tbWFuZC1TaGlmdC1FbmQnXSA9ICgpID0+IGVkaXRvci5zZWxlY3Rpb24uc2VsZWN0RmlsZUVuZChlZGl0b3Iuc2Vzc2lvbik7XG4gICAgICAgIHRoaXMuYWN0aW9uc1dpdGhTZWxlY3Rpb25bJ0NvbW1hbmQtU2hpZnQtQXJyb3dEb3duJ10gPSAoKSA9PiBlZGl0b3Iuc2VsZWN0aW9uLnNlbGVjdEZpbGVFbmQoZWRpdG9yLnNlc3Npb24pO1xuICAgICAgICB0aGlzLmFjdGlvbnNXaXRoU2VsZWN0aW9uWydDdHJsLUVuZCddID0gKCkgPT4gZWRpdG9yLnNlbGVjdGlvbi5uYXZpZ2F0ZUZpbGVFbmQoZWRpdG9yLnNlc3Npb24pO1xuICAgICAgICB0aGlzLmFjdGlvbnNXaXRoU2VsZWN0aW9uWydDb21tYW5kLUVuZCddID0gKCkgPT4gZWRpdG9yLnNlbGVjdGlvbi5uYXZpZ2F0ZUZpbGVFbmQoZWRpdG9yLnNlc3Npb24pO1xuICAgICAgICB0aGlzLmFjdGlvbnNXaXRoU2VsZWN0aW9uWydDb21tYW5kLUFycm93RG93biddID0gKCkgPT4gZWRpdG9yLnNlbGVjdGlvbi5uYXZpZ2F0ZUZpbGVFbmQoZWRpdG9yLnNlc3Npb24pO1xuICAgICAgICB0aGlzLmFjdGlvbnNXaXRoU2VsZWN0aW9uWydTaGlmdC1BcnJvd0Rvd24nXSA9ICgpID0+IGVkaXRvci5zZWxlY3Rpb24uc2VsZWN0RG93bihlZGl0b3Iuc2Vzc2lvbik7XG4gICAgICAgIHRoaXMuYWN0aW9uc1dpdGhTZWxlY3Rpb25bJ0Fycm93RG93biddID0gKCkgPT4gZWRpdG9yLnNlbGVjdGlvbi5uYXZpZ2F0ZURvd24oZWRpdG9yLnNlc3Npb24pO1xuICAgICAgICB0aGlzLmFjdGlvbnNXaXRoU2VsZWN0aW9uWydDdHJsLVNoaWZ0LUFycm93TGVmdCddID0gKCkgPT4gZWRpdG9yLnNlbGVjdGlvbi5zZWxlY3RXb3JkTGVmdChlZGl0b3Iuc2Vzc2lvbik7XG4gICAgICAgIHRoaXMuYWN0aW9uc1dpdGhTZWxlY3Rpb25bJ0N0cmwtQXJyb3dMZWZ0J10gPSAoKSA9PiBlZGl0b3Iuc2VsZWN0aW9uLm5hdmlnYXRlV29yZExlZnQoZWRpdG9yLnNlc3Npb24pO1xuICAgICAgICB0aGlzLmFjdGlvbnNXaXRoU2VsZWN0aW9uWydBbHQtU2hpZnQtQXJyb3dMZWZ0J10gPSAoKSA9PiBlZGl0b3Iuc2VsZWN0aW9uLnNlbGVjdExpbmVTdGFydChlZGl0b3Iuc2Vzc2lvbik7XG4gICAgICAgIHRoaXMuYWN0aW9uc1dpdGhTZWxlY3Rpb25bJ0NvbW1hbmQtU2hpZnQtQXJyb3dMZWZ0J10gPSAoKSA9PiBlZGl0b3Iuc2VsZWN0aW9uLnNlbGVjdExpbmVTdGFydChlZGl0b3Iuc2Vzc2lvbik7XG4gICAgICAgIHRoaXMuYWN0aW9uc1dpdGhTZWxlY3Rpb25bJ1NoaWZ0LUhvbWUnXSA9ICgpID0+IGVkaXRvci5zZWxlY3Rpb24uc2VsZWN0TGluZVN0YXJ0KGVkaXRvci5zZXNzaW9uKTtcbiAgICAgICAgdGhpcy5hY3Rpb25zV2l0aFNlbGVjdGlvblsnQWx0LUFycm93TGVmdCddID0gKCkgPT4gZWRpdG9yLnNlbGVjdGlvbi5uYXZpZ2F0ZUxpbmVTdGFydChlZGl0b3Iuc2Vzc2lvbik7XG4gICAgICAgIHRoaXMuYWN0aW9uc1dpdGhTZWxlY3Rpb25bJ0hvbWUnXSA9ICgpID0+IGVkaXRvci5zZWxlY3Rpb24ubmF2aWdhdGVMaW5lU3RhcnQoZWRpdG9yLnNlc3Npb24pO1xuICAgICAgICB0aGlzLmFjdGlvbnNXaXRoU2VsZWN0aW9uWydTaGlmdC1BcnJvd0xlZnQnXSA9ICgpID0+IGVkaXRvci5zZWxlY3Rpb24uc2VsZWN0TGVmdChlZGl0b3Iuc2Vzc2lvbik7XG4gICAgICAgIHRoaXMuYWN0aW9uc1dpdGhTZWxlY3Rpb25bJ0Fycm93TGVmdCddID0gKCkgPT4gZWRpdG9yLnNlbGVjdGlvbi5uYXZpZ2F0ZUxlZnQoZWRpdG9yLnNlc3Npb24pO1xuICAgICAgICB0aGlzLmFjdGlvbnNXaXRoU2VsZWN0aW9uWydDdHJsLVNoaWZ0LUFycm93UmlnaHQnXSA9ICgpID0+IGVkaXRvci5zZWxlY3Rpb24uc2VsZWN0V29yZFJpZ2h0KGVkaXRvci5zZXNzaW9uKTtcbiAgICAgICAgdGhpcy5hY3Rpb25zV2l0aFNlbGVjdGlvblsnQ3RybC1BcnJvd1JpZ2h0J10gPSAoKSA9PiBlZGl0b3Iuc2VsZWN0aW9uLm5hdmlnYXRlV29yZFJpZ2h0KGVkaXRvci5zZXNzaW9uKTtcbiAgICAgICAgdGhpcy5hY3Rpb25zV2l0aFNlbGVjdGlvblsnQWx0LVNoaWZ0LUFycm93UmlnaHQnXSA9ICgpID0+IGVkaXRvci5zZWxlY3Rpb24uc2VsZWN0TGluZUVuZChlZGl0b3Iuc2Vzc2lvbik7XG4gICAgICAgIHRoaXMuYWN0aW9uc1dpdGhTZWxlY3Rpb25bJ0NvbW1hbmQtU2hpZnQtQXJyb3dSaWdodCddID0gKCkgPT4gZWRpdG9yLnNlbGVjdGlvbi5zZWxlY3RMaW5lRW5kKGVkaXRvci5zZXNzaW9uKTtcbiAgICAgICAgdGhpcy5hY3Rpb25zV2l0aFNlbGVjdGlvblsnU2hpZnQtRW5kJ10gPSAoKSA9PiBlZGl0b3Iuc2VsZWN0aW9uLnNlbGVjdExpbmVFbmQoZWRpdG9yLnNlc3Npb24pO1xuICAgICAgICB0aGlzLmFjdGlvbnNXaXRoU2VsZWN0aW9uWydBbHQtQXJyb3dSaWdodCddID0gKCkgPT4gZWRpdG9yLnNlbGVjdGlvbi5uYXZpZ2F0ZUxpbmVFbmQoZWRpdG9yLnNlc3Npb24pO1xuICAgICAgICB0aGlzLmFjdGlvbnNXaXRoU2VsZWN0aW9uWydDb21tYW5kLUFycm93UmlnaHQnXSA9ICgpID0+IGVkaXRvci5zZWxlY3Rpb24ubmF2aWdhdGVMaW5lRW5kKGVkaXRvci5zZXNzaW9uKTtcbiAgICAgICAgdGhpcy5hY3Rpb25zV2l0aFNlbGVjdGlvblsnRW5kJ10gPSAoKSA9PiBlZGl0b3Iuc2VsZWN0aW9uLm5hdmlnYXRlTGluZUVuZChlZGl0b3Iuc2Vzc2lvbik7XG4gICAgICAgIHRoaXMuYWN0aW9uc1dpdGhTZWxlY3Rpb25bJ1NoaWZ0LUFycm93UmlnaHQnXSA9ICgpID0+IGVkaXRvci5zZWxlY3Rpb24uc2VsZWN0UmlnaHQoZWRpdG9yLnNlc3Npb24pO1xuICAgICAgICB0aGlzLmFjdGlvbnNXaXRoU2VsZWN0aW9uWydBcnJvd1JpZ2h0J10gPSAoKSA9PiBlZGl0b3Iuc2VsZWN0aW9uLm5hdmlnYXRlUmlnaHQoZWRpdG9yLnNlc3Npb24pO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,49 @@
1
+ import { fromEvent, throttleTime } from 'rxjs';
2
+ import { MouseButton } from '../core/enums/mouse-button.enum';
3
+ export class MouseHandler {
4
+ constructor(container, editor) {
5
+ this.clicks = 0;
6
+ this.containerWheel$ = fromEvent(container, 'wheel')
7
+ .pipe(throttleTime(20))
8
+ .subscribe((event) => editor.onMouseWheel(event));
9
+ this.containerMouseDown$ = fromEvent(container, 'mousedown').subscribe((event) => this.onMultiMouseDown(event, editor));
10
+ }
11
+ destroy() {
12
+ this.containerWheel$?.unsubscribe();
13
+ this.containerMouseDown$?.unsubscribe();
14
+ this.endMousePress();
15
+ }
16
+ startMousePress(editor) {
17
+ this.endMousePress();
18
+ this.documentMouseMove$ = fromEvent(document, 'mousemove')
19
+ .pipe(throttleTime(20))
20
+ .subscribe((event) => editor.onMousePressedMove(event.clientX, event.clientY));
21
+ this.documentMouseUp$ = fromEvent(document, 'mouseup').subscribe(() => this.endMousePress());
22
+ }
23
+ endMousePress() {
24
+ this.documentMouseMove$?.unsubscribe();
25
+ this.documentMouseUp$?.unsubscribe();
26
+ }
27
+ onMultiMouseDown(event, editor) {
28
+ if (event.button !== MouseButton.Left) {
29
+ editor.onMouseClick(event);
30
+ return;
31
+ }
32
+ this.clicks = event.detail > 1 && this.clicks < 4 ? this.clicks + 1 : 1;
33
+ switch (this.clicks) {
34
+ case 1:
35
+ editor.onLeftClick(event);
36
+ break;
37
+ case 2:
38
+ editor.onDoubleClick(event);
39
+ break;
40
+ case 3:
41
+ editor.onTripleClick(event);
42
+ break;
43
+ case 4:
44
+ editor.onQuadClick(event);
45
+ break;
46
+ }
47
+ }
48
+ }
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW91c2UuaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliLytzaGFyZWQvZWRpdG9yL2ludGVyYWN0aW9uL21vdXNlLmhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUU5RCxNQUFNLE9BQU8sWUFBWTtJQVdyQixZQUFZLFNBQWUsRUFBRSxNQUFjO1FBVm5DLFdBQU0sR0FBRyxDQUFDLENBQUM7UUFXZixJQUFJLENBQUMsZUFBZSxHQUFHLFNBQVMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDO2FBQy9DLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDdEIsU0FBUyxDQUFDLENBQUMsS0FBaUIsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQWlCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN4SSxDQUFDO0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxlQUFlLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQWM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQzthQUNyRCxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2FBQ3RCLFNBQVMsQ0FBQyxDQUFDLEtBQWlCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQy9GLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUNqRyxDQUFDO0lBRUQsYUFBYTtRQUNULElBQUksQ0FBQyxrQkFBa0IsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUN2QyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEtBQWlCLEVBQUUsTUFBYztRQUN0RCxJQUFLLEtBQUssQ0FBQyxNQUFzQixLQUFLLFdBQVcsQ0FBQyxJQUFJLEVBQUU7WUFDcEQsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNqQixLQUFLLENBQUM7Z0JBQ0YsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUIsTUFBTTtZQUNWLEtBQUssQ0FBQztnQkFDRixNQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QixNQUFNO1lBQ1YsS0FBSyxDQUFDO2dCQUNGLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVCLE1BQU07WUFDVixLQUFLLENBQUM7Z0JBQ0YsTUFBTSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUIsTUFBTTtTQUNiO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJzY3JpcHRpb24sIHRocm90dGxlVGltZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBFZGl0b3IgfSBmcm9tICcuLi9jb3JlL2VkaXRvcic7XG5pbXBvcnQgeyBNb3VzZUJ1dHRvbiB9IGZyb20gJy4uL2NvcmUvZW51bXMvbW91c2UtYnV0dG9uLmVudW0nO1xuXG5leHBvcnQgY2xhc3MgTW91c2VIYW5kbGVyIHtcbiAgICBwcml2YXRlIGNsaWNrcyA9IDA7XG5cbiAgICBkb2N1bWVudE1vdXNlTW92ZSQ6IFN1YnNjcmlwdGlvbjtcblxuICAgIGRvY3VtZW50TW91c2VVcCQ6IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnRhaW5lcldoZWVsJDogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29udGFpbmVyTW91c2VEb3duJDogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3RydWN0b3IoY29udGFpbmVyOiBOb2RlLCBlZGl0b3I6IEVkaXRvcikge1xuICAgICAgICB0aGlzLmNvbnRhaW5lcldoZWVsJCA9IGZyb21FdmVudChjb250YWluZXIsICd3aGVlbCcpXG4gICAgICAgICAgICAucGlwZSh0aHJvdHRsZVRpbWUoMjApKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IFdoZWVsRXZlbnQpID0+IGVkaXRvci5vbk1vdXNlV2hlZWwoZXZlbnQpKTtcbiAgICAgICAgdGhpcy5jb250YWluZXJNb3VzZURvd24kID0gZnJvbUV2ZW50KGNvbnRhaW5lciwgJ21vdXNlZG93bicpLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHRoaXMub25NdWx0aU1vdXNlRG93bihldmVudCwgZWRpdG9yKSk7XG4gICAgfVxuXG4gICAgZGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb250YWluZXJXaGVlbCQ/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuY29udGFpbmVyTW91c2VEb3duJD8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5lbmRNb3VzZVByZXNzKCk7XG4gICAgfVxuXG4gICAgc3RhcnRNb3VzZVByZXNzKGVkaXRvcjogRWRpdG9yKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZW5kTW91c2VQcmVzcygpO1xuICAgICAgICB0aGlzLmRvY3VtZW50TW91c2VNb3ZlJCA9IGZyb21FdmVudChkb2N1bWVudCwgJ21vdXNlbW92ZScpXG4gICAgICAgICAgICAucGlwZSh0aHJvdHRsZVRpbWUoMjApKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IGVkaXRvci5vbk1vdXNlUHJlc3NlZE1vdmUoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSkpO1xuICAgICAgICB0aGlzLmRvY3VtZW50TW91c2VVcCQgPSBmcm9tRXZlbnQoZG9jdW1lbnQsICdtb3VzZXVwJykuc3Vic2NyaWJlKCgpID0+IHRoaXMuZW5kTW91c2VQcmVzcygpKTtcbiAgICB9XG5cbiAgICBlbmRNb3VzZVByZXNzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRvY3VtZW50TW91c2VNb3ZlJD8udW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5kb2N1bWVudE1vdXNlVXAkPy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25NdWx0aU1vdXNlRG93bihldmVudDogTW91c2VFdmVudCwgZWRpdG9yOiBFZGl0b3IpOiB2b2lkIHtcbiAgICAgICAgaWYgKChldmVudC5idXR0b24gYXMgTW91c2VCdXR0b24pICE9PSBNb3VzZUJ1dHRvbi5MZWZ0KSB7XG4gICAgICAgICAgICBlZGl0b3Iub25Nb3VzZUNsaWNrKGV2ZW50KTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2xpY2tzID0gZXZlbnQuZGV0YWlsID4gMSAmJiB0aGlzLmNsaWNrcyA8IDQgPyB0aGlzLmNsaWNrcyArIDEgOiAxO1xuICAgICAgICBzd2l0Y2ggKHRoaXMuY2xpY2tzKSB7XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgZWRpdG9yLm9uTGVmdENsaWNrKGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICBlZGl0b3Iub25Eb3VibGVDbGljayhldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgZWRpdG9yLm9uVHJpcGxlQ2xpY2soZXZlbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgIGVkaXRvci5vblF1YWRDbGljayhldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudHMuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvK3NoYXJlZC9lZGl0b3IvaW50ZXJmYWNlcy9jb250ZW50cy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyZWFrTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2JyZWFrLm1vZGVsJztcbmltcG9ydCB7IENvbHVtblNlY3Rpb25Nb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvY29sdW1uLXNlY3Rpb24ubW9kZWwnO1xuaW1wb3J0IHsgRWxlbWVudE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9lbGVtZW50Lm1vZGVsJztcbmltcG9ydCB7IEZvcm1hdE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9mb3JtYXQubW9kZWwnO1xuaW1wb3J0IHsgSW1hZ2VNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW1hZ2UubW9kZWwnO1xuaW1wb3J0IHsgTGlua01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9saW5rLm1vZGVsJztcbmltcG9ydCB7IFBhcmFncmFwaE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9wYXJhZ3JhcGgubW9kZWwnO1xuaW1wb3J0IHsgVGFibGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvdGFibGUubW9kZWwnO1xuaW1wb3J0IHsgVGFiTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3RhYi5tb2RlbCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudHNJbnRlcmZhY2Uge1xuICAgIGNvbnRlbnQ6IHN0cmluZztcbiAgICBjb250ZW50TGVuZ3RoOiBudW1iZXI7XG4gICAgcGFyYWdyYXBoczogUGFyYWdyYXBoTW9kZWxbXTtcbiAgICBmb3JtYXRzOiBGb3JtYXRNb2RlbFtdO1xuICAgIGltYWdlczogSW1hZ2VNb2RlbFtdO1xuICAgIGxpbmtzOiBMaW5rTW9kZWxbXTtcbiAgICB0YWJsZXM6IFRhYmxlTW9kZWxbXTtcbiAgICBlbGVtZW50czogRWxlbWVudE1vZGVsW107XG4gICAgYnJlYWtzOiBCcmVha01vZGVsW107XG4gICAgY29sdW1uU2VjdGlvbnM6IENvbHVtblNlY3Rpb25Nb2RlbFtdO1xuICAgIHRhYnM6IFRhYk1vZGVsW107XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zZXJ0LWluZGV4LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliLytzaGFyZWQvZWRpdG9yL2ludGVyZmFjZXMvaW5zZXJ0LWluZGV4LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBJbnNlcnRJbmRleEludGVyZmFjZSB7XG4gICAgaW5zZXJ0SW5kZXg6IG51bWJlcjtcbn1cbiJdfQ==
@@ -0,0 +1,184 @@
1
+ import { AddNumberingModel } from '../../../models/generated/add-numbering.model';
2
+ import { ApplyElementStyleModel } from '../../../models/generated/apply-element-style.model';
3
+ import { ApplyImageStyleModel } from '../../../models/generated/apply-image-style.model';
4
+ import { ApplyParagraphStyleModel } from '../../../models/generated/apply-paragraph-style.model';
5
+ import { ApplyTextStyleModel } from '../../../models/generated/apply-text-style.model';
6
+ import { DeleteModel } from '../../../models/generated/delete.model';
7
+ import { InsertStyledTextModel } from '../../../models/generated/insert-styled-text.model';
8
+ import { InsertTableColumnsModel } from '../../../models/generated/insert-table-columns.model';
9
+ import { InsertTableRowsModel } from '../../../models/generated/insert-table-rows.model';
10
+ import { InsertTextModel } from '../../../models/generated/insert-text.model';
11
+ import { OperationsHistoryInfoModel } from './operations-history-info.model';
12
+ import { RemoveNumberingsModel } from '../../../models/generated/remove-numberings.model';
13
+ import { RemoveTableColumnsModel } from '../../../models/generated/remove-table-columns.model';
14
+ import { RemoveTableRowsModel } from '../../../models/generated/remove-table-rows.model';
15
+ import { ResizeTableColumnsModel } from '../../../models/generated/resize-table-columns.model';
16
+ import { RestoreNumberingsModel } from '../../../models/generated/restore-numberings.model';
17
+ import { RestoreParagraphStylesModel } from '../../../models/generated/restore-paragraph-styles.model';
18
+ import { RestoreTableModel } from '../../../models/generated/restore-table.model';
19
+ import { RestoreTextStylesModel } from '../../../models/generated/restore-text-styles.model';
20
+ export class OperationHistory {
21
+ constructor(editorService, regulatorService) {
22
+ this.editorService = editorService;
23
+ this.regulatorService = regulatorService;
24
+ this.MAX_HISTORY = 100;
25
+ this.storage = [];
26
+ this.step = -1;
27
+ this.editorService.historyInfo = new OperationsHistoryInfoModel(this.step, this.storage.length - 1);
28
+ }
29
+ pushInsertText(insertIndex, text) {
30
+ const redoStep = new InsertTextModel({ insertIndex, text });
31
+ const undoStep = new DeleteModel({ startIndex: insertIndex, endIndex: insertIndex + text.length });
32
+ this.addToHistory(undoStep, redoStep);
33
+ }
34
+ pushInsertElement(model) {
35
+ const undoStep = new DeleteModel({ startIndex: model.element.insertIndex, endIndex: model.element.insertIndex + 1 });
36
+ this.addToHistory(undoStep, model);
37
+ }
38
+ pushInsertBreak(model, endIndex) {
39
+ const undoStep = new DeleteModel({ startIndex: model.insertIndex, endIndex });
40
+ this.addToHistory(undoStep, model);
41
+ }
42
+ pushInsertTab(model) {
43
+ const undoStep = new DeleteModel({ startIndex: model.insertIndex, endIndex: model.insertIndex + 1 });
44
+ this.addToHistory(undoStep, model);
45
+ }
46
+ pushInsertImage(model) {
47
+ const undoStep = new DeleteModel({ startIndex: model.insertIndex, endIndex: model.insertIndex + 1 });
48
+ this.addToHistory(undoStep, model);
49
+ }
50
+ pushInsertLink(model) {
51
+ const undoStep = new DeleteModel({ startIndex: model.insertIndex, endIndex: model.endIndex });
52
+ this.addToHistory(undoStep, model);
53
+ }
54
+ pushInsertTable(model) {
55
+ const undoStep = new DeleteModel({ startIndex: model.insertIndex, endIndex: model.insertIndex + model.content.length });
56
+ this.addToHistory(undoStep, model);
57
+ }
58
+ pushInsertStyledText(insertIndex, text, style) {
59
+ const redoStep = new InsertStyledTextModel({ insertIndex, text, textStyle: style });
60
+ const undoStep = new DeleteModel({ startIndex: insertIndex, endIndex: insertIndex + text.length });
61
+ this.addToHistory(undoStep, redoStep);
62
+ }
63
+ pushDelete(model) {
64
+ const redoStep = new DeleteModel({ startIndex: model.startIndex, endIndex: model.startIndex + model.text.length });
65
+ model.endIndex = model.startIndex;
66
+ this.addToHistory(model, redoStep);
67
+ }
68
+ pushApplyTextStyle(startIndex, endIndex, style, formats) {
69
+ const redoStep = new ApplyTextStyleModel({ startIndex, endIndex, textStyle: style });
70
+ const undoStep = new RestoreTextStylesModel({ formats });
71
+ this.addToHistory(undoStep, redoStep);
72
+ }
73
+ pushApplyParagraphStyle(startIndex, endIndex, style, paragraphs) {
74
+ const redoStep = new ApplyParagraphStyleModel({ startIndex, endIndex, paragraphStyle: style });
75
+ const undoStep = new RestoreParagraphStylesModel({ paragraphs });
76
+ this.addToHistory(undoStep, redoStep);
77
+ }
78
+ pushApplyElementStyle(previous, current) {
79
+ const redoStep = new ApplyElementStyleModel({ insertIndex: current.insertIndex, width: current.width, height: current.height });
80
+ const undoStep = new ApplyElementStyleModel({ insertIndex: previous.insertIndex, width: previous.width, height: previous.height });
81
+ this.addToHistory(undoStep, redoStep);
82
+ }
83
+ pushInsertTableRows(insertIndex, rowsCount, targetIndex, inheritIndex, table) {
84
+ const oldTable = JSON.parse(JSON.stringify(table));
85
+ const redoStep = new InsertTableRowsModel({ insertIndex, rowsCount, targetIndex, inheritIndex });
86
+ const undoStep = new RestoreTableModel({ insertIndex, oldTable });
87
+ this.addToHistory(undoStep, redoStep);
88
+ }
89
+ pushInsertTableColumns(insertIndex, columnsCount, targetIndex, inheritIndex, table) {
90
+ const oldTable = JSON.parse(JSON.stringify(table));
91
+ const redoStep = new InsertTableColumnsModel({ insertIndex, columnsCount, targetIndex, inheritIndex });
92
+ const undoStep = new RestoreTableModel({ insertIndex, oldTable });
93
+ this.addToHistory(undoStep, redoStep);
94
+ }
95
+ pushRemoveTableRows(insertIndex, startIndex, endIndex, table) {
96
+ const oldTable = JSON.parse(JSON.stringify(table));
97
+ const redoStep = new RemoveTableRowsModel({ insertIndex, startIndex, endIndex });
98
+ const undoStep = new RestoreTableModel({ insertIndex, oldTable });
99
+ this.addToHistory(undoStep, redoStep);
100
+ }
101
+ pushRemoveTableColumns(insertIndex, startIndex, endIndex, table) {
102
+ const oldTable = JSON.parse(JSON.stringify(table));
103
+ const redoStep = new RemoveTableColumnsModel({ insertIndex, startIndex, endIndex });
104
+ const undoStep = new RestoreTableModel({ insertIndex, oldTable });
105
+ this.addToHistory(undoStep, redoStep);
106
+ }
107
+ pushResizeTableColumns(resizeTableColumns) {
108
+ const redoStep = new ResizeTableColumnsModel({
109
+ cellIndex: resizeTableColumns.cellIndex,
110
+ columnIndex: resizeTableColumns.columnIndex,
111
+ distance: resizeTableColumns.distance,
112
+ insertIndex: resizeTableColumns.insertIndex,
113
+ resizerSide: resizeTableColumns.resizerSide,
114
+ rowIndex: resizeTableColumns.rowIndex
115
+ });
116
+ const undoStep = new ResizeTableColumnsModel({
117
+ cellIndex: resizeTableColumns.cellIndex,
118
+ columnIndex: resizeTableColumns.columnIndex,
119
+ distance: -resizeTableColumns.distance,
120
+ insertIndex: resizeTableColumns.insertIndex,
121
+ resizerSide: resizeTableColumns.resizerSide,
122
+ rowIndex: resizeTableColumns.rowIndex
123
+ });
124
+ this.addToHistory(undoStep, redoStep);
125
+ }
126
+ pushApplyImageStyle(previous, current) {
127
+ const redoStep = new ApplyImageStyleModel({ insertIndex: current.insertIndex, width: current.width, height: current.height });
128
+ const undoStep = new ApplyImageStyleModel({ insertIndex: previous.insertIndex, width: previous.width, height: previous.height });
129
+ this.addToHistory(undoStep, redoStep);
130
+ }
131
+ pushAddNumbering(startIndex, endIndex, levels, paragraphs, numberings) {
132
+ const redoStep = new AddNumberingModel({ startIndex, endIndex, levels });
133
+ const undoStep = new RestoreNumberingsModel({ paragraphs, numberings });
134
+ this.addToHistory(undoStep, redoStep);
135
+ }
136
+ pushRemoveNumberings(startIndex, endIndex, numberings, paragraphs) {
137
+ const redoStep = new RemoveNumberingsModel({ startIndex, endIndex });
138
+ const undoStep = new RestoreNumberingsModel({ numberings, paragraphs });
139
+ this.addToHistory(undoStep, redoStep);
140
+ }
141
+ pushReplace(restore, replace) {
142
+ const length = replace.insertText ? replace.insertText.text.length : 1;
143
+ restore.endIndex = restore.startIndex + length;
144
+ this.addToHistory(restore, replace);
145
+ }
146
+ popUndoOperation() {
147
+ if (this.step === -1) {
148
+ return null;
149
+ }
150
+ const operation = this.storage[this.step].undo;
151
+ const targets = this.storage[this.step].targets;
152
+ const cursor = this.storage[this.step].cursor;
153
+ const anchor = this.storage[this.step].anchor;
154
+ this.step--;
155
+ this.editorService.historyInfo = new OperationsHistoryInfoModel(this.step, this.storage.length - 1);
156
+ return { operation, targets, cursor, anchor };
157
+ }
158
+ popRedoOperation() {
159
+ if (this.step >= this.storage.length - 1) {
160
+ return null;
161
+ }
162
+ this.step++;
163
+ const operation = this.storage[this.step].redo;
164
+ const targets = this.storage[this.step].targets;
165
+ const cursor = this.storage[this.step].cursor;
166
+ const anchor = this.storage[this.step].anchor;
167
+ this.editorService.historyInfo = new OperationsHistoryInfoModel(this.step, this.storage.length - 1);
168
+ return { operation, targets, cursor, anchor };
169
+ }
170
+ addToHistory(undoStep, redoStep) {
171
+ const targets = this.regulatorService.getCurrentSessionTargets();
172
+ const cursor = this.regulatorService.selection.cursor;
173
+ const anchor = this.regulatorService.selection.anchor;
174
+ this.step++;
175
+ this.storage.splice(this.step, this.storage.length);
176
+ this.storage.push({ undo: undoStep, redo: redoStep, targets, cursor, anchor });
177
+ if (this.storage.length > this.MAX_HISTORY) {
178
+ this.storage.splice(0, 1);
179
+ this.step--;
180
+ }
181
+ this.editorService.historyInfo = new OperationsHistoryInfoModel(this.step, this.storage.length - 1);
182
+ }
183
+ }
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLWhpc3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi8rc2hhcmVkL2VkaXRvci9vcGVyYXRpb24taGlzdG9yeS9vcGVyYXRpb24taGlzdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNsRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN6RixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN2RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFTckUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDM0YsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFFL0YsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFekYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBSTlFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBSzdFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRXpGLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBRS9GLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFN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QUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDdEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDdEQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1osSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUMvRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNmO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEdBQUcsSUFBSSwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3hHLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFkZE51bWJlcmluZ01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9hZGQtbnVtYmVyaW5nLm1vZGVsJztcbmltcG9ydCB7IEFwcGx5RWxlbWVudFN0eWxlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2FwcGx5LWVsZW1lbnQtc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgQXBwbHlJbWFnZVN0eWxlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2FwcGx5LWltYWdlLXN0eWxlLm1vZGVsJztcbmltcG9ydCB7IEFwcGx5UGFyYWdyYXBoU3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvYXBwbHktcGFyYWdyYXBoLXN0eWxlLm1vZGVsJztcbmltcG9ydCB7IEFwcGx5VGV4dFN0eWxlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2FwcGx5LXRleHQtc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgRGVsZXRlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2RlbGV0ZS5tb2RlbCc7XG5pbXBvcnQgeyBFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vaW50ZXJhY3Rpb24vZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWxlbWVudE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9lbGVtZW50Lm1vZGVsJztcbmltcG9ydCB7IEZvcm1hdE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9mb3JtYXQubW9kZWwnO1xuaW1wb3J0IHsgSW1hZ2VNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW1hZ2UubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0QnJlYWtNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LWJyZWFrLm1vZGVsJztcbmltcG9ydCB7IEluc2VydEVsZW1lbnRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LWVsZW1lbnQubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0SW1hZ2VNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LWltYWdlLm1vZGVsJztcbmltcG9ydCB7IEluc2VydExpbmtNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LWxpbmsubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0U3R5bGVkVGV4dE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtc3R5bGVkLXRleHQubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0VGFibGVDb2x1bW5zTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC10YWJsZS1jb2x1bW5zLm1vZGVsJztcbmltcG9ydCB7IEluc2VydFRhYmxlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC10YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBJbnNlcnRUYWJsZVJvd3NNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LXRhYmxlLXJvd3MubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0VGFiTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC10YWIubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0VGV4dE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtdGV4dC5tb2RlbCc7XG5pbXBvcnQgeyBOdW1iZXJpbmdMZXZlbE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9udW1iZXJpbmctbGV2ZWwubW9kZWwnO1xuaW1wb3J0IHsgTnVtYmVyaW5nTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL251bWJlcmluZy5tb2RlbCc7XG5pbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tICcuL29wZXJhdGlvbi50eXBlJztcbmltcG9ydCB7IE9wZXJhdGlvbnNIaXN0b3J5SW5mb01vZGVsIH0gZnJvbSAnLi9vcGVyYXRpb25zLWhpc3RvcnktaW5mby5tb2RlbCc7XG5pbXBvcnQgeyBQYXJhZ3JhcGhNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcGFyYWdyYXBoLm1vZGVsJztcbmltcG9ydCB7IFBhcmFncmFwaFN0eWxlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3BhcmFncmFwaC1zdHlsZS5tb2RlbCc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2NvcmUvcG9pbnQnO1xuaW1wb3J0IHsgUmVndWxhdG9yU2VydmljZSB9IGZyb20gJy4uL2V4ZWN1dGlvbi9yZWd1bGF0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBSZW1vdmVOdW1iZXJpbmdzTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3JlbW92ZS1udW1iZXJpbmdzLm1vZGVsJztcbmltcG9ydCB7IFJlbW92ZVRhYmxlQ29sdW1uc01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZW1vdmUtdGFibGUtY29sdW1ucy5tb2RlbCc7XG5pbXBvcnQgeyBSZW1vdmVUYWJsZVJvd3NNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVtb3ZlLXRhYmxlLXJvd3MubW9kZWwnO1xuaW1wb3J0IHsgUmVwbGFjZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZXBsYWNlLm1vZGVsJztcbmltcG9ydCB7IFJlc2l6ZVRhYmxlQ29sdW1uc01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZXNpemUtdGFibGUtY29sdW1ucy5tb2RlbCc7XG5pbXBvcnQgeyBSZXN0b3JlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3Jlc3RvcmUubW9kZWwnO1xuaW1wb3J0IHsgUmVzdG9yZU51bWJlcmluZ3NNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVzdG9yZS1udW1iZXJpbmdzLm1vZGVsJztcbmltcG9ydCB7IFJlc3RvcmVQYXJhZ3JhcGhTdHlsZXNNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVzdG9yZS1wYXJhZ3JhcGgtc3R5bGVzLm1vZGVsJztcbmltcG9ydCB7IFJlc3RvcmVUYWJsZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZXN0b3JlLXRhYmxlLm1vZGVsJztcbmltcG9ydCB7IFJlc3RvcmVUZXh0U3R5bGVzTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3Jlc3RvcmUtdGV4dC1zdHlsZXMubW9kZWwnO1xuaW1wb3J0IHsgVGFibGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvdGFibGUubW9kZWwnO1xuaW1wb3J0IHsgVGFyZ2V0TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3RhcmdldC5tb2RlbCc7XG5pbXBvcnQgeyBUZXh0U3R5bGVNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvdGV4dC1zdHlsZS5tb2RlbCc7XG5cbmV4cG9ydCBjbGFzcyBPcGVyYXRpb25IaXN0b3J5IHtcbiAgICByZWFkb25seSBNQVhfSElTVE9SWSA9IDEwMDtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZTogeyB1bmRvOiBPcGVyYXRpb247IHJlZG86IE9wZXJhdGlvbjsgdGFyZ2V0czogVGFyZ2V0TW9kZWxbXTsgY3Vyc29yOiBQb2ludDsgYW5jaG9yOiBQb2ludCB8IG51bGwgfVtdID0gW107XG5cbiAgICBwcml2YXRlIHN0ZXAgPSAtMTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWRpdG9yU2VydmljZTogRWRpdG9yU2VydmljZSwgcHJpdmF0ZSByZWd1bGF0b3JTZXJ2aWNlOiBSZWd1bGF0b3JTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5oaXN0b3J5SW5mbyA9IG5ldyBPcGVyYXRpb25zSGlzdG9yeUluZm9Nb2RlbCh0aGlzLnN0ZXAsIHRoaXMuc3RvcmFnZS5sZW5ndGggLSAxKTtcbiAgICB9XG5cbiAgICBwdXNoSW5zZXJ0VGV4dChpbnNlcnRJbmRleDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVkb1N0ZXAgPSBuZXcgSW5zZXJ0VGV4dE1vZGVsKHsgaW5zZXJ0SW5kZXgsIHRleHQgfSk7XG4gICAgICAgIGNvbnN0IHVuZG9TdGVwID0gbmV3IERlbGV0ZU1vZGVsKHsgc3RhcnRJbmRleDogaW5zZXJ0SW5kZXgsIGVuZEluZGV4OiBpbnNlcnRJbmRleCArIHRleHQubGVuZ3RoIH0pO1xuICAgICAgICB0aGlzLmFkZFRvSGlzdG9yeSh1bmRvU3RlcCwgcmVkb1N0ZXApO1xuICAgIH1cblxuICAgIHB1c2hJbnNlcnRFbGVtZW50KG1vZGVsOiBJbnNlcnRFbGVtZW50TW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdW5kb1N0ZXAgPSBuZXcgRGVsZXRlTW9kZWwoeyBzdGFydEluZGV4OiBtb2RlbC5lbGVtZW50Lmluc2VydEluZGV4LCBlbmRJbmRleDogbW9kZWwuZWxlbWVudC5pbnNlcnRJbmRleCArIDEgfSk7XG4gICAgICAgIHRoaXMuYWRkVG9IaXN0b3J5KHVuZG9TdGVwLCBtb2RlbCk7XG4gICAgfVxuXG4gICAgcHVzaEluc2VydEJyZWFrKG1vZGVsOiBJbnNlcnRCcmVha01vZGVsLCBlbmRJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHVuZG9TdGVwID0gbmV3IERlbGV0ZU1vZGVsKHsgc3RhcnRJbmRleDogbW9kZWwuaW5zZXJ0SW5kZXgsIGVuZEluZGV4IH0pO1xuICAgICAgICB0aGlzLmFkZFRvSGlzdG9yeSh1bmRvU3RlcCwgbW9kZWwpO1xuICAgIH1cblxuICAgIHB1c2hJbnNlcnRUYWIobW9kZWw6IEluc2VydFRhYk1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHVuZG9TdGVwID0gbmV3IERlbGV0ZU1vZGVsKHsgc3RhcnRJbmRleDogbW9kZWwuaW5zZXJ0SW5kZXgsIGVuZEluZGV4OiBtb2RlbC5pbnNlcnRJbmRleCArIDEgfSk7XG4gICAgICAgIHRoaXMuYWRkVG9IaXN0b3J5KHVuZG9TdGVwLCBtb2RlbCk7XG4gICAgfVxuXG4gICAgcHVzaEluc2VydEltYWdlKG1vZGVsOiBJbnNlcnRJbWFnZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHVuZG9TdGVwID0gbmV3IERlbGV0ZU1vZGVsKHsgc3RhcnRJbmRleDogbW9kZWwuaW5zZXJ0SW5kZXgsIGVuZEluZGV4OiBtb2RlbC5pbnNlcnRJbmRleCArIDEgfSk7XG4gICAgICAgIHRoaXMuYWRkVG9IaXN0b3J5KHVuZG9TdGVwLCBtb2RlbCk7XG4gICAgfVxuXG4gICAgcHVzaEluc2VydExpbmsobW9kZWw6IEluc2VydExpbmtNb2RlbCk6IHZvaWQge1xuICAgICAgICBjb25zdCB1bmRvU3RlcCA9IG5ldyBEZWxldGVNb2RlbCh7IHN0YXJ0SW5kZXg6IG1vZGVsLmluc2VydEluZGV4LCBlbmRJbmRleDogbW9kZWwuZW5kSW5kZXggfSk7XG4gICAgICAgIHRoaXMuYWRkVG9IaXN0b3J5KHVuZG9TdGVwLCBtb2RlbCk7XG4gICAgfVxuXG4gICAgcHVzaEluc2VydFRhYmxlKG1vZGVsOiBJbnNlcnRUYWJsZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHVuZG9TdGVwID0gbmV3IERlbGV0ZU1vZGVsKHsgc3RhcnRJbmRleDogbW9kZWwuaW5zZXJ0SW5kZXgsIGVuZEluZGV4OiBtb2RlbC5pbnNlcnRJbmRleCArIG1vZGVsLmNvbnRlbnQubGVuZ3RoIH0pO1xuICAgICAgICB0aGlzLmFkZFRvSGlzdG9yeSh1bmRvU3RlcCwgbW9kZWwpO1xuICAgIH1cblxuICAgIHB1c2hJbnNlcnRTdHlsZWRUZXh0KGluc2VydEluZGV4OiBudW1iZXIsIHRleHQ6IHN0cmluZywgc3R5bGU6IFRleHRTdHlsZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlZG9TdGVwID0gbmV3IEluc2VydFN0eWxlZFRleHRNb2RlbCh7IGluc2VydEluZGV4LCB0ZXh0LCB0ZXh0U3R5bGU6IHN0eWxlIH0pO1xuICAgICAgICBjb25zdCB1bmRvU3RlcCA9IG5ldyBEZWxldGVNb2RlbCh7IHN0YXJ0SW5kZXg6IGluc2VydEluZGV4LCBlbmRJbmRleDogaW5zZXJ0SW5kZXggKyB0ZXh0Lmxlbmd0aCB9KTtcbiAgICAgICAgdGhpcy5hZGRUb0hpc3RvcnkodW5kb1N0ZXAsIHJlZG9TdGVwKTtcbiAgICB9XG5cbiAgICBwdXNoRGVsZXRlKG1vZGVsOiBSZXN0b3JlTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVkb1N0ZXAgPSBuZXcgRGVsZXRlTW9kZWwoeyBzdGFydEluZGV4OiBtb2RlbC5zdGFydEluZGV4LCBlbmRJbmRleDogbW9kZWwuc3RhcnRJbmRleCArIG1vZGVsLnRleHQubGVuZ3RoIH0pO1xuICAgICAgICBtb2RlbC5lbmRJbmRleCA9IG1vZGVsLnN0YXJ0SW5kZXg7XG4gICAgICAgIHRoaXMuYWRkVG9IaXN0b3J5KG1vZGVsLCByZWRvU3RlcCk7XG4gICAgfVxuXG4gICAgcHVzaEFwcGx5VGV4dFN0eWxlKHN0YXJ0SW5kZXg6IG51bWJlciwgZW5kSW5kZXg6IG51bWJlciwgc3R5bGU6IFRleHRTdHlsZU1vZGVsLCBmb3JtYXRzOiBGb3JtYXRNb2RlbFtdKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlZG9TdGVwID0gbmV3IEFwcGx5VGV4dFN0eWxlTW9kZWwoeyBzdGFydEluZGV4LCBlbmRJbmRleCwgdGV4dFN0eWxlOiBzdHlsZSB9KTtcbiAgICAgICAgY29uc3QgdW5kb1N0ZXAgPSBuZXcgUmVzdG9yZVRleHRTdHlsZXNNb2RlbCh7IGZvcm1hdHMgfSk7XG4gICAgICAgIHRoaXMuYWRkVG9IaXN0b3J5KHVuZG9TdGVwLCByZWRvU3RlcCk7XG4gICAgfVxuXG4gICAgcHVzaEFwcGx5UGFyYWdyYXBoU3R5bGUoc3RhcnRJbmRleDogbnVtYmVyLCBlbmRJbmRleDogbnVtYmVyLCBzdHlsZTogUGFyYWdyYXBoU3R5bGVNb2RlbCwgcGFyYWdyYXBoczogUGFyYWdyYXBoTW9kZWxbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCByZWRvU3RlcCA9IG5ldyBBcHBseVBhcmFncmFwaFN0eWxlTW9kZWwoeyBzdGFydEluZGV4LCBlbmRJbmRleCwgcGFyYWdyYXBoU3R5bGU6IHN0eWxlIH0pO1xuICAgICAgICBjb25zdCB1bmRvU3RlcCA9IG5ldyBSZXN0b3JlUGFyYWdyYXBoU3R5bGVzTW9kZWwoeyBwYXJhZ3JhcGhzIH0pO1xuICAgICAgICB0aGlzLmFkZFRvSGlzdG9yeSh1bmRvU3RlcCwgcmVkb1N0ZXApO1xuICAgIH1cblxuICAgIHB1c2hBcHBseUVsZW1lbnRTdHlsZShwcmV2aW91czogRWxlbWVudE1vZGVsLCBjdXJyZW50OiBFbGVtZW50TW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVkb1N0ZXAgPSBuZXcgQXBwbHlFbGVtZW50U3R5bGVNb2RlbCh7IGluc2VydEluZGV4OiBjdXJyZW50Lmluc2VydEluZGV4LCB3aWR0aDogY3VycmVudC53aWR0aCwgaGVpZ2h0OiBjdXJyZW50LmhlaWdodCB9KTtcbiAgICAgICAgY29uc3QgdW5kb1N0ZXAgPSBuZXcgQXBwbHlFbGVtZW50U3R5bGVNb2RlbCh7IGluc2VydEluZGV4OiBwcmV2aW91cy5pbnNlcnRJbmRleCwgd2lkdGg6IHByZXZpb3VzLndpZHRoLCBoZWlnaHQ6IHByZXZpb3VzLmhlaWdodCB9KTtcbiAgICAgICAgdGhpcy5hZGRUb0hpc3RvcnkodW5kb1N0ZXAsIHJlZG9TdGVwKTtcbiAgICB9XG5cbiAgICBwdXNoSW5zZXJ0VGFibGVSb3dzKGluc2VydEluZGV4OiBudW1iZXIsIHJvd3NDb3VudDogbnVtYmVyLCB0YXJnZXRJbmRleDogbnVtYmVyLCBpbmhlcml0SW5kZXg6IG51bWJlciwgdGFibGU6IFRhYmxlTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgb2xkVGFibGUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRhYmxlKSk7XG4gICAgICAgIGNvbnN0IHJlZG9TdGVwID0gbmV3IEluc2VydFRhYmxlUm93c01vZGVsKHsgaW5zZXJ0SW5kZXgsIHJvd3NDb3VudCwgdGFyZ2V0SW5kZXgsIGluaGVyaXRJbmRleCB9KTtcbiAgICAgICAgY29uc3QgdW5kb1N0ZXAgPSBuZXcgUmVzdG9yZVRhYmxlTW9kZWwoeyBpbnNlcnRJbmRleCwgb2xkVGFibGUgfSk7XG4gICAgICAgIHRoaXMuYWRkVG9IaXN0b3J5KHVuZG9TdGVwLCByZWRvU3RlcCk7XG4gICAgfVxuXG4gICAgcHVzaEluc2VydFRhYmxlQ29sdW1ucyhpbnNlcnRJbmRleDogbnVtYmVyLCBjb2x1bW5zQ291bnQ6IG51bWJlciwgdGFyZ2V0SW5kZXg6IG51bWJlciwgaW5oZXJpdEluZGV4OiBudW1iZXIsIHRhYmxlOiBUYWJsZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG9sZFRhYmxlID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0YWJsZSkpO1xuICAgICAgICBjb25zdCByZWRvU3RlcCA9IG5ldyBJbnNlcnRUYWJsZUNvbHVtbnNNb2RlbCh7IGluc2VydEluZGV4LCBjb2x1bW5zQ291bnQsIHRhcmdldEluZGV4LCBpbmhlcml0SW5kZXggfSk7XG4gICAgICAgIGNvbnN0IHVuZG9TdGVwID0gbmV3IFJlc3RvcmVUYWJsZU1vZGVsKHsgaW5zZXJ0SW5kZXgsIG9sZFRhYmxlIH0pO1xuICAgICAgICB0aGlzLmFkZFRvSGlzdG9yeSh1bmRvU3RlcCwgcmVkb1N0ZXApO1xuICAgIH1cblxuICAgIHB1c2hSZW1vdmVUYWJsZVJvd3MoaW5zZXJ0SW5kZXg6IG51bWJlciwgc3RhcnRJbmRleDogbnVtYmVyLCBlbmRJbmRleDogbnVtYmVyLCB0YWJsZTogVGFibGVNb2RlbCk6IHZvaWQge1xuICAgICAgICBjb25zdCBvbGRUYWJsZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGFibGUpKTtcbiAgICAgICAgY29uc3QgcmVkb1N0ZXAgPSBuZXcgUmVtb3ZlVGFibGVSb3dzTW9kZWwoeyBpbnNlcnRJbmRleCwgc3RhcnRJbmRleCwgZW5kSW5kZXggfSk7XG4gICAgICAgIGNvbnN0IHVuZG9TdGVwID0gbmV3IFJlc3RvcmVUYWJsZU1vZGVsKHsgaW5zZXJ0SW5kZXgsIG9sZFRhYmxlIH0pO1xuICAgICAgICB0aGlzLmFkZFRvSGlzdG9yeSh1bmRvU3RlcCwgcmVkb1N0ZXApO1xuICAgIH1cblxuICAgIHB1c2hSZW1vdmVUYWJsZUNvbHVtbnMoaW5zZXJ0SW5kZXg6IG51bWJlciwgc3RhcnRJbmRleDogbnVtYmVyLCBlbmRJbmRleDogbnVtYmVyLCB0YWJsZTogVGFibGVNb2RlbCk6IHZvaWQge1xuICAgICAgICBjb25zdCBvbGRUYWJsZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGFibGUpKTtcbiAgICAgICAgY29uc3QgcmVkb1N0ZXAgPSBuZXcgUmVtb3ZlVGFibGVDb2x1bW5zTW9kZWwoeyBpbnNlcnRJbmRleCwgc3RhcnRJbmRleCwgZW5kSW5kZXggfSk7XG4gICAgICAgIGNvbnN0IHVuZG9TdGVwID0gbmV3IFJlc3RvcmVUYWJsZU1vZGVsKHsgaW5zZXJ0SW5kZXgsIG9sZFRhYmxlIH0pO1xuICAgICAgICB0aGlzLmFkZFRvSGlzdG9yeSh1bmRvU3RlcCwgcmVkb1N0ZXApO1xuICAgIH1cblxuICAgIHB1c2hSZXNpemVUYWJsZUNvbHVtbnMocmVzaXplVGFibGVDb2x1bW5zOiBSZXNpemVUYWJsZUNvbHVtbnNNb2RlbCk6IHZvaWQge1xuICAgICAgICBjb25zdCByZWRvU3RlcCA9IG5ldyBSZXNpemVUYWJsZUNvbHVtbnNNb2RlbCh7XG4gICAgICAgICAgICBjZWxsSW5kZXg6IHJlc2l6ZVRhYmxlQ29sdW1ucy5jZWxsSW5kZXgsXG4gICAgICAgICAgICBjb2x1bW5JbmRleDogcmVzaXplVGFibGVDb2x1bW5zLmNvbHVtbkluZGV4LFxuICAgICAgICAgICAgZGlzdGFuY2U6IHJlc2l6ZVRhYmxlQ29sdW1ucy5kaXN0YW5jZSxcbiAgICAgICAgICAgIGluc2VydEluZGV4OiByZXNpemVUYWJsZUNvbHVtbnMuaW5zZXJ0SW5kZXgsXG4gICAgICAgICAgICByZXNpemVyU2lkZTogcmVzaXplVGFibGVDb2x1bW5zLnJlc2l6ZXJTaWRlLFxuICAgICAgICAgICAgcm93SW5kZXg6IHJlc2l6ZVRhYmxlQ29sdW1ucy5yb3dJbmRleFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdW5kb1N0ZXAgPSBuZXcgUmVzaXplVGFibGVDb2x1bW5zTW9kZWwoe1xuICAgICAgICAgICAgY2VsbEluZGV4OiByZXNpemVUYWJsZUNvbHVtbnMuY2VsbEluZGV4LFxuICAgICAgICAgICAgY29sdW1uSW5kZXg6IHJlc2l6ZVRhYmxlQ29sdW1ucy5jb2x1bW5JbmRleCxcbiAgICAgICAgICAgIGRpc3RhbmNlOiAtcmVzaXplVGFibGVDb2x1bW5zLmRpc3RhbmNlLFxuICAgICAgICAgICAgaW5zZXJ0SW5kZXg6IHJlc2l6ZVRhYmxlQ29sdW1ucy5pbnNlcnRJbmRleCxcbiAgICAgICAgICAgIHJlc2l6ZXJTaWRlOiByZXNpemVUYWJsZUNvbHVtbnMucmVzaXplclNpZGUsXG4gICAgICAgICAgICByb3dJbmRleDogcmVzaXplVGFibGVDb2x1bW5zLnJvd0luZGV4XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFkZFRvSGlzdG9yeSh1bmRvU3RlcCwgcmVkb1N0ZXApO1xuICAgIH1cblxuICAgIHB1c2hBcHBseUltYWdlU3R5bGUocHJldmlvdXM6IEltYWdlTW9kZWwsIGN1cnJlbnQ6IEltYWdlTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVkb1N0ZXAgPSBuZXcgQXBwbHlJbWFnZVN0eWxlTW9kZWwoeyBpbnNlcnRJbmRleDogY3VycmVudC5pbnNlcnRJbmRleCwgd2lkdGg6IGN1cnJlbnQud2lkdGgsIGhlaWdodDogY3VycmVudC5oZWlnaHQgfSk7XG4gICAgICAgIGNvbnN0IHVuZG9TdGVwID0gbmV3IEFwcGx5SW1hZ2VTdHlsZU1vZGVsKHsgaW5zZXJ0SW5kZXg6IHByZXZpb3VzLmluc2VydEluZGV4LCB3aWR0aDogcHJldmlvdXMud2lkdGgsIGhlaWdodDogcHJldmlvdXMuaGVpZ2h0IH0pO1xuICAgICAgICB0aGlzLmFkZFRvSGlzdG9yeSh1bmRvU3RlcCwgcmVkb1N0ZXApO1xuICAgIH1cblxuICAgIHB1c2hBZGROdW1iZXJpbmcoXG4gICAgICAgIHN0YXJ0SW5kZXg6IG51bWJlcixcbiAgICAgICAgZW5kSW5kZXg6IG51bWJlcixcbiAgICAgICAgbGV2ZWxzOiBOdW1iZXJpbmdMZXZlbE1vZGVsW10sXG4gICAgICAgIHBhcmFncmFwaHM6IFBhcmFncmFwaE1vZGVsW10sXG4gICAgICAgIG51bWJlcmluZ3M6IE51bWJlcmluZ01vZGVsW11cbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVkb1N0ZXAgPSBuZXcgQWRkTnVtYmVyaW5nTW9kZWwoeyBzdGFydEluZGV4LCBlbmRJbmRleCwgbGV2ZWxzIH0pO1xuICAgICAgICBjb25zdCB1bmRvU3RlcCA9IG5ldyBSZXN0b3JlTnVtYmVyaW5nc01vZGVsKHsgcGFyYWdyYXBocywgbnVtYmVyaW5ncyB9KTtcbiAgICAgICAgdGhpcy5hZGRUb0hpc3RvcnkodW5kb1N0ZXAsIHJlZG9TdGVwKTtcbiAgICB9XG5cbiAgICBwdXNoUmVtb3ZlTnVtYmVyaW5ncyhzdGFydEluZGV4OiBudW1iZXIsIGVuZEluZGV4OiBudW1iZXIsIG51bWJlcmluZ3M6IE51bWJlcmluZ01vZGVsW10sIHBhcmFncmFwaHM6IFBhcmFncmFwaE1vZGVsW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVkb1N0ZXAgPSBuZXcgUmVtb3ZlTnVtYmVyaW5nc01vZGVsKHsgc3RhcnRJbmRleCwgZW5kSW5kZXggfSk7XG4gICAgICAgIGNvbnN0IHVuZG9TdGVwID0gbmV3IFJlc3RvcmVOdW1iZXJpbmdzTW9kZWwoeyBudW1iZXJpbmdzLCBwYXJhZ3JhcGhzIH0pO1xuICAgICAgICB0aGlzLmFkZFRvSGlzdG9yeSh1bmRvU3RlcCwgcmVkb1N0ZXApO1xuICAgIH1cblxuICAgIHB1c2hSZXBsYWNlKHJlc3RvcmU6IFJlc3RvcmVNb2RlbCwgcmVwbGFjZTogUmVwbGFjZU1vZGVsKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGxlbmd0aCA9IHJlcGxhY2UuaW5zZXJ0VGV4dCA/IHJlcGxhY2UuaW5zZXJ0VGV4dC50ZXh0Lmxlbmd0aCA6IDE7XG4gICAgICAgIHJlc3RvcmUuZW5kSW5kZXggPSByZXN0b3JlLnN0YXJ0SW5kZXggKyBsZW5ndGg7XG4gICAgICAgIHRoaXMuYWRkVG9IaXN0b3J5KHJlc3RvcmUsIHJlcGxhY2UpO1xuICAgIH1cblxuICAgIHBvcFVuZG9PcGVyYXRpb24oKTogeyBvcGVyYXRpb246IE9wZXJhdGlvbiB8IG51bGw7IHRhcmdldHM6IFRhcmdldE1vZGVsW107IGN1cnNvcjogUG9pbnQ7IGFuY2hvcjogUG9pbnQgfCBudWxsIH0gfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMuc3RlcCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9wZXJhdGlvbiA9IHRoaXMuc3RvcmFnZVt0aGlzLnN0ZXBdLnVuZG87XG4gICAgICAgIGNvbnN0IHRhcmdldHMgPSB0aGlzLnN0b3JhZ2VbdGhpcy5zdGVwXS50YXJnZXRzO1xuICAgICAgICBjb25zdCBjdXJzb3IgPSB0aGlzLnN0b3JhZ2VbdGhpcy5zdGVwXS5jdXJzb3I7XG4gICAgICAgIGNvbnN0IGFuY2hvciA9IHRoaXMuc3RvcmFnZVt0aGlzLnN0ZXBdLmFuY2hvcjtcbiAgICAgICAgdGhpcy5zdGVwLS07XG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5oaXN0b3J5SW5mbyA9IG5ldyBPcGVyYXRpb25zSGlzdG9yeUluZm9Nb2RlbCh0aGlzLnN0ZXAsIHRoaXMuc3RvcmFnZS5sZW5ndGggLSAxKTtcbiAgICAgICAgcmV0dXJuIHsgb3BlcmF0aW9uLCB0YXJnZXRzLCBjdXJzb3IsIGFuY2hvciB9O1xuICAgIH1cblxuICAgIHBvcFJlZG9PcGVyYXRpb24oKTogeyBvcGVyYXRpb246IE9wZXJhdGlvbiB8IG51bGw7IHRhcmdldHM6IFRhcmdldE1vZGVsW107IGN1cnNvcjogUG9pbnQ7IGFuY2hvcjogUG9pbnQgfCBudWxsIH0gfCBudWxsIHtcbiAgICAgICAgaWYgKHRoaXMuc3RlcCA+PSB0aGlzLnN0b3JhZ2UubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdGVwKys7XG4gICAgICAgIGNvbnN0IG9wZXJhdGlvbiA9IHRoaXMuc3RvcmFnZVt0aGlzLnN0ZXBdLnJlZG87XG4gICAgICAgIGNvbnN0IHRhcmdldHMgPSB0aGlzLnN0b3JhZ2VbdGhpcy5zdGVwXS50YXJnZXRzO1xuICAgICAgICBjb25zdCBjdXJzb3IgPSB0aGlzLnN0b3JhZ2VbdGhpcy5zdGVwXS5jdXJzb3I7XG4gICAgICAgIGNvbnN0IGFuY2hvciA9IHRoaXMuc3RvcmFnZVt0aGlzLnN0ZXBdLmFuY2hvcjtcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmhpc3RvcnlJbmZvID0gbmV3IE9wZXJhdGlvbnNIaXN0b3J5SW5mb01vZGVsKHRoaXMuc3RlcCwgdGhpcy5zdG9yYWdlLmxlbmd0aCAtIDEpO1xuICAgICAgICByZXR1cm4geyBvcGVyYXRpb24sIHRhcmdldHMsIGN1cnNvciwgYW5jaG9yIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRUb0hpc3RvcnkodW5kb1N0ZXA6IE9wZXJhdGlvbiwgcmVkb1N0ZXA6IE9wZXJhdGlvbik6IHZvaWQge1xuICAgICAgICBjb25zdCB0YXJnZXRzID0gdGhpcy5yZWd1bGF0b3JTZXJ2aWNlLmdldEN1cnJlbnRTZXNzaW9uVGFyZ2V0cygpO1xuICAgICAgICBjb25zdCBjdXJzb3IgPSB0aGlzLnJlZ3VsYXRvclNlcnZpY2Uuc2VsZWN0aW9uLmN1cnNvcjtcbiAgICAgICAgY29uc3QgYW5jaG9yID0gdGhpcy5yZWd1bGF0b3JTZXJ2aWNlLnNlbGVjdGlvbi5hbmNob3I7XG4gICAgICAgIHRoaXMuc3RlcCsrO1xuICAgICAgICB0aGlzLnN0b3JhZ2Uuc3BsaWNlKHRoaXMuc3RlcCwgdGhpcy5zdG9yYWdlLmxlbmd0aCk7XG4gICAgICAgIHRoaXMuc3RvcmFnZS5wdXNoKHsgdW5kbzogdW5kb1N0ZXAsIHJlZG86IHJlZG9TdGVwLCB0YXJnZXRzLCBjdXJzb3IsIGFuY2hvciB9KTtcbiAgICAgICAgaWYgKHRoaXMuc3RvcmFnZS5sZW5ndGggPiB0aGlzLk1BWF9ISVNUT1JZKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2Uuc3BsaWNlKDAsIDEpO1xuICAgICAgICAgICAgdGhpcy5zdGVwLS07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuaGlzdG9yeUluZm8gPSBuZXcgT3BlcmF0aW9uc0hpc3RvcnlJbmZvTW9kZWwodGhpcy5zdGVwLCB0aGlzLnN0b3JhZ2UubGVuZ3RoIC0gMSk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi8rc2hhcmVkL2VkaXRvci9vcGVyYXRpb24taGlzdG9yeS9vcGVyYXRpb24udHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWRkTnVtYmVyaW5nTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2FkZC1udW1iZXJpbmcubW9kZWwnO1xuaW1wb3J0IHsgQXBwbHlJbWFnZVN0eWxlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2FwcGx5LWltYWdlLXN0eWxlLm1vZGVsJztcbmltcG9ydCB7IEFwcGx5VGV4dFN0eWxlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2FwcGx5LXRleHQtc3R5bGUubW9kZWwnO1xuaW1wb3J0IHsgRGVsZXRlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2RlbGV0ZS5tb2RlbCc7XG5pbXBvcnQgeyBJbnNlcnRCcmVha01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtYnJlYWsubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0RWxlbWVudE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtZWxlbWVudC5tb2RlbCc7XG5pbXBvcnQgeyBJbnNlcnRJbWFnZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtaW1hZ2UubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0U3R5bGVkVGV4dE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtc3R5bGVkLXRleHQubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0VGFibGVDb2x1bW5zTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC10YWJsZS1jb2x1bW5zLm1vZGVsJztcbmltcG9ydCB7IEluc2VydFRhYmxlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC10YWJsZS5tb2RlbCc7XG5pbXBvcnQgeyBJbnNlcnRUYWJsZVJvd3NNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvaW5zZXJ0LXRhYmxlLXJvd3MubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0VGFiTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL2luc2VydC10YWIubW9kZWwnO1xuaW1wb3J0IHsgSW5zZXJ0VGV4dE1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9pbnNlcnQtdGV4dC5tb2RlbCc7XG5pbXBvcnQgeyBSZW1vdmVOdW1iZXJpbmdzTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3JlbW92ZS1udW1iZXJpbmdzLm1vZGVsJztcbmltcG9ydCB7IFJlbW92ZVRhYmxlQ29sdW1uc01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZW1vdmUtdGFibGUtY29sdW1ucy5tb2RlbCc7XG5pbXBvcnQgeyBSZW1vdmVUYWJsZVJvd3NNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVtb3ZlLXRhYmxlLXJvd3MubW9kZWwnO1xuaW1wb3J0IHsgUmVwbGFjZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZXBsYWNlLm1vZGVsJztcbmltcG9ydCB7IFJlc2l6ZVRhYmxlQ29sdW1uc01vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZXNpemUtdGFibGUtY29sdW1ucy5tb2RlbCc7XG5pbXBvcnQgeyBSZXN0b3JlTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3Jlc3RvcmUubW9kZWwnO1xuaW1wb3J0IHsgUmVzdG9yZU51bWJlcmluZ3NNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVzdG9yZS1udW1iZXJpbmdzLm1vZGVsJztcbmltcG9ydCB7IFJlc3RvcmVQYXJhZ3JhcGhTdHlsZXNNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9nZW5lcmF0ZWQvcmVzdG9yZS1wYXJhZ3JhcGgtc3R5bGVzLm1vZGVsJztcbmltcG9ydCB7IFJlc3RvcmVUYWJsZU1vZGVsIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2dlbmVyYXRlZC9yZXN0b3JlLXRhYmxlLm1vZGVsJztcbmltcG9ydCB7IFJlc3RvcmVUZXh0U3R5bGVzTW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZ2VuZXJhdGVkL3Jlc3RvcmUtdGV4dC1zdHlsZXMubW9kZWwnO1xuXG5leHBvcnQgdHlwZSBPcGVyYXRpb24gPVxuICAgIHwgSW5zZXJ0VGV4dE1vZGVsXG4gICAgfCBEZWxldGVNb2RlbFxuICAgIHwgSW5zZXJ0U3R5bGVkVGV4dE1vZGVsXG4gICAgfCBSZXN0b3JlTW9kZWxcbiAgICB8IEFwcGx5VGV4dFN0eWxlTW9kZWxcbiAgICB8IFJlc3RvcmVUZXh0U3R5bGVzTW9kZWxcbiAgICB8IFJlc3RvcmVQYXJhZ3JhcGhTdHlsZXNNb2RlbFxuICAgIHwgSW5zZXJ0RWxlbWVudE1vZGVsXG4gICAgfCBJbnNlcnRCcmVha01vZGVsXG4gICAgfCBBcHBseUltYWdlU3R5bGVNb2RlbFxuICAgIHwgQWRkTnVtYmVyaW5nTW9kZWxcbiAgICB8IFJlc3RvcmVOdW1iZXJpbmdzTW9kZWxcbiAgICB8IEluc2VydFRhYk1vZGVsXG4gICAgfCBJbnNlcnRUYWJsZUNvbHVtbnNNb2RlbFxuICAgIHwgSW5zZXJ0VGFibGVSb3dzTW9kZWxcbiAgICB8IFJlbW92ZVRhYmxlQ29sdW1uc01vZGVsXG4gICAgfCBSZW1vdmVUYWJsZVJvd3NNb2RlbFxuICAgIHwgUmVzaXplVGFibGVDb2x1bW5zTW9kZWxcbiAgICB8IFJlc3RvcmVUYWJsZU1vZGVsXG4gICAgfCBJbnNlcnRUYWJsZU1vZGVsXG4gICAgfCBJbnNlcnRJbWFnZU1vZGVsXG4gICAgfCBSZW1vdmVOdW1iZXJpbmdzTW9kZWxcbiAgICB8IFJlcGxhY2VNb2RlbDtcbiJdfQ==
@@ -0,0 +1,7 @@
1
+ export class OperationsHistoryInfoModel {
2
+ constructor(step, storageLength) {
3
+ this.step = step;
4
+ this.lastStep = storageLength;
5
+ }
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9ucy1oaXN0b3J5LWluZm8ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi8rc2hhcmVkL2VkaXRvci9vcGVyYXRpb24taGlzdG9yeS9vcGVyYXRpb25zLWhpc3RvcnktaW5mby5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sMEJBQTBCO0lBSW5DLFlBQVksSUFBWSxFQUFFLGFBQXFCO1FBQzNDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDO0lBQ2xDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBPcGVyYXRpb25zSGlzdG9yeUluZm9Nb2RlbCB7XG4gICAgc3RlcDogbnVtYmVyO1xuICAgIGxhc3RTdGVwOiBudW1iZXI7XG5cbiAgICBjb25zdHJ1Y3RvcihzdGVwOiBudW1iZXIsIHN0b3JhZ2VMZW5ndGg6IG51bWJlcikge1xuICAgICAgICB0aGlzLnN0ZXAgPSBzdGVwO1xuICAgICAgICB0aGlzLmxhc3RTdGVwID0gc3RvcmFnZUxlbmd0aDtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,31 @@
1
+ export var CommandType;
2
+ (function (CommandType) {
3
+ CommandType[CommandType["Delete"] = 0] = "Delete";
4
+ CommandType[CommandType["InsertText"] = 1] = "InsertText";
5
+ CommandType[CommandType["InsertStyledText"] = 2] = "InsertStyledText";
6
+ CommandType[CommandType["ReplaceByText"] = 3] = "ReplaceByText";
7
+ CommandType[CommandType["Restore"] = 4] = "Restore";
8
+ CommandType[CommandType["RestoreTextStyles"] = 5] = "RestoreTextStyles";
9
+ CommandType[CommandType["RestoreParagraphStyles"] = 6] = "RestoreParagraphStyles";
10
+ CommandType[CommandType["ApplyTextStyle"] = 7] = "ApplyTextStyle";
11
+ CommandType[CommandType["ApplyParagraphStyle"] = 8] = "ApplyParagraphStyle";
12
+ CommandType[CommandType["InsertElement"] = 9] = "InsertElement";
13
+ CommandType[CommandType["InsertBreak"] = 10] = "InsertBreak";
14
+ CommandType[CommandType["ApplyElementStyle"] = 11] = "ApplyElementStyle";
15
+ CommandType[CommandType["ApplyImageStyle"] = 12] = "ApplyImageStyle";
16
+ CommandType[CommandType["AddNumbering"] = 13] = "AddNumbering";
17
+ CommandType[CommandType["InsertTab"] = 14] = "InsertTab";
18
+ CommandType[CommandType["InsertTableColumns"] = 15] = "InsertTableColumns";
19
+ CommandType[CommandType["InsertTableRows"] = 16] = "InsertTableRows";
20
+ CommandType[CommandType["InsertLink"] = 17] = "InsertLink";
21
+ CommandType[CommandType["RemoveTableColumns"] = 18] = "RemoveTableColumns";
22
+ CommandType[CommandType["RemoveTableRows"] = 19] = "RemoveTableRows";
23
+ CommandType[CommandType["ResizeTableColumns"] = 20] = "ResizeTableColumns";
24
+ CommandType[CommandType["RestoreTable"] = 21] = "RestoreTable";
25
+ CommandType[CommandType["InsertTable"] = 22] = "InsertTable";
26
+ CommandType[CommandType["InsertImage"] = 23] = "InsertImage";
27
+ CommandType[CommandType["RemoveNumberings"] = 24] = "RemoveNumberings";
28
+ CommandType[CommandType["RestoreNumberings"] = 25] = "RestoreNumberings";
29
+ CommandType[CommandType["Replace"] = 26] = "Replace";
30
+ })(CommandType || (CommandType = {}));
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC10eXBlLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi8rc2hhcmVkL2VkaXRvci9vcGVyYXRpb25zL2VudW1zL2NvbW1hbmQtdHlwZS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLFdBNEJYO0FBNUJELFdBQVksV0FBVztJQUNuQixpREFBTSxDQUFBO0lBQ04seURBQVUsQ0FBQTtJQUNWLHFFQUFnQixDQUFBO0lBQ2hCLCtEQUFhLENBQUE7SUFDYixtREFBTyxDQUFBO0lBQ1AsdUVBQWlCLENBQUE7SUFDakIsaUZBQXNCLENBQUE7SUFDdEIsaUVBQWMsQ0FBQTtJQUNkLDJFQUFtQixDQUFBO0lBQ25CLCtEQUFhLENBQUE7SUFDYiw0REFBVyxDQUFBO0lBQ1gsd0VBQWlCLENBQUE7SUFDakIsb0VBQWUsQ0FBQTtJQUNmLDhEQUFZLENBQUE7SUFDWix3REFBUyxDQUFBO0lBQ1QsMEVBQWtCLENBQUE7SUFDbEIsb0VBQWUsQ0FBQTtJQUNmLDBEQUFVLENBQUE7SUFDViwwRUFBa0IsQ0FBQTtJQUNsQixvRUFBZSxDQUFBO0lBQ2YsMEVBQWtCLENBQUE7SUFDbEIsOERBQVksQ0FBQTtJQUNaLDREQUFXLENBQUE7SUFDWCw0REFBVyxDQUFBO0lBQ1gsc0VBQWdCLENBQUE7SUFDaEIsd0VBQWlCLENBQUE7SUFDakIsb0RBQU8sQ0FBQTtBQUNYLENBQUMsRUE1QlcsV0FBVyxLQUFYLFdBQVcsUUE0QnRCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gQ29tbWFuZFR5cGUge1xuICAgIERlbGV0ZSxcbiAgICBJbnNlcnRUZXh0LFxuICAgIEluc2VydFN0eWxlZFRleHQsXG4gICAgUmVwbGFjZUJ5VGV4dCxcbiAgICBSZXN0b3JlLFxuICAgIFJlc3RvcmVUZXh0U3R5bGVzLFxuICAgIFJlc3RvcmVQYXJhZ3JhcGhTdHlsZXMsXG4gICAgQXBwbHlUZXh0U3R5bGUsXG4gICAgQXBwbHlQYXJhZ3JhcGhTdHlsZSxcbiAgICBJbnNlcnRFbGVtZW50LFxuICAgIEluc2VydEJyZWFrLFxuICAgIEFwcGx5RWxlbWVudFN0eWxlLFxuICAgIEFwcGx5SW1hZ2VTdHlsZSxcbiAgICBBZGROdW1iZXJpbmcsXG4gICAgSW5zZXJ0VGFiLFxuICAgIEluc2VydFRhYmxlQ29sdW1ucyxcbiAgICBJbnNlcnRUYWJsZVJvd3MsXG4gICAgSW5zZXJ0TGluayxcbiAgICBSZW1vdmVUYWJsZUNvbHVtbnMsXG4gICAgUmVtb3ZlVGFibGVSb3dzLFxuICAgIFJlc2l6ZVRhYmxlQ29sdW1ucyxcbiAgICBSZXN0b3JlVGFibGUsXG4gICAgSW5zZXJ0VGFibGUsXG4gICAgSW5zZXJ0SW1hZ2UsXG4gICAgUmVtb3ZlTnVtYmVyaW5ncyxcbiAgICBSZXN0b3JlTnVtYmVyaW5ncyxcbiAgICBSZXBsYWNlXG59XG4iXX0=
@@ -0,0 +1,7 @@
1
+ export var TargetType;
2
+ (function (TargetType) {
3
+ TargetType[TargetType["Document"] = 0] = "Document";
4
+ TargetType[TargetType["TableCell"] = 1] = "TableCell";
5
+ TargetType[TargetType["Edge"] = 2] = "Edge";
6
+ })(TargetType || (TargetType = {}));
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFyZ2V0LXR5cGUuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliLytzaGFyZWQvZWRpdG9yL29wZXJhdGlvbnMvZW51bXMvdGFyZ2V0LXR5cGUuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSxVQUlYO0FBSkQsV0FBWSxVQUFVO0lBQ2xCLG1EQUFRLENBQUE7SUFDUixxREFBUyxDQUFBO0lBQ1QsMkNBQUksQ0FBQTtBQUNSLENBQUMsRUFKVyxVQUFVLEtBQVYsVUFBVSxRQUlyQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFRhcmdldFR5cGUge1xuICAgIERvY3VtZW50LFxuICAgIFRhYmxlQ2VsbCxcbiAgICBFZGdlXG59XG4iXX0=