@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
@@ -0,0 +1,54 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { throttleTime } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ export class RadioCardFieldsetComponent {
6
+ constructor(changeDetector) {
7
+ this.changeDetector = changeDetector;
8
+ this.selectItem = new EventEmitter();
9
+ this.groupName = 'radio-group-' + Math.random().toString(36);
10
+ this.selectedIdChange$ = new Subject();
11
+ this.focussedId = undefined;
12
+ this.idChange$ = new Subject();
13
+ }
14
+ ngOnInit() {
15
+ this.subscription = this.idChange$
16
+ .pipe(throttleTime(200))
17
+ .subscribe(item => this.selectItem.emit(item));
18
+ }
19
+ ngOnChanges(changes) {
20
+ if ('selectedItemId' in changes) {
21
+ this.selectedIdChange$.next(this.selectedItemId);
22
+ }
23
+ }
24
+ ngOnDestroy() {
25
+ if (this.subscription) {
26
+ this.subscription.unsubscribe();
27
+ }
28
+ }
29
+ isSelected(item) {
30
+ return this.selectedItemId === this.idFn(item);
31
+ }
32
+ isFocussed(item) {
33
+ return this.focussedId === this.idFn(item);
34
+ }
35
+ selectChanged(item) {
36
+ this.idChange$.next(item);
37
+ }
38
+ setFocussedId(item) {
39
+ this.focussedId = item && this.idFn(item);
40
+ }
41
+ }
42
+ RadioCardFieldsetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: RadioCardFieldsetComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
43
+ RadioCardFieldsetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: RadioCardFieldsetComponent, selector: "vdr-radio-card-fieldset", inputs: { selectedItemId: "selectedItemId", idFn: "idFn" }, outputs: { selectItem: "selectItem" }, usesOnChanges: true, ngImport: i0, template: `<fieldset><ng-content></ng-content></fieldset> `, isInline: true, styles: ["fieldset{display:flex;align-items:flex-start}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: RadioCardFieldsetComponent, decorators: [{
45
+ type: Component,
46
+ args: [{ selector: 'vdr-radio-card-fieldset', template: `<fieldset><ng-content></ng-content></fieldset> `, changeDetection: ChangeDetectionStrategy.OnPush, styles: ["fieldset{display:flex;align-items:flex-start}\n"] }]
47
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { selectedItemId: [{
48
+ type: Input
49
+ }], idFn: [{
50
+ type: Input
51
+ }], selectItem: [{
52
+ type: Output
53
+ }] } });
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tY2FyZC1maWVsZHNldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL3JhZGlvLWNhcmQvcmFkaW8tY2FyZC1maWVsZHNldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFJTCxNQUFNLEdBR1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFnQixZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFRNUQsTUFBTSxPQUFPLDBCQUEwQjtJQVVuQyxZQUFvQixjQUFpQztRQUFqQyxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFQM0MsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFLLENBQUM7UUFDN0MsY0FBUyxHQUFHLGNBQWMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFVLENBQUM7UUFDMUMsZUFBVSxHQUF1QixTQUFTLENBQUM7UUFDbkMsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFLLENBQUM7SUFHbUIsQ0FBQztJQUV6RCxRQUFRO1FBQ0osSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUzthQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3ZCLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLGdCQUFnQixJQUFJLE9BQU8sRUFBRTtZQUM3QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUNwRDtJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDbkM7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQU87UUFDZCxPQUFPLElBQUksQ0FBQyxjQUFjLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQU87UUFDZCxPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsYUFBYSxDQUFDLElBQU87UUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFtQjtRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzlDLENBQUM7O3VIQTVDUSwwQkFBMEI7MkdBQTFCLDBCQUEwQix1TEFKekIsaURBQWlEOzJGQUlsRCwwQkFBMEI7a0JBTnRDLFNBQVM7K0JBQ0kseUJBQXlCLFlBQ3pCLGlEQUFpRCxtQkFFMUMsdUJBQXVCLENBQUMsTUFBTTt3R0FHdEMsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgQ29udGVudENoaWxkLFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgVGVtcGxhdGVSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRocm90dGxlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZHItcmFkaW8tY2FyZC1maWVsZHNldCcsXHJcbiAgICB0ZW1wbGF0ZTogYDxmaWVsZHNldD48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9maWVsZHNldD4gYCxcclxuICAgIHN0eWxlVXJsczogWydyYWRpby1jYXJkLWZpZWxkc2V0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJhZGlvQ2FyZEZpZWxkc2V0Q29tcG9uZW50PFQgPSBhbnk+IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgICBASW5wdXQoKSBzZWxlY3RlZEl0ZW1JZDogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgaWRGbjogKGl0ZW06IFQpID0+IHN0cmluZztcclxuICAgIEBPdXRwdXQoKSBzZWxlY3RJdGVtID0gbmV3IEV2ZW50RW1pdHRlcjxUPigpO1xyXG4gICAgZ3JvdXBOYW1lID0gJ3JhZGlvLWdyb3VwLScgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KTtcclxuICAgIHNlbGVjdGVkSWRDaGFuZ2UkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xyXG4gICAgZm9jdXNzZWRJZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gICAgcHJpdmF0ZSBpZENoYW5nZSQgPSBuZXcgU3ViamVjdDxUPigpO1xyXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge31cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuaWRDaGFuZ2UkXHJcbiAgICAgICAgICAgIC5waXBlKHRocm90dGxlVGltZSgyMDApKVxyXG4gICAgICAgICAgICAuc3Vic2NyaWJlKGl0ZW0gPT4gdGhpcy5zZWxlY3RJdGVtLmVtaXQoaXRlbSkpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBpZiAoJ3NlbGVjdGVkSXRlbUlkJyBpbiBjaGFuZ2VzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJZENoYW5nZSQubmV4dCh0aGlzLnNlbGVjdGVkSXRlbUlkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlzU2VsZWN0ZWQoaXRlbTogVCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbUlkID09PSB0aGlzLmlkRm4oaXRlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNGb2N1c3NlZChpdGVtOiBUKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9jdXNzZWRJZCA9PT0gdGhpcy5pZEZuKGl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdENoYW5nZWQoaXRlbTogVCkge1xyXG4gICAgICAgIHRoaXMuaWRDaGFuZ2UkLm5leHQoaXRlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0Rm9jdXNzZWRJZChpdGVtOiBUIHwgdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgdGhpcy5mb2N1c3NlZElkID0gaXRlbSAmJiB0aGlzLmlkRm4oaXRlbSk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,53 @@
1
+ import { ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "./radio-card-fieldset.component";
5
+ import * as i2 from "../select-toggle/select-toggle.component";
6
+ import * as i3 from "@clr/angular";
7
+ import * as i4 from "@angular/common";
8
+ import * as i5 from "../form-field/form-field-control.directive";
9
+ export class RadioCardComponent {
10
+ constructor(fieldset, changeDetector) {
11
+ this.fieldset = fieldset;
12
+ this.changeDetector = changeDetector;
13
+ this.idChange$ = new Subject();
14
+ this.name = this.fieldset.groupName;
15
+ }
16
+ ngOnInit() {
17
+ this.subscription = this.fieldset.selectedIdChange$.subscribe(id => {
18
+ this.changeDetector.markForCheck();
19
+ });
20
+ }
21
+ ngOnDestroy() {
22
+ if (this.subscription) {
23
+ this.subscription.unsubscribe();
24
+ }
25
+ }
26
+ isSelected(item) {
27
+ return this.fieldset.isSelected(item);
28
+ }
29
+ isFocussed(item) {
30
+ return this.fieldset.isFocussed(item);
31
+ }
32
+ selectChanged(item) {
33
+ this.fieldset.selectChanged(item);
34
+ }
35
+ setFocussedId(item) {
36
+ this.fieldset.setFocussedId(item);
37
+ }
38
+ getItemId(item) {
39
+ return this.fieldset.idFn(item);
40
+ }
41
+ }
42
+ RadioCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: RadioCardComponent, deps: [{ token: i1.RadioCardFieldsetComponent }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
43
+ RadioCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: RadioCardComponent, selector: "vdr-radio-card", inputs: { item: "item" }, queries: [{ propertyName: "itemTemplate", first: true, predicate: TemplateRef, descendants: true }], exportAs: ["VdrRadioCard"], ngImport: i0, template: "<label\r\n [ngClass]=\"{\r\n 'selected': isSelected(item),\r\n 'focussed': isFocussed(item)\r\n }\"\r\n class=\"radio-card\"\r\n>\r\n <input\r\n type=\"radio\"\r\n [name]=\"name\"\r\n [value]=\"getItemId(item)\"\r\n class=\"hidden\"\r\n (focus)=\"setFocussedId(item)\"\r\n (blur)=\"setFocussedId(undefined)\"\r\n (change)=\"selectChanged(item)\"\r\n />\r\n <vdr-select-toggle [selected]=\"isSelected(item)\" size=\"small\"></vdr-select-toggle>\r\n <div class=\"content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</label>\r\n", styles: [":host{display:inline-block}.radio-card{background:none;position:relative;display:block;border:1px solid var(--clr-btn-default-border-color, #0072a3);border-radius:var(--clr-btn-border-radius, .15rem);padding:6px;text-align:left;margin:6px}.radio-card:hover{cursor:pointer;outline:1px solid var(--color-primary-500)}.radio-card.selected{outline:1px solid var(--color-primary-500);background-color:var(--color-primary-100)}input.hidden{visibility:hidden;position:absolute}vdr-select-toggle{position:absolute;top:3px;left:3px}.content{margin-left:24px}\n"], components: [{ type: i2.SelectToggleComponent, selector: "vdr-select-toggle", inputs: ["size", "selected", "hiddenWhenOff", "disabled", "label"], outputs: ["selectedChange"] }], directives: [{ type: i3.ClrLabel, selector: "label", inputs: ["for"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.FormFieldControlDirective, selector: "input, textarea, select" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: RadioCardComponent, decorators: [{
45
+ type: Component,
46
+ args: [{ selector: 'vdr-radio-card', exportAs: 'VdrRadioCard', changeDetection: ChangeDetectionStrategy.OnPush, template: "<label\r\n [ngClass]=\"{\r\n 'selected': isSelected(item),\r\n 'focussed': isFocussed(item)\r\n }\"\r\n class=\"radio-card\"\r\n>\r\n <input\r\n type=\"radio\"\r\n [name]=\"name\"\r\n [value]=\"getItemId(item)\"\r\n class=\"hidden\"\r\n (focus)=\"setFocussedId(item)\"\r\n (blur)=\"setFocussedId(undefined)\"\r\n (change)=\"selectChanged(item)\"\r\n />\r\n <vdr-select-toggle [selected]=\"isSelected(item)\" size=\"small\"></vdr-select-toggle>\r\n <div class=\"content\">\r\n <ng-content></ng-content>\r\n </div>\r\n</label>\r\n", styles: [":host{display:inline-block}.radio-card{background:none;position:relative;display:block;border:1px solid var(--clr-btn-default-border-color, #0072a3);border-radius:var(--clr-btn-border-radius, .15rem);padding:6px;text-align:left;margin:6px}.radio-card:hover{cursor:pointer;outline:1px solid var(--color-primary-500)}.radio-card.selected{outline:1px solid var(--color-primary-500);background-color:var(--color-primary-100)}input.hidden{visibility:hidden;position:absolute}vdr-select-toggle{position:absolute;top:3px;left:3px}.content{margin-left:24px}\n"] }]
47
+ }], ctorParameters: function () { return [{ type: i1.RadioCardFieldsetComponent }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { item: [{
48
+ type: Input
49
+ }], itemTemplate: [{
50
+ type: ContentChild,
51
+ args: [TemplateRef]
52
+ }] } });
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL3JhZGlvLWNhcmQvcmFkaW8tY2FyZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL3JhZGlvLWNhcmQvcmFkaW8tY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLFdBQVcsR0FDZCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQVc3QyxNQUFNLE9BQU8sa0JBQWtCO0lBSTNCLFlBQW9CLFFBQW9DLEVBQVUsY0FBaUM7UUFBL0UsYUFBUSxHQUFSLFFBQVEsQ0FBNEI7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFFM0YsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFLLENBQUM7UUFFckMsU0FBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO0lBSnVFLENBQUM7SUFNdkcsUUFBUTtRQUNKLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDL0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDbkM7SUFDTCxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQU87UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxVQUFVLENBQUMsSUFBTztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFPO1FBQ2pCLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxhQUFhLENBQUMsSUFBbUI7UUFDN0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFPO1FBQ2IsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDOzsrR0F4Q1Esa0JBQWtCO21HQUFsQixrQkFBa0IsMEhBRWIsV0FBVyw0RUN2QjdCLGduQkFxQkE7MkZEQWEsa0JBQWtCO2tCQVA5QixTQUFTOytCQUNJLGdCQUFnQixZQUdoQixjQUFjLG1CQUNQLHVCQUF1QixDQUFDLE1BQU07aUpBR3RDLElBQUk7c0JBQVosS0FBSztnQkFDcUIsWUFBWTtzQkFBdEMsWUFBWTt1QkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBDb250ZW50Q2hpbGQsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uRGVzdHJveSxcclxuICAgIE9uSW5pdCxcclxuICAgIFRlbXBsYXRlUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IFJhZGlvQ2FyZEZpZWxkc2V0Q29tcG9uZW50IH0gZnJvbSAnLi9yYWRpby1jYXJkLWZpZWxkc2V0LmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLXJhZGlvLWNhcmQnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3JhZGlvLWNhcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vcmFkaW8tY2FyZC5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgZXhwb3J0QXM6ICdWZHJSYWRpb0NhcmQnLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSYWRpb0NhcmRDb21wb25lbnQ8VCA9IGFueT4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICBASW5wdXQoKSBpdGVtOiBUO1xyXG4gICAgQENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZikgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxUPjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGZpZWxkc2V0OiBSYWRpb0NhcmRGaWVsZHNldENvbXBvbmVudCwgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gICAgcHJpdmF0ZSBpZENoYW5nZSQgPSBuZXcgU3ViamVjdDxUPigpO1xyXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcclxuICAgIG5hbWUgPSB0aGlzLmZpZWxkc2V0Lmdyb3VwTmFtZTtcclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuZmllbGRzZXQuc2VsZWN0ZWRJZENoYW5nZSQuc3Vic2NyaWJlKGlkID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaXNTZWxlY3RlZChpdGVtOiBUKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZmllbGRzZXQuaXNTZWxlY3RlZChpdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICBpc0ZvY3Vzc2VkKGl0ZW06IFQpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5maWVsZHNldC5pc0ZvY3Vzc2VkKGl0ZW0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNlbGVjdENoYW5nZWQoaXRlbTogVCkge1xyXG4gICAgICAgIHRoaXMuZmllbGRzZXQuc2VsZWN0Q2hhbmdlZChpdGVtKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRGb2N1c3NlZElkKGl0ZW06IFQgfCB1bmRlZmluZWQpIHtcclxuICAgICAgICB0aGlzLmZpZWxkc2V0LnNldEZvY3Vzc2VkSWQoaXRlbSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0SXRlbUlkKGl0ZW06IFQpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZpZWxkc2V0LmlkRm4oaXRlbSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGxhYmVsXHJcbiAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgJ3NlbGVjdGVkJzogaXNTZWxlY3RlZChpdGVtKSxcclxuICAgICAgICAnZm9jdXNzZWQnOiBpc0ZvY3Vzc2VkKGl0ZW0pXHJcbiAgICB9XCJcclxuICAgIGNsYXNzPVwicmFkaW8tY2FyZFwiXHJcbj5cclxuICAgIDxpbnB1dFxyXG4gICAgICAgIHR5cGU9XCJyYWRpb1wiXHJcbiAgICAgICAgW25hbWVdPVwibmFtZVwiXHJcbiAgICAgICAgW3ZhbHVlXT1cImdldEl0ZW1JZChpdGVtKVwiXHJcbiAgICAgICAgY2xhc3M9XCJoaWRkZW5cIlxyXG4gICAgICAgIChmb2N1cyk9XCJzZXRGb2N1c3NlZElkKGl0ZW0pXCJcclxuICAgICAgICAoYmx1cik9XCJzZXRGb2N1c3NlZElkKHVuZGVmaW5lZClcIlxyXG4gICAgICAgIChjaGFuZ2UpPVwic2VsZWN0Q2hhbmdlZChpdGVtKVwiXHJcbiAgICAvPlxyXG4gICAgPHZkci1zZWxlY3QtdG9nZ2xlIFtzZWxlY3RlZF09XCJpc1NlbGVjdGVkKGl0ZW0pXCIgc2l6ZT1cInNtYWxsXCI+PC92ZHItc2VsZWN0LXRvZ2dsZT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCI+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gICAgPC9kaXY+XHJcbjwvbGFiZWw+XHJcbiJdfQ==
@@ -29,9 +29,9 @@ export class ExternalImageDialogComponent {
29
29
  }
30
30
  }
31
31
  ExternalImageDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ExternalImageDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
32
- ExternalImageDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ExternalImageDialogComponent, selector: "vdr-external-image-dialog", ngImport: i0, template: "<div class=\"flex\">\r\n <form [formGroup]=\"form\" class=\"flex-spacer\" clrForm clrLayout=\"vertical\">\r\n <clr-input-container class=\"expand\">\r\n <label>{{ 'editor.image-src' | translate }}</label>\r\n <input clrInput type=\"text\" formControlName=\"src\" />\r\n </clr-input-container>\r\n <clr-input-container class=\"expand\">\r\n <label>{{ 'editor.image-title' | translate }}</label>\r\n <input clrInput type=\"text\" formControlName=\"title\" />\r\n </clr-input-container>\r\n <clr-input-container class=\"expand\">\r\n <label>{{ 'editor.image-alt' | translate }}</label>\r\n <input clrInput type=\"text\" formControlName=\"alt\" />\r\n </clr-input-container>\r\n </form>\r\n <div class=\"preview\">\r\n <img\r\n [src]=\"form.get('src')?.value\"\r\n [class.visible]=\"previewLoaded\"\r\n (load)=\"onImageLoad($event)\"\r\n (error)=\"onImageError($event)\"\r\n />\r\n <div class=\"placeholder\" *ngIf=\"!previewLoaded\">\r\n <clr-icon shape=\"image\" size=\"128\"></clr-icon>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"submit\" (click)=\"select()\" class=\"btn btn-primary\" [disabled]=\"form.invalid || !previewLoaded\">\r\n {{ 'editor.insert-image' | translate }}\r\n </button>\r\n</ng-template>\r\n", styles: [".preview{display:flex;align-items:center;justify-content:center;max-width:150px;margin-left:12px}.preview img{max-width:100%;display:none}.preview img.visible{display:block}.preview .placeholder{color:var(--color-grey-300)}\n"], components: [{ type: i1.ClrInputContainer, selector: "clr-input-container" }], directives: [{ type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.ClrForm, selector: "[clrForm]", inputs: ["clrLabelSize"] }, { type: i1.ClrLayout, selector: "[clrForm][clrLayout]", inputs: ["clrLayout"] }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.ClrLabel, selector: "label", inputs: ["for"] }, { type: i3.FormFieldControlDirective, selector: "input, textarea, select" }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.ClrInput, selector: "[clrInput]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.ClrIconCustomTag, selector: "clr-icon" }, { type: i5.DialogButtonsDirective, selector: "[vdrDialogButtons]" }], pipes: { "translate": i6.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
32
+ ExternalImageDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ExternalImageDialogComponent, selector: "vdr-external-image-dialog", ngImport: i0, template: "<div class=\"flex\">\r\n <form [formGroup]=\"form\" class=\"flex-spacer\" clrForm clrLayout=\"vertical\">\r\n <clr-input-container class=\"expand\">\r\n <label>{{ 'editor.image-src' | translate }}</label>\r\n <input clrInput type=\"text\" formControlName=\"src\" />\r\n </clr-input-container>\r\n <clr-input-container class=\"expand\">\r\n <label>{{ 'editor.image-title' | translate }}</label>\r\n <input clrInput type=\"text\" formControlName=\"title\" />\r\n </clr-input-container>\r\n <clr-input-container class=\"expand\">\r\n <label>{{ 'editor.image-alt' | translate }}</label>\r\n <input clrInput type=\"text\" formControlName=\"alt\" />\r\n </clr-input-container>\r\n </form>\r\n <div class=\"preview\">\r\n <img\r\n [src]=\"form.get('src')?.value\"\r\n [class.visible]=\"previewLoaded\"\r\n (load)=\"onImageLoad($event)\"\r\n (error)=\"onImageError($event)\"\r\n />\r\n <div class=\"placeholder\" *ngIf=\"!previewLoaded\">\r\n <clr-icon shape=\"image\" size=\"128\"></clr-icon>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"submit\" (click)=\"select()\" class=\"btn btn-primary\" [disabled]=\"form.invalid || !previewLoaded\">\r\n <ng-container *ngIf=\"existing; else doesNotExist\">{{ 'common.update' | translate }}</ng-container>\r\n <ng-template #doesNotExist>{{ 'editor.insert-image' | translate }}</ng-template>\r\n </button>\r\n</ng-template>\r\n", styles: [".preview{display:flex;align-items:center;justify-content:center;max-width:150px;margin-left:12px}.preview img{max-width:100%;display:none}.preview img.visible{display:block}.preview .placeholder{color:var(--color-grey-300)}\n"], components: [{ type: i1.ClrInputContainer, selector: "clr-input-container" }], directives: [{ type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i1.ClrForm, selector: "[clrForm]", inputs: ["clrLabelSize"] }, { type: i1.ClrLayout, selector: "[clrForm][clrLayout]", inputs: ["clrLayout"] }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i1.ClrLabel, selector: "label", inputs: ["for"] }, { type: i3.FormFieldControlDirective, selector: "input, textarea, select" }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i1.ClrInput, selector: "[clrInput]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.ClrIconCustomTag, selector: "clr-icon" }, { type: i5.DialogButtonsDirective, selector: "[vdrDialogButtons]" }], pipes: { "translate": i6.TranslatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
33
33
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ExternalImageDialogComponent, decorators: [{
34
34
  type: Component,
35
- args: [{ selector: 'vdr-external-image-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex\">\r\n <form [formGroup]=\"form\" class=\"flex-spacer\" clrForm clrLayout=\"vertical\">\r\n <clr-input-container class=\"expand\">\r\n <label>{{ 'editor.image-src' | translate }}</label>\r\n <input clrInput type=\"text\" formControlName=\"src\" />\r\n </clr-input-container>\r\n <clr-input-container class=\"expand\">\r\n <label>{{ 'editor.image-title' | translate }}</label>\r\n <input clrInput type=\"text\" formControlName=\"title\" />\r\n </clr-input-container>\r\n <clr-input-container class=\"expand\">\r\n <label>{{ 'editor.image-alt' | translate }}</label>\r\n <input clrInput type=\"text\" formControlName=\"alt\" />\r\n </clr-input-container>\r\n </form>\r\n <div class=\"preview\">\r\n <img\r\n [src]=\"form.get('src')?.value\"\r\n [class.visible]=\"previewLoaded\"\r\n (load)=\"onImageLoad($event)\"\r\n (error)=\"onImageError($event)\"\r\n />\r\n <div class=\"placeholder\" *ngIf=\"!previewLoaded\">\r\n <clr-icon shape=\"image\" size=\"128\"></clr-icon>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"submit\" (click)=\"select()\" class=\"btn btn-primary\" [disabled]=\"form.invalid || !previewLoaded\">\r\n {{ 'editor.insert-image' | translate }}\r\n </button>\r\n</ng-template>\r\n", styles: [".preview{display:flex;align-items:center;justify-content:center;max-width:150px;margin-left:12px}.preview img{max-width:100%;display:none}.preview img.visible{display:block}.preview .placeholder{color:var(--color-grey-300)}\n"] }]
35
+ args: [{ selector: 'vdr-external-image-dialog', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex\">\r\n <form [formGroup]=\"form\" class=\"flex-spacer\" clrForm clrLayout=\"vertical\">\r\n <clr-input-container class=\"expand\">\r\n <label>{{ 'editor.image-src' | translate }}</label>\r\n <input clrInput type=\"text\" formControlName=\"src\" />\r\n </clr-input-container>\r\n <clr-input-container class=\"expand\">\r\n <label>{{ 'editor.image-title' | translate }}</label>\r\n <input clrInput type=\"text\" formControlName=\"title\" />\r\n </clr-input-container>\r\n <clr-input-container class=\"expand\">\r\n <label>{{ 'editor.image-alt' | translate }}</label>\r\n <input clrInput type=\"text\" formControlName=\"alt\" />\r\n </clr-input-container>\r\n </form>\r\n <div class=\"preview\">\r\n <img\r\n [src]=\"form.get('src')?.value\"\r\n [class.visible]=\"previewLoaded\"\r\n (load)=\"onImageLoad($event)\"\r\n (error)=\"onImageError($event)\"\r\n />\r\n <div class=\"placeholder\" *ngIf=\"!previewLoaded\">\r\n <clr-icon shape=\"image\" size=\"128\"></clr-icon>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template vdrDialogButtons>\r\n <button type=\"submit\" (click)=\"select()\" class=\"btn btn-primary\" [disabled]=\"form.invalid || !previewLoaded\">\r\n <ng-container *ngIf=\"existing; else doesNotExist\">{{ 'common.update' | translate }}</ng-container>\r\n <ng-template #doesNotExist>{{ 'editor.insert-image' | translate }}</ng-template>\r\n </button>\r\n</ng-template>\r\n", styles: [".preview{display:flex;align-items:center;justify-content:center;max-width:150px;margin-left:12px}.preview img{max-width:100%;display:none}.preview img.visible{display:block}.preview .placeholder{color:var(--color-grey-300)}\n"] }]
36
36
  }] });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtaW1hZ2UtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvc2hhcmVkL2NvbXBvbmVudHMvcmljaC10ZXh0LWVkaXRvci9leHRlcm5hbC1pbWFnZS1kaWFsb2cvZXh0ZXJuYWwtaW1hZ2UtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvc2hhcmVkL2NvbXBvbmVudHMvcmljaC10ZXh0LWVkaXRvci9leHRlcm5hbC1pbWFnZS1kaWFsb2cvZXh0ZXJuYWwtaW1hZ2UtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBZ0JwRSxNQUFNLE9BQU8sNEJBQTRCO0lBTnpDO1FBVUksa0JBQWEsR0FBRyxLQUFLLENBQUM7S0FzQnpCO0lBbkJHLFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksU0FBUyxDQUFDO1lBQ3RCLEdBQUcsRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDakYsS0FBSyxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDaEUsR0FBRyxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDL0QsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFZO1FBQ3BCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBWTtRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDOzt5SEF6QlEsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsaUVDakJ6QyxtOENBaUNBOzJGRGhCYSw0QkFBNEI7a0JBTnhDLFNBQVM7K0JBQ0ksMkJBQTJCLG1CQUdwQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBEaWFsb2cgfSBmcm9tICcuLi8uLi8uLi8uLi9wcm92aWRlcnMvbW9kYWwvbW9kYWwudHlwZXMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFeHRlcm5hbEltYWdlQXR0cnMge1xyXG4gICAgc3JjOiBzdHJpbmc7XHJcbiAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgYWx0OiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZHItZXh0ZXJuYWwtaW1hZ2UtZGlhbG9nJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9leHRlcm5hbC1pbWFnZS1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vZXh0ZXJuYWwtaW1hZ2UtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEV4dGVybmFsSW1hZ2VEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIERpYWxvZzxFeHRlcm5hbEltYWdlQXR0cnM+IHtcclxuICAgIGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgICByZXNvbHZlV2l0aDogKHJlc3VsdD86IEV4dGVybmFsSW1hZ2VBdHRycykgPT4gdm9pZDtcclxuICAgIHByZXZpZXdMb2FkZWQgPSBmYWxzZTtcclxuICAgIGV4aXN0aW5nPzogRXh0ZXJuYWxJbWFnZUF0dHJzO1xyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgICAgICAgICBzcmM6IG5ldyBGb3JtQ29udHJvbCh0aGlzLmV4aXN0aW5nID8gdGhpcy5leGlzdGluZy5zcmMgOiAnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXHJcbiAgICAgICAgICAgIHRpdGxlOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5leGlzdGluZyA/IHRoaXMuZXhpc3RpbmcudGl0bGUgOiAnJyksXHJcbiAgICAgICAgICAgIGFsdDogbmV3IEZvcm1Db250cm9sKHRoaXMuZXhpc3RpbmcgPyB0aGlzLmV4aXN0aW5nLmFsdCA6ICcnKSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3QoKSB7XHJcbiAgICAgICAgdGhpcy5yZXNvbHZlV2l0aCh0aGlzLmZvcm0udmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uSW1hZ2VMb2FkKGV2ZW50OiBFdmVudCkge1xyXG4gICAgICAgIHRoaXMucHJldmlld0xvYWRlZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgb25JbWFnZUVycm9yKGV2ZW50OiBFdmVudCkge1xyXG4gICAgICAgIHRoaXMucHJldmlld0xvYWRlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cImZsZXgtc3BhY2VyXCIgY2xyRm9ybSBjbHJMYXlvdXQ9XCJ2ZXJ0aWNhbFwiPlxyXG4gICAgICAgIDxjbHItaW5wdXQtY29udGFpbmVyIGNsYXNzPVwiZXhwYW5kXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD57eyAnZWRpdG9yLmltYWdlLXNyYycgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xySW5wdXQgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJzcmNcIiAvPlxyXG4gICAgICAgIDwvY2xyLWlucHV0LWNvbnRhaW5lcj5cclxuICAgICAgICA8Y2xyLWlucHV0LWNvbnRhaW5lciBjbGFzcz1cImV4cGFuZFwiPlxyXG4gICAgICAgICAgICA8bGFiZWw+e3sgJ2VkaXRvci5pbWFnZS10aXRsZScgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xySW5wdXQgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiIC8+XHJcbiAgICAgICAgPC9jbHItaW5wdXQtY29udGFpbmVyPlxyXG4gICAgICAgIDxjbHItaW5wdXQtY29udGFpbmVyIGNsYXNzPVwiZXhwYW5kXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD57eyAnZWRpdG9yLmltYWdlLWFsdCcgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xySW5wdXQgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJhbHRcIiAvPlxyXG4gICAgICAgIDwvY2xyLWlucHV0LWNvbnRhaW5lcj5cclxuICAgIDwvZm9ybT5cclxuICAgIDxkaXYgY2xhc3M9XCJwcmV2aWV3XCI+XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICBbc3JjXT1cImZvcm0uZ2V0KCdzcmMnKT8udmFsdWVcIlxyXG4gICAgICAgICAgICBbY2xhc3MudmlzaWJsZV09XCJwcmV2aWV3TG9hZGVkXCJcclxuICAgICAgICAgICAgKGxvYWQpPVwib25JbWFnZUxvYWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChlcnJvcik9XCJvbkltYWdlRXJyb3IoJGV2ZW50KVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGxhY2Vob2xkZXJcIiAqbmdJZj1cIiFwcmV2aWV3TG9hZGVkXCI+XHJcbiAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cImltYWdlXCIgc2l6ZT1cIjEyOFwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgdmRyRGlhbG9nQnV0dG9ucz5cclxuICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJzZWxlY3QoKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZCB8fCAhcHJldmlld0xvYWRlZFwiPlxyXG4gICAgICAgIHt7ICdlZGl0b3IuaW5zZXJ0LWltYWdlJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgPC9idXR0b24+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZXJuYWwtaW1hZ2UtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvc2hhcmVkL2NvbXBvbmVudHMvcmljaC10ZXh0LWVkaXRvci9leHRlcm5hbC1pbWFnZS1kaWFsb2cvZXh0ZXJuYWwtaW1hZ2UtZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvc2hhcmVkL2NvbXBvbmVudHMvcmljaC10ZXh0LWVkaXRvci9leHRlcm5hbC1pbWFnZS1kaWFsb2cvZXh0ZXJuYWwtaW1hZ2UtZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBZ0JwRSxNQUFNLE9BQU8sNEJBQTRCO0lBTnpDO1FBVUksa0JBQWEsR0FBRyxLQUFLLENBQUM7S0FzQnpCO0lBbkJHLFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksU0FBUyxDQUFDO1lBQ3RCLEdBQUcsRUFBRSxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDakYsS0FBSyxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDaEUsR0FBRyxFQUFFLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDL0QsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFZO1FBQ3BCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQzlCLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBWTtRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDOzt5SEF6QlEsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsaUVDakJ6Qyw0bERBa0NBOzJGRGpCYSw0QkFBNEI7a0JBTnhDLFNBQVM7K0JBQ0ksMkJBQTJCLG1CQUdwQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5pbXBvcnQgeyBEaWFsb2cgfSBmcm9tICcuLi8uLi8uLi8uLi9wcm92aWRlcnMvbW9kYWwvbW9kYWwudHlwZXMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFeHRlcm5hbEltYWdlQXR0cnMge1xyXG4gICAgc3JjOiBzdHJpbmc7XHJcbiAgICB0aXRsZTogc3RyaW5nO1xyXG4gICAgYWx0OiBzdHJpbmc7XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZHItZXh0ZXJuYWwtaW1hZ2UtZGlhbG9nJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9leHRlcm5hbC1pbWFnZS1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vZXh0ZXJuYWwtaW1hZ2UtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIEV4dGVybmFsSW1hZ2VEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIERpYWxvZzxFeHRlcm5hbEltYWdlQXR0cnM+IHtcclxuICAgIGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgICByZXNvbHZlV2l0aDogKHJlc3VsdD86IEV4dGVybmFsSW1hZ2VBdHRycykgPT4gdm9pZDtcclxuICAgIHByZXZpZXdMb2FkZWQgPSBmYWxzZTtcclxuICAgIGV4aXN0aW5nPzogRXh0ZXJuYWxJbWFnZUF0dHJzO1xyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xyXG4gICAgICAgICAgICBzcmM6IG5ldyBGb3JtQ29udHJvbCh0aGlzLmV4aXN0aW5nID8gdGhpcy5leGlzdGluZy5zcmMgOiAnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXHJcbiAgICAgICAgICAgIHRpdGxlOiBuZXcgRm9ybUNvbnRyb2wodGhpcy5leGlzdGluZyA/IHRoaXMuZXhpc3RpbmcudGl0bGUgOiAnJyksXHJcbiAgICAgICAgICAgIGFsdDogbmV3IEZvcm1Db250cm9sKHRoaXMuZXhpc3RpbmcgPyB0aGlzLmV4aXN0aW5nLmFsdCA6ICcnKSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3QoKSB7XHJcbiAgICAgICAgdGhpcy5yZXNvbHZlV2l0aCh0aGlzLmZvcm0udmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uSW1hZ2VMb2FkKGV2ZW50OiBFdmVudCkge1xyXG4gICAgICAgIHRoaXMucHJldmlld0xvYWRlZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgb25JbWFnZUVycm9yKGV2ZW50OiBFdmVudCkge1xyXG4gICAgICAgIHRoaXMucHJldmlld0xvYWRlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJmbGV4XCI+XHJcbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cImZsZXgtc3BhY2VyXCIgY2xyRm9ybSBjbHJMYXlvdXQ9XCJ2ZXJ0aWNhbFwiPlxyXG4gICAgICAgIDxjbHItaW5wdXQtY29udGFpbmVyIGNsYXNzPVwiZXhwYW5kXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD57eyAnZWRpdG9yLmltYWdlLXNyYycgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xySW5wdXQgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJzcmNcIiAvPlxyXG4gICAgICAgIDwvY2xyLWlucHV0LWNvbnRhaW5lcj5cclxuICAgICAgICA8Y2xyLWlucHV0LWNvbnRhaW5lciBjbGFzcz1cImV4cGFuZFwiPlxyXG4gICAgICAgICAgICA8bGFiZWw+e3sgJ2VkaXRvci5pbWFnZS10aXRsZScgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xySW5wdXQgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiIC8+XHJcbiAgICAgICAgPC9jbHItaW5wdXQtY29udGFpbmVyPlxyXG4gICAgICAgIDxjbHItaW5wdXQtY29udGFpbmVyIGNsYXNzPVwiZXhwYW5kXCI+XHJcbiAgICAgICAgICAgIDxsYWJlbD57eyAnZWRpdG9yLmltYWdlLWFsdCcgfCB0cmFuc2xhdGUgfX08L2xhYmVsPlxyXG4gICAgICAgICAgICA8aW5wdXQgY2xySW5wdXQgdHlwZT1cInRleHRcIiBmb3JtQ29udHJvbE5hbWU9XCJhbHRcIiAvPlxyXG4gICAgICAgIDwvY2xyLWlucHV0LWNvbnRhaW5lcj5cclxuICAgIDwvZm9ybT5cclxuICAgIDxkaXYgY2xhc3M9XCJwcmV2aWV3XCI+XHJcbiAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICBbc3JjXT1cImZvcm0uZ2V0KCdzcmMnKT8udmFsdWVcIlxyXG4gICAgICAgICAgICBbY2xhc3MudmlzaWJsZV09XCJwcmV2aWV3TG9hZGVkXCJcclxuICAgICAgICAgICAgKGxvYWQpPVwib25JbWFnZUxvYWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChlcnJvcik9XCJvbkltYWdlRXJyb3IoJGV2ZW50KVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGxhY2Vob2xkZXJcIiAqbmdJZj1cIiFwcmV2aWV3TG9hZGVkXCI+XHJcbiAgICAgICAgICAgIDxjbHItaWNvbiBzaGFwZT1cImltYWdlXCIgc2l6ZT1cIjEyOFwiPjwvY2xyLWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG48bmctdGVtcGxhdGUgdmRyRGlhbG9nQnV0dG9ucz5cclxuICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIChjbGljayk9XCJzZWxlY3QoKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZCB8fCAhcHJldmlld0xvYWRlZFwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJleGlzdGluZzsgZWxzZSBkb2VzTm90RXhpc3RcIj57eyAnY29tbW9uLnVwZGF0ZScgfCB0cmFuc2xhdGUgfX08L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2RvZXNOb3RFeGlzdD57eyAnZWRpdG9yLmluc2VydC1pbWFnZScgfCB0cmFuc2xhdGUgfX08L25nLXRlbXBsYXRlPlxyXG4gICAgPC9idXR0b24+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
@@ -0,0 +1,136 @@
1
+ import { TemplatePortal } from '@angular/cdk/portal';
2
+ import { ChangeDetectionStrategy, Component, Input, ViewChild, } from '@angular/core';
3
+ import { BehaviorSubject } from 'rxjs';
4
+ import { distinctUntilChanged } from 'rxjs/operators';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/cdk/overlay";
7
+ import * as i2 from "./context-menu.service";
8
+ import * as i3 from "../../../dropdown/dropdown.component";
9
+ import * as i4 from "../../../dropdown/dropdown-menu.component";
10
+ import * as i5 from "../../../dropdown/dropdown-trigger.directive";
11
+ import * as i6 from "@angular/common";
12
+ import * as i7 from "@clr/angular";
13
+ export class ContextMenuComponent {
14
+ constructor(overlay, viewContainerRef, contextMenuService) {
15
+ this.overlay = overlay;
16
+ this.viewContainerRef = viewContainerRef;
17
+ this.contextMenuService = contextMenuService;
18
+ this.triggerIsHidden = new BehaviorSubject(false);
19
+ this.onScroll = () => {
20
+ if (this.overlayRef?.hasAttached()) {
21
+ this.overlayRef.updatePosition();
22
+ }
23
+ };
24
+ }
25
+ ngAfterViewInit() {
26
+ this.contentArea = document.querySelector('.content-area');
27
+ this.menuPortal = new TemplatePortal(this.menuTemplate, this.viewContainerRef);
28
+ this.hideTrigger$ = this.triggerIsHidden.asObservable().pipe(distinctUntilChanged());
29
+ this.contentArea?.addEventListener('scroll', this.onScroll, { passive: true });
30
+ this.contextMenuSub = this.contextMenuService.contextMenu$.subscribe(contextMenuConfig => {
31
+ this.overlayRef?.dispose();
32
+ this.menuConfig = contextMenuConfig;
33
+ if (contextMenuConfig) {
34
+ this.overlayRef = this.overlay.create({
35
+ hasBackdrop: false,
36
+ positionStrategy: this.getPositionStrategy(contextMenuConfig.element),
37
+ maxHeight: '70vh',
38
+ });
39
+ this.overlayRef.attach(this.menuPortal);
40
+ this.triggerIsHidden.next(false);
41
+ const triggerButton = this.overlayRef.hostElement.querySelector('.context-menu-trigger');
42
+ const editorMenu = this.editorMenuElement;
43
+ if (triggerButton) {
44
+ const overlapMarginPx = 5;
45
+ this.hideTriggerHandler = () => {
46
+ if (editorMenu && triggerButton) {
47
+ if (triggerButton.getBoundingClientRect().top + overlapMarginPx <
48
+ editorMenu.getBoundingClientRect().bottom) {
49
+ this.triggerIsHidden.next(true);
50
+ }
51
+ else {
52
+ this.triggerIsHidden.next(false);
53
+ }
54
+ }
55
+ };
56
+ this.contentArea?.addEventListener('scroll', this.hideTriggerHandler, { passive: true });
57
+ requestAnimationFrame(() => this.hideTriggerHandler?.());
58
+ }
59
+ }
60
+ else {
61
+ if (this.hideTriggerHandler) {
62
+ this.contentArea?.removeEventListener('scroll', this.hideTriggerHandler);
63
+ }
64
+ }
65
+ });
66
+ }
67
+ triggerClick() {
68
+ this.contextMenuService.setVisibility(true);
69
+ }
70
+ ngOnDestroy() {
71
+ this.overlayRef?.dispose();
72
+ this.contextMenuSub?.unsubscribe();
73
+ this.contentArea?.removeEventListener('scroll', this.onScroll);
74
+ if (this.hideTriggerHandler) {
75
+ this.contentArea?.removeEventListener('scroll', this.hideTriggerHandler);
76
+ }
77
+ }
78
+ clickItem(item) {
79
+ item.onClick();
80
+ }
81
+ getPositionStrategy(element) {
82
+ const position = {
83
+ ['top-left']: {
84
+ originX: 'start',
85
+ originY: 'top',
86
+ overlayX: 'start',
87
+ overlayY: 'bottom',
88
+ },
89
+ ['top-right']: {
90
+ originX: 'end',
91
+ originY: 'top',
92
+ overlayX: 'end',
93
+ overlayY: 'bottom',
94
+ },
95
+ ['bottom-left']: {
96
+ originX: 'start',
97
+ originY: 'bottom',
98
+ overlayX: 'start',
99
+ overlayY: 'top',
100
+ },
101
+ ['bottom-right']: {
102
+ originX: 'end',
103
+ originY: 'bottom',
104
+ overlayX: 'end',
105
+ overlayY: 'top',
106
+ },
107
+ };
108
+ const pos = position['top-left'];
109
+ return this.overlay
110
+ .position()
111
+ .flexibleConnectedTo(element)
112
+ .withPositions([pos, this.invertPosition(pos)])
113
+ .withViewportMargin(0)
114
+ .withLockedPosition(false)
115
+ .withPush(false);
116
+ }
117
+ /** Inverts an overlay position. */
118
+ invertPosition(pos) {
119
+ const inverted = { ...pos };
120
+ inverted.originY = pos.originY === 'top' ? 'bottom' : 'top';
121
+ inverted.overlayY = pos.overlayY === 'top' ? 'bottom' : 'top';
122
+ return inverted;
123
+ }
124
+ }
125
+ ContextMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ContextMenuComponent, deps: [{ token: i1.Overlay }, { token: i0.ViewContainerRef }, { token: i2.ContextMenuService }], target: i0.ɵɵFactoryTarget.Component });
126
+ ContextMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.3", type: ContextMenuComponent, selector: "vdr-context-menu", inputs: { editorMenuElement: "editorMenuElement" }, viewQueries: [{ propertyName: "menuTemplate", first: true, predicate: ["contextMenu"], descendants: true, static: true }], ngImport: i0, template: "<ng-template #contextMenu>\r\n <vdr-dropdown>\r\n <button class=\"context-menu-trigger\" vdrDropdownTrigger [class.hidden]=\"hideTrigger$ | async\" (click)=\"triggerClick()\">\r\n <clr-icon\r\n *ngIf=\"menuConfig?.iconShape as shape\"\r\n [attr.shape]=\"shape\"\r\n size=\"16\"\r\n class=\"mr2\"\r\n ></clr-icon>\r\n <span class=\"title-label\">{{ menuConfig?.title }}</span>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\" customClasses=\"context-menu\">\r\n <ng-container *ngFor=\"let item of menuConfig?.items\">\r\n <button\r\n class=\"context-menu-item\"\r\n *ngIf=\"item.enabled && item.separator !== true\"\r\n type=\"button\"\r\n (click)=\"clickItem(item)\"\r\n >\r\n <div *ngIf=\"item.iconClass\" class=\"cm-icon\" [ngClass]=\"item.iconClass\"></div>\r\n <clr-icon\r\n *ngIf=\"item.iconShape as shape\"\r\n [attr.shape]=\"shape\"\r\n size=\"16\"\r\n class=\"mr2\"\r\n ></clr-icon>\r\n {{ item.label }}\r\n </button>\r\n <div *ngIf=\"item.enabled && item.separator\" class=\"dropdown-divider\" role=\"separator\"></div>\r\n </ng-container>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n</ng-template>\r\n", styles: [".context-menu-trigger{margin:0;display:flex;align-items:center;border:1px solid var(--color-component-border-200);font-size:90%;color:var(--color-text-200);border-radius:var(--border-radius-input);background-color:var(--color-component-bg-100)}.title-label{padding-right:15px;position:relative}.title-label:after{content:\"\";border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid currentColor;opacity:.6;position:absolute;right:4px;top:calc(50% - 2px)}.context-menu-item{display:flex;align-items:center;width:100%;text-align:start;font-size:90%;color:var(--color-text-200);background-color:var(--color-component-bg-100);cursor:pointer;border:none}.context-menu-item:hover{background-color:var(--color-component-bg-200)}::ng-deep .dropdown-menu.context-menu{padding:0;background-color:var(--color-component-bg-100)}::ng-deep .context-menu-trigger{min-height:16px}::ng-deep .context-menu-trigger.hidden{visibility:hidden}::ng-deep .cm-icon.add-column{height:14px;width:4px;border:1px solid;margin:0 6px 0 8px;position:relative}::ng-deep .cm-icon.add-column:before{content:\"+\";position:absolute;font-size:16px;line-height:14px;left:-10px}::ng-deep .cm-icon.add-row{height:4px;width:14px;border:1px solid;margin:6px 4px 2px 0;position:relative}::ng-deep .cm-icon.add-row:before{content:\"+\";position:absolute;font-size:16px;line-height:14px;left:-2px;top:-10px}\n"], components: [{ type: i3.DropdownComponent, selector: "vdr-dropdown", inputs: ["manualToggle"] }, { type: i4.DropdownMenuComponent, selector: "vdr-dropdown-menu", inputs: ["vdrPosition", "customClasses"] }], directives: [{ type: i5.DropdownTriggerDirective, selector: "[vdrDropdownTrigger]" }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.ClrIconCustomTag, selector: "clr-icon" }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "async": i6.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
127
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ContextMenuComponent, decorators: [{
128
+ type: Component,
129
+ args: [{ selector: 'vdr-context-menu', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #contextMenu>\r\n <vdr-dropdown>\r\n <button class=\"context-menu-trigger\" vdrDropdownTrigger [class.hidden]=\"hideTrigger$ | async\" (click)=\"triggerClick()\">\r\n <clr-icon\r\n *ngIf=\"menuConfig?.iconShape as shape\"\r\n [attr.shape]=\"shape\"\r\n size=\"16\"\r\n class=\"mr2\"\r\n ></clr-icon>\r\n <span class=\"title-label\">{{ menuConfig?.title }}</span>\r\n </button>\r\n <vdr-dropdown-menu vdrPosition=\"bottom-right\" customClasses=\"context-menu\">\r\n <ng-container *ngFor=\"let item of menuConfig?.items\">\r\n <button\r\n class=\"context-menu-item\"\r\n *ngIf=\"item.enabled && item.separator !== true\"\r\n type=\"button\"\r\n (click)=\"clickItem(item)\"\r\n >\r\n <div *ngIf=\"item.iconClass\" class=\"cm-icon\" [ngClass]=\"item.iconClass\"></div>\r\n <clr-icon\r\n *ngIf=\"item.iconShape as shape\"\r\n [attr.shape]=\"shape\"\r\n size=\"16\"\r\n class=\"mr2\"\r\n ></clr-icon>\r\n {{ item.label }}\r\n </button>\r\n <div *ngIf=\"item.enabled && item.separator\" class=\"dropdown-divider\" role=\"separator\"></div>\r\n </ng-container>\r\n </vdr-dropdown-menu>\r\n </vdr-dropdown>\r\n</ng-template>\r\n", styles: [".context-menu-trigger{margin:0;display:flex;align-items:center;border:1px solid var(--color-component-border-200);font-size:90%;color:var(--color-text-200);border-radius:var(--border-radius-input);background-color:var(--color-component-bg-100)}.title-label{padding-right:15px;position:relative}.title-label:after{content:\"\";border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid currentColor;opacity:.6;position:absolute;right:4px;top:calc(50% - 2px)}.context-menu-item{display:flex;align-items:center;width:100%;text-align:start;font-size:90%;color:var(--color-text-200);background-color:var(--color-component-bg-100);cursor:pointer;border:none}.context-menu-item:hover{background-color:var(--color-component-bg-200)}::ng-deep .dropdown-menu.context-menu{padding:0;background-color:var(--color-component-bg-100)}::ng-deep .context-menu-trigger{min-height:16px}::ng-deep .context-menu-trigger.hidden{visibility:hidden}::ng-deep .cm-icon.add-column{height:14px;width:4px;border:1px solid;margin:0 6px 0 8px;position:relative}::ng-deep .cm-icon.add-column:before{content:\"+\";position:absolute;font-size:16px;line-height:14px;left:-10px}::ng-deep .cm-icon.add-row{height:4px;width:14px;border:1px solid;margin:6px 4px 2px 0;position:relative}::ng-deep .cm-icon.add-row:before{content:\"+\";position:absolute;font-size:16px;line-height:14px;left:-2px;top:-10px}\n"] }]
130
+ }], ctorParameters: function () { return [{ type: i1.Overlay }, { type: i0.ViewContainerRef }, { type: i2.ContextMenuService }]; }, propDecorators: { editorMenuElement: [{
131
+ type: Input
132
+ }], menuTemplate: [{
133
+ type: ViewChild,
134
+ args: ['contextMenu', { static: true }]
135
+ }] } });
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvc2hhcmVkL2NvbXBvbmVudHMvcmljaC10ZXh0LWVkaXRvci9wcm9zZW1pcnJvci9jb250ZXh0LW1lbnUvY29udGV4dC1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvc2hhcmVkL2NvbXBvbmVudHMvcmljaC10ZXh0LWVkaXRvci9wcm9zZW1pcnJvci9jb250ZXh0LW1lbnUvY29udGV4dC1tZW51LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRCxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEVBR0wsU0FBUyxHQUVaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFZdEQsTUFBTSxPQUFPLG9CQUFvQjtJQWE3QixZQUNZLE9BQWdCLEVBQ2hCLGdCQUFrQyxFQUNuQyxrQkFBc0M7UUFGckMsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ25DLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFWekMsb0JBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQWE5RCxhQUFRLEdBQUcsR0FBRyxFQUFFO1lBQ1osSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxFQUFFO2dCQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQ3BDO1FBQ0wsQ0FBQyxDQUFDO0lBTkMsQ0FBQztJQVFKLGVBQWU7UUFDWCxJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRS9FLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQ3JGLElBQUksQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUUvRSxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDLEVBQUU7WUFDckYsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLGlCQUFpQixDQUFDO1lBQ3BDLElBQUksaUJBQWlCLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7b0JBQ2xDLFdBQVcsRUFBRSxLQUFLO29CQUNsQixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDO29CQUNyRSxTQUFTLEVBQUUsTUFBTTtpQkFDcEIsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRWpDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO2dCQUN6RixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7Z0JBQzFDLElBQUksYUFBYSxFQUFFO29CQUNmLE1BQU0sZUFBZSxHQUFHLENBQUMsQ0FBQztvQkFDMUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEdBQUcsRUFBRTt3QkFDM0IsSUFBSSxVQUFVLElBQUksYUFBYSxFQUFFOzRCQUM3QixJQUNJLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEdBQUcsR0FBRyxlQUFlO2dDQUMzRCxVQUFVLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxNQUFNLEVBQzNDO2dDQUNFLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDOzZCQUNuQztpQ0FBTTtnQ0FDSCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzs2QkFDcEM7eUJBQ0o7b0JBQ0wsQ0FBQyxDQUFDO29CQUNGLElBQUksQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUN6RixxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUM7aUJBQzVEO2FBQ0o7aUJBQU07Z0JBQ0gsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxXQUFXLEVBQUUsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2lCQUM1RTthQUNKO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLFdBQVcsRUFBRSxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQy9ELElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxXQUFXLEVBQUUsbUJBQW1CLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1NBQzVFO0lBQ0wsQ0FBQztJQUVELFNBQVMsQ0FBQyxJQUFxQjtRQUMzQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDbkIsQ0FBQztJQUVPLG1CQUFtQixDQUFDLE9BQWdCO1FBQ3hDLE1BQU0sUUFBUSxHQUFtRDtZQUM3RCxDQUFDLFVBQVUsQ0FBQyxFQUFFO2dCQUNWLE9BQU8sRUFBRSxPQUFPO2dCQUNoQixPQUFPLEVBQUUsS0FBSztnQkFDZCxRQUFRLEVBQUUsT0FBTztnQkFDakIsUUFBUSxFQUFFLFFBQVE7YUFDckI7WUFDRCxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUNYLE9BQU8sRUFBRSxLQUFLO2dCQUNkLE9BQU8sRUFBRSxLQUFLO2dCQUNkLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFFBQVEsRUFBRSxRQUFRO2FBQ3JCO1lBQ0QsQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDYixPQUFPLEVBQUUsT0FBTztnQkFDaEIsT0FBTyxFQUFFLFFBQVE7Z0JBQ2pCLFFBQVEsRUFBRSxPQUFPO2dCQUNqQixRQUFRLEVBQUUsS0FBSzthQUNsQjtZQUNELENBQUMsY0FBYyxDQUFDLEVBQUU7Z0JBQ2QsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsT0FBTyxFQUFFLFFBQVE7Z0JBQ2pCLFFBQVEsRUFBRSxLQUFLO2dCQUNmLFFBQVEsRUFBRSxLQUFLO2FBQ2xCO1NBQ0osQ0FBQztRQUVGLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUVqQyxPQUFPLElBQUksQ0FBQyxPQUFPO2FBQ2QsUUFBUSxFQUFFO2FBQ1YsbUJBQW1CLENBQUMsT0FBTyxDQUFDO2FBQzVCLGFBQWEsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDOUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO2FBQ3JCLGtCQUFrQixDQUFDLEtBQUssQ0FBQzthQUN6QixRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELG1DQUFtQztJQUMzQixjQUFjLENBQUMsR0FBc0I7UUFDekMsTUFBTSxRQUFRLEdBQUcsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQzVCLFFBQVEsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzVELFFBQVEsQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBRTlELE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7O2lIQXRJUSxvQkFBb0I7cUdBQXBCLG9CQUFvQix1T0N6QmpDLG1qREFpQ0E7MkZEUmEsb0JBQW9CO2tCQU5oQyxTQUFTOytCQUNJLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNOzhKQUd0QyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQzhDLFlBQVk7c0JBQS9ELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbm5lY3RlZFBvc2l0aW9uLCBPdmVybGF5LCBPdmVybGF5UmVmLCBQb3NpdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xyXG5pbXBvcnQgeyBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQge1xyXG4gICAgQWZ0ZXJWaWV3SW5pdCxcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkRlc3Ryb3ksXHJcbiAgICBUZW1wbGF0ZVJlZixcclxuICAgIFZpZXdDaGlsZCxcclxuICAgIFZpZXdDb250YWluZXJSZWYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgQ29udGV4dE1lbnVDb25maWcsIENvbnRleHRNZW51SXRlbSwgQ29udGV4dE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZXh0LW1lbnUuc2VydmljZSc7XHJcblxyXG50eXBlIERyb3Bkb3duUG9zaXRpb24gPSAndG9wLWxlZnQnIHwgJ3RvcC1yaWdodCcgfCAnYm90dG9tLWxlZnQnIHwgJ2JvdHRvbS1yaWdodCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmRyLWNvbnRleHQtbWVudScsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29udGV4dC1tZW51LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2NvbnRleHQtbWVudS5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb250ZXh0TWVudUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgICBASW5wdXQoKSBlZGl0b3JNZW51RWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkO1xyXG4gICAgQFZpZXdDaGlsZCgnY29udGV4dE1lbnUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwcml2YXRlIG1lbnVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICBtZW51Q29uZmlnOiBDb250ZXh0TWVudUNvbmZpZyB8IHVuZGVmaW5lZDtcclxuICAgIGhpZGVUcmlnZ2VyJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcclxuICAgIHByaXZhdGUgdHJpZ2dlcklzSGlkZGVuID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XHJcbiAgICBwcml2YXRlIG1lbnVQb3J0YWw6IFRlbXBsYXRlUG9ydGFsPGFueT47XHJcbiAgICBwcml2YXRlIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWY7XHJcbiAgICBwcml2YXRlIGNvbnRleHRNZW51U3ViOiBTdWJzY3JpcHRpb247XHJcbiAgICBwcml2YXRlIGNvbnRlbnRBcmVhOiBIVE1MRGl2RWxlbWVudCB8IG51bGw7XHJcbiAgICBwcml2YXRlIGhpZGVUcmlnZ2VySGFuZGxlcjogKCgpID0+IHZvaWQpIHwgdW5kZWZpbmVkO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgb3ZlcmxheTogT3ZlcmxheSxcclxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXHJcbiAgICAgICAgcHVibGljIGNvbnRleHRNZW51U2VydmljZTogQ29udGV4dE1lbnVTZXJ2aWNlLFxyXG4gICAgKSB7fVxyXG5cclxuICAgIG9uU2Nyb2xsID0gKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLm92ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCkpIHtcclxuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmLnVwZGF0ZVBvc2l0aW9uKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgdGhpcy5jb250ZW50QXJlYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jb250ZW50LWFyZWEnKTtcclxuICAgICAgICB0aGlzLm1lbnVQb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5tZW51VGVtcGxhdGUsIHRoaXMudmlld0NvbnRhaW5lclJlZik7XHJcblxyXG4gICAgICAgIHRoaXMuaGlkZVRyaWdnZXIkID0gdGhpcy50cmlnZ2VySXNIaWRkZW4uYXNPYnNlcnZhYmxlKCkucGlwZShkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKTtcclxuICAgICAgICB0aGlzLmNvbnRlbnRBcmVhPy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLm9uU2Nyb2xsLCB7IHBhc3NpdmU6IHRydWUgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuY29udGV4dE1lbnVTdWIgPSB0aGlzLmNvbnRleHRNZW51U2VydmljZS5jb250ZXh0TWVudSQuc3Vic2NyaWJlKGNvbnRleHRNZW51Q29uZmlnID0+IHtcclxuICAgICAgICAgICAgdGhpcy5vdmVybGF5UmVmPy5kaXNwb3NlKCk7XHJcbiAgICAgICAgICAgIHRoaXMubWVudUNvbmZpZyA9IGNvbnRleHRNZW51Q29uZmlnO1xyXG4gICAgICAgICAgICBpZiAoY29udGV4dE1lbnVDb25maWcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZiA9IHRoaXMub3ZlcmxheS5jcmVhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvblN0cmF0ZWd5OiB0aGlzLmdldFBvc2l0aW9uU3RyYXRlZ3koY29udGV4dE1lbnVDb25maWcuZWxlbWVudCksXHJcbiAgICAgICAgICAgICAgICAgICAgbWF4SGVpZ2h0OiAnNzB2aCcsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMub3ZlcmxheVJlZi5hdHRhY2godGhpcy5tZW51UG9ydGFsKTtcclxuICAgICAgICAgICAgICAgIHRoaXMudHJpZ2dlcklzSGlkZGVuLm5leHQoZmFsc2UpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHRyaWdnZXJCdXR0b24gPSB0aGlzLm92ZXJsYXlSZWYuaG9zdEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmNvbnRleHQtbWVudS10cmlnZ2VyJyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlZGl0b3JNZW51ID0gdGhpcy5lZGl0b3JNZW51RWxlbWVudDtcclxuICAgICAgICAgICAgICAgIGlmICh0cmlnZ2VyQnV0dG9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3ZlcmxhcE1hcmdpblB4ID0gNTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVUcmlnZ2VySGFuZGxlciA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVkaXRvck1lbnUgJiYgdHJpZ2dlckJ1dHRvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJCdXR0b24uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wICsgb3ZlcmxhcE1hcmdpblB4IDxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3JNZW51LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VySXNIaWRkZW4ubmV4dCh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VySXNIaWRkZW4ubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGVudEFyZWE/LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuaGlkZVRyaWdnZXJIYW5kbGVyLCB7IHBhc3NpdmU6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHRoaXMuaGlkZVRyaWdnZXJIYW5kbGVyPy4oKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5oaWRlVHJpZ2dlckhhbmRsZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRBcmVhPy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLmhpZGVUcmlnZ2VySGFuZGxlcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0cmlnZ2VyQ2xpY2soKSB7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0TWVudVNlcnZpY2Uuc2V0VmlzaWJpbGl0eSh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm92ZXJsYXlSZWY/LmRpc3Bvc2UoKTtcclxuICAgICAgICB0aGlzLmNvbnRleHRNZW51U3ViPy51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIHRoaXMuY29udGVudEFyZWE/LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMub25TY3JvbGwpO1xyXG4gICAgICAgIGlmICh0aGlzLmhpZGVUcmlnZ2VySGFuZGxlcikge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnRBcmVhPy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLmhpZGVUcmlnZ2VySGFuZGxlcik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNsaWNrSXRlbShpdGVtOiBDb250ZXh0TWVudUl0ZW0pIHtcclxuICAgICAgICBpdGVtLm9uQ2xpY2soKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFBvc2l0aW9uU3RyYXRlZ3koZWxlbWVudDogRWxlbWVudCk6IFBvc2l0aW9uU3RyYXRlZ3kge1xyXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uOiB7IFtLIGluIERyb3Bkb3duUG9zaXRpb25dOiBDb25uZWN0ZWRQb3NpdGlvbiB9ID0ge1xyXG4gICAgICAgICAgICBbJ3RvcC1sZWZ0J106IHtcclxuICAgICAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXHJcbiAgICAgICAgICAgICAgICBvcmlnaW5ZOiAndG9wJyxcclxuICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxyXG4gICAgICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBbJ3RvcC1yaWdodCddOiB7XHJcbiAgICAgICAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcclxuICAgICAgICAgICAgICAgIG9yaWdpblk6ICd0b3AnLFxyXG4gICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxyXG4gICAgICAgICAgICAgICAgb3ZlcmxheVk6ICdib3R0b20nLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBbJ2JvdHRvbS1sZWZ0J106IHtcclxuICAgICAgICAgICAgICAgIG9yaWdpblg6ICdzdGFydCcsXHJcbiAgICAgICAgICAgICAgICBvcmlnaW5ZOiAnYm90dG9tJyxcclxuICAgICAgICAgICAgICAgIG92ZXJsYXlYOiAnc3RhcnQnLFxyXG4gICAgICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBbJ2JvdHRvbS1yaWdodCddOiB7XHJcbiAgICAgICAgICAgICAgICBvcmlnaW5YOiAnZW5kJyxcclxuICAgICAgICAgICAgICAgIG9yaWdpblk6ICdib3R0b20nLFxyXG4gICAgICAgICAgICAgICAgb3ZlcmxheVg6ICdlbmQnLFxyXG4gICAgICAgICAgICAgICAgb3ZlcmxheVk6ICd0b3AnLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNvbnN0IHBvcyA9IHBvc2l0aW9uWyd0b3AtbGVmdCddO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5vdmVybGF5XHJcbiAgICAgICAgICAgIC5wb3NpdGlvbigpXHJcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKGVsZW1lbnQpXHJcbiAgICAgICAgICAgIC53aXRoUG9zaXRpb25zKFtwb3MsIHRoaXMuaW52ZXJ0UG9zaXRpb24ocG9zKV0pXHJcbiAgICAgICAgICAgIC53aXRoVmlld3BvcnRNYXJnaW4oMClcclxuICAgICAgICAgICAgLndpdGhMb2NrZWRQb3NpdGlvbihmYWxzZSlcclxuICAgICAgICAgICAgLndpdGhQdXNoKGZhbHNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogSW52ZXJ0cyBhbiBvdmVybGF5IHBvc2l0aW9uLiAqL1xyXG4gICAgcHJpdmF0ZSBpbnZlcnRQb3NpdGlvbihwb3M6IENvbm5lY3RlZFBvc2l0aW9uKTogQ29ubmVjdGVkUG9zaXRpb24ge1xyXG4gICAgICAgIGNvbnN0IGludmVydGVkID0geyAuLi5wb3MgfTtcclxuICAgICAgICBpbnZlcnRlZC5vcmlnaW5ZID0gcG9zLm9yaWdpblkgPT09ICd0b3AnID8gJ2JvdHRvbScgOiAndG9wJztcclxuICAgICAgICBpbnZlcnRlZC5vdmVybGF5WSA9IHBvcy5vdmVybGF5WSA9PT0gJ3RvcCcgPyAnYm90dG9tJyA6ICd0b3AnO1xyXG5cclxuICAgICAgICByZXR1cm4gaW52ZXJ0ZWQ7XHJcbiAgICB9XHJcbn1cclxuIiwiPG5nLXRlbXBsYXRlICNjb250ZXh0TWVudT5cclxuICAgIDx2ZHItZHJvcGRvd24+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNvbnRleHQtbWVudS10cmlnZ2VyXCIgdmRyRHJvcGRvd25UcmlnZ2VyIFtjbGFzcy5oaWRkZW5dPVwiaGlkZVRyaWdnZXIkIHwgYXN5bmNcIiAoY2xpY2spPVwidHJpZ2dlckNsaWNrKClcIj5cclxuICAgICAgICAgICAgPGNsci1pY29uXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIm1lbnVDb25maWc/Lmljb25TaGFwZSBhcyBzaGFwZVwiXHJcbiAgICAgICAgICAgICAgICBbYXR0ci5zaGFwZV09XCJzaGFwZVwiXHJcbiAgICAgICAgICAgICAgICBzaXplPVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJtcjJcIlxyXG4gICAgICAgICAgICA+PC9jbHItaWNvbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZS1sYWJlbFwiPnt7IG1lbnVDb25maWc/LnRpdGxlIH19PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDx2ZHItZHJvcGRvd24tbWVudSB2ZHJQb3NpdGlvbj1cImJvdHRvbS1yaWdodFwiIGN1c3RvbUNsYXNzZXM9XCJjb250ZXh0LW1lbnVcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBtZW51Q29uZmlnPy5pdGVtc1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY29udGV4dC1tZW51LWl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5lbmFibGVkICYmIGl0ZW0uc2VwYXJhdG9yICE9PSB0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tJdGVtKGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5pY29uQ2xhc3NcIiBjbGFzcz1cImNtLWljb25cIiBbbmdDbGFzc109XCJpdGVtLmljb25DbGFzc1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxjbHItaWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0uaWNvblNoYXBlIGFzIHNoYXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuc2hhcGVdPVwic2hhcGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwiMTZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1yMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvY2xyLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5lbmFibGVkICYmIGl0ZW0uc2VwYXJhdG9yXCIgY2xhc3M9XCJkcm9wZG93bi1kaXZpZGVyXCIgcm9sZT1cInNlcGFyYXRvclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L3Zkci1kcm9wZG93bi1tZW51PlxyXG4gICAgPC92ZHItZHJvcGRvd24+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
@@ -0,0 +1,46 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject, combineLatest, interval, of, Subject } from 'rxjs';
3
+ import { bufferWhen, debounceTime, delayWhen, distinctUntilChanged, filter, map, takeUntil, } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ export class ContextMenuService {
6
+ constructor() {
7
+ this.menuIsVisible$ = new BehaviorSubject(false);
8
+ this.setContextMenuConfig$ = new Subject();
9
+ const source$ = this.setContextMenuConfig$.asObservable();
10
+ const groupedConfig$ = source$.pipe(bufferWhen(() => source$.pipe(debounceTime(50))), map(group => {
11
+ return group.reduce((acc, cur) => {
12
+ if (!acc) {
13
+ return cur;
14
+ }
15
+ else {
16
+ if (cur?.ref === acc.ref) {
17
+ acc.items.push(
18
+ // de-duplicate items
19
+ ...(cur?.items.filter(i => !acc.items.find(ai => ai.label === i.label)) ??
20
+ []));
21
+ }
22
+ }
23
+ return acc;
24
+ }, undefined);
25
+ }));
26
+ const visible$ = this.menuIsVisible$.pipe(filter(val => val === true));
27
+ const isVisible$ = this.menuIsVisible$.pipe(delayWhen(value => (value ? of(value) : interval(250).pipe(takeUntil(visible$)))), distinctUntilChanged());
28
+ this.contextMenu$ = combineLatest(groupedConfig$, isVisible$).pipe(map(([config, isVisible]) => (isVisible ? config : undefined)));
29
+ }
30
+ setVisibility(isVisible) {
31
+ this.menuIsVisible$.next(isVisible);
32
+ }
33
+ setContextMenu(config) {
34
+ this.setContextMenuConfig$.next(config);
35
+ }
36
+ clearContextMenu() {
37
+ this.setContextMenuConfig$.next(undefined);
38
+ }
39
+ }
40
+ ContextMenuService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ContextMenuService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
41
+ ContextMenuService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ContextMenuService, providedIn: 'root' });
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: ContextMenuService, decorators: [{
43
+ type: Injectable,
44
+ args: [{ providedIn: 'root' }]
45
+ }], ctorParameters: function () { return []; } });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1tZW51LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL3JpY2gtdGV4dC1lZGl0b3IvcHJvc2VtaXJyb3IvY29udGV4dC1tZW51L2NvbnRleHQtbWVudS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDekYsT0FBTyxFQUNILFVBQVUsRUFDVixZQUFZLEVBQ1osU0FBUyxFQUNULG9CQUFvQixFQUNwQixNQUFNLEVBQ04sR0FBRyxFQUVILFNBQVMsR0FFWixNQUFNLGdCQUFnQixDQUFDOztBQXFCeEIsTUFBTSxPQUFPLGtCQUFrQjtJQUkzQjtRQUZRLG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDckQsMEJBQXFCLEdBQUcsSUFBSSxPQUFPLEVBQWlDLENBQUM7UUFFekUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzFELE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQy9CLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQ2hELEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNSLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLEdBQUcsRUFBRTtvQkFDTixPQUFPLEdBQUcsQ0FBQztpQkFDZDtxQkFBTTtvQkFDSCxJQUFJLEdBQUcsRUFBRSxHQUFHLEtBQUssR0FBRyxDQUFDLEdBQUcsRUFBRTt3QkFDdEIsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJO3dCQUNWLHFCQUFxQjt3QkFDckIsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDOzRCQUNuRSxFQUFFLENBQUMsQ0FDVixDQUFDO3FCQUNMO2lCQUNKO2dCQUNELE9BQU8sR0FBRyxDQUFDO1lBQ2YsQ0FBQyxFQUFFLFNBQTBDLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FDTCxDQUFDO1FBRUYsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFdkUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQ3ZDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNqRixvQkFBb0IsRUFBRSxDQUN6QixDQUFDO1FBQ0YsSUFBSSxDQUFDLFlBQVksR0FBRyxhQUFhLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FDOUQsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQ2pFLENBQUM7SUFDTixDQUFDO0lBRUQsYUFBYSxDQUFDLFNBQWtCO1FBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBeUI7UUFDcEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQyxDQUFDOzsrR0EvQ1Esa0JBQWtCO21IQUFsQixrQkFBa0IsY0FETCxNQUFNOzJGQUNuQixrQkFBa0I7a0JBRDlCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIGludGVydmFsLCBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gICAgYnVmZmVyV2hlbixcclxuICAgIGRlYm91bmNlVGltZSxcclxuICAgIGRlbGF5V2hlbixcclxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxyXG4gICAgZmlsdGVyLFxyXG4gICAgbWFwLFxyXG4gICAgc2tpcCxcclxuICAgIHRha2VVbnRpbCxcclxuICAgIHRhcCxcclxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENvbnRleHRNZW51Q29uZmlnIHtcclxuICAgIHJlZjogYW55O1xyXG4gICAgaWNvblNoYXBlPzogc3RyaW5nO1xyXG4gICAgdGl0bGU6IHN0cmluZztcclxuICAgIGVsZW1lbnQ6IEVsZW1lbnQ7XHJcbiAgICBjb29yZHM6IHsgbGVmdDogbnVtYmVyOyByaWdodDogbnVtYmVyOyB0b3A6IG51bWJlcjsgYm90dG9tOiBudW1iZXIgfTtcclxuICAgIGl0ZW1zOiBDb250ZXh0TWVudUl0ZW1bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb250ZXh0TWVudUl0ZW0ge1xyXG4gICAgc2VwYXJhdG9yPzogYm9vbGVhbjtcclxuICAgIGljb25DbGFzcz86IHN0cmluZztcclxuICAgIGljb25TaGFwZT86IHN0cmluZztcclxuICAgIGxhYmVsOiBzdHJpbmc7XHJcbiAgICBlbmFibGVkOiBib29sZWFuO1xyXG4gICAgb25DbGljazogKCkgPT4gdm9pZDtcclxufVxyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIENvbnRleHRNZW51U2VydmljZSB7XHJcbiAgICBjb250ZXh0TWVudSQ6IE9ic2VydmFibGU8Q29udGV4dE1lbnVDb25maWcgfCB1bmRlZmluZWQ+O1xyXG4gICAgcHJpdmF0ZSBtZW51SXNWaXNpYmxlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgcHJpdmF0ZSBzZXRDb250ZXh0TWVudUNvbmZpZyQgPSBuZXcgU3ViamVjdDxDb250ZXh0TWVudUNvbmZpZyB8IHVuZGVmaW5lZD4oKTtcclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIGNvbnN0IHNvdXJjZSQgPSB0aGlzLnNldENvbnRleHRNZW51Q29uZmlnJC5hc09ic2VydmFibGUoKTtcclxuICAgICAgICBjb25zdCBncm91cGVkQ29uZmlnJCA9IHNvdXJjZSQucGlwZShcclxuICAgICAgICAgICAgYnVmZmVyV2hlbigoKSA9PiBzb3VyY2UkLnBpcGUoZGVib3VuY2VUaW1lKDUwKSkpLFxyXG4gICAgICAgICAgICBtYXAoZ3JvdXAgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGdyb3VwLnJlZHVjZSgoYWNjLCBjdXIpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWFjYykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY3VyO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXI/LnJlZiA9PT0gYWNjLnJlZikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjLml0ZW1zLnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGUtZHVwbGljYXRlIGl0ZW1zXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKGN1cj8uaXRlbXMuZmlsdGVyKGkgPT4gIWFjYy5pdGVtcy5maW5kKGFpID0+IGFpLmxhYmVsID09PSBpLmxhYmVsKSkgPz9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xyXG4gICAgICAgICAgICAgICAgfSwgdW5kZWZpbmVkIGFzIENvbnRleHRNZW51Q29uZmlnIHwgdW5kZWZpbmVkKTtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgY29uc3QgdmlzaWJsZSQgPSB0aGlzLm1lbnVJc1Zpc2libGUkLnBpcGUoZmlsdGVyKHZhbCA9PiB2YWwgPT09IHRydWUpKTtcclxuXHJcbiAgICAgICAgY29uc3QgaXNWaXNpYmxlJCA9IHRoaXMubWVudUlzVmlzaWJsZSQucGlwZShcclxuICAgICAgICAgICAgZGVsYXlXaGVuKHZhbHVlID0+ICh2YWx1ZSA/IG9mKHZhbHVlKSA6IGludGVydmFsKDI1MCkucGlwZSh0YWtlVW50aWwodmlzaWJsZSQpKSkpLFxyXG4gICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5jb250ZXh0TWVudSQgPSBjb21iaW5lTGF0ZXN0KGdyb3VwZWRDb25maWckLCBpc1Zpc2libGUkKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAoKFtjb25maWcsIGlzVmlzaWJsZV0pID0+IChpc1Zpc2libGUgPyBjb25maWcgOiB1bmRlZmluZWQpKSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFZpc2liaWxpdHkoaXNWaXNpYmxlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5tZW51SXNWaXNpYmxlJC5uZXh0KGlzVmlzaWJsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0Q29udGV4dE1lbnUoY29uZmlnOiBDb250ZXh0TWVudUNvbmZpZykge1xyXG4gICAgICAgIHRoaXMuc2V0Q29udGV4dE1lbnVDb25maWckLm5leHQoY29uZmlnKTtcclxuICAgIH1cclxuXHJcbiAgICBjbGVhckNvbnRleHRNZW51KCkge1xyXG4gICAgICAgIHRoaXMuc2V0Q29udGV4dE1lbnVDb25maWckLm5leHQodW5kZWZpbmVkKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,57 @@
1
+ import { DOMSerializer } from 'prosemirror-model';
2
+ export const iframeNode = {
3
+ group: 'block',
4
+ attrs: {
5
+ allow: {},
6
+ allowfullscreeen: {},
7
+ frameborder: {},
8
+ height: { default: undefined },
9
+ name: { default: '' },
10
+ referrerpolicy: {},
11
+ sandbox: { default: undefined },
12
+ src: {},
13
+ srcdoc: { default: undefined },
14
+ title: { default: undefined },
15
+ width: { default: undefined },
16
+ },
17
+ parseDOM: [
18
+ {
19
+ tag: 'iframe',
20
+ getAttrs: node => {
21
+ if (node instanceof HTMLIFrameElement) {
22
+ const attrs = {
23
+ allow: node.allow,
24
+ allowfullscreeen: node.allowFullscreen ?? true,
25
+ frameborder: node.getAttribute('frameborder'),
26
+ height: node.height,
27
+ name: node.name,
28
+ referrerpolicy: node.referrerPolicy,
29
+ src: node.src,
30
+ srcdoc: node.srcdoc || undefined,
31
+ title: node.title ?? '',
32
+ width: node.width,
33
+ };
34
+ if (node.sandbox.length) {
35
+ attrs.sandbox = node.sandbox;
36
+ }
37
+ return attrs;
38
+ }
39
+ return null;
40
+ },
41
+ },
42
+ ],
43
+ toDOM(node) {
44
+ return ['iframe', { ...node.attrs }];
45
+ },
46
+ };
47
+ export const iframeNodeView = (node, view, getPos, decorations) => {
48
+ const domSerializer = DOMSerializer.fromSchema(view.state.schema);
49
+ const wrapper = document.createElement('div');
50
+ wrapper.classList.add('iframe-wrapper');
51
+ const iframe = domSerializer.serializeNode(node);
52
+ wrapper.appendChild(iframe);
53
+ return {
54
+ dom: wrapper,
55
+ };
56
+ };
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLW5vZGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3NyYy9zaGFyZWQvY29tcG9uZW50cy9yaWNoLXRleHQtZWRpdG9yL3Byb3NlbWlycm9yL2N1c3RvbS1ub2Rlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQW9CLGFBQWEsRUFBa0IsTUFBTSxtQkFBbUIsQ0FBQztBQUdwRixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQWE7SUFDaEMsS0FBSyxFQUFFLE9BQU87SUFDZCxLQUFLLEVBQUU7UUFDSCxLQUFLLEVBQUUsRUFBRTtRQUNULGdCQUFnQixFQUFFLEVBQUU7UUFDcEIsV0FBVyxFQUFFLEVBQUU7UUFDZixNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFO1FBQzlCLElBQUksRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7UUFDckIsY0FBYyxFQUFFLEVBQUU7UUFDbEIsT0FBTyxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRTtRQUMvQixHQUFHLEVBQUUsRUFBRTtRQUNQLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUU7UUFDOUIsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRTtRQUM3QixLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFO0tBQ2hDO0lBQ0QsUUFBUSxFQUFFO1FBQ047WUFDSSxHQUFHLEVBQUUsUUFBUTtZQUNiLFFBQVEsRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDYixJQUFJLElBQUksWUFBWSxpQkFBaUIsRUFBRTtvQkFDbkMsTUFBTSxLQUFLLEdBQXdCO3dCQUMvQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7d0JBQ2pCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSTt3QkFDOUMsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDO3dCQUM3QyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07d0JBQ25CLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTt3QkFDZixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7d0JBQ25DLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRzt3QkFDYixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sSUFBSSxTQUFTO3dCQUNoQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFO3dCQUN2QixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7cUJBQ3BCLENBQUM7b0JBQ0YsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRTt3QkFDckIsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO3FCQUNoQztvQkFDRCxPQUFPLEtBQUssQ0FBQztpQkFDaEI7Z0JBQ0QsT0FBTyxJQUFJLENBQUM7WUFDaEIsQ0FBQztTQUNKO0tBQ0o7SUFDRCxLQUFLLENBQUMsSUFBSTtRQUNOLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7Q0FDSixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUF3QixDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFO0lBQ25GLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsRSxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDeEMsTUFBTSxNQUFNLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqRCxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLE9BQU87UUFDSCxHQUFHLEVBQUUsT0FBTztLQUNmLENBQUM7QUFDTixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRycywgRE9NUGFyc2VyLCBET01TZXJpYWxpemVyLCBOb2RlLCBOb2RlU3BlYyB9IGZyb20gJ3Byb3NlbWlycm9yLW1vZGVsJztcclxuaW1wb3J0IHsgTm9kZVZpZXdDb25zdHJ1Y3RvciB9IGZyb20gJ3Byb3NlbWlycm9yLXZpZXcnO1xyXG5cclxuZXhwb3J0IGNvbnN0IGlmcmFtZU5vZGU6IE5vZGVTcGVjID0ge1xyXG4gICAgZ3JvdXA6ICdibG9jaycsXHJcbiAgICBhdHRyczoge1xyXG4gICAgICAgIGFsbG93OiB7fSxcclxuICAgICAgICBhbGxvd2Z1bGxzY3JlZWVuOiB7fSxcclxuICAgICAgICBmcmFtZWJvcmRlcjoge30sXHJcbiAgICAgICAgaGVpZ2h0OiB7IGRlZmF1bHQ6IHVuZGVmaW5lZCB9LFxyXG4gICAgICAgIG5hbWU6IHsgZGVmYXVsdDogJycgfSxcclxuICAgICAgICByZWZlcnJlcnBvbGljeToge30sXHJcbiAgICAgICAgc2FuZGJveDogeyBkZWZhdWx0OiB1bmRlZmluZWQgfSxcclxuICAgICAgICBzcmM6IHt9LFxyXG4gICAgICAgIHNyY2RvYzogeyBkZWZhdWx0OiB1bmRlZmluZWQgfSxcclxuICAgICAgICB0aXRsZTogeyBkZWZhdWx0OiB1bmRlZmluZWQgfSxcclxuICAgICAgICB3aWR0aDogeyBkZWZhdWx0OiB1bmRlZmluZWQgfSxcclxuICAgIH0sXHJcbiAgICBwYXJzZURPTTogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGFnOiAnaWZyYW1lJyxcclxuICAgICAgICAgICAgZ2V0QXR0cnM6IG5vZGUgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBIVE1MSUZyYW1lRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGF0dHJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhbGxvdzogbm9kZS5hbGxvdyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dmdWxsc2NyZWVlbjogbm9kZS5hbGxvd0Z1bGxzY3JlZW4gPz8gdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVib3JkZXI6IG5vZGUuZ2V0QXR0cmlidXRlKCdmcmFtZWJvcmRlcicpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IG5vZGUuaGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBub2RlLm5hbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVycmVycG9saWN5OiBub2RlLnJlZmVycmVyUG9saWN5LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzcmM6IG5vZGUuc3JjLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzcmNkb2M6IG5vZGUuc3JjZG9jIHx8IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG5vZGUudGl0bGUgPz8gJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBub2RlLndpZHRoLFxyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUuc2FuZGJveC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cnMuc2FuZGJveCA9IG5vZGUuc2FuZGJveDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGF0dHJzO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgIF0sXHJcbiAgICB0b0RPTShub2RlKSB7XHJcbiAgICAgICAgcmV0dXJuIFsnaWZyYW1lJywgeyAuLi5ub2RlLmF0dHJzIH1dO1xyXG4gICAgfSxcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBpZnJhbWVOb2RlVmlldzogTm9kZVZpZXdDb25zdHJ1Y3RvciA9IChub2RlLCB2aWV3LCBnZXRQb3MsIGRlY29yYXRpb25zKSA9PiB7XHJcbiAgICBjb25zdCBkb21TZXJpYWxpemVyID0gRE9NU2VyaWFsaXplci5mcm9tU2NoZW1hKHZpZXcuc3RhdGUuc2NoZW1hKTtcclxuICAgIGNvbnN0IHdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgIHdyYXBwZXIuY2xhc3NMaXN0LmFkZCgnaWZyYW1lLXdyYXBwZXInKTtcclxuICAgIGNvbnN0IGlmcmFtZSA9IGRvbVNlcmlhbGl6ZXIuc2VyaWFsaXplTm9kZShub2RlKTtcclxuICAgIHdyYXBwZXIuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgZG9tOiB3cmFwcGVyLFxyXG4gICAgfTtcclxufTtcclxuIl19
@@ -1,7 +1,7 @@
1
- import { icons, MenuItem } from 'prosemirror-menu';
1
+ import { MenuItem } from 'prosemirror-menu';
2
2
  import { TextSelection } from 'prosemirror-state';
3
3
  import { LinkDialogComponent } from '../../link-dialog/link-dialog.component';
4
- import { markActive } from './menu-common';
4
+ import { markActive, renderClarityIcon } from './menu-common';
5
5
  function selectionIsWithinLink(state, anchor, head) {
6
6
  const { doc } = state;
7
7
  const headLink = doc
@@ -20,7 +20,7 @@ function selectionIsWithinLink(state, anchor, head) {
20
20
  export function linkItem(linkMark, modalService) {
21
21
  return new MenuItem({
22
22
  title: 'Add or remove link',
23
- icon: icons.link,
23
+ render: renderClarityIcon({ shape: 'link', size: 22 }),
24
24
  class: '',
25
25
  css: '',
26
26
  active(state) {
@@ -66,4 +66,4 @@ export function linkItem(linkMark, modalService) {
66
66
  },
67
67
  });
68
68
  }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL3JpY2gtdGV4dC1lZGl0b3IvcHJvc2VtaXJyb3IvbWVudS9saW5rcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRW5ELE9BQU8sRUFBZSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUcvRCxPQUFPLEVBQWEsbUJBQW1CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUV6RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLFNBQVMscUJBQXFCLENBQUMsS0FBa0IsRUFBRSxNQUFjLEVBQUUsSUFBWTtJQUMzRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLE1BQU0sUUFBUSxHQUFHLEdBQUc7U0FDZixPQUFPLENBQUMsSUFBSSxDQUFDO1NBQ2IsS0FBSyxFQUFFO1NBQ1AsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUM7SUFDdkMsTUFBTSxVQUFVLEdBQUcsR0FBRztTQUNqQixPQUFPLENBQUMsTUFBTSxDQUFDO1NBQ2YsS0FBSyxFQUFFO1NBQ1AsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUM7SUFDdkMsSUFBSSxRQUFRLElBQUksVUFBVSxJQUFJLFFBQVEsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUU7UUFDbkQsT0FBTyxJQUFJLENBQUM7S0FDZjtJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxNQUFNLFVBQVUsUUFBUSxDQUFDLFFBQWtCLEVBQUUsWUFBMEI7SUFDbkUsT0FBTyxJQUFJLFFBQVEsQ0FBQztRQUNoQixLQUFLLEVBQUUsb0JBQW9CO1FBQzNCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtRQUNoQixLQUFLLEVBQUUsRUFBRTtRQUNULEdBQUcsRUFBRSxFQUFFO1FBQ1AsTUFBTSxDQUFDLEtBQUs7WUFDUixPQUFPLFVBQVUsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUNELE1BQU0sQ0FBQyxLQUFLO1lBQ1IsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEtBQUssQ0FBQztZQUM1QixPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUYsQ0FBQztRQUNELEdBQUcsQ0FBQyxLQUFrQixFQUFFLFFBQVEsRUFBRSxJQUFJO1lBQ2xDLElBQUksS0FBNEIsQ0FBQztZQUNqQyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQztZQUNqQyxJQUNJLFNBQVMsWUFBWSxhQUFhO2dCQUNsQyxxQkFBcUIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsRUFDeEU7Z0JBQ0UsTUFBTSxJQUFJLEdBQUcsR0FBRztxQkFDWCxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7cUJBQzdCLEtBQUssRUFBRTtxQkFDUCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQztnQkFDdkMsSUFBSSxJQUFJLEVBQUU7b0JBQ04sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFrQixDQUFDO2lCQUNuQzthQUNKO1lBQ0QsWUFBWTtpQkFDUCxhQUFhLENBQUMsbUJBQW1CLEVBQUU7Z0JBQ2hDLFFBQVEsRUFBRSxJQUFJO2dCQUNkLE1BQU0sRUFBRTtvQkFDSixRQUFRLEVBQUUsS0FBSztpQkFDbEI7YUFDSixDQUFDO2lCQUNELFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDaEIsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxNQUFNLEVBQUU7b0JBQ1IsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUMzQyxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7b0JBQ2pELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxFQUFFLEVBQUU7d0JBQ3BCLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7cUJBQ2hFO2lCQUNKO2dCQUNELFFBQVEsQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2pCLENBQUMsQ0FBQyxDQUFDO1lBQ1AsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztLQUNKLENBQUMsQ0FBQztBQUNQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0b2dnbGVNYXJrIH0gZnJvbSAncHJvc2VtaXJyb3ItY29tbWFuZHMnO1xyXG5pbXBvcnQgeyBpY29ucywgTWVudUl0ZW0gfSBmcm9tICdwcm9zZW1pcnJvci1tZW51JztcclxuaW1wb3J0IHsgTWFya1R5cGUgfSBmcm9tICdwcm9zZW1pcnJvci1tb2RlbCc7XHJcbmltcG9ydCB7IEVkaXRvclN0YXRlLCBUZXh0U2VsZWN0aW9uIH0gZnJvbSAncHJvc2VtaXJyb3Itc3RhdGUnO1xyXG5cclxuaW1wb3J0IHsgTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vcHJvdmlkZXJzL21vZGFsL21vZGFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMaW5rQXR0cnMsIExpbmtEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuLi8uLi9saW5rLWRpYWxvZy9saW5rLWRpYWxvZy5jb21wb25lbnQnO1xyXG5cclxuaW1wb3J0IHsgbWFya0FjdGl2ZSB9IGZyb20gJy4vbWVudS1jb21tb24nO1xyXG5cclxuZnVuY3Rpb24gc2VsZWN0aW9uSXNXaXRoaW5MaW5rKHN0YXRlOiBFZGl0b3JTdGF0ZSwgYW5jaG9yOiBudW1iZXIsIGhlYWQ6IG51bWJlcik6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgeyBkb2MgfSA9IHN0YXRlO1xyXG4gICAgY29uc3QgaGVhZExpbmsgPSBkb2NcclxuICAgICAgICAucmVzb2x2ZShoZWFkKVxyXG4gICAgICAgIC5tYXJrcygpXHJcbiAgICAgICAgLmZpbmQobSA9PiBtLnR5cGUubmFtZSA9PT0gJ2xpbmsnKTtcclxuICAgIGNvbnN0IGFuY2hvckxpbmsgPSBkb2NcclxuICAgICAgICAucmVzb2x2ZShhbmNob3IpXHJcbiAgICAgICAgLm1hcmtzKClcclxuICAgICAgICAuZmluZChtID0+IG0udHlwZS5uYW1lID09PSAnbGluaycpO1xyXG4gICAgaWYgKGhlYWRMaW5rICYmIGFuY2hvckxpbmsgJiYgaGVhZExpbmsuZXEoYW5jaG9yTGluaykpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGxpbmtJdGVtKGxpbmtNYXJrOiBNYXJrVHlwZSwgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UpIHtcclxuICAgIHJldHVybiBuZXcgTWVudUl0ZW0oe1xyXG4gICAgICAgIHRpdGxlOiAnQWRkIG9yIHJlbW92ZSBsaW5rJyxcclxuICAgICAgICBpY29uOiBpY29ucy5saW5rLFxyXG4gICAgICAgIGNsYXNzOiAnJyxcclxuICAgICAgICBjc3M6ICcnLFxyXG4gICAgICAgIGFjdGl2ZShzdGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbWFya0FjdGl2ZShzdGF0ZSwgbGlua01hcmspO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZW5hYmxlKHN0YXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uIH0gPSBzdGF0ZTtcclxuICAgICAgICAgICAgcmV0dXJuICFzZWxlY3Rpb24uZW1wdHkgfHwgc2VsZWN0aW9uSXNXaXRoaW5MaW5rKHN0YXRlLCBzZWxlY3Rpb24uYW5jaG9yLCBzZWxlY3Rpb24uaGVhZCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBydW4oc3RhdGU6IEVkaXRvclN0YXRlLCBkaXNwYXRjaCwgdmlldykge1xyXG4gICAgICAgICAgICBsZXQgYXR0cnM6IExpbmtBdHRycyB8IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgY29uc3QgeyBzZWxlY3Rpb24sIGRvYyB9ID0gc3RhdGU7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbiBpbnN0YW5jZW9mIFRleHRTZWxlY3Rpb24gJiZcclxuICAgICAgICAgICAgICAgIHNlbGVjdGlvbklzV2l0aGluTGluayhzdGF0ZSwgc2VsZWN0aW9uLmFuY2hvciArIDEsIHNlbGVjdGlvbi5oZWFkIC0gMSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtYXJrID0gZG9jXHJcbiAgICAgICAgICAgICAgICAgICAgLnJlc29sdmUoc2VsZWN0aW9uLmFuY2hvciArIDEpXHJcbiAgICAgICAgICAgICAgICAgICAgLm1hcmtzKClcclxuICAgICAgICAgICAgICAgICAgICAuZmluZChtID0+IG0udHlwZS5uYW1lID09PSAnbGluaycpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG1hcmspIHtcclxuICAgICAgICAgICAgICAgICAgICBhdHRycyA9IG1hcmsuYXR0cnMgYXMgTGlua0F0dHJzO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG1vZGFsU2VydmljZVxyXG4gICAgICAgICAgICAgICAgLmZyb21Db21wb25lbnQoTGlua0RpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgIGNsb3NhYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIGxvY2Fsczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZzogYXR0cnMsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRyID0gc3RhdGUudHI7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7ICRmcm9tLCAkdG8gfSA9IHNlbGVjdGlvbi5yYW5nZXNbMF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyID0gdHIucmVtb3ZlTWFyaygkZnJvbS5wb3MsICR0by5wb3MsIGxpbmtNYXJrKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5ocmVmICE9PSAnJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHIgPSB0ci5hZGRNYXJrKCRmcm9tLnBvcywgJHRvLnBvcywgbGlua01hcmsuY3JlYXRlKHJlc3VsdCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoKHRyLnNjcm9sbEludG9WaWV3KCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZpZXcuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9LFxyXG4gICAgfSk7XHJcbn1cclxuIl19
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlua3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL3JpY2gtdGV4dC1lZGl0b3IvcHJvc2VtaXJyb3IvbWVudS9saW5rcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQVMsUUFBUSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFbkQsT0FBTyxFQUFlLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRy9ELE9BQU8sRUFBYSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBRXpGLE9BQU8sRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUQsU0FBUyxxQkFBcUIsQ0FBQyxLQUFrQixFQUFFLE1BQWMsRUFBRSxJQUFZO0lBQzNFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDdEIsTUFBTSxRQUFRLEdBQUcsR0FBRztTQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUM7U0FDYixLQUFLLEVBQUU7U0FDUCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQztJQUN2QyxNQUFNLFVBQVUsR0FBRyxHQUFHO1NBQ2pCLE9BQU8sQ0FBQyxNQUFNLENBQUM7U0FDZixLQUFLLEVBQUU7U0FDUCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQztJQUN2QyxJQUFJLFFBQVEsSUFBSSxVQUFVLElBQUksUUFBUSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRTtRQUNuRCxPQUFPLElBQUksQ0FBQztLQUNmO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUMsUUFBa0IsRUFBRSxZQUEwQjtJQUNuRSxPQUFPLElBQUksUUFBUSxDQUFDO1FBQ2hCLEtBQUssRUFBRSxvQkFBb0I7UUFDM0IsTUFBTSxFQUFFLGlCQUFpQixDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUM7UUFDdEQsS0FBSyxFQUFFLEVBQUU7UUFDVCxHQUFHLEVBQUUsRUFBRTtRQUNQLE1BQU0sQ0FBQyxLQUFLO1lBQ1IsT0FBTyxVQUFVLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFDRCxNQUFNLENBQUMsS0FBSztZQUNSLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFDNUIsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUkscUJBQXFCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlGLENBQUM7UUFDRCxHQUFHLENBQUMsS0FBa0IsRUFBRSxRQUFRLEVBQUUsSUFBSTtZQUNsQyxJQUFJLEtBQTRCLENBQUM7WUFDakMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFDakMsSUFDSSxTQUFTLFlBQVksYUFBYTtnQkFDbEMscUJBQXFCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQ3hFO2dCQUNFLE1BQU0sSUFBSSxHQUFHLEdBQUc7cUJBQ1gsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO3FCQUM3QixLQUFLLEVBQUU7cUJBQ1AsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksSUFBSSxFQUFFO29CQUNOLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBa0IsQ0FBQztpQkFDbkM7YUFDSjtZQUNELFlBQVk7aUJBQ1AsYUFBYSxDQUFDLG1CQUFtQixFQUFFO2dCQUNoQyxRQUFRLEVBQUUsSUFBSTtnQkFDZCxNQUFNLEVBQUU7b0JBQ0osUUFBUSxFQUFFLEtBQUs7aUJBQ2xCO2FBQ0osQ0FBQztpQkFDRCxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ2hCLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2xCLElBQUksTUFBTSxFQUFFO29CQUNSLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDM0MsRUFBRSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFDO29CQUNqRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO3dCQUNwQixFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO3FCQUNoRTtpQkFDSjtnQkFDRCxRQUFRLENBQUMsRUFBRSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNqQixDQUFDLENBQUMsQ0FBQztZQUNQLE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7S0FDSixDQUFDLENBQUM7QUFDUCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdG9nZ2xlTWFyayB9IGZyb20gJ3Byb3NlbWlycm9yLWNvbW1hbmRzJztcclxuaW1wb3J0IHsgaWNvbnMsIE1lbnVJdGVtIH0gZnJvbSAncHJvc2VtaXJyb3ItbWVudSc7XHJcbmltcG9ydCB7IE1hcmtUeXBlIH0gZnJvbSAncHJvc2VtaXJyb3ItbW9kZWwnO1xyXG5pbXBvcnQgeyBFZGl0b3JTdGF0ZSwgVGV4dFNlbGVjdGlvbiB9IGZyb20gJ3Byb3NlbWlycm9yLXN0YXRlJztcclxuXHJcbmltcG9ydCB7IE1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3Byb3ZpZGVycy9tb2RhbC9tb2RhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgTGlua0F0dHJzLCBMaW5rRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbGluay1kaWFsb2cvbGluay1kaWFsb2cuY29tcG9uZW50JztcclxuXHJcbmltcG9ydCB7IG1hcmtBY3RpdmUsIHJlbmRlckNsYXJpdHlJY29uIH0gZnJvbSAnLi9tZW51LWNvbW1vbic7XHJcblxyXG5mdW5jdGlvbiBzZWxlY3Rpb25Jc1dpdGhpbkxpbmsoc3RhdGU6IEVkaXRvclN0YXRlLCBhbmNob3I6IG51bWJlciwgaGVhZDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCB7IGRvYyB9ID0gc3RhdGU7XHJcbiAgICBjb25zdCBoZWFkTGluayA9IGRvY1xyXG4gICAgICAgIC5yZXNvbHZlKGhlYWQpXHJcbiAgICAgICAgLm1hcmtzKClcclxuICAgICAgICAuZmluZChtID0+IG0udHlwZS5uYW1lID09PSAnbGluaycpO1xyXG4gICAgY29uc3QgYW5jaG9yTGluayA9IGRvY1xyXG4gICAgICAgIC5yZXNvbHZlKGFuY2hvcilcclxuICAgICAgICAubWFya3MoKVxyXG4gICAgICAgIC5maW5kKG0gPT4gbS50eXBlLm5hbWUgPT09ICdsaW5rJyk7XHJcbiAgICBpZiAoaGVhZExpbmsgJiYgYW5jaG9yTGluayAmJiBoZWFkTGluay5lcShhbmNob3JMaW5rKSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbGlua0l0ZW0obGlua01hcms6IE1hcmtUeXBlLCBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSkge1xyXG4gICAgcmV0dXJuIG5ldyBNZW51SXRlbSh7XHJcbiAgICAgICAgdGl0bGU6ICdBZGQgb3IgcmVtb3ZlIGxpbmsnLFxyXG4gICAgICAgIHJlbmRlcjogcmVuZGVyQ2xhcml0eUljb24oeyBzaGFwZTogJ2xpbmsnLCBzaXplOiAyMiB9KSxcclxuICAgICAgICBjbGFzczogJycsXHJcbiAgICAgICAgY3NzOiAnJyxcclxuICAgICAgICBhY3RpdmUoc3RhdGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1hcmtBY3RpdmUoc3RhdGUsIGxpbmtNYXJrKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVuYWJsZShzdGF0ZSkge1xyXG4gICAgICAgICAgICBjb25zdCB7IHNlbGVjdGlvbiB9ID0gc3RhdGU7XHJcbiAgICAgICAgICAgIHJldHVybiAhc2VsZWN0aW9uLmVtcHR5IHx8IHNlbGVjdGlvbklzV2l0aGluTGluayhzdGF0ZSwgc2VsZWN0aW9uLmFuY2hvciwgc2VsZWN0aW9uLmhlYWQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcnVuKHN0YXRlOiBFZGl0b3JTdGF0ZSwgZGlzcGF0Y2gsIHZpZXcpIHtcclxuICAgICAgICAgICAgbGV0IGF0dHJzOiBMaW5rQXR0cnMgfCB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgc2VsZWN0aW9uLCBkb2MgfSA9IHN0YXRlO1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb24gaW5zdGFuY2VvZiBUZXh0U2VsZWN0aW9uICYmXHJcbiAgICAgICAgICAgICAgICBzZWxlY3Rpb25Jc1dpdGhpbkxpbmsoc3RhdGUsIHNlbGVjdGlvbi5hbmNob3IgKyAxLCBzZWxlY3Rpb24uaGVhZCAtIDEpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWFyayA9IGRvY1xyXG4gICAgICAgICAgICAgICAgICAgIC5yZXNvbHZlKHNlbGVjdGlvbi5hbmNob3IgKyAxKVxyXG4gICAgICAgICAgICAgICAgICAgIC5tYXJrcygpXHJcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQobSA9PiBtLnR5cGUubmFtZSA9PT0gJ2xpbmsnKTtcclxuICAgICAgICAgICAgICAgIGlmIChtYXJrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXR0cnMgPSBtYXJrLmF0dHJzIGFzIExpbmtBdHRycztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBtb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgICAgIC5mcm9tQ29tcG9uZW50KExpbmtEaWFsb2dDb21wb25lbnQsIHtcclxuICAgICAgICAgICAgICAgICAgICBjbG9zYWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBsb2NhbHM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3Rpbmc6IGF0dHJzLFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0ciA9IHN0YXRlLnRyO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyAkZnJvbSwgJHRvIH0gPSBzZWxlY3Rpb24ucmFuZ2VzWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ciA9IHRyLnJlbW92ZU1hcmsoJGZyb20ucG9zLCAkdG8ucG9zLCBsaW5rTWFyayk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaHJlZiAhPT0gJycpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyID0gdHIuYWRkTWFyaygkZnJvbS5wb3MsICR0by5wb3MsIGxpbmtNYXJrLmNyZWF0ZShyZXN1bHQpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaCh0ci5zY3JvbGxJbnRvVmlldygpKTtcclxuICAgICAgICAgICAgICAgICAgICB2aWV3LmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSxcclxuICAgIH0pO1xyXG59XHJcbiJdfQ==