@talrace/ngx-noder 0.0.7 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (657) hide show
  1. package/README.md +75 -66
  2. package/esm2022/lib/apart-components/add-link-dialog/add-link-dialog.component.mjs +67 -0
  3. package/esm2022/lib/apart-components/add-link-dialog/validation.helper.mjs +7 -0
  4. package/esm2022/lib/apart-components/add-link-mobile/add-link-mobile.component.mjs +47 -0
  5. package/esm2022/lib/apart-components/confirm-dialog/confirm-dialog.component.mjs +32 -0
  6. package/esm2022/lib/apart-components/editor-search/editor-search-dialog.component.mjs +64 -0
  7. package/esm2022/lib/apart-components/editor-title/editor-title.component.mjs +89 -0
  8. package/esm2022/lib/apart-components/editor-title-mobile/editor-title-mobile.component.mjs +22 -0
  9. package/esm2022/lib/apart-components/editor-toolbar/components/base-toolbar.component.mjs +117 -0
  10. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/color-picker/color-picker.component.mjs +37 -0
  11. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font/font.component.mjs +49 -0
  12. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font-size/font-size.component.mjs +90 -0
  13. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/font-style/font-style.component.mjs +81 -0
  14. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/format/format.component.mjs +28 -0
  15. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/heading/heading.component.mjs +22 -0
  16. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/numbering/numbering.component.mjs +53 -0
  17. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/print/print.component.mjs +18 -0
  18. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/undo-redo/undo-redo.component.mjs +27 -0
  19. package/esm2022/lib/apart-components/editor-toolbar/components/buttons/zoom/zoom.component.mjs +71 -0
  20. package/esm2022/lib/apart-components/editor-toolbar/components/menu-dropdowns/menu-dropdowns.component.mjs +94 -0
  21. package/esm2022/lib/apart-components/editor-toolbar/components/menu-dropdowns-mobile/menu-dropdowns-mobile.component.mjs +24 -0
  22. package/esm2022/lib/apart-components/editor-toolbar/components/toolbar-actions/toolbar-actions.component.mjs +65 -0
  23. package/esm2022/lib/apart-components/editor-toolbar/editor-mobile-toolbar/editor-mobile-toolbar.component.mjs +84 -0
  24. package/esm2022/lib/apart-components/editor-toolbar/editor-toolbar/editor-toolbar.component.mjs +90 -0
  25. package/esm2022/lib/apart-components/editor-toolbar/editor-toolbar.module.mjs +117 -0
  26. package/esm2022/lib/apart-components/editor-toolbar/shared/constants/editor-toolbar-modes.const.mjs +8 -0
  27. package/esm2022/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/shared}/constants/numbering-templates.const.mjs +6 -6
  28. package/esm2022/lib/apart-components/editor-toolbar/shared/constants/svg-icons.const.mjs +157 -0
  29. package/esm2022/lib/apart-components/editor-toolbar/shared/enums/alignment.enum.mjs +8 -0
  30. package/esm2022/lib/apart-components/editor-toolbar/shared/enums/editor-toolbar-mode.enum.mjs +11 -0
  31. package/esm2022/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/shared}/enums/numbering-template-type.enum.mjs +1 -1
  32. package/esm2022/lib/apart-components/editor-toolbar/shared/enums/numbering-type.enum.mjs +6 -0
  33. package/esm2022/lib/apart-components/editor-toolbar/shared/services/custom-icon.service.mjs +34 -0
  34. package/esm2022/lib/apart-components/editor-toolbar/shared/services/editor-toolbar.service.mjs +26 -0
  35. package/esm2022/lib/apart-components/editor-toolbar/shared/services/toolbar-core.service.mjs +60 -0
  36. package/esm2022/lib/apart-components/editor-toolbar/shared/toolbar-styles.helper.mjs +48 -0
  37. package/esm2022/lib/apart-components/insert-table/insert-table.component.mjs +54 -0
  38. package/esm2022/lib/apart-components/insert-table-mobile/insert-table-mobile.component.mjs +84 -0
  39. package/esm2022/lib/apart-components/text-format-mobile/text-format-mobile.component.mjs +123 -0
  40. package/esm2022/lib/editor/components/edges/edge-element.model.mjs +9 -0
  41. package/esm2022/lib/editor/components/edges/edge-type.enum.mjs +6 -0
  42. package/esm2022/lib/editor/components/edges/edge.component.mjs +99 -0
  43. package/esm2022/lib/editor/components/edges/edges.mjs +127 -0
  44. package/esm2022/lib/editor/components/edges/page-type.enum.mjs +7 -0
  45. package/esm2022/lib/editor/components/editor.component.mjs +112 -0
  46. package/esm2022/lib/editor/components/external-element/external-element.service.mjs +6 -0
  47. package/esm2022/lib/editor/components/external-element/external-elements.const.mjs +4 -0
  48. package/esm2022/lib/editor/components/external-element/external-sidenav.interface.mjs +2 -0
  49. package/esm2022/lib/editor/components/external-element/external.component.mjs +41 -0
  50. package/esm2022/lib/editor/components/external-element/models/element-data.model.mjs +9 -0
  51. package/esm2022/lib/editor/components/external-element/models/external-element.model.mjs +11 -0
  52. package/esm2022/lib/editor/components/external-element/models/external-sidenav.model.mjs +15 -0
  53. package/esm2022/lib/editor/components/image/components/image.component.mjs +88 -0
  54. package/esm2022/lib/editor/components/image/image-api.service.mjs +36 -0
  55. package/esm2022/lib/editor/components/image/input-handler/image-input.handler.mjs +55 -0
  56. package/esm2022/lib/editor/components/image/resizer/coordinate.mjs +2 -0
  57. package/esm2022/lib/editor/components/image/resizer/direction-wrapper.mjs +19 -0
  58. package/esm2022/lib/editor/components/image/resizer/direction.enum.mjs +12 -0
  59. package/esm2022/lib/editor/components/image/resizer/resizer.component.mjs +106 -0
  60. package/esm2022/lib/editor/components/image/resizer/size-delta.mjs +2 -0
  61. package/esm2022/lib/editor/components/image/resizer/size-wrapper.mjs +52 -0
  62. package/esm2022/lib/editor/components/image/size.mjs +2 -0
  63. package/esm2022/lib/editor/components/shared/abstract/base.component.mjs +59 -0
  64. package/esm2022/lib/editor/components/shared/abstract/destroy.component.mjs +18 -0
  65. package/esm2022/lib/editor/components/shared/custom-component.hepler.mjs +43 -0
  66. package/esm2022/lib/editor/components/shared/custom-components.interface.mjs +2 -0
  67. package/esm2022/lib/editor/components/shared/custom-content-markers.const.mjs +3 -0
  68. package/esm2022/lib/editor/components/shared/custom-content.mjs +2 -0
  69. package/esm2022/lib/editor/components/shared/services/component.service.mjs +64 -0
  70. package/esm2022/lib/editor/components/shared/services/custom-content.service.mjs +129 -0
  71. package/esm2022/lib/editor/components/shared/services/overlay.service.mjs +55 -0
  72. package/esm2022/lib/editor/components/tab/tab.component.mjs +44 -0
  73. package/esm2022/lib/editor/components/tab/tab.helper.mjs +6 -0
  74. package/esm2022/lib/editor/components/table/cell-resizer/cell-resizer.mjs +118 -0
  75. package/esm2022/lib/editor/components/table/components/table-cell.component.mjs +97 -0
  76. package/esm2022/lib/editor/components/table/components/table.component.mjs +410 -0
  77. package/esm2022/lib/{+shared/editor/core → editor/components/table}/enums/hrule.enum.mjs +1 -1
  78. package/esm2022/lib/editor/components/table/enums/reisizer-side.enum.mjs +8 -0
  79. package/esm2022/lib/editor/components/table/enums/vertical-merge.enum.mjs +6 -0
  80. package/esm2022/lib/editor/components/table/models/cell-data.model.mjs +17 -0
  81. package/esm2022/lib/editor/components/table/models/cell-resizer-parameters.model.mjs +9 -0
  82. package/esm2022/lib/editor/components/table/models/row-data.model.mjs +8 -0
  83. package/esm2022/lib/editor/components/table/models/selection-range.model.mjs +7 -0
  84. package/esm2022/lib/editor/components/table/overlay-menu/overlay-menu.component.mjs +74 -0
  85. package/esm2022/lib/editor/components/table/selection/table-selection.mjs +376 -0
  86. package/esm2022/lib/editor/content/constants/display-values.const.mjs +8 -0
  87. package/esm2022/lib/editor/content/constants/document-info.const.mjs +13 -0
  88. package/esm2022/lib/editor/content/constants/editor.const.mjs +70 -0
  89. package/esm2022/lib/editor/content/contents.interface.mjs +2 -0
  90. package/esm2022/lib/editor/content/display-data/display-data.mjs +839 -0
  91. package/esm2022/lib/editor/content/display-data/display-token.model.mjs +12 -0
  92. package/esm2022/lib/editor/content/display-data/format-ext.model.mjs +10 -0
  93. package/esm2022/lib/editor/content/display-data/general-properties.model.mjs +11 -0
  94. package/esm2022/lib/editor/content/display-data/indent.model.mjs +9 -0
  95. package/esm2022/lib/editor/content/display-data/line-info.model.mjs +9 -0
  96. package/esm2022/lib/editor/content/display-data/lines.mjs +96 -0
  97. package/esm2022/lib/editor/content/display-data/models/paragraph-info.model.mjs +8 -0
  98. package/esm2022/lib/editor/content/display-data/paragraph-info.interface.mjs +2 -0
  99. package/esm2022/lib/editor/content/display-data/paragraph.mjs +56 -0
  100. package/esm2022/lib/editor/content/display-data/text-line-info.mjs +35 -0
  101. package/esm2022/lib/editor/content/display-data/toolbar-styles.interface.mjs +2 -0
  102. package/esm2022/lib/editor/content/helpers/content-style.helper.mjs +78 -0
  103. package/esm2022/lib/editor/content/helpers/display-token.helper.mjs +62 -0
  104. package/esm2022/lib/{+shared/editor → editor/content}/helpers/format.helper.mjs +1 -1
  105. package/esm2022/lib/{+shared/editor → editor/content}/helpers/indexed-element.helper.mjs +1 -1
  106. package/esm2022/lib/editor/content/helpers/scaling.helper.mjs +9 -0
  107. package/esm2022/lib/editor/content/margin.model.mjs +16 -0
  108. package/esm2022/lib/editor/content/page-vertical-data.model.mjs +9 -0
  109. package/esm2022/lib/{+shared/editor/core/enums → editor/content}/vertical-alignment.enum.mjs +1 -1
  110. package/esm2022/lib/editor/core/event-emitting.mjs +56 -0
  111. package/esm2022/lib/editor/display/cell.interface.mjs +2 -0
  112. package/esm2022/lib/editor/display/event.helper.mjs +18 -0
  113. package/esm2022/lib/editor/display/layers/cursor.layer.mjs +102 -0
  114. package/esm2022/lib/editor/display/layers/layer.config.mjs +2 -0
  115. package/esm2022/lib/editor/display/layers/pages.layer.mjs +97 -0
  116. package/esm2022/lib/editor/display/layers/print.pages.layer.mjs +7 -0
  117. package/esm2022/lib/editor/display/layers/print.text.layer.mjs +7 -0
  118. package/esm2022/lib/editor/display/layers/selection.layer.mjs +119 -0
  119. package/esm2022/lib/editor/display/layers/text.layer.mjs +201 -0
  120. package/esm2022/lib/editor/display/print/print.helper.mjs +40 -0
  121. package/esm2022/lib/editor/display/print/print.renderer.mjs +67 -0
  122. package/esm2022/lib/editor/display/print/print.rendering.helper.mjs +7 -0
  123. package/esm2022/lib/editor/display/render-changes.interface.mjs +2 -0
  124. package/esm2022/lib/editor/display/render-changes.model.mjs +25 -0
  125. package/esm2022/lib/editor/display/renderer.mjs +206 -0
  126. package/esm2022/lib/editor/display/rendering.helper.mjs +185 -0
  127. package/esm2022/lib/editor/display/renderloop.mjs +26 -0
  128. package/esm2022/lib/editor/display/virtual.renderer.mjs +317 -0
  129. package/esm2022/lib/editor/display/visible-range.interface.mjs +2 -0
  130. package/esm2022/lib/editor/editor.module.mjs +67 -0
  131. package/esm2022/lib/editor/execution/distance.model.mjs +10 -0
  132. package/esm2022/lib/editor/execution/edit.session.mjs +561 -0
  133. package/esm2022/lib/editor/execution/editor.mjs +1387 -0
  134. package/esm2022/lib/editor/execution/helpers/dom.helper.mjs +42 -0
  135. package/esm2022/lib/editor/execution/helpers/format-style.helper.mjs +32 -0
  136. package/esm2022/lib/editor/execution/helpers/image.helpet.mjs +12 -0
  137. package/esm2022/lib/editor/execution/helpers/page.helper.mjs +12 -0
  138. package/esm2022/lib/editor/execution/helpers/paragraph-style.helper.mjs +41 -0
  139. package/esm2022/lib/editor/execution/helpers/paragraph.helper.mjs +177 -0
  140. package/esm2022/lib/editor/execution/regulator.service.mjs +206 -0
  141. package/esm2022/lib/editor/execution/targeting/cell-session-source.model.mjs +19 -0
  142. package/esm2022/lib/editor/execution/targeting/edge-session-source.model.mjs +15 -0
  143. package/esm2022/lib/editor/execution/targeting/main-session-source.model.mjs +8 -0
  144. package/esm2022/lib/editor/execution/targeting/session-source.model.mjs +3 -0
  145. package/esm2022/lib/editor/execution/targeting/session.model.mjs +10 -0
  146. package/esm2022/lib/editor/gadgets/font-metrics/editor-version.const.mjs +2 -0
  147. package/esm2022/lib/editor/gadgets/font-metrics/font-metric-size.interface.mjs +2 -0
  148. package/esm2022/lib/editor/gadgets/font-metrics/font-metrics.helper.mjs +88 -0
  149. package/esm2022/lib/editor/gadgets/history/operation-history.mjs +206 -0
  150. package/esm2022/lib/editor/gadgets/history/operation.type.mjs +2 -0
  151. package/esm2022/lib/editor/gadgets/history/operations-history-info.model.mjs +7 -0
  152. package/esm2022/lib/editor/gadgets/numbering/numbering-data.model.mjs +9 -0
  153. package/esm2022/lib/{+shared/editor/core/enums → editor/gadgets/numbering}/numbering-marker-type.enum.mjs +1 -1
  154. package/esm2022/lib/editor/gadgets/numbering/numbering-paragraph-style.model.mjs +13 -0
  155. package/esm2022/lib/editor/gadgets/numbering/numbering.helper.mjs +149 -0
  156. package/esm2022/lib/editor/gadgets/page-break/break-types.enum.mjs +7 -0
  157. package/esm2022/lib/editor/gadgets/page-break/break.helper.mjs +18 -0
  158. package/esm2022/lib/editor/gadgets/scrollbar.mjs +81 -0
  159. package/esm2022/lib/editor/gadgets/search/replace.interface.mjs +2 -0
  160. package/esm2022/lib/editor/gadgets/search/search-iteration.interface.mjs +2 -0
  161. package/esm2022/lib/editor/gadgets/search/search.mjs +231 -0
  162. package/esm2022/lib/editor/gadgets/unicode/unicode-chars.const.mjs +5 -0
  163. package/esm2022/lib/editor/gadgets/unicode/unicode.helper.mjs +20 -0
  164. package/esm2022/lib/editor/interaction/base.handler.mjs +19 -0
  165. package/esm2022/lib/editor/interaction/document.handler.mjs +27 -0
  166. package/esm2022/lib/editor/interaction/editor.service.mjs +346 -0
  167. package/esm2022/lib/editor/interaction/input.handler.mjs +152 -0
  168. package/esm2022/lib/{+shared/enums → editor/interaction}/mode.enum.mjs +1 -1
  169. package/esm2022/lib/editor/interaction/mouse-button.enum.mjs +7 -0
  170. package/esm2022/lib/editor/interaction/mouse.handler.mjs +50 -0
  171. package/esm2022/lib/editor/interaction/text-input.mjs +53 -0
  172. package/esm2022/lib/editor/operations/commands.service.mjs +20 -0
  173. package/esm2022/lib/editor/operations/enums/command-type.enum.mjs +32 -0
  174. package/esm2022/lib/editor/operations/enums/target-type.enum.mjs +7 -0
  175. package/esm2022/lib/editor/operations/helpers/break-operations.helper.mjs +9 -0
  176. package/esm2022/lib/editor/operations/helpers/content-operations.helper.mjs +15 -0
  177. package/esm2022/lib/editor/operations/helpers/format-operations.helper.mjs +85 -0
  178. package/esm2022/lib/editor/operations/helpers/image-operations.helper.mjs +19 -0
  179. package/esm2022/lib/editor/operations/helpers/indexed-element-operations.helper.mjs +43 -0
  180. package/esm2022/lib/editor/operations/helpers/link-operations.helper.mjs +63 -0
  181. package/esm2022/lib/editor/operations/helpers/numbering-operations.helper.mjs +55 -0
  182. package/esm2022/lib/editor/operations/helpers/paragraph-operations.helper.mjs +114 -0
  183. package/esm2022/lib/editor/operations/helpers/tab-operations.helper.mjs +16 -0
  184. package/esm2022/lib/editor/operations/helpers/table-operations.helper.mjs +374 -0
  185. package/esm2022/lib/editor/operations/operations-helper.helper.mjs +431 -0
  186. package/esm2022/lib/editor/operations/save-commands.helper.mjs +127 -0
  187. package/esm2022/lib/editor/operations/target-operations.helper.mjs +23 -0
  188. package/esm2022/lib/editor/positioning/alignments.const.mjs +8 -0
  189. package/esm2022/lib/editor/positioning/content.helper.mjs +36 -0
  190. package/esm2022/lib/editor/positioning/cursor-paragraph.mjs +13 -0
  191. package/esm2022/lib/editor/positioning/cursor-position.interface.mjs +2 -0
  192. package/esm2022/lib/editor/positioning/insert-index.interface.mjs +2 -0
  193. package/esm2022/lib/editor/positioning/line-width.helper.mjs +13 -0
  194. package/esm2022/lib/editor/positioning/position.helper.mjs +196 -0
  195. package/esm2022/lib/editor/positioning/range.mjs +94 -0
  196. package/esm2022/lib/editor/positioning/selection.mjs +317 -0
  197. package/esm2022/lib/editor/revision.helper.mjs +92 -0
  198. package/esm2022/lib/models/generated/cell.model.mjs +1 -1
  199. package/esm2022/lib/models/generated/command.model.mjs +5 -1
  200. package/esm2022/lib/models/generated/insert-paragraph.model.mjs +20 -0
  201. package/esm2022/lib/models/generated/replace.model.mjs +5 -1
  202. package/esm2022/public-api.mjs +37 -31
  203. package/fesm2022/talrace-ngx-noder.mjs +8169 -7285
  204. package/fesm2022/talrace-ngx-noder.mjs.map +1 -1
  205. package/lib/apart-components/add-link-dialog/add-link-dialog.component.d.ts +26 -0
  206. package/lib/apart-components/add-link-dialog/validation.helper.d.ts +5 -0
  207. package/lib/apart-components/add-link-mobile/add-link-mobile.component.d.ts +19 -0
  208. package/lib/{+shared → apart-components}/confirm-dialog/confirm-dialog.component.d.ts +2 -1
  209. package/lib/{+shared → apart-components}/editor-search/editor-search-dialog.component.d.ts +6 -7
  210. package/lib/apart-components/editor-title/editor-title.component.d.ts +25 -0
  211. package/lib/apart-components/editor-title-mobile/editor-title-mobile.component.d.ts +6 -0
  212. package/lib/apart-components/editor-toolbar/components/base-toolbar.component.d.ts +49 -0
  213. package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/color-picker/color-picker.component.d.ts +1 -1
  214. package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/font/font.component.d.ts +2 -2
  215. package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/font-size/font-size.component.d.ts +1 -1
  216. package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/font-style/font-style.component.d.ts +1 -1
  217. package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/format/format.component.d.ts +2 -2
  218. package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/heading/heading.component.d.ts +1 -1
  219. package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/numbering/numbering.component.d.ts +3 -3
  220. package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/print/print.component.d.ts +1 -1
  221. package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/undo-redo/undo-redo.component.d.ts +1 -1
  222. package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/components/buttons}/zoom/zoom.component.d.ts +1 -1
  223. package/lib/apart-components/editor-toolbar/components/menu-dropdowns/menu-dropdowns.component.d.ts +36 -0
  224. package/lib/apart-components/editor-toolbar/components/menu-dropdowns-mobile/menu-dropdowns-mobile.component.d.ts +14 -0
  225. package/lib/apart-components/editor-toolbar/components/toolbar-actions/toolbar-actions.component.d.ts +23 -0
  226. package/lib/apart-components/editor-toolbar/editor-mobile-toolbar/editor-mobile-toolbar.component.d.ts +26 -0
  227. package/lib/apart-components/editor-toolbar/editor-toolbar/editor-toolbar.component.d.ts +40 -0
  228. package/lib/apart-components/editor-toolbar/editor-toolbar.module.d.ts +32 -0
  229. package/lib/apart-components/editor-toolbar/shared/constants/editor-toolbar-modes.const.d.ts +2 -0
  230. package/lib/apart-components/editor-toolbar/shared/constants/numbering-templates.const.d.ts +6 -0
  231. package/lib/apart-components/editor-toolbar/shared/enums/editor-toolbar-mode.enum.d.ts +9 -0
  232. package/lib/apart-components/editor-toolbar/shared/services/editor-toolbar.service.d.ts +14 -0
  233. package/lib/apart-components/editor-toolbar/shared/services/toolbar-core.service.d.ts +38 -0
  234. package/lib/apart-components/editor-toolbar/shared/toolbar-styles.helper.d.ts +4 -0
  235. package/lib/{+shared → apart-components}/insert-table/insert-table.component.d.ts +1 -1
  236. package/lib/apart-components/insert-table-mobile/insert-table-mobile.component.d.ts +30 -0
  237. package/lib/apart-components/text-format-mobile/text-format-mobile.component.d.ts +35 -0
  238. package/lib/{+shared/editor/core/models → editor/components/edges}/edge-element.model.d.ts +1 -1
  239. package/lib/editor/components/edges/edge.component.d.ts +44 -0
  240. package/lib/{+shared/editor/core → editor}/components/edges/edges.d.ts +7 -7
  241. package/lib/{+shared/editor → editor/components}/editor.component.d.ts +11 -11
  242. package/lib/{+shared/editor/custom-components → editor/components}/external-element/external-sidenav.interface.d.ts +1 -1
  243. package/lib/{+shared/editor/custom-components → editor/components}/external-element/external.component.d.ts +4 -4
  244. package/lib/{+shared/editor/custom-components → editor/components}/external-element/models/external-element.model.d.ts +2 -1
  245. package/lib/{+shared/editor/custom-components → editor/components}/image/components/image.component.d.ts +4 -4
  246. package/lib/editor/components/image/image-api.service.d.ts +17 -0
  247. package/lib/{+shared/editor/custom-components → editor/components}/image/input-handler/image-input.handler.d.ts +3 -0
  248. package/lib/{+shared/editor/custom-components → editor/components}/image/resizer/resizer.component.d.ts +2 -2
  249. package/lib/{+shared/editor/custom-components → editor/components}/image/resizer/size-wrapper.d.ts +1 -1
  250. package/lib/{+shared/editor/custom-components → editor/components}/shared/abstract/base.component.d.ts +6 -4
  251. package/lib/editor/components/shared/abstract/destroy.component.d.ts +9 -0
  252. package/lib/{+shared/editor/custom-components/shared/helpers → editor/components/shared}/custom-component.hepler.d.ts +3 -3
  253. package/lib/editor/components/shared/custom-components.interface.d.ts +13 -0
  254. package/lib/editor/components/shared/custom-content.d.ts +5 -0
  255. package/lib/{+shared/editor/custom-components/shared/services/component → editor/components/shared/services}/component.service.d.ts +1 -1
  256. package/lib/{+shared/editor/custom-components/shared/services/custom-content → editor/components/shared/services}/custom-content.service.d.ts +14 -13
  257. package/lib/{+shared/editor/custom-components → editor/components}/tab/tab.component.d.ts +2 -2
  258. package/lib/{+shared/editor/custom-components → editor/components}/table/cell-resizer/cell-resizer.d.ts +2 -1
  259. package/lib/editor/components/table/components/table-cell.component.d.ts +45 -0
  260. package/lib/{+shared/editor/custom-components → editor/components}/table/components/table.component.d.ts +27 -11
  261. package/lib/{+shared/editor/custom-components → editor/components}/table/models/cell-data.model.d.ts +1 -1
  262. package/lib/{+shared/editor/custom-components → editor/components}/table/overlay-menu/overlay-menu.component.d.ts +2 -2
  263. package/lib/{+shared/editor/custom-components → editor/components}/table/selection/table-selection.d.ts +5 -3
  264. package/lib/{+shared/editor/core → editor/content}/constants/editor.const.d.ts +5 -3
  265. package/lib/editor/content/contents.interface.d.ts +22 -0
  266. package/lib/editor/content/display-data/display-data.d.ts +103 -0
  267. package/lib/{+shared/editor/core/models → editor/content/display-data}/display-token.model.d.ts +1 -1
  268. package/lib/{+shared/editor/core/models → editor/content/display-data}/format-ext.model.d.ts +1 -1
  269. package/lib/editor/content/display-data/general-properties.model.d.ts +13 -0
  270. package/lib/{+shared/editor/core/models → editor/content/display-data}/line-info.model.d.ts +1 -0
  271. package/lib/{+shared/editor/core/layers → editor/content/display-data}/lines.d.ts +1 -1
  272. package/lib/editor/content/display-data/models/paragraph-info.model.d.ts +9 -0
  273. package/lib/{+shared/editor/core/paging → editor/content/display-data}/paragraph.d.ts +9 -5
  274. package/lib/{+shared/editor/core/paging → editor/content/display-data}/text-line-info.d.ts +5 -2
  275. package/lib/{+shared/editor/core/interfaces → editor/content/display-data}/toolbar-styles.interface.d.ts +1 -1
  276. package/lib/editor/content/helpers/content-style.helper.d.ts +10 -0
  277. package/lib/editor/content/helpers/display-token.helper.d.ts +6 -0
  278. package/lib/{+shared/editor → editor/content}/helpers/indexed-element.helper.d.ts +1 -1
  279. package/lib/editor/content/helpers/scaling.helper.d.ts +4 -0
  280. package/lib/{+shared/editor/core/paging → editor/content}/page-vertical-data.model.d.ts +1 -1
  281. package/lib/{+shared/editor/core/base → editor/core}/event-emitting.d.ts +0 -5
  282. package/lib/{+shared/editor/core → editor/display}/layers/cursor.layer.d.ts +7 -8
  283. package/lib/{+shared/editor/core/interfaces → editor/display/layers}/layer.config.d.ts +2 -2
  284. package/lib/{+shared/editor/core → editor/display}/layers/pages.layer.d.ts +5 -6
  285. package/lib/editor/display/layers/print.text.layer.d.ts +4 -0
  286. package/lib/{+shared/editor/core → editor/display}/layers/selection.layer.d.ts +5 -6
  287. package/lib/editor/display/layers/text.layer.d.ts +33 -0
  288. package/lib/{+shared/helpers → editor/display/print}/print.helper.d.ts +3 -3
  289. package/lib/editor/display/print/print.renderer.d.ts +21 -0
  290. package/lib/{+shared/editor/core/helpers → editor/display/print}/print.rendering.helper.d.ts +2 -2
  291. package/lib/{+shared/editor/core/models → editor/display}/render-changes.model.d.ts +1 -1
  292. package/lib/{+shared/editor/core → editor/display}/renderer.d.ts +10 -13
  293. package/lib/{+shared/editor/core/helpers → editor/display}/rendering.helper.d.ts +10 -10
  294. package/lib/{+shared/editor/core/layers → editor/display}/renderloop.d.ts +2 -2
  295. package/lib/{+shared/editor/core → editor/display}/virtual.renderer.d.ts +14 -29
  296. package/lib/editor/editor.module.d.ts +31 -0
  297. package/lib/editor/execution/edit.session.d.ts +113 -0
  298. package/lib/{+shared/editor/core → editor/execution}/editor.d.ts +55 -46
  299. package/lib/{+shared/editor/core → editor/execution}/helpers/format-style.helper.d.ts +1 -5
  300. package/lib/editor/execution/helpers/image.helpet.d.ts +4 -0
  301. package/lib/{+shared/editor/core → editor/execution}/helpers/page.helper.d.ts +1 -1
  302. package/lib/{+shared/editor/core → editor/execution}/helpers/paragraph-style.helper.d.ts +1 -1
  303. package/lib/{+shared/editor/core → editor/execution}/helpers/paragraph.helper.d.ts +14 -8
  304. package/lib/{+shared/editor → editor}/execution/regulator.service.d.ts +16 -15
  305. package/lib/{+shared/editor/execution/models → editor/execution/targeting}/cell-session-source.model.d.ts +3 -3
  306. package/lib/{+shared/editor/execution/models → editor/execution/targeting}/edge-session-source.model.d.ts +3 -3
  307. package/lib/{+shared/editor/execution/models → editor/execution/targeting}/main-session-source.model.d.ts +1 -1
  308. package/lib/{+shared/editor/execution/models → editor/execution/targeting}/session-source.model.d.ts +1 -1
  309. package/lib/{+shared/editor/execution/models → editor/execution/targeting}/session.model.d.ts +3 -3
  310. package/lib/{+shared/editor/core/helpers → editor/gadgets/font-metrics}/font-metrics.helper.d.ts +1 -1
  311. package/lib/{+shared/editor/operation-history → editor/gadgets/history}/operation-history.d.ts +9 -7
  312. package/lib/{+shared/editor/operation-history → editor/gadgets/history}/operation.type.d.ts +2 -1
  313. package/lib/{+shared/editor/core/models → editor/gadgets/numbering}/numbering-data.model.d.ts +1 -1
  314. package/lib/editor/gadgets/numbering/numbering-paragraph-style.model.d.ts +6 -0
  315. package/lib/editor/gadgets/numbering/numbering.helper.d.ts +26 -0
  316. package/lib/{+shared/editor/helpers → editor/gadgets/page-break}/break.helper.d.ts +2 -2
  317. package/lib/{+shared/editor/core/layers → editor/gadgets}/scrollbar.d.ts +9 -18
  318. package/lib/{+shared/editor/core → editor/gadgets/search}/search.d.ts +4 -4
  319. package/lib/editor/interaction/base.handler.d.ts +9 -0
  320. package/lib/editor/interaction/document.handler.d.ts +10 -0
  321. package/lib/{+shared/editor → editor}/interaction/editor.service.d.ts +36 -21
  322. package/lib/{+shared/editor → editor}/interaction/input.handler.d.ts +4 -5
  323. package/lib/{+shared/editor → editor}/interaction/mouse.handler.d.ts +1 -1
  324. package/lib/{+shared/editor → editor}/operations/enums/command-type.enum.d.ts +11 -10
  325. package/lib/{+shared/editor → editor}/operations/helpers/break-operations.helper.d.ts +2 -2
  326. package/lib/{+shared/editor → editor}/operations/helpers/format-operations.helper.d.ts +2 -2
  327. package/lib/editor/operations/helpers/image-operations.helper.d.ts +7 -0
  328. package/lib/{+shared/editor → editor}/operations/helpers/indexed-element-operations.helper.d.ts +1 -1
  329. package/lib/editor/operations/helpers/link-operations.helper.d.ts +8 -0
  330. package/lib/{+shared/editor → editor}/operations/helpers/numbering-operations.helper.d.ts +3 -3
  331. package/lib/{+shared/editor → editor}/operations/helpers/paragraph-operations.helper.d.ts +3 -2
  332. package/lib/{+shared/editor → editor}/operations/helpers/tab-operations.helper.d.ts +1 -1
  333. package/lib/{+shared/editor → editor}/operations/helpers/table-operations.helper.d.ts +6 -6
  334. package/lib/{+shared/editor/operations/helpers → editor/operations}/operations-helper.helper.d.ts +21 -19
  335. package/lib/{+shared/editor/operations/helpers → editor/operations}/save-commands.helper.d.ts +28 -22
  336. package/lib/editor/operations/target-operations.helper.d.ts +6 -0
  337. package/lib/editor/positioning/content.helper.d.ts +15 -0
  338. package/lib/editor/positioning/cursor-paragraph.d.ts +7 -0
  339. package/lib/{+shared/editor/core/interfaces → editor/positioning}/cursor-position.interface.d.ts +1 -1
  340. package/lib/{+shared/editor/core/helpers → editor/positioning}/line-width.helper.d.ts +2 -2
  341. package/lib/{+shared/editor/core/helpers → editor/positioning}/position.helper.d.ts +11 -11
  342. package/lib/{+shared/editor/core → editor/positioning}/range.d.ts +12 -12
  343. package/lib/{+shared/editor → editor}/positioning/selection.d.ts +13 -10
  344. package/lib/editor/revision.helper.d.ts +15 -0
  345. package/lib/models/generated/cell.model.d.ts +1 -0
  346. package/lib/models/generated/command.model.d.ts +2 -0
  347. package/lib/models/generated/insert-paragraph.model.d.ts +10 -0
  348. package/lib/models/generated/replace.model.d.ts +2 -0
  349. package/package.json +1 -1
  350. package/public-api.d.ts +36 -30
  351. package/src/_ngx-noder.theme.scss +49 -13
  352. package/src/assets/fonts/nc-iconfont.css +112 -106
  353. package/src/assets/fonts/nc-iconfont.eot +0 -0
  354. package/src/assets/fonts/nc-iconfont.svg +4 -1
  355. package/src/assets/fonts/nc-iconfont.ttf +0 -0
  356. package/src/assets/fonts/nc-iconfont.woff +0 -0
  357. package/src/lib/{+shared → apart-components}/add-link-dialog/_add-link-dialog.theme.scss +4 -4
  358. package/src/lib/apart-components/add-link-mobile/_add-link-mobile.theme.scss +25 -0
  359. package/src/lib/apart-components/confirm-dialog/_theme.scss +30 -0
  360. package/src/lib/apart-components/editor-title/_editor-title.theme.scss +28 -0
  361. package/src/lib/apart-components/editor-title-mobile/_editor-title-mobile.theme.scss +42 -0
  362. package/src/lib/apart-components/editor-toolbar/_editor-toolbar.theme.scss +27 -0
  363. package/src/lib/apart-components/editor-toolbar/_theme.scss +25 -0
  364. package/src/lib/apart-components/editor-toolbar/components/buttons/color-picker/_color-picker.theme.scss +12 -0
  365. package/src/lib/apart-components/editor-toolbar/components/buttons/font/_font.theme.scss +12 -0
  366. package/src/lib/apart-components/editor-toolbar/components/buttons/font-size/_font-size.theme.scss +14 -0
  367. package/src/lib/apart-components/editor-toolbar/components/buttons/font-style/_font-style.theme.scss +21 -0
  368. package/src/lib/apart-components/editor-toolbar/components/buttons/format/_format.theme.scss +21 -0
  369. package/src/lib/apart-components/editor-toolbar/components/buttons/numbering/_numbering.theme.scss +70 -0
  370. package/src/lib/apart-components/editor-toolbar/components/buttons/undo-redo/_undo-redo.theme.scss +16 -0
  371. package/src/lib/apart-components/editor-toolbar/components/menu-dropdowns/_menu-dropdowns.theme.scss +26 -0
  372. package/src/lib/apart-components/editor-toolbar/components/menu-dropdowns-mobile/_menu-dropdowns-mobile.theme.scss +33 -0
  373. package/src/lib/apart-components/editor-toolbar/components/toolbar-actions/_toolbar-actions.theme.scss +22 -0
  374. package/src/lib/{+shared → apart-components}/insert-table/_insert-table.theme.scss +10 -7
  375. package/src/lib/apart-components/insert-table-mobile/_insert-table-mobile.theme.scss +54 -0
  376. package/src/lib/apart-components/text-format-mobile/_text-format-mobile.theme.scss +86 -0
  377. package/src/lib/editor/_theme.scss +5 -0
  378. package/src/lib/editor/components/_editor.theme.scss +112 -0
  379. package/src/scss/_fonts.scss +3 -0
  380. package/src/scss/base-editor.scss +329 -0
  381. package/src/styles.scss +3 -58
  382. package/esm2022/lib/+shared/abstract/base-api.service.mjs +0 -99
  383. package/esm2022/lib/+shared/abstract/observer.component.mjs +0 -24
  384. package/esm2022/lib/+shared/confirm-dialog/confirm-dialog.component.mjs +0 -28
  385. package/esm2022/lib/+shared/constants/default-file-name.const.mjs +0 -2
  386. package/esm2022/lib/+shared/constants/paginator-sizes.const.mjs +0 -3
  387. package/esm2022/lib/+shared/editor/core/base/event-emitting.mjs +0 -71
  388. package/esm2022/lib/+shared/editor/core/components/edges/edge-type.enum.mjs +0 -6
  389. package/esm2022/lib/+shared/editor/core/components/edges/edge.component.mjs +0 -100
  390. package/esm2022/lib/+shared/editor/core/components/edges/edges.mjs +0 -104
  391. package/esm2022/lib/+shared/editor/core/constants/alignments.const.mjs +0 -8
  392. package/esm2022/lib/+shared/editor/core/constants/clipboardEventTypes.const.mjs +0 -6
  393. package/esm2022/lib/+shared/editor/core/constants/content-style-change.const.mjs +0 -15
  394. package/esm2022/lib/+shared/editor/core/constants/display-values.const.mjs +0 -8
  395. package/esm2022/lib/+shared/editor/core/constants/document-info.const.mjs +0 -13
  396. package/esm2022/lib/+shared/editor/core/constants/editor-version.const.mjs +0 -2
  397. package/esm2022/lib/+shared/editor/core/constants/editor.const.mjs +0 -62
  398. package/esm2022/lib/+shared/editor/core/constants/unicode-chars.const.mjs +0 -5
  399. package/esm2022/lib/+shared/editor/core/document.mjs +0 -134
  400. package/esm2022/lib/+shared/editor/core/edit.session.mjs +0 -1102
  401. package/esm2022/lib/+shared/editor/core/editor.mjs +0 -1279
  402. package/esm2022/lib/+shared/editor/core/enums/break-types.enum.mjs +0 -7
  403. package/esm2022/lib/+shared/editor/core/enums/mouse-button.enum.mjs +0 -7
  404. package/esm2022/lib/+shared/editor/core/enums/page-type.enum.mjs +0 -7
  405. package/esm2022/lib/+shared/editor/core/helpers/content-style.helper.mjs +0 -156
  406. package/esm2022/lib/+shared/editor/core/helpers/delta.helper.mjs +0 -18
  407. package/esm2022/lib/+shared/editor/core/helpers/dom.helper.mjs +0 -42
  408. package/esm2022/lib/+shared/editor/core/helpers/event.helper.mjs +0 -18
  409. package/esm2022/lib/+shared/editor/core/helpers/font-metrics.helper.mjs +0 -88
  410. package/esm2022/lib/+shared/editor/core/helpers/format-style.helper.mjs +0 -72
  411. package/esm2022/lib/+shared/editor/core/helpers/line-width.helper.mjs +0 -13
  412. package/esm2022/lib/+shared/editor/core/helpers/numbering.helper.mjs +0 -83
  413. package/esm2022/lib/+shared/editor/core/helpers/page.helper.mjs +0 -12
  414. package/esm2022/lib/+shared/editor/core/helpers/paragraph-style.helper.mjs +0 -41
  415. package/esm2022/lib/+shared/editor/core/helpers/paragraph.helper.mjs +0 -132
  416. package/esm2022/lib/+shared/editor/core/helpers/position.helper.mjs +0 -191
  417. package/esm2022/lib/+shared/editor/core/helpers/print.rendering.helper.mjs +0 -7
  418. package/esm2022/lib/+shared/editor/core/helpers/rendering.helper.mjs +0 -186
  419. package/esm2022/lib/+shared/editor/core/helpers/unicode.helper.mjs +0 -20
  420. package/esm2022/lib/+shared/editor/core/interfaces/cell.interface.mjs +0 -2
  421. package/esm2022/lib/+shared/editor/core/interfaces/cursor-position.interface.mjs +0 -2
  422. package/esm2022/lib/+shared/editor/core/interfaces/font-metric-size.interface.mjs +0 -2
  423. package/esm2022/lib/+shared/editor/core/interfaces/layer.config.mjs +0 -2
  424. package/esm2022/lib/+shared/editor/core/interfaces/paragraph-info.interface.mjs +0 -2
  425. package/esm2022/lib/+shared/editor/core/interfaces/render-changes.interface.mjs +0 -2
  426. package/esm2022/lib/+shared/editor/core/interfaces/replace.interface.mjs +0 -2
  427. package/esm2022/lib/+shared/editor/core/interfaces/search-iteration.interface.mjs +0 -2
  428. package/esm2022/lib/+shared/editor/core/interfaces/toolbar-styles.interface.mjs +0 -2
  429. package/esm2022/lib/+shared/editor/core/interfaces/visible-line-info.interface.mjs +0 -2
  430. package/esm2022/lib/+shared/editor/core/interfaces/visible-range.interface.mjs +0 -2
  431. package/esm2022/lib/+shared/editor/core/keyboard/text-input.mjs +0 -53
  432. package/esm2022/lib/+shared/editor/core/layers/cursor.layer.mjs +0 -103
  433. package/esm2022/lib/+shared/editor/core/layers/edges.layer.mjs +0 -99
  434. package/esm2022/lib/+shared/editor/core/layers/lines.mjs +0 -96
  435. package/esm2022/lib/+shared/editor/core/layers/pages.layer.mjs +0 -106
  436. package/esm2022/lib/+shared/editor/core/layers/print.edges.layer.mjs +0 -7
  437. package/esm2022/lib/+shared/editor/core/layers/print.pages.layer.mjs +0 -7
  438. package/esm2022/lib/+shared/editor/core/layers/print.text.layer.mjs +0 -7
  439. package/esm2022/lib/+shared/editor/core/layers/renderloop.mjs +0 -26
  440. package/esm2022/lib/+shared/editor/core/layers/scrollbar.mjs +0 -100
  441. package/esm2022/lib/+shared/editor/core/layers/selection.layer.mjs +0 -115
  442. package/esm2022/lib/+shared/editor/core/layers/text.layer.mjs +0 -124
  443. package/esm2022/lib/+shared/editor/core/models/display-token.model.mjs +0 -12
  444. package/esm2022/lib/+shared/editor/core/models/distance.model.mjs +0 -10
  445. package/esm2022/lib/+shared/editor/core/models/edge-element.model.mjs +0 -9
  446. package/esm2022/lib/+shared/editor/core/models/format-ext.model.mjs +0 -10
  447. package/esm2022/lib/+shared/editor/core/models/indent.model.mjs +0 -9
  448. package/esm2022/lib/+shared/editor/core/models/line-info.model.mjs +0 -9
  449. package/esm2022/lib/+shared/editor/core/models/margin.model.mjs +0 -16
  450. package/esm2022/lib/+shared/editor/core/models/numbering-data.model.mjs +0 -9
  451. package/esm2022/lib/+shared/editor/core/models/render-changes.model.mjs +0 -25
  452. package/esm2022/lib/+shared/editor/core/paging/page-vertical-data.model.mjs +0 -9
  453. package/esm2022/lib/+shared/editor/core/paging/pages.wrap.mjs +0 -219
  454. package/esm2022/lib/+shared/editor/core/paging/paragraph.mjs +0 -52
  455. package/esm2022/lib/+shared/editor/core/paging/text-line-info.mjs +0 -34
  456. package/esm2022/lib/+shared/editor/core/point.mjs +0 -13
  457. package/esm2022/lib/+shared/editor/core/print.renderer.mjs +0 -72
  458. package/esm2022/lib/+shared/editor/core/range.mjs +0 -94
  459. package/esm2022/lib/+shared/editor/core/renderer.mjs +0 -217
  460. package/esm2022/lib/+shared/editor/core/search.mjs +0 -231
  461. package/esm2022/lib/+shared/editor/core/virtual.renderer.mjs +0 -356
  462. package/esm2022/lib/+shared/editor/custom-components/external-element/element-toolbar/element-toolbar.component.mjs +0 -35
  463. package/esm2022/lib/+shared/editor/custom-components/external-element/external-element.service.mjs +0 -6
  464. package/esm2022/lib/+shared/editor/custom-components/external-element/external-elements.const.mjs +0 -4
  465. package/esm2022/lib/+shared/editor/custom-components/external-element/external-sidenav.interface.mjs +0 -2
  466. package/esm2022/lib/+shared/editor/custom-components/external-element/external.component.mjs +0 -41
  467. package/esm2022/lib/+shared/editor/custom-components/external-element/models/element-data.model.mjs +0 -9
  468. package/esm2022/lib/+shared/editor/custom-components/external-element/models/external-element.model.mjs +0 -10
  469. package/esm2022/lib/+shared/editor/custom-components/external-element/models/external-sidenav.model.mjs +0 -15
  470. package/esm2022/lib/+shared/editor/custom-components/image/components/image.component.mjs +0 -87
  471. package/esm2022/lib/+shared/editor/custom-components/image/input-handler/image-input.handler.mjs +0 -38
  472. package/esm2022/lib/+shared/editor/custom-components/image/interfaces/size.mjs +0 -2
  473. package/esm2022/lib/+shared/editor/custom-components/image/resizer/coordinate.mjs +0 -2
  474. package/esm2022/lib/+shared/editor/custom-components/image/resizer/direction-wrapper.mjs +0 -19
  475. package/esm2022/lib/+shared/editor/custom-components/image/resizer/direction.enum.mjs +0 -12
  476. package/esm2022/lib/+shared/editor/custom-components/image/resizer/resizer.component.mjs +0 -106
  477. package/esm2022/lib/+shared/editor/custom-components/image/resizer/size-delta.mjs +0 -2
  478. package/esm2022/lib/+shared/editor/custom-components/image/resizer/size-wrapper.mjs +0 -52
  479. package/esm2022/lib/+shared/editor/custom-components/image/services/image-api.service.mjs +0 -14
  480. package/esm2022/lib/+shared/editor/custom-components/shared/abstract/base.component.mjs +0 -57
  481. package/esm2022/lib/+shared/editor/custom-components/shared/constants/custom-content-markers.const.mjs +0 -3
  482. package/esm2022/lib/+shared/editor/custom-components/shared/helpers/custom-component.hepler.mjs +0 -43
  483. package/esm2022/lib/+shared/editor/custom-components/shared/interfaces/custom-components.interface.mjs +0 -2
  484. package/esm2022/lib/+shared/editor/custom-components/shared/services/component/component.service.mjs +0 -64
  485. package/esm2022/lib/+shared/editor/custom-components/shared/services/custom-content/custom-content.service.mjs +0 -120
  486. package/esm2022/lib/+shared/editor/custom-components/shared/services/overlay/overlay.service.mjs +0 -55
  487. package/esm2022/lib/+shared/editor/custom-components/shared/types/custom-content.mjs +0 -2
  488. package/esm2022/lib/+shared/editor/custom-components/tab/tab.component.mjs +0 -43
  489. package/esm2022/lib/+shared/editor/custom-components/table/cell-resizer/cell-resizer.mjs +0 -118
  490. package/esm2022/lib/+shared/editor/custom-components/table/components/table-cell.component.mjs +0 -95
  491. package/esm2022/lib/+shared/editor/custom-components/table/components/table.component.mjs +0 -293
  492. package/esm2022/lib/+shared/editor/custom-components/table/enums/reisizer-side.enum.mjs +0 -8
  493. package/esm2022/lib/+shared/editor/custom-components/table/enums/vertical-merge.enum.mjs +0 -6
  494. package/esm2022/lib/+shared/editor/custom-components/table/models/cell-data.model.mjs +0 -18
  495. package/esm2022/lib/+shared/editor/custom-components/table/models/cell-resizer-parameters.model.mjs +0 -9
  496. package/esm2022/lib/+shared/editor/custom-components/table/models/row-data.model.mjs +0 -8
  497. package/esm2022/lib/+shared/editor/custom-components/table/models/selection-range.model.mjs +0 -7
  498. package/esm2022/lib/+shared/editor/custom-components/table/overlay-menu/overlay-menu.component.mjs +0 -74
  499. package/esm2022/lib/+shared/editor/custom-components/table/selection/table-selection.mjs +0 -358
  500. package/esm2022/lib/+shared/editor/editor.component.mjs +0 -103
  501. package/esm2022/lib/+shared/editor/editor.module.mjs +0 -85
  502. package/esm2022/lib/+shared/editor/execution/models/cell-session-source.model.mjs +0 -19
  503. package/esm2022/lib/+shared/editor/execution/models/edge-session-source.model.mjs +0 -15
  504. package/esm2022/lib/+shared/editor/execution/models/general-properties.model.mjs +0 -11
  505. package/esm2022/lib/+shared/editor/execution/models/main-session-source.model.mjs +0 -8
  506. package/esm2022/lib/+shared/editor/execution/models/session-source.model.mjs +0 -3
  507. package/esm2022/lib/+shared/editor/execution/models/session.model.mjs +0 -10
  508. package/esm2022/lib/+shared/editor/execution/regulator.service.mjs +0 -193
  509. package/esm2022/lib/+shared/editor/helpers/break.helper.mjs +0 -18
  510. package/esm2022/lib/+shared/editor/helpers/content.helper.mjs +0 -30
  511. package/esm2022/lib/+shared/editor/helpers/tab.helper.mjs +0 -6
  512. package/esm2022/lib/+shared/editor/interaction/editor.service.mjs +0 -309
  513. package/esm2022/lib/+shared/editor/interaction/input.handler.mjs +0 -160
  514. package/esm2022/lib/+shared/editor/interaction/mouse.handler.mjs +0 -49
  515. package/esm2022/lib/+shared/editor/interfaces/contents.interface.mjs +0 -2
  516. package/esm2022/lib/+shared/editor/interfaces/insert-index.interface.mjs +0 -2
  517. package/esm2022/lib/+shared/editor/operation-history/operation-history.mjs +0 -184
  518. package/esm2022/lib/+shared/editor/operation-history/operation.type.mjs +0 -2
  519. package/esm2022/lib/+shared/editor/operation-history/operations-history-info.model.mjs +0 -7
  520. package/esm2022/lib/+shared/editor/operations/enums/command-type.enum.mjs +0 -31
  521. package/esm2022/lib/+shared/editor/operations/enums/target-type.enum.mjs +0 -7
  522. package/esm2022/lib/+shared/editor/operations/helpers/break-operations.helper.mjs +0 -9
  523. package/esm2022/lib/+shared/editor/operations/helpers/content-operations.helper.mjs +0 -15
  524. package/esm2022/lib/+shared/editor/operations/helpers/format-operations.helper.mjs +0 -56
  525. package/esm2022/lib/+shared/editor/operations/helpers/image-operations.helper.mjs +0 -19
  526. package/esm2022/lib/+shared/editor/operations/helpers/indexed-element-operations.helper.mjs +0 -43
  527. package/esm2022/lib/+shared/editor/operations/helpers/link-operations.helper.mjs +0 -28
  528. package/esm2022/lib/+shared/editor/operations/helpers/numbering-operations.helper.mjs +0 -55
  529. package/esm2022/lib/+shared/editor/operations/helpers/operations-helper.helper.mjs +0 -394
  530. package/esm2022/lib/+shared/editor/operations/helpers/paragraph-operations.helper.mjs +0 -83
  531. package/esm2022/lib/+shared/editor/operations/helpers/save-commands.helper.mjs +0 -118
  532. package/esm2022/lib/+shared/editor/operations/helpers/tab-operations.helper.mjs +0 -16
  533. package/esm2022/lib/+shared/editor/operations/helpers/table-operations.helper.mjs +0 -371
  534. package/esm2022/lib/+shared/editor/operations/helpers/target-operations.helper.mjs +0 -23
  535. package/esm2022/lib/+shared/editor/positioning/selection.mjs +0 -307
  536. package/esm2022/lib/+shared/editor/store/editor.actions.mjs +0 -13
  537. package/esm2022/lib/+shared/editor-header/editor-header.component.mjs +0 -314
  538. package/esm2022/lib/+shared/editor-search/editor-search-dialog.component.mjs +0 -71
  539. package/esm2022/lib/+shared/editor-toolbar/color-picker/color-picker.component.mjs +0 -32
  540. package/esm2022/lib/+shared/editor-toolbar/constants/svg-icons.const.mjs +0 -157
  541. package/esm2022/lib/+shared/editor-toolbar/editor-toolbar.component.mjs +0 -115
  542. package/esm2022/lib/+shared/editor-toolbar/editor-toolbar.module.mjs +0 -107
  543. package/esm2022/lib/+shared/editor-toolbar/enums/alignment.enum.mjs +0 -8
  544. package/esm2022/lib/+shared/editor-toolbar/enums/numbering-type.enum.mjs +0 -6
  545. package/esm2022/lib/+shared/editor-toolbar/font/font.component.mjs +0 -45
  546. package/esm2022/lib/+shared/editor-toolbar/font-size/font-size.component.mjs +0 -85
  547. package/esm2022/lib/+shared/editor-toolbar/font-style/font-style.component.mjs +0 -80
  548. package/esm2022/lib/+shared/editor-toolbar/format/format.component.mjs +0 -28
  549. package/esm2022/lib/+shared/editor-toolbar/heading/heading.component.mjs +0 -23
  550. package/esm2022/lib/+shared/editor-toolbar/helpers/toolbar-styles.helper.mjs +0 -55
  551. package/esm2022/lib/+shared/editor-toolbar/numbering/numbering.component.mjs +0 -53
  552. package/esm2022/lib/+shared/editor-toolbar/print/print.component.mjs +0 -18
  553. package/esm2022/lib/+shared/editor-toolbar/undo-redo/undo-redo.component.mjs +0 -27
  554. package/esm2022/lib/+shared/editor-toolbar/zoom/zoom.component.mjs +0 -74
  555. package/esm2022/lib/+shared/helpers/print.helper.mjs +0 -40
  556. package/esm2022/lib/+shared/insert-table/insert-table.component.mjs +0 -54
  557. package/esm2022/lib/+shared/services/commands.service.mjs +0 -20
  558. package/esm2022/lib/+shared/services/custom-icon.service.mjs +0 -34
  559. package/lib/+shared/abstract/base-api.service.d.ts +0 -23
  560. package/lib/+shared/abstract/observer.component.d.ts +0 -10
  561. package/lib/+shared/constants/default-file-name.const.d.ts +0 -1
  562. package/lib/+shared/constants/paginator-sizes.const.d.ts +0 -2
  563. package/lib/+shared/editor/core/components/edges/edge.component.d.ts +0 -45
  564. package/lib/+shared/editor/core/constants/clipboardEventTypes.const.d.ts +0 -5
  565. package/lib/+shared/editor/core/constants/content-style-change.const.d.ts +0 -14
  566. package/lib/+shared/editor/core/document.d.ts +0 -56
  567. package/lib/+shared/editor/core/edit.session.d.ts +0 -159
  568. package/lib/+shared/editor/core/helpers/content-style.helper.d.ts +0 -16
  569. package/lib/+shared/editor/core/helpers/delta.helper.d.ts +0 -6
  570. package/lib/+shared/editor/core/helpers/numbering.helper.d.ts +0 -19
  571. package/lib/+shared/editor/core/interfaces/visible-line-info.interface.d.ts +0 -5
  572. package/lib/+shared/editor/core/layers/edges.layer.d.ts +0 -24
  573. package/lib/+shared/editor/core/layers/print.edges.layer.d.ts +0 -4
  574. package/lib/+shared/editor/core/layers/print.text.layer.d.ts +0 -5
  575. package/lib/+shared/editor/core/layers/text.layer.d.ts +0 -22
  576. package/lib/+shared/editor/core/paging/pages.wrap.d.ts +0 -41
  577. package/lib/+shared/editor/core/point.d.ts +0 -7
  578. package/lib/+shared/editor/core/print.renderer.d.ts +0 -25
  579. package/lib/+shared/editor/custom-components/external-element/element-toolbar/element-toolbar.component.d.ts +0 -14
  580. package/lib/+shared/editor/custom-components/image/services/image-api.service.d.ts +0 -8
  581. package/lib/+shared/editor/custom-components/shared/interfaces/custom-components.interface.d.ts +0 -13
  582. package/lib/+shared/editor/custom-components/shared/types/custom-content.d.ts +0 -5
  583. package/lib/+shared/editor/custom-components/table/components/table-cell.component.d.ts +0 -45
  584. package/lib/+shared/editor/editor.module.d.ts +0 -30
  585. package/lib/+shared/editor/execution/models/general-properties.model.d.ts +0 -7
  586. package/lib/+shared/editor/helpers/content.helper.d.ts +0 -9
  587. package/lib/+shared/editor/interfaces/contents.interface.d.ts +0 -22
  588. package/lib/+shared/editor/operations/helpers/image-operations.helper.d.ts +0 -7
  589. package/lib/+shared/editor/operations/helpers/link-operations.helper.d.ts +0 -6
  590. package/lib/+shared/editor/operations/helpers/target-operations.helper.d.ts +0 -6
  591. package/lib/+shared/editor/store/editor.actions.d.ts +0 -11
  592. package/lib/+shared/editor-header/editor-header.component.d.ts +0 -101
  593. package/lib/+shared/editor-toolbar/constants/numbering-templates.const.d.ts +0 -6
  594. package/lib/+shared/editor-toolbar/editor-toolbar.component.d.ts +0 -44
  595. package/lib/+shared/editor-toolbar/editor-toolbar.module.d.ts +0 -28
  596. package/lib/+shared/editor-toolbar/helpers/toolbar-styles.helper.d.ts +0 -6
  597. package/src/lib/+shared/editor/_editor.theme.scss +0 -35
  598. package/src/lib/+shared/editor/custom-components/external-element/element-toolbar/_element-toolbar.theme.scss +0 -10
  599. package/src/lib/+shared/editor-header/_editor-header.theme.scss +0 -106
  600. package/src/lib/+shared/editor-toolbar/_editor-toolbar.theme.scss +0 -33
  601. package/src/lib/+shared/editor-toolbar/numbering/_numbering.theme.scss +0 -29
  602. /package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/shared}/constants/svg-icons.const.d.ts +0 -0
  603. /package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/shared}/enums/alignment.enum.d.ts +0 -0
  604. /package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/shared}/enums/numbering-template-type.enum.d.ts +0 -0
  605. /package/lib/{+shared/editor-toolbar → apart-components/editor-toolbar/shared}/enums/numbering-type.enum.d.ts +0 -0
  606. /package/lib/{+shared → apart-components/editor-toolbar/shared}/services/custom-icon.service.d.ts +0 -0
  607. /package/lib/{+shared/editor/core → editor}/components/edges/edge-type.enum.d.ts +0 -0
  608. /package/lib/{+shared/editor/core/enums → editor/components/edges}/page-type.enum.d.ts +0 -0
  609. /package/lib/{+shared/editor/custom-components → editor/components}/external-element/external-element.service.d.ts +0 -0
  610. /package/lib/{+shared/editor/custom-components → editor/components}/external-element/external-elements.const.d.ts +0 -0
  611. /package/lib/{+shared/editor/custom-components → editor/components}/external-element/models/element-data.model.d.ts +0 -0
  612. /package/lib/{+shared/editor/custom-components → editor/components}/external-element/models/external-sidenav.model.d.ts +0 -0
  613. /package/lib/{+shared/editor/custom-components → editor/components}/image/resizer/coordinate.d.ts +0 -0
  614. /package/lib/{+shared/editor/custom-components → editor/components}/image/resizer/direction-wrapper.d.ts +0 -0
  615. /package/lib/{+shared/editor/custom-components → editor/components}/image/resizer/direction.enum.d.ts +0 -0
  616. /package/lib/{+shared/editor/custom-components → editor/components}/image/resizer/size-delta.d.ts +0 -0
  617. /package/lib/{+shared/editor/custom-components/image/interfaces → editor/components/image}/size.d.ts +0 -0
  618. /package/lib/{+shared/editor/custom-components/shared/constants → editor/components/shared}/custom-content-markers.const.d.ts +0 -0
  619. /package/lib/{+shared/editor/custom-components/shared/services/overlay → editor/components/shared/services}/overlay.service.d.ts +0 -0
  620. /package/lib/{+shared/editor/helpers → editor/components/tab}/tab.helper.d.ts +0 -0
  621. /package/lib/{+shared/editor/core → editor/components/table}/enums/hrule.enum.d.ts +0 -0
  622. /package/lib/{+shared/editor/custom-components → editor/components}/table/enums/reisizer-side.enum.d.ts +0 -0
  623. /package/lib/{+shared/editor/custom-components → editor/components}/table/enums/vertical-merge.enum.d.ts +0 -0
  624. /package/lib/{+shared/editor/custom-components → editor/components}/table/models/cell-resizer-parameters.model.d.ts +0 -0
  625. /package/lib/{+shared/editor/custom-components → editor/components}/table/models/row-data.model.d.ts +0 -0
  626. /package/lib/{+shared/editor/custom-components → editor/components}/table/models/selection-range.model.d.ts +0 -0
  627. /package/lib/{+shared/editor/core → editor/content}/constants/display-values.const.d.ts +0 -0
  628. /package/lib/{+shared/editor/core → editor/content}/constants/document-info.const.d.ts +0 -0
  629. /package/lib/{+shared/editor/core/models → editor/content/display-data}/indent.model.d.ts +0 -0
  630. /package/lib/{+shared/editor/core/interfaces → editor/content/display-data}/paragraph-info.interface.d.ts +0 -0
  631. /package/lib/{+shared/editor → editor/content}/helpers/format.helper.d.ts +0 -0
  632. /package/lib/{+shared/editor/core/models → editor/content}/margin.model.d.ts +0 -0
  633. /package/lib/{+shared/editor/core/enums → editor/content}/vertical-alignment.enum.d.ts +0 -0
  634. /package/lib/{+shared/editor/core/interfaces → editor/display}/cell.interface.d.ts +0 -0
  635. /package/lib/{+shared/editor/core/helpers → editor/display}/event.helper.d.ts +0 -0
  636. /package/lib/{+shared/editor/core → editor/display}/layers/print.pages.layer.d.ts +0 -0
  637. /package/lib/{+shared/editor/core/interfaces → editor/display}/render-changes.interface.d.ts +0 -0
  638. /package/lib/{+shared/editor/core/interfaces → editor/display}/visible-range.interface.d.ts +0 -0
  639. /package/lib/{+shared/editor/core/models → editor/execution}/distance.model.d.ts +0 -0
  640. /package/lib/{+shared/editor/core → editor/execution}/helpers/dom.helper.d.ts +0 -0
  641. /package/lib/{+shared/editor/core/constants → editor/gadgets/font-metrics}/editor-version.const.d.ts +0 -0
  642. /package/lib/{+shared/editor/core/interfaces → editor/gadgets/font-metrics}/font-metric-size.interface.d.ts +0 -0
  643. /package/lib/{+shared/editor/operation-history → editor/gadgets/history}/operations-history-info.model.d.ts +0 -0
  644. /package/lib/{+shared/editor/core/enums → editor/gadgets/numbering}/numbering-marker-type.enum.d.ts +0 -0
  645. /package/lib/{+shared/editor/core/enums → editor/gadgets/page-break}/break-types.enum.d.ts +0 -0
  646. /package/lib/{+shared/editor/core/interfaces → editor/gadgets/search}/replace.interface.d.ts +0 -0
  647. /package/lib/{+shared/editor/core/interfaces → editor/gadgets/search}/search-iteration.interface.d.ts +0 -0
  648. /package/lib/{+shared/editor/core/constants → editor/gadgets/unicode}/unicode-chars.const.d.ts +0 -0
  649. /package/lib/{+shared/editor/core/helpers → editor/gadgets/unicode}/unicode.helper.d.ts +0 -0
  650. /package/lib/{+shared/enums → editor/interaction}/mode.enum.d.ts +0 -0
  651. /package/lib/{+shared/editor/core/enums → editor/interaction}/mouse-button.enum.d.ts +0 -0
  652. /package/lib/{+shared/editor/core/keyboard → editor/interaction}/text-input.d.ts +0 -0
  653. /package/lib/{+shared/services → editor/operations}/commands.service.d.ts +0 -0
  654. /package/lib/{+shared/editor → editor}/operations/enums/target-type.enum.d.ts +0 -0
  655. /package/lib/{+shared/editor → editor}/operations/helpers/content-operations.helper.d.ts +0 -0
  656. /package/lib/{+shared/editor/core/constants → editor/positioning}/alignments.const.d.ts +0 -0
  657. /package/lib/{+shared/editor/interfaces → editor/positioning}/insert-index.interface.d.ts +0 -0
package/README.md CHANGED
@@ -2,12 +2,14 @@
2
2
 
3
3
  ## Description
4
4
 
5
- Rich Text Editor for Angular with basic WORD features and ability to create and use your own custom components. The package also provides customizable toolbar, header, custom search in editor and basic interfaces of custom components which you can overwrite to suit your needs in your application.\
5
+ Rich Text Editor for Angular with basic WORD features and ability to create and use your own custom components. The package also provides customizable toolbar, header, custom search in editor and basic interfaces of custom components which you can overwrite to suit your needs in your application.
6
+
6
7
  #### You can get information about the API and more NgxNoder examples from the [documentation].
7
8
 
8
9
  ## Installation
9
10
 
10
11
  Run this command to add ngx-noder package to your project
12
+
11
13
  ```console
12
14
  npm i @talrace/ngx-noder
13
15
  ```
@@ -21,10 +23,10 @@ import { EditorModule } from '@talrace/ngx-noder';
21
23
 
22
24
  @NgModule({
23
25
  // ...
24
-     imports: [EditorModule],
26
+ imports: [EditorModule]
25
27
  // ...
26
28
  })
27
- export class SomeModule{}
29
+ export class SomeModule {}
28
30
  ```
29
31
 
30
32
  If you need save your changes in document, you need provide CommandsService in your module. This service provides passing commands from the editor to your application for further saving and applying them to your document.
@@ -34,52 +36,55 @@ import { CommandsService } from '@talrace/ngx-noder';
34
36
 
35
37
  @NgModule({
36
38
  // ...
37
-     provides: [CommandsService],
39
+ provides: [CommandsService]
38
40
  // ...
39
41
  })
40
- export class SomeModule{}
42
+ export class SomeModule {}
41
43
  ```
42
44
 
43
45
  ### Editor Toolbar
44
46
 
45
47
  Import editor toolbar module, if you need toolbar for your editor. This module provides ready-made toolbar with buttons that covers all basic logic of the document content editing functionality.
48
+
46
49
  ```typescript
47
50
  import { EditorToolbarModule } from '@talrace/ngx-noder';
48
51
 
49
52
  @NgModule({
50
53
  // ...
51
-     imports: [EditorToolbarModule],
54
+ imports: [EditorToolbarModule]
52
55
  // ...
53
56
  })
54
- export class SomeModule{}
57
+ export class SomeModule {}
55
58
  ```
56
59
 
57
60
  ### Editor Header
58
61
 
59
62
  Import standalone editor header component, if you need header for your editor. This component provides editor header component with buttons that contains basic functional with document and part of the document content editing functionality.
63
+
60
64
  ```typescript
61
65
  import { EditorHeaderComponent } from '@talrace/ngx-noder';
62
66
 
63
67
  @NgModule({
64
68
  // ...
65
-     imports: [EditorHeaderComponent],
69
+ imports: [EditorHeaderComponent]
66
70
  // ...
67
71
  })
68
- export class SomeModule{}
72
+ export class SomeModule {}
69
73
  ```
70
74
 
71
75
  ### Editor Search
72
76
 
73
77
  Import standalone editor search component, if you need custom search in your editor. This component provides custom search component and search and replace functionality in editor.
78
+
74
79
  ```typescript
75
80
  import { EditorSearchDialogComponent } from '@talrace/ngx-noder';
76
81
 
77
82
  @NgModule({
78
83
  // ...
79
-     imports: [EditorSearchDialogComponent],
84
+ imports: [EditorSearchDialogComponent]
80
85
  // ...
81
86
  })
82
- export class SomeModule{}
87
+ export class SomeModule {}
83
88
  ```
84
89
 
85
90
  ### Editor Service
@@ -91,7 +96,7 @@ import { EditorService } from '@talrace/ngx-noder';
91
96
 
92
97
  @NgModule({
93
98
  // ...
94
- provides: [EditorService],
99
+ provides: [EditorService]
95
100
  // ...
96
101
  })
97
102
  export class SomeModule {}
@@ -102,62 +107,71 @@ export class SomeModule {}
102
107
  Example of full-featured NgxNoder with toolbar, header, custom search and receiving commands from editor.
103
108
 
104
109
  app.module.ts
110
+
105
111
  ```typescript
106
112
  import { NgModule } from '@angular/core';
107
113
  import { BrowserModule } from '@angular/platform-browser';
108
114
  import { AppComponent } from './app.component';
109
- import {
110
- EditorHeaderComponent,
111
- EditorModule,
112
- EditorSearchDialogComponent,
113
- EditorToolbarModule
114
- } from '@talrace/ngx-noder';
115
+ import { EditorHeaderComponent, EditorModule, EditorSearchDialogComponent, EditorToolbarModule } from '@talrace/ngx-noder';
115
116
 
116
117
  @NgModule({
117
-     declarations: [AppComponent],
118
-     imports: [
119
- BrowserModule,
120
- EditorHeaderComponent,
121
- EditorModule,
122
- EditorSearchDialogComponent,
123
- EditorToolbarModule
124
- ],
125
-     providers: [CommandsService],
126
-     bootstrap: [AppComponent]
118
+ declarations: [AppComponent],
119
+ imports: [BrowserModule, EditorHeaderComponent, EditorModule, EditorSearchDialogComponent, EditorToolbarModule],
120
+ providers: [CommandsService],
121
+ bootstrap: [AppComponent]
127
122
  })
128
- export class AppModule{}
123
+ export class AppModule {}
129
124
  ```
130
125
 
131
126
  app.component.html
127
+
132
128
  ```html
133
- <app-editor-header
134
- [title]="title"
135
- [isViewOnly]="isViewOnly$ | async"
136
- (openFileFromDisk)="onConvertFile($event)"
137
- (addCustomElement)="addCustomElement($event)"
138
- (insertPageBreak)="onInsertPageBreak()"
139
- (createDocument)="createDocument()"
140
- (changeMode)="onModeChanged($event.value)"
141
- (saveAs)="onSave()"
142
- (print)="onPrint()"
143
- (insertImage)="onInsertImage($event)"
144
- (renameDocumentTitle)="onRenameDocumentTitle($event)"></app-editor-header>
145
- <app-editor-toolbar
146
- [isViewOnly]="isViewOnly$ | async"
147
- [styles]="styles$ | async"
148
- [historyInfo]="historyInfo$ | async"
149
- (changeParagraphStyle)="onSetParagraphStyle($event)"
150
- (changeTextStyle)="onSetTextStyle($event)"
151
- (setNumberingTemplateType)="onSetNumberingTemplateType($event)"
152
- (removeNumberings)="onRemoveNumberings()"
153
- (undo)="onUndo()"
154
- (redo)="onRedo()"></app-editor-toolbar>
155
- <app-editor
129
+ <app-page-header>
130
+ <app-nod-editor-toolbar
131
+ [showActions]="(isViewOnly$ | async) === false"
132
+ [isViewOnly]="isViewOnly$ | async"
133
+ [hasSelection]="hasSelection$ | async"
134
+ [clipboardData]="clipboardData$ | async"
135
+ [historyInfo]="historyInfo$ | async"
136
+ [styles]="styles$ | async"
137
+ (openFileFromDisk)="onConvertFile($event)"
138
+ (addCustomElement)="addCustomElement($event)"
139
+ (insertPageBreak)="onInsertPageBreak()"
140
+ (createDocument)="createDocument()"
141
+ (saveAs)="onSave()"
142
+ (print)="onPrint()"
143
+ (delete)="onDelete()"
144
+ (rename)="rename$.next()"
145
+ (undo)="onUndo()"
146
+ (redo)="onRedo()"
147
+ (openEditMenu)="onOpenEditMenu()"
148
+ (cutSelected)="onCutSelected()"
149
+ (copySelected)="onCopySelected()"
150
+ (pasteClipboardData)="onPasteClipboardData()"
151
+ (selectAll)="onSelectAll()"
152
+ (removeSelected)="onRemoveSelected()"
153
+ (insertImage)="onInsertImage($event)"
154
+ (insertLink)="onInsertLink()"
155
+ (insertTable)="onInsertTable($event)"
156
+ (createElement)="createElement($event)"
157
+ (changeParagraphStyle)="onSetParagraphStyle($event)"
158
+ (changeTextStyle)="onSetTextStyle($event)"
159
+ (setNumberingTemplateType)="onSetNumberingTemplateType($event)"
160
+ (removeNumberings)="onRemoveNumberings()" />
161
+ </app-page-header>
162
+ <app-nod-editor
156
163
  #editor
157
- [content]="content$ | async"></app-editor>
164
+ [customPageWidth]="customPageWidth"
165
+ [content]="content$ | async" />
166
+ <app-nod-editor-title
167
+ [title]="title"
168
+ [rename$]="rename$.asObservable()"
169
+ (changeMode)="onModeChanged($event)"
170
+ (renameDocumentTitle)="onRenameDocumentTitle($event)" />
158
171
  ```
159
172
 
160
173
  app.component.ts
174
+
161
175
  ```typescript
162
176
  import { Store } from '@ngxs/store';
163
177
  import { BehaviorSubject, filter, Observable, Subscription, take, tap } from 'rxjs';
@@ -177,14 +191,14 @@ import {
177
191
  } from '@talrace/ngx-noder';
178
192
  import { Component, OnInit, ViewChild } from '@angular/core';
179
193
 
180
- import { CreateOperation } from "../../store/operations/operations.actions";
194
+ import { CreateOperation } from '../../store/operations/operations.actions';
181
195
  import { NoderState } from '../../store/noder/noder.state';
182
196
  import { ObserverComponent } from '../../../+shared/abstract/observer.component';
183
197
 
184
198
  @Component({
185
-     selector: 'app-root',
186
-     templateUrl: './app.component.html',
187
-     styleUrls: ['./app.component.scss']
199
+ selector: 'app-root',
200
+ templateUrl: './app.component.html',
201
+ styleUrls: ['./app.component.scss']
188
202
  })
189
203
  export class AppComponent extends ObserverComponent implements OnInit {
190
204
  isViewOnly$: Observable<boolean>;
@@ -198,11 +212,7 @@ export class AppComponent extends ObserverComponent implements OnInit {
198
212
 
199
213
  @ViewChild('editor', { static: true }) editor: EditorComponent;
200
214
 
201
- constructor(
202
- private editorService: EditorService,
203
- private store: Store,
204
- private commandService: CommandsService
205
- ) {
215
+ constructor(private editorService: EditorService, private store: Store, private commandService: CommandsService) {
206
216
  super();
207
217
  const mode: Mode = this.store.selectSnapshot(NoderState.mode);
208
218
  this.editorService.setIsViewOnly(mode !== Mode.Edit);
@@ -210,9 +220,7 @@ export class AppComponent extends ObserverComponent implements OnInit {
210
220
  }
211
221
 
212
222
  ngOnInit() {
213
- this.subscriptions.push(
214
- this.createCommandSubscription()
215
- );
223
+ this.subscriptions.push(this.createCommandSubscription());
216
224
  }
217
225
 
218
226
  onPrint(): void {
@@ -254,12 +262,13 @@ export class AppComponent extends ObserverComponent implements OnInit {
254
262
  this.store.dispatch(new CreateOperation(command));
255
263
  })
256
264
  )
257
- .subscribe()
265
+ .subscribe();
258
266
  }
259
267
  }
260
268
  ```
261
269
 
262
270
  app.component.scss
271
+
263
272
  ```scss
264
273
  // styles of your app component
265
274
  :host {
@@ -0,0 +1,67 @@
1
+ import { ChangeDetectionStrategy, Component, HostBinding, HostListener, Inject } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { ReactiveFormsModule, Validators } from '@angular/forms';
4
+ import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
5
+ import { MatButtonModule } from '@angular/material/button';
6
+ import { MatFormFieldModule } from '@angular/material/form-field';
7
+ import { MatIconModule } from '@angular/material/icon';
8
+ import { MatInputModule } from '@angular/material/input';
9
+ import { ValidationHelper } from './validation.helper';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/material/dialog";
12
+ import * as i2 from "@angular/forms";
13
+ import * as i3 from "@angular/material/button";
14
+ import * as i4 from "@angular/material/form-field";
15
+ import * as i5 from "@angular/material/icon";
16
+ import * as i6 from "@angular/material/input";
17
+ export class AddLinkDialogOptions {
18
+ constructor(fields) {
19
+ if (fields) {
20
+ Object.assign(this, fields);
21
+ }
22
+ }
23
+ }
24
+ export class AddLinkDialogComponent {
25
+ constructor(dialogRef, data, fb) {
26
+ this.dialogRef = dialogRef;
27
+ this.data = data;
28
+ this.fb = fb;
29
+ this.modal = true;
30
+ dialogRef.disableClose = true;
31
+ this.form = this.fb.group({
32
+ text: [data.text],
33
+ link: [data.link, [Validators.required, ValidationHelper.urlValidator]]
34
+ });
35
+ }
36
+ onClose() {
37
+ this.dialogRef.close();
38
+ }
39
+ onApply() {
40
+ if (this.form.invalid) {
41
+ return;
42
+ }
43
+ if (!this.form.controls.text.value) {
44
+ this.form.controls.text.setValue(this.form.controls.link.value);
45
+ }
46
+ this.dialogRef.close({ text: this.form.controls.text.value, link: this.form.controls.link.value });
47
+ }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AddLinkDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
49
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AddLinkDialogComponent, isStandalone: true, selector: "app-nod-add-link-dialog", host: { listeners: { "keydown.esc": "onClose()", "keydown.enter": "onApply()" }, properties: { "class.noder-modal": "this.modal" } }, ngImport: i0, template: "<div mat-dialog-title>{{ data.title }}</div>\n<div\n mat-dialog-content\n [formGroup]=\"form\">\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ data.textPlaceholder }}</mat-label>\n <input\n matInput\n [formControl]=\"form.controls.text\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ data.linkPlaceholder }}</mat-label>\n <input\n matInput\n [formControl]=\"form.controls.link\"\n required />\n <mat-error>The {{ data.linkPlaceholder }} is required.</mat-error>\n </mat-form-field>\n</div>\n<div mat-dialog-actions>\n <button\n mat-button\n (click)=\"onClose()\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-cancel-thin\" />\n Cancel\n </button>\n <button\n mat-raised-button\n color=\"primary\"\n class=\"apply-btn\"\n [disabled]=\"form.invalid\"\n (click)=\"onApply()\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-done-thin\" />\n Apply\n </button>\n</div>\n", styles: [":host{display:flex;flex-direction:column;height:300px;width:430px;overflow:hidden}:host ::ng-deep .mdc-text-field--outlined{--mdc-outlined-text-field-container-shape: 12px;height:48px}:host ::ng-deep .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:12px}.mat-mdc-dialog-title{font-weight:600;padding-top:5px}mat-form-field{width:100%}.mat-mdc-dialog-content{padding-top:10px!important;padding-bottom:0}.mat-mdc-dialog-actions{display:flex;justify-content:center;padding-top:5px;height:40px;margin-bottom:30px}.mat-mdc-dialog-actions button{width:30%;height:100%;letter-spacing:1px;border-radius:8px;text-transform:uppercase}.mat-mdc-dialog-actions button .apply-btn{font-weight:400}.mat-mdc-dialog-actions button .mat-icon{font-size:24px;height:24px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
50
+ }
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AddLinkDialogComponent, decorators: [{
52
+ type: Component,
53
+ args: [{ standalone: true, imports: [CommonModule, MatButtonModule, MatDialogModule, MatFormFieldModule, MatIconModule, MatInputModule, ReactiveFormsModule], selector: 'app-nod-add-link-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div mat-dialog-title>{{ data.title }}</div>\n<div\n mat-dialog-content\n [formGroup]=\"form\">\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ data.textPlaceholder }}</mat-label>\n <input\n matInput\n [formControl]=\"form.controls.text\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ data.linkPlaceholder }}</mat-label>\n <input\n matInput\n [formControl]=\"form.controls.link\"\n required />\n <mat-error>The {{ data.linkPlaceholder }} is required.</mat-error>\n </mat-form-field>\n</div>\n<div mat-dialog-actions>\n <button\n mat-button\n (click)=\"onClose()\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-cancel-thin\" />\n Cancel\n </button>\n <button\n mat-raised-button\n color=\"primary\"\n class=\"apply-btn\"\n [disabled]=\"form.invalid\"\n (click)=\"onApply()\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-done-thin\" />\n Apply\n </button>\n</div>\n", styles: [":host{display:flex;flex-direction:column;height:300px;width:430px;overflow:hidden}:host ::ng-deep .mdc-text-field--outlined{--mdc-outlined-text-field-container-shape: 12px;height:48px}:host ::ng-deep .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:12px}.mat-mdc-dialog-title{font-weight:600;padding-top:5px}mat-form-field{width:100%}.mat-mdc-dialog-content{padding-top:10px!important;padding-bottom:0}.mat-mdc-dialog-actions{display:flex;justify-content:center;padding-top:5px;height:40px;margin-bottom:30px}.mat-mdc-dialog-actions button{width:30%;height:100%;letter-spacing:1px;border-radius:8px;text-transform:uppercase}.mat-mdc-dialog-actions button .apply-btn{font-weight:400}.mat-mdc-dialog-actions button .mat-icon{font-size:24px;height:24px}\n"] }]
54
+ }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: AddLinkDialogOptions, decorators: [{
55
+ type: Inject,
56
+ args: [MAT_DIALOG_DATA]
57
+ }] }, { type: i2.FormBuilder }], propDecorators: { modal: [{
58
+ type: HostBinding,
59
+ args: ['class.noder-modal']
60
+ }], onClose: [{
61
+ type: HostListener,
62
+ args: ['keydown.esc']
63
+ }], onApply: [{
64
+ type: HostListener,
65
+ args: ['keydown.enter']
66
+ }] } });
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWxpbmstZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2FwYXJ0LWNvbXBvbmVudHMvYWRkLWxpbmstZGlhbG9nL2FkZC1saW5rLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi9hcGFydC1jb21wb25lbnRzL2FkZC1saW5rLWRpYWxvZy9hZGQtbGluay1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF1QyxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RyxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7QUFFdkQsTUFBTSxPQUFPLG9CQUFvQjtJQU83QixZQUFtQixNQUFzQztRQUNyRCxJQUFJLE1BQU0sRUFBRTtZQUNSLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1NBQy9CO0lBQ0wsQ0FBQztDQUNKO0FBVUQsTUFBTSxPQUFPLHNCQUFzQjtJQUsvQixZQUNXLFNBQStDLEVBQ3RCLElBQTBCLEVBQ2xELEVBQWU7UUFGaEIsY0FBUyxHQUFULFNBQVMsQ0FBc0M7UUFDdEIsU0FBSSxHQUFKLElBQUksQ0FBc0I7UUFDbEQsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQVBPLFVBQUssR0FBRyxJQUFJLENBQUM7UUFTM0MsU0FBUyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUN0QixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ2pCLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzFFLENBQUMsQ0FBQztJQUNQLENBQUM7SUFHRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBR0QsT0FBTztRQUNILElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDbkIsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDbkU7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN2RyxDQUFDOytHQWpDUSxzQkFBc0IsOENBT25CLGVBQWU7bUdBUGxCLHNCQUFzQix5TkNqQ25DLG9wQ0F3Q0EsbTFCRGJjLFlBQVksOEJBQUUsZUFBZSwyTkFBRSxlQUFlLHliQUFFLGtCQUFrQix1WUFBRSxhQUFhLG1MQUFFLGNBQWMsMFdBQUUsbUJBQW1COzs0RkFNdkgsc0JBQXNCO2tCQVJsQyxTQUFTO2lDQUNNLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsbUJBQW1CLENBQUMsWUFDdkgseUJBQXlCLG1CQUdsQix1QkFBdUIsQ0FBQyxNQUFNOzswQkFTMUMsTUFBTTsyQkFBQyxlQUFlO21FQU5PLEtBQUs7c0JBQXRDLFdBQVc7dUJBQUMsbUJBQW1CO2dCQWlCaEMsT0FBTztzQkFETixZQUFZO3VCQUFDLGFBQWE7Z0JBTTNCLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ01vZHVsZSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuXG5pbXBvcnQgeyBWYWxpZGF0aW9uSGVscGVyIH0gZnJvbSAnLi92YWxpZGF0aW9uLmhlbHBlcic7XG5cbmV4cG9ydCBjbGFzcyBBZGRMaW5rRGlhbG9nT3B0aW9ucyB7XG4gICAgcHVibGljIHRpdGxlOiBzdHJpbmc7XG4gICAgcHVibGljIHRleHQ6IHN0cmluZztcbiAgICBwdWJsaWMgdGV4dFBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gICAgcHVibGljIGxpbms6IHN0cmluZztcbiAgICBwdWJsaWMgbGlua1BsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZmllbGRzPzogUGFydGlhbDxBZGRMaW5rRGlhbG9nT3B0aW9ucz4pIHtcbiAgICAgICAgaWYgKGZpZWxkcykge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBmaWVsZHMpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0RGlhbG9nTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdEljb25Nb2R1bGUsIE1hdElucHV0TW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcbiAgICBzZWxlY3RvcjogJ2FwcC1ub2QtYWRkLWxpbmstZGlhbG9nJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2FkZC1saW5rLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ2FkZC1saW5rLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFkZExpbmtEaWFsb2dDb21wb25lbnQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3Mubm9kZXItbW9kYWwnKSBtb2RhbCA9IHRydWU7XG5cbiAgICBmb3JtOiBGb3JtR3JvdXA8eyB0ZXh0OiBGb3JtQ29udHJvbDxzdHJpbmc+OyBsaW5rOiBGb3JtQ29udHJvbDxzdHJpbmc+IH0+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHB1YmxpYyBkaWFsb2dSZWY6IE1hdERpYWxvZ1JlZjxBZGRMaW5rRGlhbG9nQ29tcG9uZW50PixcbiAgICAgICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiBBZGRMaW5rRGlhbG9nT3B0aW9ucyxcbiAgICAgICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXJcbiAgICApIHtcbiAgICAgICAgZGlhbG9nUmVmLmRpc2FibGVDbG9zZSA9IHRydWU7XG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAgICAgdGV4dDogW2RhdGEudGV4dF0sXG4gICAgICAgICAgICBsaW5rOiBbZGF0YS5saW5rLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdGlvbkhlbHBlci51cmxWYWxpZGF0b3JdXVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVzYycpXG4gICAgb25DbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLmVudGVyJylcbiAgICBvbkFwcGx5KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5mb3JtLmNvbnRyb2xzLnRleHQudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy50ZXh0LnNldFZhbHVlKHRoaXMuZm9ybS5jb250cm9scy5saW5rLnZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHsgdGV4dDogdGhpcy5mb3JtLmNvbnRyb2xzLnRleHQudmFsdWUsIGxpbms6IHRoaXMuZm9ybS5jb250cm9scy5saW5rLnZhbHVlIH0pO1xuICAgIH1cbn1cbiIsIjxkaXYgbWF0LWRpYWxvZy10aXRsZT57eyBkYXRhLnRpdGxlIH19PC9kaXY+XG48ZGl2XG4gICAgbWF0LWRpYWxvZy1jb250ZW50XG4gICAgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XG4gICAgICAgIDxtYXQtbGFiZWw+e3sgZGF0YS50ZXh0UGxhY2Vob2xkZXIgfX08L21hdC1sYWJlbD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImZvcm0uY29udHJvbHMudGV4dFwiIC8+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICA8bWF0LWZvcm0tZmllbGQgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgICAgICAgPG1hdC1sYWJlbD57eyBkYXRhLmxpbmtQbGFjZWhvbGRlciB9fTwvbWF0LWxhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybS5jb250cm9scy5saW5rXCJcbiAgICAgICAgICAgIHJlcXVpcmVkIC8+XG4gICAgICAgIDxtYXQtZXJyb3I+VGhlIHt7IGRhdGEubGlua1BsYWNlaG9sZGVyIH19IGlzIHJlcXVpcmVkLjwvbWF0LWVycm9yPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG48L2Rpdj5cbjxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zPlxuICAgIDxidXR0b25cbiAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAoY2xpY2spPVwib25DbG9zZSgpXCI+XG4gICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgZm9udFNldD1cIm5vZGVyLWljb25cIlxuICAgICAgICAgICAgZm9udEljb249XCJpY29uLWNhbmNlbC10aGluXCIgLz5cbiAgICAgICAgQ2FuY2VsXG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBjbGFzcz1cImFwcGx5LWJ0blwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWRcIlxuICAgICAgICAoY2xpY2spPVwib25BcHBseSgpXCI+XG4gICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgZm9udFNldD1cIm5vZGVyLWljb25cIlxuICAgICAgICAgICAgZm9udEljb249XCJpY29uLWRvbmUtdGhpblwiIC8+XG4gICAgICAgIEFwcGx5XG4gICAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,7 @@
1
+ export const URL_PATTERN = /^(https?:\/\/)?(www\.)?[-a-zA-Z0-9áéíóúÁÉÍÓÚüÜñÑ@:%._+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9áéíóúÁÉÍÓÚüÜñÑ@:%_+.~#?&/=]*)$/;
2
+ export class ValidationHelper {
3
+ static urlValidator(control) {
4
+ return control.value && !URL_PATTERN.test(control.value) ? { invalidUrl: true } : null;
5
+ }
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi9hcGFydC1jb21wb25lbnRzL2FkZC1saW5rLWRpYWxvZy92YWxpZGF0aW9uLmhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQ3BCLDJIQUEySCxDQUFDO0FBRWhJLE1BQU0sT0FBTyxnQkFBZ0I7SUFDekIsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFnQztRQUNoRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMzRixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBjb25zdCBVUkxfUEFUVEVSTiA9XG4gICAgL14oaHR0cHM/OlxcL1xcLyk/KHd3d1xcLik/Wy1hLXpBLVowLTnDocOpw63Ds8O6w4HDicONw5PDmsO8w5zDscORQDolLl8rfiM9XXsyLDI1Nn1cXC5bYS16XXsyLDZ9XFxiKFstYS16QS1aMC05w6HDqcOtw7PDusOBw4nDjcOTw5rDvMOcw7HDkUA6JV8rLn4jPyYvPV0qKSQvO1xuXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbkhlbHBlciB7XG4gICAgc3RhdGljIHVybFZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2w8c3RyaW5nPik6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIGNvbnRyb2wudmFsdWUgJiYgIVVSTF9QQVRURVJOLnRlc3QoY29udHJvbC52YWx1ZSkgPyB7IGludmFsaWRVcmw6IHRydWUgfSA6IG51bGw7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,47 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { ReactiveFormsModule, Validators } from '@angular/forms';
4
+ import { MatButtonModule } from '@angular/material/button';
5
+ import { MatFormFieldModule } from '@angular/material/form-field';
6
+ import { MatIconModule } from '@angular/material/icon';
7
+ import { MatInputModule } from '@angular/material/input';
8
+ import { ValidationHelper } from '../add-link-dialog/validation.helper';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "../../editor/interaction/editor.service";
11
+ import * as i2 from "@angular/forms";
12
+ import * as i3 from "../editor-toolbar/shared/services/toolbar-core.service";
13
+ import * as i4 from "@angular/material/button";
14
+ import * as i5 from "@angular/material/form-field";
15
+ import * as i6 from "@angular/material/icon";
16
+ import * as i7 from "@angular/material/input";
17
+ export class AddLinkMobileComponent {
18
+ constructor(editorService, fb, toolbarCoreService) {
19
+ this.editorService = editorService;
20
+ this.fb = fb;
21
+ this.toolbarCoreService = toolbarCoreService;
22
+ this.form = this.fb.group({
23
+ text: ['', Validators.required],
24
+ link: ['', [Validators.required, ValidationHelper.urlValidator]]
25
+ });
26
+ }
27
+ onClose() {
28
+ this.toolbarCoreService.reset();
29
+ }
30
+ onApply() {
31
+ this.editorService.insertLink(this.form.controls.text.value, this.form.controls.link.value);
32
+ this.toolbarCoreService.reset();
33
+ }
34
+ onEnter() {
35
+ if (this.form.invalid) {
36
+ return;
37
+ }
38
+ this.onApply();
39
+ }
40
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AddLinkMobileComponent, deps: [{ token: i1.EditorService }, { token: i2.FormBuilder }, { token: i3.ToolbarCoreService }], target: i0.ɵɵFactoryTarget.Component }); }
41
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AddLinkMobileComponent, isStandalone: true, selector: "app-nod-add-link-mobile", ngImport: i0, template: "<div class=\"content\">\n <div class=\"title\">Link Options</div>\n <div\n class=\"inputs\"\n [formGroup]=\"form\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Text</mat-label>\n <input\n matInput\n [formControl]=\"form.controls.text\"\n (keydown.enter)=\"onEnter()\"\n required />\n <mat-error>The Text is required.</mat-error>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Link</mat-label>\n <input\n matInput\n [formControl]=\"form.controls.link\"\n (keydown.enter)=\"onEnter()\"\n required />\n <mat-error>The Link is required.</mat-error>\n </mat-form-field>\n </div>\n</div>\n<div class=\"actions\">\n <button\n mat-mini-fab\n (click)=\"onClose()\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-cancel-thin\" />\n </button>\n <button\n mat-mini-fab\n [disabled]=\"form.invalid\"\n (click)=\"onApply()\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-done-thin\" />\n </button>\n</div>\n", styles: [":host{display:flex;flex-direction:column;width:100%;height:100%;padding:30px;justify-content:space-between;overflow:hidden}:host ::ng-deep .mdc-text-field--outlined{--mdc-outlined-text-field-container-shape: 12px;height:48px}:host ::ng-deep .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:12px}.title{font-size:16px;font-weight:500}mat-form-field{width:100%}.inputs{padding-top:10px;padding-bottom:0}.actions{text-align:end}.actions .mdc-fab:first-child{margin-right:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatMiniFabButton, selector: "button[mat-mini-fab]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
42
+ }
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AddLinkMobileComponent, decorators: [{
44
+ type: Component,
45
+ args: [{ standalone: true, imports: [CommonModule, MatButtonModule, MatFormFieldModule, MatIconModule, MatInputModule, ReactiveFormsModule], selector: 'app-nod-add-link-mobile', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"content\">\n <div class=\"title\">Link Options</div>\n <div\n class=\"inputs\"\n [formGroup]=\"form\">\n <mat-form-field appearance=\"outline\">\n <mat-label>Text</mat-label>\n <input\n matInput\n [formControl]=\"form.controls.text\"\n (keydown.enter)=\"onEnter()\"\n required />\n <mat-error>The Text is required.</mat-error>\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label>Link</mat-label>\n <input\n matInput\n [formControl]=\"form.controls.link\"\n (keydown.enter)=\"onEnter()\"\n required />\n <mat-error>The Link is required.</mat-error>\n </mat-form-field>\n </div>\n</div>\n<div class=\"actions\">\n <button\n mat-mini-fab\n (click)=\"onClose()\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-cancel-thin\" />\n </button>\n <button\n mat-mini-fab\n [disabled]=\"form.invalid\"\n (click)=\"onApply()\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-done-thin\" />\n </button>\n</div>\n", styles: [":host{display:flex;flex-direction:column;width:100%;height:100%;padding:30px;justify-content:space-between;overflow:hidden}:host ::ng-deep .mdc-text-field--outlined{--mdc-outlined-text-field-container-shape: 12px;height:48px}:host ::ng-deep .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:12px}.title{font-size:16px;font-weight:500}mat-form-field{width:100%}.inputs{padding-top:10px;padding-bottom:0}.actions{text-align:end}.actions .mdc-fab:first-child{margin-right:10px}\n"] }]
46
+ }], ctorParameters: () => [{ type: i1.EditorService }, { type: i2.FormBuilder }, { type: i3.ToolbarCoreService }] });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWxpbmstbW9iaWxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2FwYXJ0LWNvbXBvbmVudHMvYWRkLWxpbmstbW9iaWxlL2FkZC1saW5rLW1vYmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi9hcGFydC1jb21wb25lbnRzL2FkZC1saW5rLW1vYmlsZS9hZGQtbGluay1tb2JpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUF1QyxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUl6RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7Ozs7Ozs7O0FBVXhFLE1BQU0sT0FBTyxzQkFBc0I7SUFHL0IsWUFBb0IsYUFBNEIsRUFBVSxFQUFlLEVBQVUsa0JBQXNDO1FBQXJHLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUFVLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDckgsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUN0QixJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztZQUMvQixJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ25FLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUYsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNuQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQzsrR0F6QlEsc0JBQXNCO21HQUF0QixzQkFBc0IsbUZDcEJuQywrd0NBMENBLDhqQkQ1QmMsWUFBWSw4QkFBRSxlQUFlLDJJQUFFLGtCQUFrQix1WUFBRSxhQUFhLG1MQUFFLGNBQWMsMFdBQUUsbUJBQW1COzs0RkFNdEcsc0JBQXNCO2tCQVJsQyxTQUFTO2lDQUNNLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsQ0FBQyxZQUN0Ryx5QkFBeUIsbUJBR2xCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcblxuaW1wb3J0IHsgRWRpdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL2VkaXRvci9pbnRlcmFjdGlvbi9lZGl0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBUb29sYmFyQ29yZVNlcnZpY2UgfSBmcm9tICcuLi9lZGl0b3ItdG9vbGJhci9zaGFyZWQvc2VydmljZXMvdG9vbGJhci1jb3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsaWRhdGlvbkhlbHBlciB9IGZyb20gJy4uL2FkZC1saW5rLWRpYWxvZy92YWxpZGF0aW9uLmhlbHBlcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRGb3JtRmllbGRNb2R1bGUsIE1hdEljb25Nb2R1bGUsIE1hdElucHV0TW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcbiAgICBzZWxlY3RvcjogJ2FwcC1ub2QtYWRkLWxpbmstbW9iaWxlJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2FkZC1saW5rLW1vYmlsZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ2FkZC1saW5rLW1vYmlsZS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFkZExpbmtNb2JpbGVDb21wb25lbnQge1xuICAgIGZvcm06IEZvcm1Hcm91cDx7IHRleHQ6IEZvcm1Db250cm9sPHN0cmluZz47IGxpbms6IEZvcm1Db250cm9sPHN0cmluZz4gfT47XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVkaXRvclNlcnZpY2U6IEVkaXRvclNlcnZpY2UsIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIHRvb2xiYXJDb3JlU2VydmljZTogVG9vbGJhckNvcmVTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgICAgICAgdGV4dDogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgIGxpbms6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRpb25IZWxwZXIudXJsVmFsaWRhdG9yXV1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25DbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50b29sYmFyQ29yZVNlcnZpY2UucmVzZXQoKTtcbiAgICB9XG5cbiAgICBvbkFwcGx5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmVkaXRvclNlcnZpY2UuaW5zZXJ0TGluayh0aGlzLmZvcm0uY29udHJvbHMudGV4dC52YWx1ZSwgdGhpcy5mb3JtLmNvbnRyb2xzLmxpbmsudmFsdWUpO1xuICAgICAgICB0aGlzLnRvb2xiYXJDb3JlU2VydmljZS5yZXNldCgpO1xuICAgIH1cblxuICAgIG9uRW50ZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkFwcGx5KCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5MaW5rIE9wdGlvbnM8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiaW5wdXRzXCJcbiAgICAgICAgW2Zvcm1Hcm91cF09XCJmb3JtXCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5UZXh0PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtLmNvbnRyb2xzLnRleHRcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uRW50ZXIoKVwiXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQgLz5cbiAgICAgICAgICAgIDxtYXQtZXJyb3I+VGhlIFRleHQgaXMgcmVxdWlyZWQuPC9tYXQtZXJyb3I+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5MaW5rPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtLmNvbnRyb2xzLmxpbmtcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uRW50ZXIoKVwiXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQgLz5cbiAgICAgICAgICAgIDxtYXQtZXJyb3I+VGhlIExpbmsgaXMgcmVxdWlyZWQuPC9tYXQtZXJyb3I+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgPGJ1dHRvblxuICAgICAgICBtYXQtbWluaS1mYWJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ2xvc2UoKVwiPlxuICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgIGZvbnRTZXQ9XCJub2Rlci1pY29uXCJcbiAgICAgICAgICAgIGZvbnRJY29uPVwiaWNvbi1jYW5jZWwtdGhpblwiIC8+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgICBtYXQtbWluaS1mYWJcbiAgICAgICAgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZFwiXG4gICAgICAgIChjbGljayk9XCJvbkFwcGx5KClcIj5cbiAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICBmb250U2V0PVwibm9kZXItaWNvblwiXG4gICAgICAgICAgICBmb250SWNvbj1cImljb24tZG9uZS10aGluXCIgLz5cbiAgICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,32 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { Component, HostBinding, Inject } from '@angular/core';
3
+ import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
4
+ import { MatButtonModule } from '@angular/material/button';
5
+ import { MatIconModule } from '@angular/material/icon';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/material/dialog";
8
+ import * as i2 from "@angular/material/button";
9
+ import * as i3 from "@angular/material/icon";
10
+ export class ConfirmDialogComponent {
11
+ constructor(data, ref) {
12
+ this.data = data;
13
+ this.ref = ref;
14
+ this.modal = true;
15
+ }
16
+ onClose(status) {
17
+ this.ref.close(status);
18
+ }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConfirmDialogComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }], target: i0.ɵɵFactoryTarget.Component }); }
20
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ConfirmDialogComponent, isStandalone: true, selector: "app-nod-confirm-dialog", host: { properties: { "class.noder-modal": "this.modal" } }, ngImport: i0, template: "<p class=\"title\">{{ data.title ? data.title : 'Confirmation' }}</p>\n<div class=\"content\">\n <p>{{ data.message }}</p>\n</div>\n<div class=\"actions\">\n <button\n id=\"confirm-dialog-cancel-btn\"\n mat-button\n (click)=\"onClose(false)\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-cancel-thin\"></mat-icon>\n {{ data.cancel ? data.cancel : 'Cancel' }}\n </button>\n <button\n id=\"confirm-dialog-confirm-btn\"\n mat-raised-button\n class=\"delete-btn\"\n color=\"primary\"\n (click)=\"onClose(true)\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-done-thin\"></mat-icon>\n {{ data.confirm ? data.confirm : 'Delete' }}\n </button>\n</div>\n", styles: [":host{display:flex;flex-direction:column;min-width:400px;max-width:440px;min-height:208px}.title{font-size:18px;font-weight:700;text-transform:capitalize;padding:24px 24px 12px;margin:0;border-bottom-width:1px;border-bottom-style:solid}.content{display:flex;flex:1;font-size:16px;line-height:20px;padding:20px 24px 16px}.content p{margin:0;overflow:hidden;text-overflow:ellipsis}.actions{display:flex;justify-content:center;margin-bottom:24px;gap:8px}.actions button{height:40px;width:120px;text-transform:uppercase}.actions button mat-icon{font-size:24px;height:24px;width:24px}.actions button .mat-button-toggle-label-content{padding:0 2px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ConfirmDialogComponent, decorators: [{
23
+ type: Component,
24
+ args: [{ standalone: true, imports: [CommonModule, MatDialogModule, MatButtonModule, MatIconModule], selector: 'app-nod-confirm-dialog', template: "<p class=\"title\">{{ data.title ? data.title : 'Confirmation' }}</p>\n<div class=\"content\">\n <p>{{ data.message }}</p>\n</div>\n<div class=\"actions\">\n <button\n id=\"confirm-dialog-cancel-btn\"\n mat-button\n (click)=\"onClose(false)\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-cancel-thin\"></mat-icon>\n {{ data.cancel ? data.cancel : 'Cancel' }}\n </button>\n <button\n id=\"confirm-dialog-confirm-btn\"\n mat-raised-button\n class=\"delete-btn\"\n color=\"primary\"\n (click)=\"onClose(true)\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-done-thin\"></mat-icon>\n {{ data.confirm ? data.confirm : 'Delete' }}\n </button>\n</div>\n", styles: [":host{display:flex;flex-direction:column;min-width:400px;max-width:440px;min-height:208px}.title{font-size:18px;font-weight:700;text-transform:capitalize;padding:24px 24px 12px;margin:0;border-bottom-width:1px;border-bottom-style:solid}.content{display:flex;flex:1;font-size:16px;line-height:20px;padding:20px 24px 16px}.content p{margin:0;overflow:hidden;text-overflow:ellipsis}.actions{display:flex;justify-content:center;margin-bottom:24px;gap:8px}.actions button{height:40px;width:120px;text-transform:uppercase}.actions button mat-icon{font-size:24px;height:24px;width:24px}.actions button .mat-button-toggle-label-content{padding:0 2px}\n"] }]
25
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
26
+ type: Inject,
27
+ args: [MAT_DIALOG_DATA]
28
+ }] }, { type: i1.MatDialogRef }], propDecorators: { modal: [{
29
+ type: HostBinding,
30
+ args: ['class.noder-modal']
31
+ }] } });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvYXBhcnQtY29tcG9uZW50cy9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9kZXIvc3JjL2xpYi9hcGFydC1jb21wb25lbnRzL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQWdCLE1BQU0sMEJBQTBCLENBQUM7QUFDMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFnQnZELE1BQU0sT0FBTyxzQkFBc0I7SUFHL0IsWUFBNEMsSUFBaUIsRUFBVSxHQUF5QztRQUFwRSxTQUFJLEdBQUosSUFBSSxDQUFhO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBc0M7UUFGOUUsVUFBSyxHQUFHLElBQUksQ0FBQztJQUVvRSxDQUFDO0lBRXBILE9BQU8sQ0FBQyxNQUFlO1FBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzNCLENBQUM7K0dBUFEsc0JBQXNCLGtCQUdYLGVBQWU7bUdBSDFCLHNCQUFzQiwrSUNwQm5DLDR5QkEwQkEsNnJCRFhjLFlBQVksOEJBQUUsZUFBZSw4QkFBRSxlQUFlLDJOQUFFLGFBQWE7OzRGQUs5RCxzQkFBc0I7a0JBUGxDLFNBQVM7aUNBQ00sSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsYUFBYSxDQUFDLFlBQzlELHdCQUF3Qjs7MEJBT3JCLE1BQU07MkJBQUMsZUFBZTtvRUFGRCxLQUFLO3NCQUF0QyxXQUFXO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nTW9kdWxlLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcblxuZXhwb3J0IGludGVyZmFjZSBJRGlhbG9nRGF0YSB7XG4gICAgY2FuY2VsPzogc3RyaW5nO1xuICAgIGNvbmZpcm0/OiBzdHJpbmc7XG4gICAgbWVzc2FnZTogc3RyaW5nO1xuICAgIHRpdGxlPzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdERpYWxvZ01vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlXSxcbiAgICBzZWxlY3RvcjogJ2FwcC1ub2QtY29uZmlybS1kaWFsb2cnLFxuICAgIHRlbXBsYXRlVXJsOiAnY29uZmlybS1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWydjb25maXJtLWRpYWxvZy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENvbmZpcm1EaWFsb2dDb21wb25lbnQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3Mubm9kZXItbW9kYWwnKSBtb2RhbCA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IElEaWFsb2dEYXRhLCBwcml2YXRlIHJlZjogTWF0RGlhbG9nUmVmPENvbmZpcm1EaWFsb2dDb21wb25lbnQ+KSB7fVxuXG4gICAgb25DbG9zZShzdGF0dXM6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWYuY2xvc2Uoc3RhdHVzKTtcbiAgICB9XG59XG4iLCI8cCBjbGFzcz1cInRpdGxlXCI+e3sgZGF0YS50aXRsZSA/IGRhdGEudGl0bGUgOiAnQ29uZmlybWF0aW9uJyB9fTwvcD5cbjxkaXYgY2xhc3M9XCJjb250ZW50XCI+XG4gICAgPHA+e3sgZGF0YS5tZXNzYWdlIH19PC9wPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxuICAgIDxidXR0b25cbiAgICAgICAgaWQ9XCJjb25maXJtLWRpYWxvZy1jYW5jZWwtYnRuXCJcbiAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAoY2xpY2spPVwib25DbG9zZShmYWxzZSlcIj5cbiAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICBmb250U2V0PVwibm9kZXItaWNvblwiXG4gICAgICAgICAgICBmb250SWNvbj1cImljb24tY2FuY2VsLXRoaW5cIj48L21hdC1pY29uPlxuICAgICAgICB7eyBkYXRhLmNhbmNlbCA/IGRhdGEuY2FuY2VsIDogJ0NhbmNlbCcgfX1cbiAgICA8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICAgIGlkPVwiY29uZmlybS1kaWFsb2ctY29uZmlybS1idG5cIlxuICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICBjbGFzcz1cImRlbGV0ZS1idG5cIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAoY2xpY2spPVwib25DbG9zZSh0cnVlKVwiPlxuICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgIGZvbnRTZXQ9XCJub2Rlci1pY29uXCJcbiAgICAgICAgICAgIGZvbnRJY29uPVwiaWNvbi1kb25lLXRoaW5cIj48L21hdC1pY29uPlxuICAgICAgICB7eyBkYXRhLmNvbmZpcm0gPyBkYXRhLmNvbmZpcm0gOiAnRGVsZXRlJyB9fVxuICAgIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,64 @@
1
+ import { ChangeDetectionStrategy, Component } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs';
4
+ import { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
5
+ import { MatButtonModule } from '@angular/material/button';
6
+ import { MatIconModule } from '@angular/material/icon';
7
+ import { MatInputModule } from '@angular/material/input';
8
+ import { MatTooltipModule } from '@angular/material/tooltip';
9
+ import { DestroyComponent } from '../../editor/components/shared/abstract/destroy.component';
10
+ import { ExternalElementService } from '../../editor/components/external-element/external-element.service';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "../../editor/interaction/editor.service";
13
+ import * as i2 from "@angular/common";
14
+ import * as i3 from "@angular/forms";
15
+ import * as i4 from "@angular/material/button";
16
+ import * as i5 from "@angular/material/icon";
17
+ import * as i6 from "@angular/material/input";
18
+ import * as i7 from "@angular/material/form-field";
19
+ import * as i8 from "@angular/material/tooltip";
20
+ export class EditorSearchDialogComponent extends DestroyComponent {
21
+ constructor(editorService) {
22
+ super();
23
+ this.editorService = editorService;
24
+ this.searchControl = new FormControl('');
25
+ this.replaceControl = new FormControl('');
26
+ this.isReplace = false;
27
+ this.searchIteration$ = this.editorService.searchIteration$;
28
+ }
29
+ ngOnInit() {
30
+ this.searchControl.valueChanges
31
+ .pipe(debounceTime(300), distinctUntilChanged(), takeUntil(this.destroy$))
32
+ .subscribe(() => (this.editorService.searchOptions = { term: this.searchControl.value, skipCurrent: false, backwards: false }));
33
+ }
34
+ onClose() {
35
+ this.editorService.openSearchDialog = false;
36
+ }
37
+ findNext() {
38
+ this.editorService.searchOptions = {
39
+ term: this.searchControl.value,
40
+ skipCurrent: true,
41
+ backwards: false
42
+ };
43
+ }
44
+ findPrev() {
45
+ this.editorService.searchOptions = {
46
+ term: this.searchControl.value,
47
+ skipCurrent: true,
48
+ backwards: true
49
+ };
50
+ }
51
+ setReplace() {
52
+ this.isReplace = !this.isReplace;
53
+ }
54
+ replace() {
55
+ this.editorService.replace = { replaceValue: this.replaceControl.value, searchValue: this.searchControl.value };
56
+ }
57
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EditorSearchDialogComponent, deps: [{ token: i1.EditorService }], target: i0.ɵɵFactoryTarget.Component }); }
58
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: EditorSearchDialogComponent, isStandalone: true, selector: "app-nod-editor-search-dialog", providers: [ExternalElementService], usesInheritance: true, ngImport: i0, template: "<div class=\"line search-form\">\n <mat-form-field\n color=\"accent\"\n floatLabel=\"auto\"\n appearance=\"outline\">\n <mat-label>Search for</mat-label>\n <input\n matInput\n [formControl]=\"searchControl\"\n (keydown.enter)=\"findNext()\" />\n </mat-form-field>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"findPrev()\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-arrow-onleft\"></mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"findNext()\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-arrow-onright\"></mat-icon>\n </button>\n</div>\n<ng-container *ngIf=\"{ searchIteration: searchIteration$ | async } as data\">\n <div\n class=\"replace-form\"\n *ngIf=\"isReplace\">\n <mat-form-field\n color=\"accent\"\n floatLabel=\"auto\"\n appearance=\"outline\">\n <mat-label>Replace with</mat-label>\n <input\n matInput\n [formControl]=\"replaceControl\"\n spellcheck=\"false\"\n autocomplete=\"off\"\n (keydown.enter)=\"replace()\" />\n </mat-form-field>\n <button\n type=\"button\"\n mat-button\n (click)=\"replace()\">\n Replace\n </button>\n </div>\n <div class=\"search-options\">\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Toggle Replace Mode\"\n (click)=\"setReplace()\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"{{ isReplace ? 'icon-arrow-up' : 'icon-arrow-down' }}\"></mat-icon>\n </button>\n <div class=\"counter\">\n <span>{{ data.searchIteration?.current ?? 0 }} of {{ data.searchIteration?.total ?? 0 }}</span>\n </div>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Close\"\n (click)=\"onClose()\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-cancel-thin\"></mat-icon>\n </button>\n </div>\n</ng-container>\n", styles: [":host{min-height:56px;max-width:100%;display:block;font-size:10px;padding:3px}.close-icon{position:absolute;right:1px;top:1px}.search-form,.replace-form,.search-options{display:flex}mat-form-field{padding-left:10px}.mdc-button{font-size:12px;padding:0 8px;min-width:unset}.search-options{line-height:40px}.search-options .counter{text-align:center;flex:1}.mat-mdc-input-element{font-size:10px}.replace-form .mdc-button{width:80px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i8.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
59
+ }
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EditorSearchDialogComponent, decorators: [{
61
+ type: Component,
62
+ args: [{ standalone: true, imports: [CommonModule, FormsModule, MatButtonModule, MatIconModule, MatInputModule, MatTooltipModule, ReactiveFormsModule], providers: [ExternalElementService], changeDetection: ChangeDetectionStrategy.OnPush, selector: 'app-nod-editor-search-dialog', template: "<div class=\"line search-form\">\n <mat-form-field\n color=\"accent\"\n floatLabel=\"auto\"\n appearance=\"outline\">\n <mat-label>Search for</mat-label>\n <input\n matInput\n [formControl]=\"searchControl\"\n (keydown.enter)=\"findNext()\" />\n </mat-form-field>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"findPrev()\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-arrow-onleft\"></mat-icon>\n </button>\n <button\n type=\"button\"\n mat-icon-button\n (click)=\"findNext()\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-arrow-onright\"></mat-icon>\n </button>\n</div>\n<ng-container *ngIf=\"{ searchIteration: searchIteration$ | async } as data\">\n <div\n class=\"replace-form\"\n *ngIf=\"isReplace\">\n <mat-form-field\n color=\"accent\"\n floatLabel=\"auto\"\n appearance=\"outline\">\n <mat-label>Replace with</mat-label>\n <input\n matInput\n [formControl]=\"replaceControl\"\n spellcheck=\"false\"\n autocomplete=\"off\"\n (keydown.enter)=\"replace()\" />\n </mat-form-field>\n <button\n type=\"button\"\n mat-button\n (click)=\"replace()\">\n Replace\n </button>\n </div>\n <div class=\"search-options\">\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Toggle Replace Mode\"\n (click)=\"setReplace()\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"{{ isReplace ? 'icon-arrow-up' : 'icon-arrow-down' }}\"></mat-icon>\n </button>\n <div class=\"counter\">\n <span>{{ data.searchIteration?.current ?? 0 }} of {{ data.searchIteration?.total ?? 0 }}</span>\n </div>\n <button\n type=\"button\"\n mat-icon-button\n matTooltip=\"Close\"\n (click)=\"onClose()\">\n <mat-icon\n fontSet=\"noder-icon\"\n fontIcon=\"icon-cancel-thin\"></mat-icon>\n </button>\n </div>\n</ng-container>\n", styles: [":host{min-height:56px;max-width:100%;display:block;font-size:10px;padding:3px}.close-icon{position:absolute;right:1px;top:1px}.search-form,.replace-form,.search-options{display:flex}mat-form-field{padding-left:10px}.mdc-button{font-size:12px;padding:0 8px;min-width:unset}.search-options{line-height:40px}.search-options .counter{text-align:center;flex:1}.mat-mdc-input-element{font-size:10px}.replace-form .mdc-button{width:80px}\n"] }]
63
+ }], ctorParameters: () => [{ type: i1.EditorService }] });
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLXNlYXJjaC1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW5vZGVyL3NyYy9saWIvYXBhcnQtY29tcG9uZW50cy9lZGl0b3Itc2VhcmNoL2VkaXRvci1zZWFyY2gtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1ub2Rlci9zcmMvbGliL2FwYXJ0LWNvbXBvbmVudHMvZWRpdG9yLXNlYXJjaC9lZGl0b3Itc2VhcmNoLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFjLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRixPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBRTdGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLG1FQUFtRSxDQUFDOzs7Ozs7Ozs7O0FBWTNHLE1BQU0sT0FBTywyQkFBNEIsU0FBUSxnQkFBZ0I7SUFTN0QsWUFBb0IsYUFBNEI7UUFDNUMsS0FBSyxFQUFFLENBQUM7UUFEUSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQVJoRCxrQkFBYSxHQUFHLElBQUksV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRXBDLG1CQUFjLEdBQUcsSUFBSSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFckMsY0FBUyxHQUFHLEtBQUssQ0FBQztRQU1kLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDO0lBQ2hFLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZO2FBQzFCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3pFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4SSxDQUFDO0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ2hELENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLEdBQUc7WUFDL0IsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSztZQUM5QixXQUFXLEVBQUUsSUFBSTtZQUNqQixTQUFTLEVBQUUsS0FBSztTQUNuQixDQUFDO0lBQ04sQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsR0FBRztZQUMvQixJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLO1lBQzlCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLFNBQVMsRUFBRSxJQUFJO1NBQ2xCLENBQUM7SUFDTixDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLEdBQUcsRUFBRSxZQUFZLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEgsQ0FBQzsrR0E5Q1EsMkJBQTJCO21HQUEzQiwyQkFBMkIsMkVBTnpCLENBQUMsc0JBQXNCLENBQUMsaURDakJ2Qyx3MEVBMkVBLHllRDNEYyxZQUFZLHVMQUFFLFdBQVcsc1pBQUUsZUFBZSx3VUFBRSxhQUFhLG1MQUFFLGNBQWMsc25CQUFFLGdCQUFnQiw0VEFBRSxtQkFBbUI7OzRGQU9qSCwyQkFBMkI7a0JBVHZDLFNBQVM7aUNBQ00sSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxtQkFBbUIsQ0FBQyxhQUNoSCxDQUFDLHNCQUFzQixDQUFDLG1CQUNsQix1QkFBdUIsQ0FBQyxNQUFNLFlBQ3JDLDhCQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIE9ic2VydmFibGUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xuXG5pbXBvcnQgeyBEZXN0cm95Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZWRpdG9yL2NvbXBvbmVudHMvc2hhcmVkL2Fic3RyYWN0L2Rlc3Ryb3kuY29tcG9uZW50JztcbmltcG9ydCB7IEVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9lZGl0b3IvaW50ZXJhY3Rpb24vZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgRXh0ZXJuYWxFbGVtZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2VkaXRvci9jb21wb25lbnRzL2V4dGVybmFsLWVsZW1lbnQvZXh0ZXJuYWwtZWxlbWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IFNlYXJjaEl0ZXJhdGlvbiB9IGZyb20gJy4uLy4uL2VkaXRvci9nYWRnZXRzL3NlYXJjaC9zZWFyY2gtaXRlcmF0aW9uLmludGVyZmFjZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIE1hdEJ1dHRvbk1vZHVsZSwgTWF0SWNvbk1vZHVsZSwgTWF0SW5wdXRNb2R1bGUsIE1hdFRvb2x0aXBNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxuICAgIHByb3ZpZGVyczogW0V4dGVybmFsRWxlbWVudFNlcnZpY2VdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHNlbGVjdG9yOiAnYXBwLW5vZC1lZGl0b3Itc2VhcmNoLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICdlZGl0b3Itc2VhcmNoLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ2VkaXRvci1zZWFyY2gtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRWRpdG9yU2VhcmNoRGlhbG9nQ29tcG9uZW50IGV4dGVuZHMgRGVzdHJveUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgc2VhcmNoQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG5cbiAgICByZXBsYWNlQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XG5cbiAgICBpc1JlcGxhY2UgPSBmYWxzZTtcblxuICAgIHNlYXJjaEl0ZXJhdGlvbiQ6IE9ic2VydmFibGU8U2VhcmNoSXRlcmF0aW9uPjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWRpdG9yU2VydmljZTogRWRpdG9yU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLnNlYXJjaEl0ZXJhdGlvbiQgPSB0aGlzLmVkaXRvclNlcnZpY2Uuc2VhcmNoSXRlcmF0aW9uJDtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDMwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gKHRoaXMuZWRpdG9yU2VydmljZS5zZWFyY2hPcHRpb25zID0geyB0ZXJtOiB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWUsIHNraXBDdXJyZW50OiBmYWxzZSwgYmFja3dhcmRzOiBmYWxzZSB9KSk7XG4gICAgfVxuXG4gICAgb25DbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLm9wZW5TZWFyY2hEaWFsb2cgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBmaW5kTmV4dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnNlYXJjaE9wdGlvbnMgPSB7XG4gICAgICAgICAgICB0ZXJtOiB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICBza2lwQ3VycmVudDogdHJ1ZSxcbiAgICAgICAgICAgIGJhY2t3YXJkczogZmFsc2VcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmaW5kUHJldigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZGl0b3JTZXJ2aWNlLnNlYXJjaE9wdGlvbnMgPSB7XG4gICAgICAgICAgICB0ZXJtOiB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWUsXG4gICAgICAgICAgICBza2lwQ3VycmVudDogdHJ1ZSxcbiAgICAgICAgICAgIGJhY2t3YXJkczogdHJ1ZVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHNldFJlcGxhY2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNSZXBsYWNlID0gIXRoaXMuaXNSZXBsYWNlO1xuICAgIH1cblxuICAgIHJlcGxhY2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZWRpdG9yU2VydmljZS5yZXBsYWNlID0geyByZXBsYWNlVmFsdWU6IHRoaXMucmVwbGFjZUNvbnRyb2wudmFsdWUsIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaENvbnRyb2wudmFsdWUgfTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibGluZSBzZWFyY2gtZm9ybVwiPlxuICAgIDxtYXQtZm9ybS1maWVsZFxuICAgICAgICBjb2xvcj1cImFjY2VudFwiXG4gICAgICAgIGZsb2F0TGFiZWw9XCJhdXRvXCJcbiAgICAgICAgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgICAgICAgPG1hdC1sYWJlbD5TZWFyY2ggZm9yPC9tYXQtbGFiZWw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJzZWFyY2hDb250cm9sXCJcbiAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImZpbmROZXh0KClcIiAvPlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgIChjbGljayk9XCJmaW5kUHJldigpXCI+XG4gICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgZm9udFNldD1cIm5vZGVyLWljb25cIlxuICAgICAgICAgICAgZm9udEljb249XCJpY29uLWFycm93LW9ubGVmdFwiPjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgIChjbGljayk9XCJmaW5kTmV4dCgpXCI+XG4gICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgZm9udFNldD1cIm5vZGVyLWljb25cIlxuICAgICAgICAgICAgZm9udEljb249XCJpY29uLWFycm93LW9ucmlnaHRcIj48L21hdC1pY29uPlxuICAgIDwvYnV0dG9uPlxuPC9kaXY+XG48bmctY29udGFpbmVyICpuZ0lmPVwieyBzZWFyY2hJdGVyYXRpb246IHNlYXJjaEl0ZXJhdGlvbiQgfCBhc3luYyB9IGFzIGRhdGFcIj5cbiAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicmVwbGFjZS1mb3JtXCJcbiAgICAgICAgKm5nSWY9XCJpc1JlcGxhY2VcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICAgICAgICBjb2xvcj1cImFjY2VudFwiXG4gICAgICAgICAgICBmbG9hdExhYmVsPVwiYXV0b1wiXG4gICAgICAgICAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxuICAgICAgICAgICAgPG1hdC1sYWJlbD5SZXBsYWNlIHdpdGg8L21hdC1sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInJlcGxhY2VDb250cm9sXCJcbiAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwicmVwbGFjZSgpXCIgLz5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICAoY2xpY2spPVwicmVwbGFjZSgpXCI+XG4gICAgICAgICAgICBSZXBsYWNlXG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtb3B0aW9uc1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIlRvZ2dsZSBSZXBsYWNlIE1vZGVcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInNldFJlcGxhY2UoKVwiPlxuICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgICAgZm9udFNldD1cIm5vZGVyLWljb25cIlxuICAgICAgICAgICAgICAgIGZvbnRJY29uPVwie3sgaXNSZXBsYWNlID8gJ2ljb24tYXJyb3ctdXAnIDogJ2ljb24tYXJyb3ctZG93bicgfX1cIj48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50ZXJcIj5cbiAgICAgICAgICAgIDxzcGFuPnt7IGRhdGEuc2VhcmNoSXRlcmF0aW9uPy5jdXJyZW50ID8/IDAgfX0gb2Yge3sgZGF0YS5zZWFyY2hJdGVyYXRpb24/LnRvdGFsID8/IDAgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkNsb3NlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkNsb3NlKClcIj5cbiAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgIGZvbnRTZXQ9XCJub2Rlci1pY29uXCJcbiAgICAgICAgICAgICAgICBmb250SWNvbj1cImljb24tY2FuY2VsLXRoaW5cIj48L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19