@vendure/admin-ui 2.0.0-next.2 → 2.0.0-next.21

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 (341) hide show
  1. package/catalog/catalog.module.d.ts +15 -11
  2. package/catalog/components/assign-to-channel-dialog/assign-to-channel-dialog.component.d.ts +22 -0
  3. package/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.component.d.ts +41 -0
  4. package/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.graphql.d.ts +4 -0
  5. package/catalog/components/collection-contents/collection-contents.component.d.ts +10 -2
  6. package/catalog/components/collection-detail/collection-detail.component.d.ts +13 -4
  7. package/catalog/components/collection-list/collection-list-bulk-actions.d.ts +6 -0
  8. package/catalog/components/collection-list/collection-list.component.d.ts +9 -5
  9. package/catalog/components/collection-tree/array-to-tree.d.ts +1 -1
  10. package/catalog/components/collection-tree/collection-tree-node.component.d.ts +14 -6
  11. package/catalog/components/collection-tree/collection-tree.component.d.ts +4 -1
  12. package/catalog/components/facet-list/facet-list-bulk-actions.d.ts +5 -0
  13. package/catalog/components/facet-list/facet-list.component.d.ts +2 -1
  14. package/catalog/components/generate-product-variants/generate-product-variants.component.d.ts +3 -3
  15. package/catalog/components/option-value-input/option-value-input.component.d.ts +21 -9
  16. package/catalog/components/product-detail/product-detail.component.d.ts +1 -1
  17. package/catalog/components/product-list/product-list-bulk-actions.d.ts +6 -0
  18. package/catalog/components/product-list/product-list.component.d.ts +4 -2
  19. package/catalog/components/product-variants-editor/product-variants-editor.component.d.ts +22 -12
  20. package/catalog/components/product-variants-list/product-variants-list.component.d.ts +1 -0
  21. package/catalog/public_api.d.ts +6 -1
  22. package/core/common/component-registry-types.d.ts +1 -1
  23. package/core/common/generated-types.d.ts +3184 -195
  24. package/core/common/utilities/bulk-action-utils.d.ts +19 -0
  25. package/core/common/utilities/configurable-operation-utils.d.ts +7 -2
  26. package/core/common/utilities/selection-manager.d.ts +30 -0
  27. package/core/common/version.d.ts +1 -1
  28. package/core/components/app-shell/app-shell.component.d.ts +1 -0
  29. package/core/data/definitions/collection-definitions.d.ts +4 -0
  30. package/core/data/definitions/facet-definitions.d.ts +3 -0
  31. package/core/data/definitions/order-definitions.d.ts +14 -0
  32. package/core/data/definitions/product-definitions.d.ts +2 -0
  33. package/core/data/providers/collection-data.service.d.ts +7 -0
  34. package/core/data/providers/facet-data.service.d.ts +3 -0
  35. package/core/data/providers/order-data.service.d.ts +18 -0
  36. package/core/data/providers/product-data.service.d.ts +2 -0
  37. package/core/providers/bulk-action-registry/bulk-action-registry.service.d.ts +9 -0
  38. package/core/providers/bulk-action-registry/bulk-action-types.d.ts +149 -0
  39. package/core/providers/bulk-action-registry/register-bulk-action.d.ts +53 -0
  40. package/core/providers/local-storage/local-storage.service.d.ts +1 -0
  41. package/core/providers/modal/modal.types.d.ts +2 -0
  42. package/core/providers/nav-builder/nav-builder-types.d.ts +1 -0
  43. package/core/public_api.d.ts +24 -1
  44. package/core/shared/components/asset-gallery/asset-gallery.component.d.ts +27 -3
  45. package/core/shared/components/bulk-action-menu/bulk-action-menu.component.d.ts +32 -0
  46. package/core/shared/components/configurable-input/configurable-input.component.d.ts +8 -3
  47. package/core/shared/components/custom-field-control/custom-field-control.component.d.ts +6 -2
  48. package/core/shared/components/data-table/data-table.component.d.ts +29 -7
  49. package/core/shared/components/dropdown/dropdown-menu.component.d.ts +2 -1
  50. package/core/shared/components/facet-value-selector/facet-value-selector.component.d.ts +3 -2
  51. package/core/shared/components/product-multi-selector-dialog/product-multi-selector-dialog.component.d.ts +38 -0
  52. package/{catalog → core/shared}/components/product-search-input/product-search-input.component.d.ts +1 -1
  53. package/core/shared/components/radio-card/radio-card-fieldset.component.d.ts +24 -0
  54. package/core/shared/components/radio-card/radio-card.component.d.ts +22 -0
  55. package/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.component.d.ts +31 -0
  56. package/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.service.d.ts +34 -0
  57. package/core/shared/components/rich-text-editor/prosemirror/custom-nodes.d.ts +4 -0
  58. package/core/shared/components/rich-text-editor/prosemirror/inputrules.d.ts +5 -5
  59. package/core/shared/components/rich-text-editor/prosemirror/menu/links.d.ts +1 -1
  60. package/core/shared/components/rich-text-editor/prosemirror/menu/menu-common.d.ts +12 -0
  61. package/core/shared/components/rich-text-editor/prosemirror/menu/menu-plugin.d.ts +9 -0
  62. package/core/shared/components/rich-text-editor/prosemirror/menu/sub-menu-with-icon.d.ts +14 -0
  63. package/core/shared/components/rich-text-editor/prosemirror/plugins/image-plugin.d.ts +7 -0
  64. package/core/shared/components/rich-text-editor/prosemirror/plugins/link-select-plugin.d.ts +1 -1
  65. package/core/shared/components/rich-text-editor/prosemirror/plugins/raw-editor-plugin.d.ts +7 -0
  66. package/core/shared/components/rich-text-editor/prosemirror/plugins/tables-plugin.d.ts +13 -0
  67. package/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.d.ts +7 -3
  68. package/core/shared/components/rich-text-editor/prosemirror/types.d.ts +0 -2
  69. package/core/shared/components/rich-text-editor/raw-html-dialog/raw-html-dialog.component.d.ts +21 -0
  70. package/core/shared/components/rich-text-editor/rich-text-editor.component.d.ts +6 -2
  71. package/core/shared/components/select-toggle/select-toggle.component.d.ts +2 -1
  72. package/core/shared/dynamic-form-inputs/code-editor-form-input/base-code-editor-form-input.component.d.ts +30 -0
  73. package/core/shared/dynamic-form-inputs/code-editor-form-input/html-editor-form-input.component.d.ts +22 -0
  74. package/core/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.d.ts +5 -17
  75. package/core/shared/dynamic-form-inputs/combination-mode-form-input/combination-mode-form-input.component.d.ts +28 -0
  76. package/core/shared/dynamic-form-inputs/facet-value-form-input/facet-value-form-input.component.d.ts +2 -0
  77. package/core/shared/dynamic-form-inputs/product-multi-selector-form-input/product-multi-selector-form-input.component.d.ts +23 -0
  78. package/core/shared/dynamic-form-inputs/register-dynamic-input-components.d.ts +5 -1
  79. package/core/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.d.ts +6 -3
  80. package/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.d.ts +10 -2
  81. package/core/shared/pipes/custom-field-description.pipe.d.ts +11 -0
  82. package/core/shared/pipes/custom-field-label.pipe.d.ts +4 -10
  83. package/core/shared/shared.module.d.ts +68 -57
  84. package/customer/components/customer-group-list/customer-group-list.component.d.ts +6 -4
  85. package/customer/components/customer-group-member-list/customer-group-member-list.component.d.ts +11 -4
  86. package/esm2020/catalog/catalog.module.mjs +31 -10
  87. package/esm2020/catalog/components/apply-facet-dialog/apply-facet-dialog.component.mjs +1 -1
  88. package/esm2020/catalog/components/assets/assets.component.mjs +2 -2
  89. package/esm2020/catalog/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.mjs +4 -1
  90. package/esm2020/catalog/components/assign-to-channel-dialog/assign-to-channel-dialog.component.mjs +50 -0
  91. package/esm2020/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.component.mjs +84 -0
  92. package/esm2020/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.graphql.mjs +69 -0
  93. package/esm2020/catalog/components/collection-contents/collection-contents.component.mjs +61 -13
  94. package/esm2020/catalog/components/collection-detail/collection-detail.component.mjs +70 -32
  95. package/esm2020/catalog/components/collection-list/collection-list-bulk-actions.mjs +143 -0
  96. package/esm2020/catalog/components/collection-list/collection-list.component.mjs +46 -12
  97. package/esm2020/catalog/components/collection-tree/array-to-tree.mjs +3 -3
  98. package/esm2020/catalog/components/collection-tree/collection-tree-node.component.mjs +36 -10
  99. package/esm2020/catalog/components/collection-tree/collection-tree.component.mjs +9 -4
  100. package/esm2020/catalog/components/facet-detail/facet-detail.component.mjs +3 -3
  101. package/esm2020/catalog/components/facet-list/facet-list-bulk-actions.mjs +202 -0
  102. package/esm2020/catalog/components/facet-list/facet-list.component.mjs +14 -5
  103. package/esm2020/catalog/components/generate-product-variants/generate-product-variants.component.mjs +12 -4
  104. package/esm2020/catalog/components/option-value-input/option-value-input.component.mjs +70 -11
  105. package/esm2020/catalog/components/product-detail/product-detail.component.mjs +36 -24
  106. package/esm2020/catalog/components/product-list/product-list-bulk-actions.mjs +168 -0
  107. package/esm2020/catalog/components/product-list/product-list.component.mjs +13 -9
  108. package/esm2020/catalog/components/product-variants-editor/product-variants-editor.component.mjs +130 -19
  109. package/esm2020/catalog/components/product-variants-list/product-variants-list.component.mjs +9 -3
  110. package/esm2020/catalog/providers/routing/collection-resolver.mjs +2 -1
  111. package/esm2020/catalog/public_api.mjs +7 -2
  112. package/esm2020/core/app.component.module.mjs +1 -1
  113. package/esm2020/core/common/base-detail.component.mjs +1 -1
  114. package/esm2020/core/common/component-registry-types.mjs +1 -1
  115. package/esm2020/core/common/deactivate-aware.mjs +1 -1
  116. package/esm2020/core/common/generated-types.mjs +31 -1
  117. package/esm2020/core/common/introspection-result.mjs +296 -189
  118. package/esm2020/core/common/utilities/bulk-action-utils.mjs +35 -0
  119. package/esm2020/core/common/utilities/configurable-operation-utils.mjs +37 -10
  120. package/esm2020/core/common/utilities/selection-manager.mjs +96 -0
  121. package/esm2020/core/common/version.mjs +2 -2
  122. package/esm2020/core/components/app-shell/app-shell.component.mjs +6 -5
  123. package/esm2020/core/components/breadcrumb/breadcrumb.component.mjs +2 -2
  124. package/esm2020/core/components/channel-switcher/channel-switcher.component.mjs +1 -1
  125. package/esm2020/core/components/main-nav/main-nav.component.mjs +3 -3
  126. package/esm2020/core/components/user-menu/user-menu.component.mjs +1 -1
  127. package/esm2020/core/core.module.mjs +1 -1
  128. package/esm2020/core/data/definitions/collection-definitions.mjs +47 -1
  129. package/esm2020/core/data/definitions/facet-definitions.mjs +31 -1
  130. package/esm2020/core/data/definitions/order-definitions.mjs +583 -455
  131. package/esm2020/core/data/definitions/product-definitions.mjs +23 -1
  132. package/esm2020/core/data/definitions/shared-definitions.mjs +29 -28
  133. package/esm2020/core/data/providers/collection-data.service.mjs +20 -2
  134. package/esm2020/core/data/providers/customer-data.service.mjs +6 -1
  135. package/esm2020/core/data/providers/facet-data.service.mjs +18 -2
  136. package/esm2020/core/data/providers/order-data.service.mjs +43 -2
  137. package/esm2020/core/data/providers/product-data.service.mjs +10 -2
  138. package/esm2020/core/data/providers/promotion-data.service.mjs +1 -1
  139. package/esm2020/core/data/utils/remove-readonly-custom-fields.mjs +8 -1
  140. package/esm2020/core/providers/bulk-action-registry/bulk-action-registry.service.mjs +28 -0
  141. package/esm2020/core/providers/bulk-action-registry/bulk-action-types.mjs +2 -0
  142. package/esm2020/core/providers/bulk-action-registry/register-bulk-action.mjs +63 -0
  143. package/esm2020/core/providers/dashboard-widget/dashboard-widget.service.mjs +1 -4
  144. package/esm2020/core/providers/local-storage/local-storage.service.mjs +1 -1
  145. package/esm2020/core/providers/modal/modal.service.mjs +2 -1
  146. package/esm2020/core/providers/modal/modal.types.mjs +1 -1
  147. package/esm2020/core/providers/nav-builder/nav-builder-types.mjs +1 -1
  148. package/esm2020/core/public_api.mjs +25 -2
  149. package/esm2020/core/shared/components/action-bar/action-bar.component.mjs +7 -15
  150. package/esm2020/core/shared/components/address-form/address-form.component.mjs +3 -3
  151. package/esm2020/core/shared/components/asset-gallery/asset-gallery.component.mjs +34 -51
  152. package/esm2020/core/shared/components/asset-preview/asset-preview.component.mjs +4 -4
  153. package/esm2020/core/shared/components/asset-preview-links/asset-preview-links.component.mjs +1 -1
  154. package/esm2020/core/shared/components/bulk-action-menu/bulk-action-menu.component.mjs +97 -0
  155. package/esm2020/core/shared/components/configurable-input/configurable-input.component.mjs +22 -10
  156. package/esm2020/core/shared/components/custom-field-control/custom-field-control.component.mjs +18 -10
  157. package/esm2020/core/shared/components/data-table/data-table.component.mjs +64 -14
  158. package/esm2020/core/shared/components/datetime-picker/datetime-picker.component.mjs +1 -1
  159. package/esm2020/core/shared/components/dropdown/dropdown-menu.component.mjs +26 -23
  160. package/esm2020/core/shared/components/dropdown/dropdown-trigger.directive.mjs +1 -1
  161. package/esm2020/core/shared/components/entity-info/entity-info.component.mjs +1 -1
  162. package/esm2020/core/shared/components/facet-value-selector/facet-value-selector.component.mjs +13 -6
  163. package/esm2020/core/shared/components/formatted-address/formatted-address.component.mjs +3 -3
  164. package/esm2020/core/shared/components/help-tooltip/help-tooltip.component.mjs +2 -2
  165. package/esm2020/core/shared/components/history-entry-detail/history-entry-detail.component.mjs +1 -1
  166. package/esm2020/core/shared/components/language-selector/language-selector.component.mjs +3 -3
  167. package/esm2020/core/shared/components/object-tree/object-tree.component.mjs +1 -1
  168. package/esm2020/core/shared/components/order-state-label/order-state-label.component.mjs +2 -1
  169. package/esm2020/core/shared/components/product-multi-selector-dialog/product-multi-selector-dialog.component.mjs +135 -0
  170. package/esm2020/core/shared/components/product-search-input/product-search-input.component.mjs +108 -0
  171. package/esm2020/core/shared/components/product-variant-selector/product-variant-selector.component.mjs +2 -2
  172. package/esm2020/core/shared/components/radio-card/radio-card-fieldset.component.mjs +54 -0
  173. package/esm2020/core/shared/components/radio-card/radio-card.component.mjs +53 -0
  174. package/esm2020/core/shared/components/rich-text-editor/external-image-dialog/external-image-dialog.component.mjs +3 -3
  175. package/esm2020/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.component.mjs +136 -0
  176. package/esm2020/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.service.mjs +46 -0
  177. package/esm2020/core/shared/components/rich-text-editor/prosemirror/custom-nodes.mjs +57 -0
  178. package/esm2020/core/shared/components/rich-text-editor/prosemirror/menu/links.mjs +4 -4
  179. package/esm2020/core/shared/components/rich-text-editor/prosemirror/menu/menu-common.mjs +22 -1
  180. package/esm2020/core/shared/components/rich-text-editor/prosemirror/menu/menu-plugin.mjs +12 -0
  181. package/esm2020/core/shared/components/rich-text-editor/prosemirror/menu/menu.mjs +73 -18
  182. package/esm2020/core/shared/components/rich-text-editor/prosemirror/menu/sub-menu-with-icon.mjs +16 -0
  183. package/esm2020/core/shared/components/rich-text-editor/prosemirror/plugins/image-plugin.mjs +100 -0
  184. package/esm2020/core/shared/components/rich-text-editor/prosemirror/plugins/raw-editor-plugin.mjs +96 -0
  185. package/esm2020/core/shared/components/rich-text-editor/prosemirror/plugins/tables-plugin.mjs +166 -0
  186. package/esm2020/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.mjs +47 -18
  187. package/esm2020/core/shared/components/rich-text-editor/prosemirror/types.mjs +1 -1
  188. package/esm2020/core/shared/components/rich-text-editor/raw-html-dialog/raw-html-dialog.component.mjs +59 -0
  189. package/esm2020/core/shared/components/rich-text-editor/rich-text-editor.component.mjs +22 -10
  190. package/esm2020/core/shared/components/select-toggle/select-toggle.component.mjs +6 -3
  191. package/esm2020/core/shared/components/simple-dialog/simple-dialog.component.mjs +3 -3
  192. package/esm2020/core/shared/components/ui-extension-point/ui-extension-point.component.mjs +1 -1
  193. package/esm2020/core/shared/dynamic-form-inputs/code-editor-form-input/base-code-editor-form-input.component.mjs +57 -0
  194. package/esm2020/core/shared/dynamic-form-inputs/code-editor-form-input/html-editor-form-input.component.mjs +63 -0
  195. package/esm2020/core/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.mjs +48 -83
  196. package/esm2020/core/shared/dynamic-form-inputs/combination-mode-form-input/combination-mode-form-input.component.mjs +45 -0
  197. package/esm2020/core/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.mjs +3 -3
  198. package/esm2020/core/shared/dynamic-form-inputs/facet-value-form-input/facet-value-form-input.component.mjs +12 -3
  199. package/esm2020/core/shared/dynamic-form-inputs/product-multi-selector-form-input/product-multi-selector-form-input.component.mjs +48 -0
  200. package/esm2020/core/shared/dynamic-form-inputs/register-dynamic-input-components.mjs +7 -1
  201. package/esm2020/core/shared/dynamic-form-inputs/relation-form-input/asset/relation-asset-input.component.mjs +11 -9
  202. package/esm2020/core/shared/dynamic-form-inputs/relation-form-input/generic/relation-generic-input.component.mjs +1 -1
  203. package/esm2020/core/shared/dynamic-form-inputs/select-form-input/select-form-input.component.mjs +21 -11
  204. package/esm2020/core/shared/pipes/custom-field-description.pipe.mjs +30 -0
  205. package/esm2020/core/shared/pipes/custom-field-label.pipe.mjs +7 -19
  206. package/esm2020/core/shared/pipes/locale-currency.pipe.mjs +10 -2
  207. package/esm2020/core/shared/pipes/state-i18n-token.pipe.mjs +2 -1
  208. package/esm2020/core/shared/shared.module.mjs +49 -5
  209. package/esm2020/customer/components/address-card/address-card.component.mjs +1 -1
  210. package/esm2020/customer/components/customer-detail/customer-detail.component.mjs +1 -1
  211. package/esm2020/customer/components/customer-group-list/customer-group-list.component.mjs +33 -18
  212. package/esm2020/customer/components/customer-group-member-list/customer-group-member-list.component.mjs +3 -3
  213. package/esm2020/customer/components/customer-history/customer-history.component.mjs +1 -1
  214. package/esm2020/customer/components/customer-list/customer-list.component.mjs +3 -3
  215. package/esm2020/dashboard/components/dashboard/dashboard.component.mjs +2 -2
  216. package/esm2020/dashboard/components/dashboard-widget/dashboard-widget.component.mjs +2 -2
  217. package/esm2020/dashboard/dashboard.module.mjs +6 -2
  218. package/esm2020/dashboard/widgets/latest-orders-widget/latest-orders-widget.component.mjs +1 -1
  219. package/esm2020/dashboard/widgets/order-summary-widget/order-summary-widget.component.mjs +2 -2
  220. package/esm2020/login/components/login/login.component.mjs +3 -3
  221. package/esm2020/marketing/components/promotion-detail/promotion-detail.component.mjs +3 -3
  222. package/esm2020/marketing/components/promotion-list/promotion-list.component.mjs +1 -1
  223. package/esm2020/order/components/cancel-order-dialog/cancel-order-dialog.component.mjs +1 -1
  224. package/esm2020/order/components/coupon-code-selector/coupon-code-selector.component.mjs +42 -0
  225. package/esm2020/order/components/draft-order-detail/draft-order-detail.component.mjs +187 -0
  226. package/esm2020/order/components/draft-order-variant-selector/draft-order-variant-selector.component.mjs +59 -0
  227. package/esm2020/order/components/fulfill-order-dialog/fulfill-order-dialog.component.mjs +7 -3
  228. package/esm2020/order/components/fulfillment-card/fulfillment-card.component.mjs +1 -1
  229. package/esm2020/order/components/fulfillment-detail/fulfillment-detail.component.mjs +8 -17
  230. package/esm2020/order/components/line-fulfillment/line-fulfillment.component.mjs +8 -22
  231. package/esm2020/order/components/order-custom-fields-card/order-custom-fields-card.component.mjs +30 -6
  232. package/esm2020/order/components/order-detail/order-detail.component.mjs +80 -40
  233. package/esm2020/order/components/order-editor/order-editor.component.mjs +15 -14
  234. package/esm2020/order/components/order-edits-preview-dialog/order-edits-preview-dialog.component.mjs +1 -1
  235. package/esm2020/order/components/order-history/order-history.component.mjs +1 -1
  236. package/esm2020/order/components/order-list/order-list.component.mjs +40 -17
  237. package/esm2020/order/components/order-payment-card/order-payment-card.component.mjs +3 -3
  238. package/esm2020/order/components/order-table/order-table.component.mjs +29 -6
  239. package/esm2020/order/components/refund-order-dialog/refund-order-dialog.component.mjs +2 -2
  240. package/esm2020/order/components/select-address-dialog/select-address-dialog.component.mjs +89 -0
  241. package/esm2020/order/components/select-address-dialog/select-address-dialog.graphql.mjs +14 -0
  242. package/esm2020/order/components/select-customer-dialog/select-customer-dialog.component.mjs +59 -0
  243. package/esm2020/order/components/select-shipping-method-dialog/select-shipping-method-dialog.component.mjs +31 -0
  244. package/esm2020/order/order.module.mjs +20 -2
  245. package/esm2020/order/order.routes.mjs +23 -4
  246. package/esm2020/order/providers/routing/order-resolver.mjs +29 -11
  247. package/esm2020/order/providers/routing/order.guard.mjs +37 -0
  248. package/esm2020/order/public_api.mjs +9 -1
  249. package/esm2020/settings/components/administrator-list/administrator-list.component.mjs +1 -1
  250. package/esm2020/settings/components/channel-list/channel-list.component.mjs +1 -1
  251. package/esm2020/settings/components/country-list/country-list.component.mjs +3 -3
  252. package/esm2020/settings/components/payment-method-detail/payment-method-detail.component.mjs +1 -1
  253. package/esm2020/settings/components/payment-method-list/payment-method-list.component.mjs +1 -1
  254. package/esm2020/settings/components/permission-grid/permission-grid.component.mjs +1 -1
  255. package/esm2020/settings/components/profile/profile.component.mjs +3 -3
  256. package/esm2020/settings/components/role-list/role-list.component.mjs +1 -1
  257. package/esm2020/settings/components/shipping-method-detail/shipping-method-detail.component.mjs +4 -2
  258. package/esm2020/settings/components/shipping-method-list/shipping-method-list.component.mjs +1 -1
  259. package/esm2020/settings/components/tax-category-list/tax-category-list.component.mjs +1 -1
  260. package/esm2020/settings/components/tax-rate-list/tax-rate-list.component.mjs +1 -1
  261. package/esm2020/settings/components/zone-detail-dialog/zone-detail-dialog.component.mjs +2 -2
  262. package/esm2020/settings/components/zone-list/zone-list.component.mjs +3 -3
  263. package/esm2020/settings/components/zone-member-list/zone-member-list.component.mjs +3 -3
  264. package/esm2020/system/components/health-check/health-check.component.mjs +2 -2
  265. package/esm2020/system/components/job-list/job-list.component.mjs +1 -1
  266. package/fesm2015/vendure-admin-ui-catalog.mjs +1206 -228
  267. package/fesm2015/vendure-admin-ui-catalog.mjs.map +1 -1
  268. package/fesm2015/vendure-admin-ui-core.mjs +9451 -7332
  269. package/fesm2015/vendure-admin-ui-core.mjs.map +1 -1
  270. package/fesm2015/vendure-admin-ui-customer.mjs +36 -23
  271. package/fesm2015/vendure-admin-ui-customer.mjs.map +1 -1
  272. package/fesm2015/vendure-admin-ui-dashboard.mjs +11 -7
  273. package/fesm2015/vendure-admin-ui-dashboard.mjs.map +1 -1
  274. package/fesm2015/vendure-admin-ui-login.mjs +2 -2
  275. package/fesm2015/vendure-admin-ui-login.mjs.map +1 -1
  276. package/fesm2015/vendure-admin-ui-marketing.mjs +3 -3
  277. package/fesm2015/vendure-admin-ui-marketing.mjs.map +1 -1
  278. package/fesm2015/vendure-admin-ui-order.mjs +1184 -599
  279. package/fesm2015/vendure-admin-ui-order.mjs.map +1 -1
  280. package/fesm2015/vendure-admin-ui-settings.mjs +21 -19
  281. package/fesm2015/vendure-admin-ui-settings.mjs.map +1 -1
  282. package/fesm2015/vendure-admin-ui-system.mjs +3 -3
  283. package/fesm2020/vendure-admin-ui-catalog.mjs +1190 -230
  284. package/fesm2020/vendure-admin-ui-catalog.mjs.map +1 -1
  285. package/fesm2020/vendure-admin-ui-core.mjs +9539 -7437
  286. package/fesm2020/vendure-admin-ui-core.mjs.map +1 -1
  287. package/fesm2020/vendure-admin-ui-customer.mjs +36 -23
  288. package/fesm2020/vendure-admin-ui-customer.mjs.map +1 -1
  289. package/fesm2020/vendure-admin-ui-dashboard.mjs +11 -7
  290. package/fesm2020/vendure-admin-ui-dashboard.mjs.map +1 -1
  291. package/fesm2020/vendure-admin-ui-login.mjs +2 -2
  292. package/fesm2020/vendure-admin-ui-login.mjs.map +1 -1
  293. package/fesm2020/vendure-admin-ui-marketing.mjs +3 -3
  294. package/fesm2020/vendure-admin-ui-marketing.mjs.map +1 -1
  295. package/fesm2020/vendure-admin-ui-order.mjs +1194 -614
  296. package/fesm2020/vendure-admin-ui-order.mjs.map +1 -1
  297. package/fesm2020/vendure-admin-ui-settings.mjs +21 -19
  298. package/fesm2020/vendure-admin-ui-settings.mjs.map +1 -1
  299. package/fesm2020/vendure-admin-ui-system.mjs +3 -3
  300. package/order/components/coupon-code-selector/coupon-code-selector.component.d.ts +21 -0
  301. package/order/components/draft-order-detail/draft-order-detail.component.d.ts +52 -0
  302. package/order/components/draft-order-variant-selector/draft-order-variant-selector.component.d.ts +24 -0
  303. package/order/components/order-custom-fields-card/order-custom-fields-card.component.d.ts +4 -2
  304. package/order/components/order-editor/order-editor.component.d.ts +1 -6
  305. package/order/components/order-list/order-list.component.d.ts +2 -0
  306. package/order/components/order-table/order-table.component.d.ts +12 -2
  307. package/order/components/select-address-dialog/select-address-dialog.component.d.ts +27 -0
  308. package/order/components/select-address-dialog/select-address-dialog.graphql.d.ts +1 -0
  309. package/order/components/select-customer-dialog/select-customer-dialog.component.d.ts +25 -0
  310. package/order/components/select-shipping-method-dialog/select-shipping-method-dialog.component.d.ts +19 -0
  311. package/order/order.module.d.ts +9 -3
  312. package/order/providers/routing/order-resolver.d.ts +8 -3
  313. package/order/providers/routing/order.guard.d.ts +12 -0
  314. package/order/public_api.d.ts +8 -0
  315. package/package.json +13 -12
  316. package/settings/components/zone-member-list/zone-member-list.component.d.ts +3 -1
  317. package/static/i18n-messages/cs.json +50 -3
  318. package/static/i18n-messages/de.json +53 -3
  319. package/static/i18n-messages/en.json +55 -8
  320. package/static/i18n-messages/es.json +50 -3
  321. package/static/i18n-messages/fr.json +50 -3
  322. package/static/i18n-messages/it.json +50 -3
  323. package/static/i18n-messages/pl.json +50 -3
  324. package/static/i18n-messages/pt_BR.json +50 -3
  325. package/static/i18n-messages/pt_PT.json +50 -3
  326. package/static/i18n-messages/ru.json +50 -3
  327. package/static/i18n-messages/uk.json +50 -3
  328. package/static/i18n-messages/zh_Hans.json +50 -3
  329. package/static/i18n-messages/zh_Hant.json +50 -3
  330. package/static/styles/_variables.scss +4 -0
  331. package/static/styles/global/_forms.scss +8 -7
  332. package/static/styles/global/_overrides.scss +11 -1
  333. package/static/styles/global/_sass-overrides.scss +3 -0
  334. package/static/styles/global/_utilities.scss +14 -0
  335. package/static/styles/styles.scss +1 -0
  336. package/static/styles/theme/default.scss +13 -1
  337. package/static/styles/ui-extension-theme.scss +1 -0
  338. package/static/theme.min.css +1 -1
  339. package/core/shared/components/rich-text-editor/prosemirror/menu/images.d.ts +0 -4
  340. package/esm2020/catalog/components/product-search-input/product-search-input.component.mjs +0 -107
  341. package/esm2020/core/shared/components/rich-text-editor/prosemirror/menu/images.mjs +0 -36
@@ -1,3 +1,4 @@
1
+ import { notNullOrUndefined } from '@vendure/common/lib/shared-utils';
1
2
  export function markActive(state, type) {
2
3
  const { from, $from, to, empty } = state.selection;
3
4
  if (empty) {
@@ -17,4 +18,24 @@ export function canInsert(state, nodeType) {
17
18
  }
18
19
  return false;
19
20
  }
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1jb21tb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL3JpY2gtdGV4dC1lZGl0b3IvcHJvc2VtaXJyb3IvbWVudS9tZW51LWNvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJO0lBQ2xDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO0lBQ25ELElBQUksS0FBSyxFQUFFO1FBQ1AsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDM0Q7U0FBTTtRQUNILE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUNqRDtBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLEtBQWtCLEVBQUUsUUFBa0I7SUFDNUQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7SUFDcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDbkMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQUU7WUFDdEQsT0FBTyxJQUFJLENBQUM7U0FDZjtLQUNKO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5vZGVUeXBlIH0gZnJvbSAncHJvc2VtaXJyb3ItbW9kZWwnO1xyXG5pbXBvcnQgeyBFZGl0b3JTdGF0ZSB9IGZyb20gJ3Byb3NlbWlycm9yLXN0YXRlJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtYXJrQWN0aXZlKHN0YXRlLCB0eXBlKSB7XHJcbiAgICBjb25zdCB7IGZyb20sICRmcm9tLCB0bywgZW1wdHkgfSA9IHN0YXRlLnNlbGVjdGlvbjtcclxuICAgIGlmIChlbXB0eSkge1xyXG4gICAgICAgIHJldHVybiB0eXBlLmlzSW5TZXQoc3RhdGUuc3RvcmVkTWFya3MgfHwgJGZyb20ubWFya3MoKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBzdGF0ZS5kb2MucmFuZ2VIYXNNYXJrKGZyb20sIHRvLCB0eXBlKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNhbkluc2VydChzdGF0ZTogRWRpdG9yU3RhdGUsIG5vZGVUeXBlOiBOb2RlVHlwZSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgJGZyb20gPSBzdGF0ZS5zZWxlY3Rpb24uJGZyb207XHJcbiAgICBmb3IgKGxldCBkID0gJGZyb20uZGVwdGg7IGQgPj0gMDsgZC0tKSB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSAkZnJvbS5pbmRleChkKTtcclxuICAgICAgICBpZiAoJGZyb20ubm9kZShkKS5jYW5SZXBsYWNlV2l0aChpbmRleCwgaW5kZXgsIG5vZGVUeXBlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cclxuIl19
21
+ export function renderClarityIcon(options) {
22
+ return (view) => {
23
+ const icon = document.createElement('clr-icon');
24
+ icon.setAttribute('shape', options.shape);
25
+ icon.setAttribute('size', (options.size ?? IconSize.Small).toString());
26
+ const labelEl = document.createElement('span');
27
+ labelEl.textContent = options.label ?? '';
28
+ return wrapInMenuItemWithIcon(icon, options.label ? labelEl : undefined);
29
+ };
30
+ }
31
+ export function wrapInMenuItemWithIcon(...elements) {
32
+ const wrapperEl = document.createElement('span');
33
+ wrapperEl.classList.add('menu-item-with-icon');
34
+ wrapperEl.append(...elements.filter(notNullOrUndefined));
35
+ return wrapperEl;
36
+ }
37
+ export const IconSize = {
38
+ Large: 22,
39
+ Small: 16,
40
+ };
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1jb21tb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL3JpY2gtdGV4dC1lZGl0b3IvcHJvc2VtaXJyb3IvbWVudS9tZW51LWNvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUt0RSxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJO0lBQ2xDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO0lBQ25ELElBQUksS0FBSyxFQUFFO1FBQ1AsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDM0Q7U0FBTTtRQUNILE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUNqRDtBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFDLEtBQWtCLEVBQUUsUUFBa0I7SUFDNUQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUM7SUFDcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDbkMsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLEVBQUU7WUFDdEQsT0FBTyxJQUFJLENBQUM7U0FDZjtLQUNKO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQztBQVFELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxPQUEyQjtJQUN6RCxPQUFPLENBQUMsSUFBZ0IsRUFBRSxFQUFFO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN2RSxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9DLE9BQU8sQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDMUMsT0FBTyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3RSxDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLEdBQUcsUUFBK0M7SUFDckYsTUFBTSxTQUFTLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNqRCxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQy9DLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztJQUN6RCxPQUFPLFNBQVMsQ0FBQztBQUNyQixDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHO0lBQ3BCLEtBQUssRUFBRSxFQUFFO0lBQ1QsS0FBSyxFQUFFLEVBQUU7Q0FDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbm90TnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAnQHZlbmR1cmUvY29tbW9uL2xpYi9zaGFyZWQtdXRpbHMnO1xyXG5pbXBvcnQgeyBOb2RlVHlwZSB9IGZyb20gJ3Byb3NlbWlycm9yLW1vZGVsJztcclxuaW1wb3J0IHsgRWRpdG9yU3RhdGUgfSBmcm9tICdwcm9zZW1pcnJvci1zdGF0ZSc7XHJcbmltcG9ydCB7IEVkaXRvclZpZXcgfSBmcm9tICdwcm9zZW1pcnJvci12aWV3JztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBtYXJrQWN0aXZlKHN0YXRlLCB0eXBlKSB7XHJcbiAgICBjb25zdCB7IGZyb20sICRmcm9tLCB0bywgZW1wdHkgfSA9IHN0YXRlLnNlbGVjdGlvbjtcclxuICAgIGlmIChlbXB0eSkge1xyXG4gICAgICAgIHJldHVybiB0eXBlLmlzSW5TZXQoc3RhdGUuc3RvcmVkTWFya3MgfHwgJGZyb20ubWFya3MoKSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBzdGF0ZS5kb2MucmFuZ2VIYXNNYXJrKGZyb20sIHRvLCB0eXBlKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNhbkluc2VydChzdGF0ZTogRWRpdG9yU3RhdGUsIG5vZGVUeXBlOiBOb2RlVHlwZSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgJGZyb20gPSBzdGF0ZS5zZWxlY3Rpb24uJGZyb207XHJcbiAgICBmb3IgKGxldCBkID0gJGZyb20uZGVwdGg7IGQgPj0gMDsgZC0tKSB7XHJcbiAgICAgICAgY29uc3QgaW5kZXggPSAkZnJvbS5pbmRleChkKTtcclxuICAgICAgICBpZiAoJGZyb20ubm9kZShkKS5jYW5SZXBsYWNlV2l0aChpbmRleCwgaW5kZXgsIG5vZGVUeXBlKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2xhcml0eUljb25PcHRpb25zIHtcclxuICAgIHNoYXBlOiBzdHJpbmc7XHJcbiAgICBzaXplPzogbnVtYmVyO1xyXG4gICAgbGFiZWw/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJDbGFyaXR5SWNvbihvcHRpb25zOiBDbGFyaXR5SWNvbk9wdGlvbnMpOiAodmlldzogRWRpdG9yVmlldykgPT4gSFRNTEVsZW1lbnQge1xyXG4gICAgcmV0dXJuICh2aWV3OiBFZGl0b3JWaWV3KSA9PiB7XHJcbiAgICAgICAgY29uc3QgaWNvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Nsci1pY29uJyk7XHJcbiAgICAgICAgaWNvbi5zZXRBdHRyaWJ1dGUoJ3NoYXBlJywgb3B0aW9ucy5zaGFwZSk7XHJcbiAgICAgICAgaWNvbi5zZXRBdHRyaWJ1dGUoJ3NpemUnLCAob3B0aW9ucy5zaXplID8/IEljb25TaXplLlNtYWxsKS50b1N0cmluZygpKTtcclxuICAgICAgICBjb25zdCBsYWJlbEVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xyXG4gICAgICAgIGxhYmVsRWwudGV4dENvbnRlbnQgPSBvcHRpb25zLmxhYmVsID8/ICcnO1xyXG4gICAgICAgIHJldHVybiB3cmFwSW5NZW51SXRlbVdpdGhJY29uKGljb24sIG9wdGlvbnMubGFiZWwgPyBsYWJlbEVsIDogdW5kZWZpbmVkKTtcclxuICAgIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB3cmFwSW5NZW51SXRlbVdpdGhJY29uKC4uLmVsZW1lbnRzOiBBcnJheTxIVE1MRWxlbWVudCB8IHVuZGVmaW5lZCB8IG51bGw+KSB7XHJcbiAgICBjb25zdCB3cmFwcGVyRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XHJcbiAgICB3cmFwcGVyRWwuY2xhc3NMaXN0LmFkZCgnbWVudS1pdGVtLXdpdGgtaWNvbicpO1xyXG4gICAgd3JhcHBlckVsLmFwcGVuZCguLi5lbGVtZW50cy5maWx0ZXIobm90TnVsbE9yVW5kZWZpbmVkKSk7XHJcbiAgICByZXR1cm4gd3JhcHBlckVsO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgSWNvblNpemUgPSB7XHJcbiAgICBMYXJnZTogMjIsXHJcbiAgICBTbWFsbDogMTYsXHJcbn07XHJcbiJdfQ==
@@ -0,0 +1,12 @@
1
+ import { menuBar } from 'prosemirror-menu';
2
+ import { ModalService } from '../../../../../providers/modal/modal.service';
3
+ import { buildMenuItems } from './menu';
4
+ export function customMenuPlugin(options) {
5
+ const modalService = options.injector.get(ModalService);
6
+ const pmMenuBarPlugin = menuBar({
7
+ floating: options.floatingMenu !== false,
8
+ content: buildMenuItems(options.schema, modalService).fullMenu,
9
+ });
10
+ return pmMenuBarPlugin;
11
+ }
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL3JpY2gtdGV4dC1lZGl0b3IvcHJvc2VtaXJyb3IvbWVudS9tZW51LXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRTVFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFReEMsTUFBTSxVQUFVLGdCQUFnQixDQUFDLE9BQWdDO0lBQzdELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3hELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQztRQUM1QixRQUFRLEVBQUUsT0FBTyxDQUFDLFlBQVksS0FBSyxLQUFLO1FBQ3hDLE9BQU8sRUFBRSxjQUFjLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxZQUFZLENBQUMsQ0FBQyxRQUFRO0tBQ2pFLENBQUMsQ0FBQztJQUNILE9BQU8sZUFBZSxDQUFDO0FBQzNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBtZW51QmFyIH0gZnJvbSAncHJvc2VtaXJyb3ItbWVudSc7XHJcbmltcG9ydCB7IFNjaGVtYSB9IGZyb20gJ3Byb3NlbWlycm9yLW1vZGVsJztcclxuaW1wb3J0IHsgRWRpdG9yU3RhdGUsIFBsdWdpbiB9IGZyb20gJ3Byb3NlbWlycm9yLXN0YXRlJztcclxuXHJcbmltcG9ydCB7IE1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3Byb3ZpZGVycy9tb2RhbC9tb2RhbC5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IGJ1aWxkTWVudUl0ZW1zIH0gZnJvbSAnLi9tZW51JztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tTWVudVBsdWdpbk9wdGlvbnMge1xyXG4gICAgZmxvYXRpbmdNZW51PzogYm9vbGVhbjtcclxuICAgIHNjaGVtYTogU2NoZW1hO1xyXG4gICAgaW5qZWN0b3I6IEluamVjdG9yO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3VzdG9tTWVudVBsdWdpbihvcHRpb25zOiBDdXN0b21NZW51UGx1Z2luT3B0aW9ucykge1xyXG4gICAgY29uc3QgbW9kYWxTZXJ2aWNlID0gb3B0aW9ucy5pbmplY3Rvci5nZXQoTW9kYWxTZXJ2aWNlKTtcclxuICAgIGNvbnN0IHBtTWVudUJhclBsdWdpbiA9IG1lbnVCYXIoe1xyXG4gICAgICAgIGZsb2F0aW5nOiBvcHRpb25zLmZsb2F0aW5nTWVudSAhPT0gZmFsc2UsXHJcbiAgICAgICAgY29udGVudDogYnVpbGRNZW51SXRlbXMob3B0aW9ucy5zY2hlbWEsIG1vZGFsU2VydmljZSkuZnVsbE1lbnUsXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBwbU1lbnVCYXJQbHVnaW47XHJcbn1cclxuIl19
@@ -1,14 +1,19 @@
1
1
  import { toggleMark } from 'prosemirror-commands';
2
- import { blockTypeItem, Dropdown, DropdownSubmenu, icons, joinUpItem, liftItem, MenuItem, redoItem, selectParentNodeItem, undoItem, wrapItem, } from 'prosemirror-menu';
2
+ import { redo, undo } from 'prosemirror-history';
3
+ import { blockTypeItem, Dropdown, icons, joinUpItem, liftItem, MenuItem, selectParentNodeItem, wrapItem, } from 'prosemirror-menu';
3
4
  import { wrapInList } from 'prosemirror-schema-list';
4
- import { insertImageItem } from './images';
5
+ import { insertImageItem } from '../plugins/image-plugin';
6
+ import { addTable } from '../plugins/tables-plugin';
5
7
  import { linkItem } from './links';
6
- import { canInsert, markActive } from './menu-common';
7
- // Helpers to create specific types of items
8
+ import { canInsert, IconSize, markActive, renderClarityIcon, wrapInMenuItemWithIcon } from './menu-common';
9
+ import { SubMenuWithIcon } from './sub-menu-with-icon';
8
10
  function cmdItem(cmd, options) {
9
11
  const passedOptions = {
10
12
  label: options.title,
11
13
  run: cmd,
14
+ render: options.iconShape
15
+ ? renderClarityIcon({ shape: options.iconShape, size: IconSize.Large })
16
+ : undefined,
12
17
  };
13
18
  // tslint:disable-next-line:forin
14
19
  for (const prop in options) {
@@ -98,10 +103,16 @@ export function buildMenuItems(schema, modalService) {
98
103
  let type;
99
104
  // tslint:disable:no-conditional-assignment
100
105
  if ((type = schema.marks.strong)) {
101
- r.toggleStrong = markItem(type, { title: 'Toggle strong style', icon: icons.strong });
106
+ r.toggleStrong = markItem(type, {
107
+ title: 'Toggle strong style',
108
+ iconShape: 'bold',
109
+ });
102
110
  }
103
111
  if ((type = schema.marks.em)) {
104
- r.toggleEm = markItem(type, { title: 'Toggle emphasis', icon: icons.em });
112
+ r.toggleEm = markItem(type, {
113
+ title: 'Toggle emphasis',
114
+ iconShape: 'italic',
115
+ });
105
116
  }
106
117
  if ((type = schema.marks.code)) {
107
118
  r.toggleCode = markItem(type, { title: 'Toggle code font', icon: icons.code });
@@ -115,31 +126,31 @@ export function buildMenuItems(schema, modalService) {
115
126
  if ((type = schema.nodes.bullet_list)) {
116
127
  r.wrapBulletList = wrapListItem(type, {
117
128
  title: 'Wrap in bullet list',
118
- icon: icons.bulletList,
129
+ iconShape: 'bullet-list',
119
130
  });
120
131
  }
121
132
  if ((type = schema.nodes.ordered_list)) {
122
133
  r.wrapOrderedList = wrapListItem(type, {
123
134
  title: 'Wrap in ordered list',
124
- icon: icons.orderedList,
135
+ iconShape: 'number-list',
125
136
  });
126
137
  }
127
138
  if ((type = schema.nodes.blockquote)) {
128
139
  r.wrapBlockQuote = wrapItem(type, {
129
140
  title: 'Wrap in block quote',
130
- icon: icons.blockquote,
141
+ render: renderClarityIcon({ shape: 'block-quote', size: IconSize.Large }),
131
142
  });
132
143
  }
133
144
  if ((type = schema.nodes.paragraph)) {
134
145
  r.makeParagraph = blockTypeItem(type, {
135
146
  title: 'Change to paragraph',
136
- label: 'Plain',
147
+ render: renderClarityIcon({ shape: 'text', label: 'Plain' }),
137
148
  });
138
149
  }
139
150
  if ((type = schema.nodes.code_block)) {
140
151
  r.makeCodeBlock = blockTypeItem(type, {
141
152
  title: 'Change to code block',
142
- label: 'Code',
153
+ render: renderClarityIcon({ shape: 'code', label: 'Code' }),
143
154
  });
144
155
  }
145
156
  if ((type = schema.nodes.heading)) {
@@ -155,9 +166,13 @@ export function buildMenuItems(schema, modalService) {
155
166
  const hr = type;
156
167
  r.insertHorizontalRule = new MenuItem({
157
168
  title: 'Insert horizontal rule',
158
- label: 'Horizontal rule',
159
- class: '',
160
- css: '',
169
+ render: view => {
170
+ const icon = document.createElement('div');
171
+ icon.classList.add('custom-icon', 'hr-icon');
172
+ const labelEl = document.createElement('span');
173
+ labelEl.textContent = 'Horizontal rule';
174
+ return wrapInMenuItemWithIcon(icon, labelEl);
175
+ },
161
176
  enable(state) {
162
177
  return canInsert(state, hr);
163
178
  },
@@ -167,12 +182,34 @@ export function buildMenuItems(schema, modalService) {
167
182
  });
168
183
  }
169
184
  const cut = (arr) => arr.filter(x => x);
170
- r.insertMenu = new Dropdown(cut([r.insertImage, r.insertHorizontalRule]), { label: 'Insert' });
185
+ r.insertMenu = new Dropdown(cut([
186
+ r.insertImage,
187
+ r.insertHorizontalRule,
188
+ new MenuItem({
189
+ run: (state, dispatch) => {
190
+ addTable(state, dispatch, {
191
+ rowsCount: 2,
192
+ colsCount: 2,
193
+ withHeaderRow: true,
194
+ cellContent: '',
195
+ });
196
+ },
197
+ render: renderClarityIcon({ shape: 'table', label: 'Table' }),
198
+ }),
199
+ ]), { label: 'Insert' });
171
200
  r.typeMenu = new Dropdown(cut([
172
201
  r.makeParagraph,
173
202
  r.makeCodeBlock,
174
203
  r.makeHead1 &&
175
- new DropdownSubmenu(cut([r.makeHead1, r.makeHead2, r.makeHead3, r.makeHead4, r.makeHead5, r.makeHead6]), { label: 'Heading' }),
204
+ new SubMenuWithIcon(cut([r.makeHead1, r.makeHead2, r.makeHead3, r.makeHead4, r.makeHead5, r.makeHead6]), {
205
+ label: 'Heading',
206
+ icon: () => {
207
+ const icon = document.createElement('div');
208
+ icon.textContent = 'H';
209
+ icon.classList.add('custom-icon', 'h-icon');
210
+ return icon;
211
+ },
212
+ }),
176
213
  ]), { label: 'Type...' });
177
214
  const inlineMenu = cut([r.toggleStrong, r.toggleEm, r.toggleLink]);
178
215
  r.inlineMenu = [inlineMenu];
@@ -186,7 +223,25 @@ export function buildMenuItems(schema, modalService) {
186
223
  selectParentNodeItem,
187
224
  ]),
188
225
  ];
189
- r.fullMenu = [inlineMenu].concat([[r.insertMenu, r.typeMenu]], [[undoItem, redoItem]], r.blockMenu);
226
+ const undoRedo = [
227
+ new MenuItem({
228
+ title: 'Undo last change',
229
+ run: undo,
230
+ enable(state) {
231
+ return undo(state);
232
+ },
233
+ render: renderClarityIcon({ shape: 'undo', size: IconSize.Large }),
234
+ }),
235
+ new MenuItem({
236
+ title: 'Redo last undone change',
237
+ run: redo,
238
+ enable(state) {
239
+ return redo(state);
240
+ },
241
+ render: renderClarityIcon({ shape: 'redo', size: IconSize.Large }),
242
+ }),
243
+ ];
244
+ r.fullMenu = [inlineMenu].concat([[r.insertMenu, r.typeMenu]], [undoRedo], r.blockMenu);
190
245
  return r;
191
246
  }
192
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvc2hhcmVkL2NvbXBvbmVudHMvcmljaC10ZXh0LWVkaXRvci9wcm9zZW1pcnJvci9tZW51L21lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFDSCxhQUFhLEVBQ2IsUUFBUSxFQUNSLGVBQWUsRUFDZixLQUFLLEVBQ0wsVUFBVSxFQUNWLFFBQVEsRUFDUixRQUFRLEVBQ1IsUUFBUSxFQUNSLG9CQUFvQixFQUNwQixRQUFRLEVBQ1IsUUFBUSxHQUNYLE1BQU0sa0JBQWtCLENBQUM7QUFFMUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBS3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDM0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNuQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV0RCw0Q0FBNEM7QUFFNUMsU0FBUyxPQUFPLENBQUMsR0FBNkIsRUFBRSxPQUE0QjtJQUN4RSxNQUFNLGFBQWEsR0FBRztRQUNsQixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7UUFDcEIsR0FBRyxFQUFFLEdBQUc7S0FDWCxDQUFDO0lBQ0YsaUNBQWlDO0lBQ2pDLEtBQUssTUFBTSxJQUFJLElBQUksT0FBTyxFQUFFO1FBQ3hCLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDdkM7SUFDRCxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO1FBQ2pFLGFB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dkIsQ0FBQztJQUVGLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNuRSxDQUFDLENBQUMsVUFBVSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDNUIsQ0FBQyxDQUFDLFNBQVMsR0FBRztRQUNWLEdBQUcsQ0FBQztZQUNBLENBQUMsQ0FBQyxjQUFjO1lBQ2hCLENBQUMsQ0FBQyxlQUFlO1lBQ2pCLENBQUMsQ0FBQyxjQUFjO1lBQ2hCLFVBQVU7WUFDVixRQUFRO1lBQ1Isb0JBQW9CO1NBQ3ZCLENBQUM7S0FDTCxDQUFDO0lBQ0YsQ0FBQyxDQUFDLFFBQVEsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRXBHLE9BQU8sQ0FBQyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRvZ2dsZU1hcmsgfSBmcm9tICdwcm9zZW1pcnJvci1jb21tYW5kcyc7XHJcbmltcG9ydCB7XHJcbiAgICBibG9ja1R5cGVJdGVtLFxyXG4gICAgRHJvcGRvd24sXHJcbiAgICBEcm9wZG93blN1Ym1lbnUsXHJcbiAgICBpY29ucyxcclxuICAgIGpvaW5VcEl0ZW0sXHJcbiAgICBsaWZ0SXRlbSxcclxuICAgIE1lbnVJdGVtLFxyXG4gICAgcmVkb0l0ZW0sXHJcbiAgICBzZWxlY3RQYXJlbnROb2RlSXRlbSxcclxuICAgIHVuZG9JdGVtLFxyXG4gICAgd3JhcEl0ZW0sXHJcbn0gZnJvbSAncHJvc2VtaXJyb3ItbWVudSc7XHJcbmltcG9ydCB7IE1hcmtUeXBlLCBOb2RlVHlwZSwgU2NoZW1hIH0gZnJvbSAncHJvc2VtaXJyb3ItbW9kZWwnO1xyXG5pbXBvcnQgeyB3cmFwSW5MaXN0IH0gZnJvbSAncHJvc2VtaXJyb3Itc2NoZW1hLWxpc3QnO1xyXG5pbXBvcnQgeyBFZGl0b3JTdGF0ZSB9IGZyb20gJ3Byb3NlbWlycm9yLXN0YXRlJztcclxuXHJcbmltcG9ydCB7IE1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3Byb3ZpZGVycy9tb2RhbC9tb2RhbC5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IGluc2VydEltYWdlSXRlbSB9IGZyb20gJy4vaW1hZ2VzJztcclxuaW1wb3J0IHsgbGlua0l0ZW0gfSBmcm9tICcuL2xpbmtzJztcclxuaW1wb3J0IHsgY2FuSW5zZXJ0LCBtYXJrQWN0aXZlIH0gZnJvbSAnLi9tZW51LWNvbW1vbic7XHJcblxyXG4vLyBIZWxwZXJzIHRvIGNyZWF0ZSBzcGVjaWZpYyB0eXBlcyBvZiBpdGVtc1xyXG5cclxuZnVuY3Rpb24gY21kSXRlbShjbWQ6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCwgb3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgY29uc3QgcGFzc2VkT3B0aW9ucyA9IHtcclxuICAgICAgICBsYWJlbDogb3B0aW9ucy50aXRsZSxcclxuICAgICAgICBydW46IGNtZCxcclxuICAgIH07XHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Zm9yaW5cclxuICAgIGZvciAoY29uc3QgcHJvcCBpbiBvcHRpb25zKSB7XHJcbiAgICAgICAgcGFzc2VkT3B0aW9uc1twcm9wXSA9IG9wdGlvbnNbcHJvcF07XHJcbiAgICB9XHJcbiAgICBpZiAoKCFvcHRpb25zLmVuYWJsZSB8fCBvcHRpb25zLmVuYWJsZSA9PT0gdHJ1ZSkgJiYgIW9wdGlvbnMuc2VsZWN0KSB7XHJcbiAgICAgICAgcGFzc2VkT3B0aW9uc1tvcHRpb25zLmVuYWJsZSA/ICdlbmFibGUnIDogJ3NlbGVjdCddID0gc3RhdGUgPT4gY21kKHN0YXRlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbmV3IE1lbnVJdGVtKHBhc3NlZE9wdGlvbnMgYXMgYW55KTtcclxufVxyXG5cclxuZnVuY3Rpb24gbWFya0l0ZW0obWFya1R5cGUsIG9wdGlvbnMpIHtcclxuICAgIGNvbnN0IHBhc3NlZE9wdGlvbnMgPSB7XHJcbiAgICAgICAgYWN0aXZlKHN0YXRlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBtYXJrQWN0aXZlKHN0YXRlLCBtYXJrVHlwZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlbmFibGU6IHRydWUsXHJcbiAgICB9O1xyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmZvcmluXHJcbiAgICBmb3IgKGNvbnN0IHByb3AgaW4gb3B0aW9ucykge1xyXG4gICAgICAgIHBhc3NlZE9wdGlvbnNbcHJvcF0gPSBvcHRpb25zW3Byb3BdO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNtZEl0ZW0odG9nZ2xlTWFyayhtYXJrVHlwZSksIHBhc3NlZE9wdGlvbnMpO1xyXG59XHJcblxyXG5mdW5jdGlvbiB3cmFwTGlzdEl0ZW0obm9kZVR5cGUsIG9wdGlvbnMpIHtcclxuICAgIHJldHVybiBjbWRJdGVtKHdyYXBJbkxpc3Qobm9kZVR5cGUsIG9wdGlvbnMuYXR0cnMpLCBvcHRpb25zKTtcclxufVxyXG5cclxuLy8gOjogKFNjaGVtYSkg4oaSIE9iamVjdFxyXG4vLyBHaXZlbiBhIHNjaGVtYSwgbG9vayBmb3IgZGVmYXVsdCBtYXJrIGFuZCBub2RlIHR5cGVzIGluIGl0IGFuZFxyXG4vLyByZXR1cm4gYW4gb2JqZWN0IHdpdGggcmVsZXZhbnQgbWVudSBpdGVtcyByZWxhdGluZyB0byB0aG9zZSBtYXJrczpcclxuLy9cclxuLy8gKipgdG9nZ2xlU3Ryb25nYCoqYDogTWVudUl0ZW1gXHJcbi8vICAgOiBBIG1lbnUgaXRlbSB0byB0b2dnbGUgdGhlIFtzdHJvbmcgbWFya10oI3NjaGVtYS1iYXNpYy5TdHJvbmdNYXJrKS5cclxuLy9cclxuLy8gKipgdG9nZ2xlRW1gKipgOiBNZW51SXRlbWBcclxuLy8gICA6IEEgbWVudSBpdGVtIHRvIHRvZ2dsZSB0aGUgW2VtcGhhc2lzIG1hcmtdKCNzY2hlbWEtYmFzaWMuRW1NYXJrKS5cclxuLy9cclxuLy8gKipgdG9nZ2xlQ29kZWAqKmA6IE1lbnVJdGVtYFxyXG4vLyAgIDogQSBtZW51IGl0ZW0gdG8gdG9nZ2xlIHRoZSBbY29kZSBmb250IG1hcmtdKCNzY2hlbWEtYmFzaWMuQ29kZU1hcmspLlxyXG4vL1xyXG4vLyAqKmB0b2dnbGVMaW5rYCoqYDogTWVudUl0ZW1gXHJcbi8vICAgOiBBIG1lbnUgaXRlbSB0byB0b2dnbGUgdGhlIFtsaW5rIG1hcmtdKCNzY2hlbWEtYmFzaWMuTGlua01hcmspLlxyXG4vL1xyXG4vLyAqKmBpbnNlcnRJbWFnZWAqKmA6IE1lbnVJdGVtYFxyXG4vLyAgIDogQSBtZW51IGl0ZW0gdG8gaW5zZXJ0IGFuIFtpbWFnZV0oI3NjaGVtYS1iYXNpYy5JbWFnZSkuXHJcbi8vXHJcbi8vICoqYHdyYXBCdWxsZXRMaXN0YCoqYDogTWVudUl0ZW1gXHJcbi8vICAgOiBBIG1lbnUgaXRlbSB0byB3cmFwIHRoZSBzZWxlY3Rpb24gaW4gYSBbYnVsbGV0IGxpc3RdKCNzY2hlbWEtbGlzdC5CdWxsZXRMaXN0KS5cclxuLy9cclxuLy8gKipgd3JhcE9yZGVyZWRMaXN0YCoqYDogTWVudUl0ZW1gXHJcbi8vICAgOiBBIG1lbnUgaXRlbSB0byB3cmFwIHRoZSBzZWxlY3Rpb24gaW4gYW4gW29yZGVyZWQgbGlzdF0oI3NjaGVtYS1saXN0Lk9yZGVyZWRMaXN0KS5cclxuLy9cclxuLy8gKipgd3JhcEJsb2NrUXVvdGVgKipgOiBNZW51SXRlbWBcclxuLy8gICA6IEEgbWVudSBpdGVtIHRvIHdyYXAgdGhlIHNlbGVjdGlvbiBpbiBhIFtibG9jayBxdW90ZV0oI3NjaGVtYS1iYXNpYy5CbG9ja1F1b3RlKS5cclxuLy9cclxuLy8gKipgbWFrZVBhcmFncmFwaGAqKmA6IE1lbnVJdGVtYFxyXG4vLyAgIDogQSBtZW51IGl0ZW0gdG8gc2V0IHRoZSBjdXJyZW50IHRleHRibG9jayB0byBiZSBhIG5vcm1hbFxyXG4vLyAgICAgW3BhcmFncmFwaF0oI3NjaGVtYS1iYXNpYy5QYXJhZ3JhcGgpLlxyXG4vL1xyXG4vLyAqKmBtYWtlQ29kZUJsb2NrYCoqYDogTWVudUl0ZW1gXHJcbi8vICAgOiBBIG1lbnUgaXRlbSB0byBzZXQgdGhlIGN1cnJlbnQgdGV4dGJsb2NrIHRvIGJlIGFcclxuLy8gICAgIFtjb2RlIGJsb2NrXSgjc2NoZW1hLWJhc2ljLkNvZGVCbG9jaykuXHJcbi8vXHJcbi8vICoqYG1ha2VIZWFkW05dYCoqYDogTWVudUl0ZW1gXHJcbi8vICAgOiBXaGVyZSBfTl8gaXMgMSB0byA2LiBNZW51IGl0ZW1zIHRvIHNldCB0aGUgY3VycmVudCB0ZXh0YmxvY2sgdG9cclxuLy8gICAgIGJlIGEgW2hlYWRpbmddKCNzY2hlbWEtYmFzaWMuSGVhZGluZykgb2YgbGV2ZWwgX05fLlxyXG4vL1xyXG4vLyAqKmBpbnNlcnRIb3Jpem9udGFsUnVsZWAqKmA6IE1lbnVJdGVtYFxyXG4vLyAgIDogQSBtZW51IGl0ZW0gdG8gaW5zZXJ0IGEgaG9yaXpvbnRhbCBydWxlLlxyXG4vL1xyXG4vLyBUaGUgcmV0dXJuIHZhbHVlIGFsc28gY29udGFpbnMgc29tZSBwcmVmYWJyaWNhdGVkIG1lbnUgZWxlbWVudHMgYW5kXHJcbi8vIG1lbnVzLCB0aGF0IHlvdSBjYW4gdXNlIGluc3RlYWQgb2YgY29tcG9zaW5nIHlvdXIgb3duIG1lbnUgZnJvbVxyXG4vLyBzY3JhdGNoOlxyXG4vL1xyXG4vLyAqKmBpbnNlcnRNZW51YCoqYDogRHJvcGRvd25gXHJcbi8vICAgOiBBIGRyb3Bkb3duIGNvbnRhaW5pbmcgdGhlIGBpbnNlcnRJbWFnZWAgYW5kXHJcbi8vICAgICBgaW5zZXJ0SG9yaXpvbnRhbFJ1bGVgIGl0ZW1zLlxyXG4vL1xyXG4vLyAqKmB0eXBlTWVudWAqKmA6IERyb3Bkb3duYFxyXG4vLyAgIDogQSBkcm9wZG93biBjb250YWluaW5nIHRoZSBpdGVtcyBmb3IgbWFraW5nIHRoZSBjdXJyZW50XHJcbi8vICAgICB0ZXh0YmxvY2sgYSBwYXJhZ3JhcGgsIGNvZGUgYmxvY2ssIG9yIGhlYWRpbmcuXHJcbi8vXHJcbi8vICoqYGZ1bGxNZW51YCoqYDogW1tNZW51RWxlbWVudF1dYFxyXG4vLyAgIDogQW4gYXJyYXkgb2YgYXJyYXlzIG9mIG1lbnUgZWxlbWVudHMgZm9yIHVzZSBhcyB0aGUgZnVsbCBtZW51XHJcbi8vICAgICBmb3IsIGZvciBleGFtcGxlIHRoZSBbbWVudSBiYXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9zZW1pcnJvci9wcm9zZW1pcnJvci1tZW51I3VzZXItY29udGVudC1tZW51YmFyKS5cclxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkTWVudUl0ZW1zKHNjaGVtYTogU2NoZW1hLCBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSkge1xyXG4gICAgY29uc3QgcjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG4gICAgbGV0IHR5cGU6IE1hcmtUeXBlIHwgTm9kZVR5cGU7XHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZTpuby1jb25kaXRpb25hbC1hc3NpZ25tZW50XHJcbiAgICBpZiAoKHR5cGUgPSBzY2hlbWEubWFya3Muc3Ryb25nKSkge1xyXG4gICAgICAgIHIudG9nZ2xlU3Ryb25nID0gbWFya0l0ZW0odHlwZSwgeyB0aXRsZTogJ1RvZ2dsZSBzdHJvbmcgc3R5bGUnLCBpY29uOiBpY29ucy5zdHJvbmcgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoKHR5cGUgPSBzY2hlbWEubWFya3MuZW0pKSB7XHJcbiAgICAgICAgci50b2dnbGVFbSA9IG1hcmtJdGVtKHR5cGUsIHsgdGl0bGU6ICdUb2dnbGUgZW1waGFzaXMnLCBpY29uOiBpY29ucy5lbSB9KTtcclxuICAgIH1cclxuICAgIGlmICgodHlwZSA9IHNjaGVtYS5tYXJrcy5jb2RlKSkge1xyXG4gICAgICAgIHIudG9nZ2xlQ29kZSA9IG1hcmtJdGVtKHR5cGUsIHsgdGl0bGU6ICdUb2dnbGUgY29kZSBmb250JywgaWNvbjogaWNvbnMuY29kZSB9KTtcclxuICAgIH1cclxuICAgIGlmICgodHlwZSA9IHNjaGVtYS5tYXJrcy5saW5rKSkge1xyXG4gICAgICAgIHIudG9nZ2xlTGluayA9IGxpbmtJdGVtKHR5cGUsIG1vZGFsU2VydmljZSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCh0eXBlID0gc2NoZW1hLm5vZGVzLmltYWdlKSkge1xyXG4gICAgICAgIHIuaW5zZXJ0SW1hZ2UgPSBpbnNlcnRJbWFnZUl0ZW0odHlwZSwgbW9kYWxTZXJ2aWNlKTtcclxuICAgIH1cclxuICAgIGlmICgodHlwZSA9IHNjaGVtYS5ub2Rlcy5idWxsZXRfbGlzdCkpIHtcclxuICAgICAgICByLndyYXBCdWxsZXRMaXN0ID0gd3JhcExpc3RJdGVtKHR5cGUsIHtcclxuICAgICAgICAgICAgdGl0bGU6ICdXcmFwIGluIGJ1bGxldCBsaXN0JyxcclxuICAgICAgICAgICAgaWNvbjogaWNvbnMuYnVsbGV0TGlzdCxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICgodHlwZSA9IHNjaGVtYS5ub2Rlcy5vcmRlcmVkX2xpc3QpKSB7XHJcbiAgICAgICAgci53cmFwT3JkZXJlZExpc3QgPSB3cmFwTGlzdEl0ZW0odHlwZSwge1xyXG4gICAgICAgICAgICB0aXRsZTogJ1dyYXAgaW4gb3JkZXJlZCBsaXN0JyxcclxuICAgICAgICAgICAgaWNvbjogaWNvbnMub3JkZXJlZExpc3QsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoKHR5cGUgPSBzY2hlbWEubm9kZXMuYmxvY2txdW90ZSkpIHtcclxuICAgICAgICByLndyYXBCbG9ja1F1b3RlID0gd3JhcEl0ZW0odHlwZSwge1xyXG4gICAgICAgICAgICB0aXRsZTogJ1dyYXAgaW4gYmxvY2sgcXVvdGUnLFxyXG4gICAgICAgICAgICBpY29uOiBpY29ucy5ibG9ja3F1b3RlLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKCh0eXBlID0gc2NoZW1hLm5vZGVzLnBhcmFncmFwaCkpIHtcclxuICAgICAgICByLm1ha2VQYXJhZ3JhcGggPSBibG9ja1R5cGVJdGVtKHR5cGUsIHtcclxuICAgICAgICAgICAgdGl0bGU6ICdDaGFuZ2UgdG8gcGFyYWdyYXBoJyxcclxuICAgICAgICAgICAgbGFiZWw6ICdQbGFpbicsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoKHR5cGUgPSBzY2hlbWEubm9kZXMuY29kZV9ibG9jaykpIHtcclxuICAgICAgICByLm1ha2VDb2RlQmxvY2sgPSBibG9ja1R5cGVJdGVtKHR5cGUsIHtcclxuICAgICAgICAgICAgdGl0bGU6ICdDaGFuZ2UgdG8gY29kZSBibG9jaycsXHJcbiAgICAgICAgICAgIGxhYmVsOiAnQ29kZScsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoKHR5cGUgPSBzY2hlbWEubm9kZXMuaGVhZGluZykpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSAxMDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHJbJ21ha2VIZWFkJyArIGldID0gYmxvY2tUeXBlSXRlbSh0eXBlLCB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogJ0NoYW5nZSB0byBoZWFkaW5nICcgKyBpLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdMZXZlbCAnICsgaSxcclxuICAgICAgICAgICAgICAgIGF0dHJzOiB7IGxldmVsOiBpIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICgodHlwZSA9IHNjaGVtYS5ub2Rlcy5ob3Jpem9udGFsX3J1bGUpKSB7XHJcbiAgICAgICAgY29uc3QgaHIgPSB0eXBlO1xyXG4gICAgICAgIHIuaW5zZXJ0SG9yaXpvbnRhbFJ1bGUgPSBuZXcgTWVudUl0ZW0oe1xyXG4gICAgICAgICAgICB0aXRsZTogJ0luc2VydCBob3Jpem9udGFsIHJ1bGUnLFxyXG4gICAgICAgICAgICBsYWJlbDogJ0hvcml6b250YWwgcnVsZScsXHJcbiAgICAgICAgICAgIGNsYXNzOiAnJyxcclxuICAgICAgICAgICAgY3NzOiAnJyxcclxuICAgICAgICAgICAgZW5hYmxlKHN0YXRlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2FuSW5zZXJ0KHN0YXRlLCBocik7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHJ1bihzdGF0ZTogRWRpdG9yU3RhdGUsIGRpc3BhdGNoKSB7XHJcbiAgICAgICAgICAgICAgICBkaXNwYXRjaChzdGF0ZS50ci5yZXBsYWNlU2VsZWN0aW9uV2l0aChoci5jcmVhdGUoKSkpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGN1dCA9IDxUPihhcnI6IFRbXSk6IFRbXSA9PiBhcnIuZmlsdGVyKHggPT4geCk7XHJcbiAgICByLmluc2VydE1lbnUgPSBuZXcgRHJvcGRvd24oY3V0KFtyLmluc2VydEltYWdlLCByLmluc2VydEhvcml6b250YWxSdWxlXSksIHsgbGFiZWw6ICdJbnNlcnQnIH0pO1xyXG4gICAgci50eXBlTWVudSA9IG5ldyBEcm9wZG93bihcclxuICAgICAgICBjdXQoW1xyXG4gICAgICAgICAgICByLm1ha2VQYXJhZ3JhcGgsXHJcbiAgICAgICAgICAgIHIubWFrZUNvZGVCbG9jayxcclxuICAgICAgICAgICAgci5tYWtlSGVhZDEgJiZcclxuICAgICAgICAgICAgICAgIG5ldyBEcm9wZG93blN1Ym1lbnUoXHJcbiAgICAgICAgICAgICAgICAgICAgY3V0KFtyLm1ha2VIZWFkMSwgci5tYWtlSGVhZDIsIHIubWFrZUhlYWQzLCByLm1ha2VIZWFkNCwgci5tYWtlSGVhZDUsIHIubWFrZUhlYWQ2XSksXHJcbiAgICAgICAgICAgICAgICAgICAgeyBsYWJlbDogJ0hlYWRpbmcnIH0sXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgIF0pLFxyXG4gICAgICAgIHsgbGFiZWw6ICdUeXBlLi4uJyB9LFxyXG4gICAgKTtcclxuXHJcbiAgICBjb25zdCBpbmxpbmVNZW51ID0gY3V0KFtyLnRvZ2dsZVN0cm9uZywgci50b2dnbGVFbSwgci50b2dnbGVMaW5rXSk7XHJcbiAgICByLmlubGluZU1lbnUgPSBbaW5saW5lTWVudV07XHJcbiAgICByLmJsb2NrTWVudSA9IFtcclxuICAgICAgICBjdXQoW1xyXG4gICAgICAgICAgICByLndyYXBCdWxsZXRMaXN0LFxyXG4gICAgICAgICAgICByLndyYXBPcmRlcmVkTGlzdCxcclxuICAgICAgICAgICAgci53cmFwQmxvY2tRdW90ZSxcclxuICAgICAgICAgICAgam9pblVwSXRlbSxcclxuICAgICAgICAgICAgbGlmdEl0ZW0sXHJcbiAgICAgICAgICAgIHNlbGVjdFBhcmVudE5vZGVJdGVtLFxyXG4gICAgICAgIF0pLFxyXG4gICAgXTtcclxuICAgIHIuZnVsbE1lbnUgPSBbaW5saW5lTWVudV0uY29uY2F0KFtbci5pbnNlcnRNZW51LCByLnR5cGVNZW51XV0sIFtbdW5kb0l0ZW0sIHJlZG9JdGVtXV0sIHIuYmxvY2tNZW51KTtcclxuXHJcbiAgICByZXR1cm4gcjtcclxufVxyXG4iXX0=
247
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvc2hhcmVkL2NvbXBvbmVudHMvcmljaC10ZXh0LWVkaXRvci9wcm9zZW1pcnJvci9tZW51L21lbnUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUNILGFBQWEsRUFDYixRQUFRLEVBQ1IsS0FBSyxFQUNMLFVBQVUsRUFDVixRQUFRLEVBQ1IsUUFBUSxFQUNSLG9CQUFvQixFQUNwQixRQUFRLEdBQ1gsTUFBTSxrQkFBa0IsQ0FBQztBQUUxQixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFJckQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFNdkQsU0FBUyxPQUFPLENBQUMsR0FBNkIsRUFBRSxPQUF1QjtJQUNuRSxNQUFNLGFBQWEsR0FBRztRQUNsQixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7UUFDcEIsR0FBRyxFQUFFLEdBQUc7UUFDUixNQUFNLEVBQUUsT0FBTyxDQUFDLFNBQVM7WUFDckIsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFB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QUUsSUFBSTtZQUNULE1BQU0sQ0FBQyxLQUFLO2dCQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZCLENBQUM7WUFDRCxNQUFNLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDckUsQ0FBQztLQUNMLENBQUM7SUFDRixDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRXhGLE9BQU8sQ0FBQyxDQUFDO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRvZ2dsZU1hcmsgfSBmcm9tICdwcm9zZW1pcnJvci1jb21tYW5kcyc7XHJcbmltcG9ydCB7IHJlZG8sIHVuZG8gfSBmcm9tICdwcm9zZW1pcnJvci1oaXN0b3J5JztcclxuaW1wb3J0IHtcclxuICAgIGJsb2NrVHlwZUl0ZW0sXHJcbiAgICBEcm9wZG93bixcclxuICAgIGljb25zLFxyXG4gICAgam9pblVwSXRlbSxcclxuICAgIGxpZnRJdGVtLFxyXG4gICAgTWVudUl0ZW0sXHJcbiAgICBzZWxlY3RQYXJlbnROb2RlSXRlbSxcclxuICAgIHdyYXBJdGVtLFxyXG59IGZyb20gJ3Byb3NlbWlycm9yLW1lbnUnO1xyXG5pbXBvcnQgeyBNYXJrVHlwZSwgTm9kZVR5cGUsIFNjaGVtYSB9IGZyb20gJ3Byb3NlbWlycm9yLW1vZGVsJztcclxuaW1wb3J0IHsgd3JhcEluTGlzdCB9IGZyb20gJ3Byb3NlbWlycm9yLXNjaGVtYS1saXN0JztcclxuaW1wb3J0IHsgRWRpdG9yU3RhdGUgfSBmcm9tICdwcm9zZW1pcnJvci1zdGF0ZSc7XHJcblxyXG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9wcm92aWRlcnMvbW9kYWwvbW9kYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IGluc2VydEltYWdlSXRlbSB9IGZyb20gJy4uL3BsdWdpbnMvaW1hZ2UtcGx1Z2luJztcclxuaW1wb3J0IHsgYWRkVGFibGUgfSBmcm9tICcuLi9wbHVnaW5zL3RhYmxlcy1wbHVnaW4nO1xyXG5cclxuaW1wb3J0IHsgbGlua0l0ZW0gfSBmcm9tICcuL2xpbmtzJztcclxuaW1wb3J0IHsgY2FuSW5zZXJ0LCBJY29uU2l6ZSwgbWFya0FjdGl2ZSwgcmVuZGVyQ2xhcml0eUljb24sIHdyYXBJbk1lbnVJdGVtV2l0aEljb24gfSBmcm9tICcuL21lbnUtY29tbW9uJztcclxuaW1wb3J0IHsgU3ViTWVudVdpdGhJY29uIH0gZnJvbSAnLi9zdWItbWVudS13aXRoLWljb24nO1xyXG5cclxuLy8gSGVscGVycyB0byBjcmVhdGUgc3BlY2lmaWMgdHlwZXMgb2YgaXRlbXNcclxuXHJcbnR5cGUgQ21kSXRlbU9wdGlvbnMgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+ICYgeyBpY29uU2hhcGU/OiBzdHJpbmcgfTtcclxuXHJcbmZ1bmN0aW9uIGNtZEl0ZW0oY21kOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQsIG9wdGlvbnM6IENtZEl0ZW1PcHRpb25zKSB7XHJcbiAgICBjb25zdCBwYXNzZWRPcHRpb25zID0ge1xyXG4gICAgICAgIGxhYmVsOiBvcHRpb25zLnRpdGxlLFxyXG4gICAgICAgIHJ1bjogY21kLFxyXG4gICAgICAgIHJlbmRlcjogb3B0aW9ucy5pY29uU2hhcGVcclxuICAgICAgICAgICAgPyByZW5kZXJDbGFyaXR5SWNvbih7IHNoYXBlOiBvcHRpb25zLmljb25TaGFwZSwgc2l6ZTogSWNvblNpemUuTGFyZ2UgfSlcclxuICAgICAgICAgICAgOiB1bmRlZmluZWQsXHJcbiAgICB9O1xyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmZvcmluXHJcbiAgICBmb3IgKGNvbnN0IHByb3AgaW4gb3B0aW9ucykge1xyXG4gICAgICAgIHBhc3NlZE9wdGlvbnNbcHJvcF0gPSBvcHRpb25zW3Byb3BdO1xyXG4gICAgfVxyXG4gICAgaWYgKCghb3B0aW9ucy5lbmFibGUgfHwgb3B0aW9ucy5lbmFibGUgPT09IHRydWUpICYmICFvcHRpb25zLnNlbGVjdCkge1xyXG4gICAgICAgIHBhc3NlZE9wdGlvbnNbb3B0aW9ucy5lbmFibGUgPyAnZW5hYmxlJyA6ICdzZWxlY3QnXSA9IHN0YXRlID0+IGNtZChzdGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5ldyBNZW51SXRlbShwYXNzZWRPcHRpb25zIGFzIGFueSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG1hcmtJdGVtKG1hcmtUeXBlLCBvcHRpb25zOiBDbWRJdGVtT3B0aW9ucykge1xyXG4gICAgY29uc3QgcGFzc2VkT3B0aW9ucyA9IHtcclxuICAgICAgICBhY3RpdmUoc3RhdGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1hcmtBY3RpdmUoc3RhdGUsIG1hcmtUeXBlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVuYWJsZTogdHJ1ZSxcclxuICAgIH07XHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Zm9yaW5cclxuICAgIGZvciAoY29uc3QgcHJvcCBpbiBvcHRpb25zKSB7XHJcbiAgICAgICAgcGFzc2VkT3B0aW9uc1twcm9wXSA9IG9wdGlvbnNbcHJvcF07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY21kSXRlbSh0b2dnbGVNYXJrKG1hcmtUeXBlKSwgcGFzc2VkT3B0aW9ucyk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHdyYXBMaXN0SXRlbShub2RlVHlwZSwgb3B0aW9uczogQ21kSXRlbU9wdGlvbnMpIHtcclxuICAgIHJldHVybiBjbWRJdGVtKHdyYXBJbkxpc3Qobm9kZVR5cGUsIG9wdGlvbnMuYXR0cnMpLCBvcHRpb25zKTtcclxufVxyXG5cclxuLy8gOjogKFNjaGVtYSkg4oaSIE9iamVjdFxyXG4vLyBHaXZlbiBhIHNjaGVtYSwgbG9vayBmb3IgZGVmYXVsdCBtYXJrIGFuZCBub2RlIHR5cGVzIGluIGl0IGFuZFxyXG4vLyByZXR1cm4gYW4gb2JqZWN0IHdpdGggcmVsZXZhbnQgbWVudSBpdGVtcyByZWxhdGluZyB0byB0aG9zZSBtYXJrczpcclxuLy9cclxuLy8gKipgdG9nZ2xlU3Ryb25nYCoqYDogTWVudUl0ZW1gXHJcbi8vICAgOiBBIG1lbnUgaXRlbSB0byB0b2dnbGUgdGhlIFtzdHJvbmcgbWFya10oI3NjaGVtYS1iYXNpYy5TdHJvbmdNYXJrKS5cclxuLy9cclxuLy8gKipgdG9nZ2xlRW1gKipgOiBNZW51SXRlbWBcclxuLy8gICA6IEEgbWVudSBpdGVtIHRvIHRvZ2dsZSB0aGUgW2VtcGhhc2lzIG1hcmtdKCNzY2hlbWEtYmFzaWMuRW1NYXJrKS5cclxuLy9cclxuLy8gKipgdG9nZ2xlQ29kZWAqKmA6IE1lbnVJdGVtYFxyXG4vLyAgIDogQSBtZW51IGl0ZW0gdG8gdG9nZ2xlIHRoZSBbY29kZSBmb250IG1hcmtdKCNzY2hlbWEtYmFzaWMuQ29kZU1hcmspLlxyXG4vL1xyXG4vLyAqKmB0b2dnbGVMaW5rYCoqYDogTWVudUl0ZW1gXHJcbi8vICAgOiBBIG1lbnUgaXRlbSB0byB0b2dnbGUgdGhlIFtsaW5rIG1hcmtdKCNzY2hlbWEtYmFzaWMuTGlua01hcmspLlxyXG4vL1xyXG4vLyAqKmBpbnNlcnRJbWFnZWAqKmA6IE1lbnVJdGVtYFxyXG4vLyAgIDogQSBtZW51IGl0ZW0gdG8gaW5zZXJ0IGFuIFtpbWFnZV0oI3NjaGVtYS1iYXNpYy5JbWFnZSkuXHJcbi8vXHJcbi8vICoqYHdyYXBCdWxsZXRMaXN0YCoqYDogTWVudUl0ZW1gXHJcbi8vICAgOiBBIG1lbnUgaXRlbSB0byB3cmFwIHRoZSBzZWxlY3Rpb24gaW4gYSBbYnVsbGV0IGxpc3RdKCNzY2hlbWEtbGlzdC5CdWxsZXRMaXN0KS5cclxuLy9cclxuLy8gKipgd3JhcE9yZGVyZWRMaXN0YCoqYDogTWVudUl0ZW1gXHJcbi8vICAgOiBBIG1lbnUgaXRlbSB0byB3cmFwIHRoZSBzZWxlY3Rpb24gaW4gYW4gW29yZGVyZWQgbGlzdF0oI3NjaGVtYS1saXN0Lk9yZGVyZWRMaXN0KS5cclxuLy9cclxuLy8gKipgd3JhcEJsb2NrUXVvdGVgKipgOiBNZW51SXRlbWBcclxuLy8gICA6IEEgbWVudSBpdGVtIHRvIHdyYXAgdGhlIHNlbGVjdGlvbiBpbiBhIFtibG9jayBxdW90ZV0oI3NjaGVtYS1iYXNpYy5CbG9ja1F1b3RlKS5cclxuLy9cclxuLy8gKipgbWFrZVBhcmFncmFwaGAqKmA6IE1lbnVJdGVtYFxyXG4vLyAgIDogQSBtZW51IGl0ZW0gdG8gc2V0IHRoZSBjdXJyZW50IHRleHRibG9jayB0byBiZSBhIG5vcm1hbFxyXG4vLyAgICAgW3BhcmFncmFwaF0oI3NjaGVtYS1iYXNpYy5QYXJhZ3JhcGgpLlxyXG4vL1xyXG4vLyAqKmBtYWtlQ29kZUJsb2NrYCoqYDogTWVudUl0ZW1gXHJcbi8vICAgOiBBIG1lbnUgaXRlbSB0byBzZXQgdGhlIGN1cnJlbnQgdGV4dGJsb2NrIHRvIGJlIGFcclxuLy8gICAgIFtjb2RlIGJsb2NrXSgjc2NoZW1hLWJhc2ljLkNvZGVCbG9jaykuXHJcbi8vXHJcbi8vICoqYG1ha2VIZWFkW05dYCoqYDogTWVudUl0ZW1gXHJcbi8vICAgOiBXaGVyZSBfTl8gaXMgMSB0byA2LiBNZW51IGl0ZW1zIHRvIHNldCB0aGUgY3VycmVudCB0ZXh0YmxvY2sgdG9cclxuLy8gICAgIGJlIGEgW2hlYWRpbmddKCNzY2hlbWEtYmFzaWMuSGVhZGluZykgb2YgbGV2ZWwgX05fLlxyXG4vL1xyXG4vLyAqKmBpbnNlcnRIb3Jpem9udGFsUnVsZWAqKmA6IE1lbnVJdGVtYFxyXG4vLyAgIDogQSBtZW51IGl0ZW0gdG8gaW5zZXJ0IGEgaG9yaXpvbnRhbCBydWxlLlxyXG4vL1xyXG4vLyBUaGUgcmV0dXJuIHZhbHVlIGFsc28gY29udGFpbnMgc29tZSBwcmVmYWJyaWNhdGVkIG1lbnUgZWxlbWVudHMgYW5kXHJcbi8vIG1lbnVzLCB0aGF0IHlvdSBjYW4gdXNlIGluc3RlYWQgb2YgY29tcG9zaW5nIHlvdXIgb3duIG1lbnUgZnJvbVxyXG4vLyBzY3JhdGNoOlxyXG4vL1xyXG4vLyAqKmBpbnNlcnRNZW51YCoqYDogRHJvcGRvd25gXHJcbi8vICAgOiBBIGRyb3Bkb3duIGNvbnRhaW5pbmcgdGhlIGBpbnNlcnRJbWFnZWAgYW5kXHJcbi8vICAgICBgaW5zZXJ0SG9yaXpvbnRhbFJ1bGVgIGl0ZW1zLlxyXG4vL1xyXG4vLyAqKmB0eXBlTWVudWAqKmA6IERyb3Bkb3duYFxyXG4vLyAgIDogQSBkcm9wZG93biBjb250YWluaW5nIHRoZSBpdGVtcyBmb3IgbWFraW5nIHRoZSBjdXJyZW50XHJcbi8vICAgICB0ZXh0YmxvY2sgYSBwYXJhZ3JhcGgsIGNvZGUgYmxvY2ssIG9yIGhlYWRpbmcuXHJcbi8vXHJcbi8vICoqYGZ1bGxNZW51YCoqYDogW1tNZW51RWxlbWVudF1dYFxyXG4vLyAgIDogQW4gYXJyYXkgb2YgYXJyYXlzIG9mIG1lbnUgZWxlbWVudHMgZm9yIHVzZSBhcyB0aGUgZnVsbCBtZW51XHJcbi8vICAgICBmb3IsIGZvciBleGFtcGxlIHRoZSBbbWVudSBiYXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9zZW1pcnJvci9wcm9zZW1pcnJvci1tZW51I3VzZXItY29udGVudC1tZW51YmFyKS5cclxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkTWVudUl0ZW1zKHNjaGVtYTogU2NoZW1hLCBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSkge1xyXG4gICAgY29uc3QgcjogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xyXG4gICAgbGV0IHR5cGU6IE1hcmtUeXBlIHwgTm9kZVR5cGU7XHJcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZTpuby1jb25kaXRpb25hbC1hc3NpZ25tZW50XHJcbiAgICBpZiAoKHR5cGUgPSBzY2hlbWEubWFya3Muc3Ryb25nKSkge1xyXG4gICAgICAgIHIudG9nZ2xlU3Ryb25nID0gbWFya0l0ZW0odHlwZSwge1xyXG4gICAgICAgICAgICB0aXRsZTogJ1RvZ2dsZSBzdHJvbmcgc3R5bGUnLFxyXG4gICAgICAgICAgICBpY29uU2hhcGU6ICdib2xkJyxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICgodHlwZSA9IHNjaGVtYS5tYXJrcy5lbSkpIHtcclxuICAgICAgICByLnRvZ2dsZUVtID0gbWFya0l0ZW0odHlwZSwge1xyXG4gICAgICAgICAgICB0aXRsZTogJ1RvZ2dsZSBlbXBoYXNpcycsXHJcbiAgICAgICAgICAgIGljb25TaGFwZTogJ2l0YWxpYycsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoKHR5cGUgPSBzY2hlbWEubWFya3MuY29kZSkpIHtcclxuICAgICAgICByLnRvZ2dsZUNvZGUgPSBtYXJrSXRlbSh0eXBlLCB7IHRpdGxlOiAnVG9nZ2xlIGNvZGUgZm9udCcsIGljb246IGljb25zLmNvZGUgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoKHR5cGUgPSBzY2hlbWEubWFya3MubGluaykpIHtcclxuICAgICAgICByLnRvZ2dsZUxpbmsgPSBsaW5rSXRlbSh0eXBlLCBtb2RhbFNlcnZpY2UpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICgodHlwZSA9IHNjaGVtYS5ub2Rlcy5pbWFnZSkpIHtcclxuICAgICAgICByLmluc2VydEltYWdlID0gaW5zZXJ0SW1hZ2VJdGVtKHR5cGUsIG1vZGFsU2VydmljZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoKHR5cGUgPSBzY2hlbWEubm9kZXMuYnVsbGV0X2xpc3QpKSB7XHJcbiAgICAgICAgci53cmFwQnVsbGV0TGlzdCA9IHdyYXBMaXN0SXRlbSh0eXBlLCB7XHJcbiAgICAgICAgICAgIHRpdGxlOiAnV3JhcCBpbiBidWxsZXQgbGlzdCcsXHJcbiAgICAgICAgICAgIGljb25TaGFwZTogJ2J1bGxldC1saXN0JyxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICgodHlwZSA9IHNjaGVtYS5ub2Rlcy5vcmRlcmVkX2xpc3QpKSB7XHJcbiAgICAgICAgci53cmFwT3JkZXJlZExpc3QgPSB3cmFwTGlzdEl0ZW0odHlwZSwge1xyXG4gICAgICAgICAgICB0aXRsZTogJ1dyYXAgaW4gb3JkZXJlZCBsaXN0JyxcclxuICAgICAgICAgICAgaWNvblNoYXBlOiAnbnVtYmVyLWxpc3QnLFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKCh0eXBlID0gc2NoZW1hLm5vZGVzLmJsb2NrcXVvdGUpKSB7XHJcbiAgICAgICAgci53cmFwQmxvY2tRdW90ZSA9IHdyYXBJdGVtKHR5cGUsIHtcclxuICAgICAgICAgICAgdGl0bGU6ICdXcmFwIGluIGJsb2NrIHF1b3RlJyxcclxuICAgICAgICAgICAgcmVuZGVyOiByZW5kZXJDbGFyaXR5SWNvbih7IHNoYXBlOiAnYmxvY2stcXVvdGUnLCBzaXplOiBJY29uU2l6ZS5MYXJnZSB9KSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICgodHlwZSA9IHNjaGVtYS5ub2Rlcy5wYXJhZ3JhcGgpKSB7XHJcbiAgICAgICAgci5tYWtlUGFyYWdyYXBoID0gYmxvY2tUeXBlSXRlbSh0eXBlLCB7XHJcbiAgICAgICAgICAgIHRpdGxlOiAnQ2hhbmdlIHRvIHBhcmFncmFwaCcsXHJcbiAgICAgICAgICAgIHJlbmRlcjogcmVuZGVyQ2xhcml0eUljb24oeyBzaGFwZTogJ3RleHQnLCBsYWJlbDogJ1BsYWluJyB9KSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICgodHlwZSA9IHNjaGVtYS5ub2Rlcy5jb2RlX2Jsb2NrKSkge1xyXG4gICAgICAgIHIubWFrZUNvZGVCbG9jayA9IGJsb2NrVHlwZUl0ZW0odHlwZSwge1xyXG4gICAgICAgICAgICB0aXRsZTogJ0NoYW5nZSB0byBjb2RlIGJsb2NrJyxcclxuICAgICAgICAgICAgcmVuZGVyOiByZW5kZXJDbGFyaXR5SWNvbih7IHNoYXBlOiAnY29kZScsIGxhYmVsOiAnQ29kZScgfSksXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoKHR5cGUgPSBzY2hlbWEubm9kZXMuaGVhZGluZykpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSAxMDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHJbJ21ha2VIZWFkJyArIGldID0gYmxvY2tUeXBlSXRlbSh0eXBlLCB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZTogJ0NoYW5nZSB0byBoZWFkaW5nICcgKyBpLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6ICdMZXZlbCAnICsgaSxcclxuICAgICAgICAgICAgICAgIGF0dHJzOiB7IGxldmVsOiBpIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICgodHlwZSA9IHNjaGVtYS5ub2Rlcy5ob3Jpem9udGFsX3J1bGUpKSB7XHJcbiAgICAgICAgY29uc3QgaHIgPSB0eXBlO1xyXG4gICAgICAgIHIuaW5zZXJ0SG9yaXpvbnRhbFJ1bGUgPSBuZXcgTWVudUl0ZW0oe1xyXG4gICAgICAgICAgICB0aXRsZTogJ0luc2VydCBob3Jpem9udGFsIHJ1bGUnLFxyXG4gICAgICAgICAgICByZW5kZXI6IHZpZXcgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaWNvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgICAgICAgICAgaWNvbi5jbGFzc0xpc3QuYWRkKCdjdXN0b20taWNvbicsICdoci1pY29uJyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsYWJlbEVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xyXG4gICAgICAgICAgICAgICAgbGFiZWxFbC50ZXh0Q29udGVudCA9ICdIb3Jpem9udGFsIHJ1bGUnO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHdyYXBJbk1lbnVJdGVtV2l0aEljb24oaWNvbiwgbGFiZWxFbCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVuYWJsZShzdGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNhbkluc2VydChzdGF0ZSwgaHIpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBydW4oc3RhdGU6IEVkaXRvclN0YXRlLCBkaXNwYXRjaCkge1xyXG4gICAgICAgICAgICAgICAgZGlzcGF0Y2goc3RhdGUudHIucmVwbGFjZVNlbGVjdGlvbldpdGgoaHIuY3JlYXRlKCkpKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjdXQgPSA8VD4oYXJyOiBUW10pOiBUW10gPT4gYXJyLmZpbHRlcih4ID0+IHgpO1xyXG4gICAgci5pbnNlcnRNZW51ID0gbmV3IERyb3Bkb3duKFxyXG4gICAgICAgIGN1dChbXHJcbiAgICAgICAgICAgIHIuaW5zZXJ0SW1hZ2UsXHJcbiAgICAgICAgICAgIHIuaW5zZXJ0SG9yaXpvbnRhbFJ1bGUsXHJcbiAgICAgICAgICAgIG5ldyBNZW51SXRlbSh7XHJcbiAgICAgICAgICAgICAgICBydW46IChzdGF0ZSwgZGlzcGF0Y2gpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBhZGRUYWJsZShzdGF0ZSwgZGlzcGF0Y2gsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcm93c0NvdW50OiAyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xzQ291bnQ6IDIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhIZWFkZXJSb3c6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNlbGxDb250ZW50OiAnJyxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICByZW5kZXI6IHJlbmRlckNsYXJpdHlJY29uKHsgc2hhcGU6ICd0YWJsZScsIGxhYmVsOiAnVGFibGUnIH0pLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICBdKSxcclxuICAgICAgICB7IGxhYmVsOiAnSW5zZXJ0JyB9LFxyXG4gICAgKTtcclxuICAgIHIudHlwZU1lbnUgPSBuZXcgRHJvcGRvd24oXHJcbiAgICAgICAgY3V0KFtcclxuICAgICAgICAgICAgci5tYWtlUGFyYWdyYXBoLFxyXG4gICAgICAgICAgICByLm1ha2VDb2RlQmxvY2ssXHJcbiAgICAgICAgICAgIHIubWFrZUhlYWQxICYmXHJcbiAgICAgICAgICAgICAgICBuZXcgU3ViTWVudVdpdGhJY29uKFxyXG4gICAgICAgICAgICAgICAgICAgIGN1dChbci5tYWtlSGVhZDEsIHIubWFrZUhlYWQyLCByLm1ha2VIZWFkMywgci5tYWtlSGVhZDQsIHIubWFrZUhlYWQ1LCByLm1ha2VIZWFkNl0pLFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdIZWFkaW5nJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaWNvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbi50ZXh0Q29udGVudCA9ICdIJztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb24uY2xhc3NMaXN0LmFkZCgnY3VzdG9tLWljb24nLCAnaC1pY29uJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaWNvbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgKSxcclxuICAgICAgICBdKSxcclxuICAgICAgICB7IGxhYmVsOiAnVHlwZS4uLicgfSxcclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgaW5saW5lTWVudSA9IGN1dChbci50b2dnbGVTdHJvbmcsIHIudG9nZ2xlRW0sIHIudG9nZ2xlTGlua10pO1xyXG4gICAgci5pbmxpbmVNZW51ID0gW2lubGluZU1lbnVdO1xyXG4gICAgci5ibG9ja01lbnUgPSBbXHJcbiAgICAgICAgY3V0KFtcclxuICAgICAgICAgICAgci53cmFwQnVsbGV0TGlzdCxcclxuICAgICAgICAgICAgci53cmFwT3JkZXJlZExpc3QsXHJcbiAgICAgICAgICAgIHIud3JhcEJsb2NrUXVvdGUsXHJcbiAgICAgICAgICAgIGpvaW5VcEl0ZW0sXHJcbiAgICAgICAgICAgIGxpZnRJdGVtLFxyXG4gICAgICAgICAgICBzZWxlY3RQYXJlbnROb2RlSXRlbSxcclxuICAgICAgICBdKSxcclxuICAgIF07XHJcbiAgICBjb25zdCB1bmRvUmVkbyA9IFtcclxuICAgICAgICBuZXcgTWVudUl0ZW0oe1xyXG4gICAgICAgICAgICB0aXRsZTogJ1VuZG8gbGFzdCBjaGFuZ2UnLFxyXG4gICAgICAgICAgICBydW46IHVuZG8sXHJcbiAgICAgICAgICAgIGVuYWJsZShzdGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHVuZG8oc3RhdGUpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICByZW5kZXI6IHJlbmRlckNsYXJpdHlJY29uKHsgc2hhcGU6ICd1bmRvJywgc2l6ZTogSWNvblNpemUuTGFyZ2UgfSksXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgbmV3IE1lbnVJdGVtKHtcclxuICAgICAgICAgICAgdGl0bGU6ICdSZWRvIGxhc3QgdW5kb25lIGNoYW5nZScsXHJcbiAgICAgICAgICAgIHJ1bjogcmVkbyxcclxuICAgICAgICAgICAgZW5hYmxlKHN0YXRlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVkbyhzdGF0ZSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHJlbmRlcjogcmVuZGVyQ2xhcml0eUljb24oeyBzaGFwZTogJ3JlZG8nLCBzaXplOiBJY29uU2l6ZS5MYXJnZSB9KSxcclxuICAgICAgICB9KSxcclxuICAgIF07XHJcbiAgICByLmZ1bGxNZW51ID0gW2lubGluZU1lbnVdLmNvbmNhdChbW3IuaW5zZXJ0TWVudSwgci50eXBlTWVudV1dLCBbdW5kb1JlZG9dLCByLmJsb2NrTWVudSk7XHJcblxyXG4gICAgcmV0dXJuIHI7XHJcbn1cclxuIl19
@@ -0,0 +1,16 @@
1
+ import { DropdownSubmenu } from 'prosemirror-menu';
2
+ import { wrapInMenuItemWithIcon } from './menu-common';
3
+ export class SubMenuWithIcon extends DropdownSubmenu {
4
+ constructor(content, options) {
5
+ super(content, options);
6
+ this.icon = options.icon();
7
+ }
8
+ render(view) {
9
+ const { dom, update } = super.render(view);
10
+ return {
11
+ dom: wrapInMenuItemWithIcon(this.icon, dom),
12
+ update,
13
+ };
14
+ }
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViLW1lbnUtd2l0aC1pY29uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3NyYy9zaGFyZWQvY29tcG9uZW50cy9yaWNoLXRleHQtZWRpdG9yL3Byb3NlbWlycm9yL21lbnUvc3ViLW1lbnUtd2l0aC1pY29uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQWUsTUFBTSxrQkFBa0IsQ0FBQztBQUloRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFdkQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsZUFBZTtJQUVoRCxZQUNJLE9BQTZDLEVBQzdDLE9BR0M7UUFFRCxLQUFLLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFDRCxNQUFNLENBQUMsSUFBZ0I7UUFJbkIsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLE9BQU87WUFDSCxHQUFHLEVBQUUsc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7WUFDM0MsTUFBTTtTQUNULENBQUM7SUFDTixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEcm9wZG93blN1Ym1lbnUsIE1lbnVFbGVtZW50IH0gZnJvbSAncHJvc2VtaXJyb3ItbWVudSc7XHJcbmltcG9ydCB7IEVkaXRvclN0YXRlIH0gZnJvbSAncHJvc2VtaXJyb3Itc3RhdGUnO1xyXG5pbXBvcnQgeyBFZGl0b3JWaWV3IH0gZnJvbSAncHJvc2VtaXJyb3Itdmlldyc7XHJcblxyXG5pbXBvcnQgeyB3cmFwSW5NZW51SXRlbVdpdGhJY29uIH0gZnJvbSAnLi9tZW51LWNvbW1vbic7XHJcblxyXG5leHBvcnQgY2xhc3MgU3ViTWVudVdpdGhJY29uIGV4dGVuZHMgRHJvcGRvd25TdWJtZW51IHtcclxuICAgIHByaXZhdGUgaWNvbjogSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBjb250ZW50OiByZWFkb25seSBNZW51RWxlbWVudFtdIHwgTWVudUVsZW1lbnQsXHJcbiAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgICBsYWJlbD86IHN0cmluZztcclxuICAgICAgICAgICAgaWNvbjogKCkgPT4gSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgfSxcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKGNvbnRlbnQsIG9wdGlvbnMpO1xyXG4gICAgICAgIHRoaXMuaWNvbiA9IG9wdGlvbnMuaWNvbigpO1xyXG4gICAgfVxyXG4gICAgcmVuZGVyKHZpZXc6IEVkaXRvclZpZXcpOiB7XHJcbiAgICAgICAgZG9tOiBIVE1MRWxlbWVudDtcclxuICAgICAgICB1cGRhdGU6IChzdGF0ZTogRWRpdG9yU3RhdGUpID0+IGJvb2xlYW47XHJcbiAgICB9IHtcclxuICAgICAgICBjb25zdCB7IGRvbSwgdXBkYXRlIH0gPSBzdXBlci5yZW5kZXIodmlldyk7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgZG9tOiB3cmFwSW5NZW51SXRlbVdpdGhJY29uKHRoaXMuaWNvbiwgZG9tKSxcclxuICAgICAgICAgICAgdXBkYXRlLFxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,100 @@
1
+ import { MenuItem } from 'prosemirror-menu';
2
+ import { NodeSelection, Plugin } from 'prosemirror-state';
3
+ import { ExternalImageDialogComponent, } from '../../external-image-dialog/external-image-dialog.component';
4
+ import { canInsert, renderClarityIcon } from '../menu/menu-common';
5
+ export function insertImageItem(nodeType, modalService) {
6
+ return new MenuItem({
7
+ title: 'Insert image',
8
+ label: 'Image',
9
+ render: renderClarityIcon({ shape: 'image', label: 'Image' }),
10
+ class: '',
11
+ css: '',
12
+ enable(state) {
13
+ return canInsert(state, nodeType);
14
+ },
15
+ run(state, _, view) {
16
+ let attrs;
17
+ if (state.selection instanceof NodeSelection && state.selection.node.type === nodeType) {
18
+ attrs = state.selection.node.attrs;
19
+ }
20
+ modalService
21
+ .fromComponent(ExternalImageDialogComponent, {
22
+ closable: true,
23
+ locals: {
24
+ existing: attrs,
25
+ },
26
+ })
27
+ .subscribe(result => {
28
+ if (result) {
29
+ // tslint:disable-next-line:no-non-null-assertion
30
+ view.dispatch(view.state.tr.replaceSelectionWith(nodeType.createAndFill(result)));
31
+ }
32
+ view.focus();
33
+ });
34
+ },
35
+ });
36
+ }
37
+ export const imageContextMenuPlugin = (contextMenuService, modalService) => new Plugin({
38
+ view: () => {
39
+ return {
40
+ update: view => {
41
+ if (!view.hasFocus()) {
42
+ return;
43
+ }
44
+ const { doc, selection } = view.state;
45
+ let imageNode;
46
+ let imageNodePos = 0;
47
+ doc.nodesBetween(selection.from, selection.to, (n, pos, parent) => {
48
+ if (n.type.name === 'image') {
49
+ imageNode = n;
50
+ imageNodePos = pos;
51
+ return false;
52
+ }
53
+ });
54
+ if (imageNode) {
55
+ const node = view.nodeDOM(imageNodePos);
56
+ if (node instanceof HTMLImageElement) {
57
+ contextMenuService.setContextMenu({
58
+ ref: selection,
59
+ title: 'Image',
60
+ iconShape: 'image',
61
+ element: node,
62
+ coords: view.coordsAtPos(imageNodePos),
63
+ items: [
64
+ {
65
+ enabled: true,
66
+ iconShape: 'image',
67
+ label: 'Image properties',
68
+ onClick: () => {
69
+ contextMenuService.clearContextMenu();
70
+ modalService
71
+ .fromComponent(ExternalImageDialogComponent, {
72
+ closable: true,
73
+ locals: {
74
+ // tslint:disable-next-line:no-non-null-assertion
75
+ existing: imageNode.attrs,
76
+ },
77
+ })
78
+ .subscribe(result => {
79
+ if (result) {
80
+ // tslint:disable-next-line:no-non-null-assertion
81
+ view.dispatch(view.state.tr.replaceSelectionWith(
82
+ // tslint:disable-next-line:no-non-null-assertion
83
+ imageNode.type.createAndFill(result)));
84
+ }
85
+ view.focus();
86
+ });
87
+ },
88
+ },
89
+ ],
90
+ });
91
+ }
92
+ }
93
+ else {
94
+ contextMenuService.clearContextMenu();
95
+ }
96
+ },
97
+ };
98
+ },
99
+ });
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3NyYy9zaGFyZWQvY29tcG9uZW50cy9yaWNoLXRleHQtZWRpdG9yL3Byb3NlbWlycm9yL3BsdWdpbnMvaW1hZ2UtcGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU1QyxPQUFPLEVBQWUsYUFBYSxFQUFFLE1BQU0sRUFBZSxNQUFNLG1CQUFtQixDQUFDO0FBaUJwRixPQUFPLEVBRUgsNEJBQTRCLEdBQy9CLE1BQU0sNkRBQTZELENBQUM7QUFHckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5FLE1BQU0sVUFBVSxlQUFlLENBQUMsUUFBa0IsRUFBRSxZQUEwQjtJQUMxRSxPQUFPLElBQUksUUFBUSxDQUFDO1FBQ2hCLEtBQUssRUFBRSxjQUFjO1FBQ3JCLEtBQUssRUFBRSxPQUFPO1FBQ2QsTUFBTSxFQUFFLGlCQUFpQixDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDN0QsS0FBSyxFQUFFLEVBQUU7UUFDVCxHQUFHLEVBQUUsRUFBRTtRQUNQLE1BQU0sQ0FBQyxLQUFrQjtZQUNyQixPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUNELEdBQUcsQ0FBQyxLQUFrQixFQUFFLENBQUMsRUFBRSxJQUFnQjtZQUN2QyxJQUFJLEtBQXFDLENBQUM7WUFDMUMsSUFBSSxLQUFLLENBQUMsU0FBUyxZQUFZLGFBQWEsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO2dCQUNwRixLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJ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LEVBQUUsQ0FBQzt3Q0FDakIsQ0FBQyxDQUFDLENBQUM7b0NBQ1gsQ0FBQztpQ0FDSjs2QkFDSjt5QkFDSixDQUFDLENBQUM7cUJBQ047aUJBQ0o7cUJBQU07b0JBQ0gsa0JBQWtCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztpQkFDekM7WUFDTCxDQUFDO1NBQ0osQ0FBQztJQUNOLENBQUM7Q0FDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3Byb3NlbWlycm9yLW1lbnUnO1xyXG5pbXBvcnQgeyBOb2RlLCBOb2RlVHlwZSB9IGZyb20gJ3Byb3NlbWlycm9yLW1vZGVsJztcclxuaW1wb3J0IHsgRWRpdG9yU3RhdGUsIE5vZGVTZWxlY3Rpb24sIFBsdWdpbiwgVHJhbnNhY3Rpb24gfSBmcm9tICdwcm9zZW1pcnJvci1zdGF0ZSc7XHJcbmltcG9ydCB7XHJcbiAgICBhZGRDb2x1bW5BZnRlcixcclxuICAgIGFkZENvbHVtbkJlZm9yZSxcclxuICAgIGFkZFJvd0FmdGVyLFxyXG4gICAgYWRkUm93QmVmb3JlLFxyXG4gICAgZGVsZXRlQ29sdW1uLFxyXG4gICAgZGVsZXRlUm93LFxyXG4gICAgZGVsZXRlVGFibGUsXHJcbiAgICBtZXJnZUNlbGxzLFxyXG4gICAgc3BsaXRDZWxsLFxyXG4gICAgdG9nZ2xlSGVhZGVyQ29sdW1uLFxyXG4gICAgdG9nZ2xlSGVhZGVyUm93LFxyXG59IGZyb20gJ3Byb3NlbWlycm9yLXRhYmxlcyc7XHJcbmltcG9ydCB7IEVkaXRvclZpZXcgfSBmcm9tICdwcm9zZW1pcnJvci12aWV3JztcclxuXHJcbmltcG9ydCB7IE1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3Byb3ZpZGVycy9tb2RhbC9tb2RhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICAgIEV4dGVybmFsSW1hZ2VBdHRycyxcclxuICAgIEV4dGVybmFsSW1hZ2VEaWFsb2dDb21wb25lbnQsXHJcbn0gZnJvbSAnLi4vLi4vZXh0ZXJuYWwtaW1hZ2UtZGlhbG9nL2V4dGVybmFsLWltYWdlLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSYXdIdG1sRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcmF3LWh0bWwtZGlhbG9nL3Jhdy1odG1sLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb250ZXh0TWVudUl0ZW0sIENvbnRleHRNZW51U2VydmljZSB9IGZyb20gJy4uL2NvbnRleHQtbWVudS9jb250ZXh0LW1lbnUuc2VydmljZSc7XHJcbmltcG9ydCB7IGNhbkluc2VydCwgcmVuZGVyQ2xhcml0eUljb24gfSBmcm9tICcuLi9tZW51L21lbnUtY29tbW9uJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRJbWFnZUl0ZW0obm9kZVR5cGU6IE5vZGVUeXBlLCBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSkge1xyXG4gICAgcmV0dXJuIG5ldyBNZW51SXRlbSh7XHJcbiAgICAgICAgdGl0bGU6ICdJbnNlcnQgaW1hZ2UnLFxyXG4gICAgICAgIGxhYmVsOiAnSW1hZ2UnLFxyXG4gICAgICAgIHJlbmRlcjogcmVuZGVyQ2xhcml0eUljb24oeyBzaGFwZTogJ2ltYWdlJywgbGFiZWw6ICdJbWFnZScgfSksXHJcbiAgICAgICAgY2xhc3M6ICcnLFxyXG4gICAgICAgIGNzczogJycsXHJcbiAgICAgICAgZW5hYmxlKHN0YXRlOiBFZGl0b3JTdGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gY2FuSW5zZXJ0KHN0YXRlLCBub2RlVHlwZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBydW4oc3RhdGU6IEVkaXRvclN0YXRlLCBfLCB2aWV3OiBFZGl0b3JWaWV3KSB7XHJcbiAgICAgICAgICAgIGxldCBhdHRyczogRXh0ZXJuYWxJbWFnZUF0dHJzIHwgdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICBpZiAoc3RhdGUuc2VsZWN0aW9uIGluc3RhbmNlb2YgTm9kZVNlbGVjdGlvbiAmJiBzdGF0ZS5zZWxlY3Rpb24ubm9kZS50eXBlID09PSBub2RlVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgYXR0cnMgPSBzdGF0ZS5zZWxlY3Rpb24ubm9kZS5hdHRycyBhcyBFeHRlcm5hbEltYWdlQXR0cnM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbW9kYWxTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAuZnJvbUNvbXBvbmVudChFeHRlcm5hbEltYWdlRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xvc2FibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nOiBhdHRycyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1ub24tbnVsbC1hc3NlcnRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlldy5kaXNwYXRjaCh2aWV3LnN0YXRlLnRyLnJlcGxhY2VTZWxlY3Rpb25XaXRoKG5vZGVUeXBlLmNyZWF0ZUFuZEZpbGwocmVzdWx0KSEpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdmlldy5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgaW1hZ2VDb250ZXh0TWVudVBsdWdpbiA9IChjb250ZXh0TWVudVNlcnZpY2U6IENvbnRleHRNZW51U2VydmljZSwgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UpID0+XHJcbiAgICBuZXcgUGx1Z2luKHtcclxuICAgICAgICB2aWV3OiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICB1cGRhdGU6IHZpZXcgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdmlldy5oYXNGb2N1cygpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkb2MsIHNlbGVjdGlvbiB9ID0gdmlldy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaW1hZ2VOb2RlOiBOb2RlIHwgdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpbWFnZU5vZGVQb3MgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGRvYy5ub2Rlc0JldHdlZW4oc2VsZWN0aW9uLmZyb20sIHNlbGVjdGlvbi50bywgKG4sIHBvcywgcGFyZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLnR5cGUubmFtZSA9PT0gJ2ltYWdlJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VOb2RlID0gbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlTm9kZVBvcyA9IHBvcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZU5vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHZpZXcubm9kZURPTShpbWFnZU5vZGVQb3MpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRNZW51U2VydmljZS5zZXRDb250ZXh0TWVudSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBzZWxlY3Rpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdJbWFnZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblNoYXBlOiAnaW1hZ2UnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IG5vZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29vcmRzOiB2aWV3LmNvb3Jkc0F0UG9zKGltYWdlTm9kZVBvcyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25TaGFwZTogJ2ltYWdlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnSW1hZ2UgcHJvcGVydGllcycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dE1lbnVTZXJ2aWNlLmNsZWFyQ29udGV4dE1lbnUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZyb21Db21wb25lbnQoRXh0ZXJuYWxJbWFnZURpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2FibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbHM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3Rpbmc6IGltYWdlTm9kZSEuYXR0cnMgYXMgRXh0ZXJuYWxJbWFnZUF0dHJzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1ub24tbnVsbC1hc3NlcnRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3LmRpc3BhdGNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3LnN0YXRlLnRyLnJlcGxhY2VTZWxlY3Rpb25XaXRoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLW5vbi1udWxsLWFzc2VydGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VOb2RlIS50eXBlLmNyZWF0ZUFuZEZpbGwocmVzdWx0KSEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXcuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRNZW51U2VydmljZS5jbGVhckNvbnRleHRNZW51KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9LFxyXG4gICAgfSk7XHJcbiJdfQ==
@@ -0,0 +1,96 @@
1
+ import { DOMParser, DOMSerializer } from 'prosemirror-model';
2
+ import { Plugin } from 'prosemirror-state';
3
+ import { RawHtmlDialogComponent } from '../../raw-html-dialog/raw-html-dialog.component';
4
+ /**
5
+ * Implements editing of raw HTML for the selected node in the editor.
6
+ */
7
+ export const rawEditorPlugin = (contextMenuService, modalService) => new Plugin({
8
+ view: _view => {
9
+ const domParser = DOMParser.fromSchema(_view.state.schema);
10
+ const domSerializer = DOMSerializer.fromSchema(_view.state.schema);
11
+ return {
12
+ update: view => {
13
+ if (!view.hasFocus()) {
14
+ return;
15
+ }
16
+ let topLevelNode;
17
+ const { doc, selection } = view.state;
18
+ let topLevelNodePos = 0;
19
+ doc.nodesBetween(selection.from, selection.to, (n, pos, parent) => {
20
+ if (parent === doc) {
21
+ topLevelNode = n;
22
+ topLevelNodePos = pos;
23
+ return false;
24
+ }
25
+ });
26
+ if (topLevelNode) {
27
+ const node = view.nodeDOM(topLevelNodePos);
28
+ if (node instanceof HTMLElement) {
29
+ contextMenuService.setContextMenu({
30
+ ref: selection,
31
+ title: '',
32
+ // iconShape: 'ellipsis-vertical',
33
+ element: node,
34
+ coords: view.coordsAtPos(topLevelNodePos),
35
+ items: [
36
+ {
37
+ enabled: true,
38
+ iconShape: 'code',
39
+ label: 'Edit HTML',
40
+ onClick: () => {
41
+ contextMenuService.clearContextMenu();
42
+ const element = domSerializer.serializeNode(
43
+ // tslint:disable-next-line:no-non-null-assertion
44
+ topLevelNode);
45
+ modalService
46
+ .fromComponent(RawHtmlDialogComponent, {
47
+ size: 'xl',
48
+ locals: {
49
+ html: element.outerHTML,
50
+ },
51
+ })
52
+ .subscribe(result => {
53
+ if (result) {
54
+ const domNode = htmlToDomNode(result, topLevelNode?.isLeaf ? undefined : node);
55
+ if (domNode) {
56
+ let tr = view.state.tr;
57
+ const parsedNodeSlice = domParser.parse(domNode);
58
+ try {
59
+ tr = tr.replaceRangeWith(topLevelNodePos, topLevelNodePos +
60
+ (topLevelNode?.nodeSize ?? 0), parsedNodeSlice);
61
+ }
62
+ catch (err) {
63
+ // tslint:disable-next-line:no-console
64
+ console.error(err);
65
+ }
66
+ view.dispatch(tr);
67
+ view.focus();
68
+ }
69
+ }
70
+ });
71
+ },
72
+ },
73
+ ],
74
+ });
75
+ }
76
+ }
77
+ },
78
+ };
79
+ },
80
+ });
81
+ function htmlToDomNode(html, wrapInParent) {
82
+ html = `${html.trim()}`;
83
+ const template = document.createElement('template');
84
+ if (wrapInParent) {
85
+ const parentClone = wrapInParent.cloneNode(false);
86
+ parentClone.innerHTML = html;
87
+ template.content.appendChild(parentClone);
88
+ }
89
+ else {
90
+ const parent = document.createElement('p');
91
+ parent.innerHTML = html;
92
+ template.content.appendChild(parent);
93
+ }
94
+ return template.content.firstChild;
95
+ }
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF3LWVkaXRvci1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL3JpY2gtdGV4dC1lZGl0b3IvcHJvc2VtaXJyb3IvcGx1Z2lucy9yYXctZWRpdG9yLXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUkzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUd6Rjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLGtCQUFzQyxFQUFFLFlBQTBCLEVBQUUsRUFBRSxDQUNsRyxJQUFJLE1BQU0sQ0FBQztJQUNQLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRTtRQUNWLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzRCxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkUsT0FBTztZQUNILE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFO29CQUNsQixPQUFPO2lCQUNWO2dCQUNELElBQUksWUFBOEIsQ0FBQztnQkFDbkMsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUN0QyxJQUFJLGVBQWUsR0FBRyxDQUFDLENBQUM7Z0JBQ3hCLEdBQUcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLENB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QUMsV0FBVyxDQUFDLENBQUM7S0FDN0M7U0FBTTtRQUNILE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDeEIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDeEM7SUFDRCxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO0FBQ3ZDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET01QYXJzZXIsIERPTVNlcmlhbGl6ZXIsIE5vZGUgfSBmcm9tICdwcm9zZW1pcnJvci1tb2RlbCc7XHJcbmltcG9ydCB7IFBsdWdpbiB9IGZyb20gJ3Byb3NlbWlycm9yLXN0YXRlJztcclxuaW1wb3J0IHsgUHJvdG9jb2wgfSBmcm9tICdwdXBwZXRlZXInO1xyXG5cclxuaW1wb3J0IHsgTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vcHJvdmlkZXJzL21vZGFsL21vZGFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSYXdIdG1sRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcmF3LWh0bWwtZGlhbG9nL3Jhdy1odG1sLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb250ZXh0TWVudVNlcnZpY2UgfSBmcm9tICcuLi9jb250ZXh0LW1lbnUvY29udGV4dC1tZW51LnNlcnZpY2UnO1xyXG5cclxuLyoqXHJcbiAqIEltcGxlbWVudHMgZWRpdGluZyBvZiByYXcgSFRNTCBmb3IgdGhlIHNlbGVjdGVkIG5vZGUgaW4gdGhlIGVkaXRvci5cclxuICovXHJcbmV4cG9ydCBjb25zdCByYXdFZGl0b3JQbHVnaW4gPSAoY29udGV4dE1lbnVTZXJ2aWNlOiBDb250ZXh0TWVudVNlcnZpY2UsIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlKSA9PlxyXG4gICAgbmV3IFBsdWdpbih7XHJcbiAgICAgICAgdmlldzogX3ZpZXcgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBkb21QYXJzZXIgPSBET01QYXJzZXIuZnJvbVNjaGVtYShfdmlldy5zdGF0ZS5zY2hlbWEpO1xyXG4gICAgICAgICAgICBjb25zdCBkb21TZXJpYWxpemVyID0gRE9NU2VyaWFsaXplci5mcm9tU2NoZW1hKF92aWV3LnN0YXRlLnNjaGVtYSk7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICB1cGRhdGU6IHZpZXcgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdmlldy5oYXNGb2N1cygpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRvcExldmVsTm9kZTogTm9kZSB8IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRvYywgc2VsZWN0aW9uIH0gPSB2aWV3LnN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0b3BMZXZlbE5vZGVQb3MgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGRvYy5ub2Rlc0JldHdlZW4oc2VsZWN0aW9uLmZyb20sIHNlbGVjdGlvbi50bywgKG4sIHBvcywgcGFyZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnQgPT09IGRvYykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wTGV2ZWxOb2RlID0gbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcExldmVsTm9kZVBvcyA9IHBvcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0b3BMZXZlbE5vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHZpZXcubm9kZURPTSh0b3BMZXZlbE5vZGVQb3MpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0TWVudVNlcnZpY2Uuc2V0Q29udGV4dE1lbnUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogc2VsZWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpY29uU2hhcGU6ICdlbGxpcHNpcy12ZXJ0aWNhbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogbm9kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29yZHM6IHZpZXcuY29vcmRzQXRQb3ModG9wTGV2ZWxOb2RlUG9zKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblNoYXBlOiAnY29kZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0VkaXQgSFRNTCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dE1lbnVTZXJ2aWNlLmNsZWFyQ29udGV4dE1lbnUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9tU2VyaWFsaXplci5zZXJpYWxpemVOb2RlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcExldmVsTm9kZSEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZyb21Db21wb25lbnQoUmF3SHRtbERpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ3hsJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2Fsczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWw6IGVsZW1lbnQub3V0ZXJIVE1MLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvbU5vZGUgPSBodG1sVG9Eb21Ob2RlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcExldmVsTm9kZT8uaXNMZWFmID8gdW5kZWZpbmVkIDogbm9kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb21Ob2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ciA9IHZpZXcuc3RhdGUudHI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZE5vZGVTbGljZSA9IGRvbVBhcnNlci5wYXJzZShkb21Ob2RlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyID0gdHIucmVwbGFjZVJhbmdlV2l0aChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BMZXZlbE5vZGVQb3MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wTGV2ZWxOb2RlUG9zICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRvcExldmVsTm9kZT8ubm9kZVNpemUgPz8gMCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkTm9kZVNsaWNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1jb25zb2xlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldy5kaXNwYXRjaCh0cik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXcuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbmZ1bmN0aW9uIGh0bWxUb0RvbU5vZGUoaHRtbDogc3RyaW5nLCB3cmFwSW5QYXJlbnQ/OiBIVE1MRWxlbWVudCkge1xyXG4gICAgaHRtbCA9IGAke2h0bWwudHJpbSgpfWA7XHJcbiAgICBjb25zdCB0ZW1wbGF0ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RlbXBsYXRlJyk7XHJcbiAgICBpZiAod3JhcEluUGFyZW50KSB7XHJcbiAgICAgICAgY29uc3QgcGFyZW50Q2xvbmUgPSB3cmFwSW5QYXJlbnQuY2xvbmVOb2RlKGZhbHNlKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBwYXJlbnRDbG9uZS5pbm5lckhUTUwgPSBodG1sO1xyXG4gICAgICAgIHRlbXBsYXRlLmNvbnRlbnQuYXBwZW5kQ2hpbGQocGFyZW50Q2xvbmUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBwYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XHJcbiAgICAgICAgcGFyZW50LmlubmVySFRNTCA9IGh0bWw7XHJcbiAgICAgICAgdGVtcGxhdGUuY29udGVudC5hcHBlbmRDaGlsZChwYXJlbnQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRlbXBsYXRlLmNvbnRlbnQuZmlyc3RDaGlsZDtcclxufVxyXG4iXX0=