@vendure/admin-ui 1.7.4 → 1.8.1
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.
- package/bundles/vendure-admin-ui-catalog.umd.js +902 -74
- package/bundles/vendure-admin-ui-catalog.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-core.umd.js +2392 -820
- package/bundles/vendure-admin-ui-core.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-customer.umd.js +4 -3
- package/bundles/vendure-admin-ui-customer.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-dashboard.umd.js +3 -1
- package/bundles/vendure-admin-ui-dashboard.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-order.umd.js +781 -175
- package/bundles/vendure-admin-ui-order.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-settings.umd.js +5 -4
- package/bundles/vendure-admin-ui-settings.umd.js.map +1 -1
- package/bundles/vendure-admin-ui-system.umd.js +1 -1
- package/catalog/catalog.module.d.ts +3 -0
- package/catalog/components/assign-to-channel-dialog/assign-to-channel-dialog.component.d.ts +17 -0
- package/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.component.d.ts +38 -0
- package/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.graphql.d.ts +4 -0
- package/catalog/components/collection-list/collection-list-bulk-actions.d.ts +6 -0
- package/catalog/components/collection-list/collection-list.component.d.ts +7 -5
- package/catalog/components/collection-tree/collection-tree-node.component.d.ts +8 -4
- package/catalog/components/collection-tree/collection-tree.component.d.ts +2 -1
- package/catalog/components/facet-list/facet-list-bulk-actions.d.ts +5 -0
- package/catalog/components/facet-list/facet-list.component.d.ts +2 -1
- package/catalog/components/product-list/product-list-bulk-actions.d.ts +6 -0
- package/catalog/components/product-list/product-list.component.d.ts +2 -1
- package/catalog/public_api.d.ts +6 -0
- package/catalog/vendure-admin-ui-catalog.metadata.json +1 -1
- package/core/common/component-registry-types.d.ts +1 -1
- package/core/common/generated-types.d.ts +609 -3
- package/core/common/utilities/bulk-action-utils.d.ts +19 -0
- package/core/common/utilities/selection-manager.d.ts +7 -0
- package/core/common/version.d.ts +1 -1
- package/core/data/definitions/collection-definitions.d.ts +3 -0
- package/core/data/definitions/facet-definitions.d.ts +3 -0
- package/core/data/definitions/order-definitions.d.ts +12 -0
- package/core/data/definitions/product-definitions.d.ts +1 -0
- package/core/data/providers/collection-data.service.d.ts +4 -1
- package/core/data/providers/facet-data.service.d.ts +4 -1
- package/core/data/providers/order-data.service.d.ts +18 -1
- package/core/data/providers/product-data.service.d.ts +1 -0
- package/core/providers/bulk-action-registry/bulk-action-registry.service.d.ts +6 -0
- package/core/providers/bulk-action-registry/bulk-action-types.d.ts +149 -0
- package/core/providers/bulk-action-registry/register-bulk-action.d.ts +53 -0
- package/core/providers/modal/modal.service.d.ts +2 -0
- package/core/providers/nav-builder/nav-builder-types.d.ts +1 -0
- package/core/public_api.d.ts +18 -1
- package/core/shared/components/asset-gallery/asset-gallery.component.d.ts +3 -3
- package/core/shared/components/bulk-action-menu/bulk-action-menu.component.d.ts +29 -0
- package/core/shared/components/data-table/data-table.component.d.ts +26 -7
- package/core/shared/components/dropdown/dropdown-menu.component.d.ts +1 -0
- package/core/shared/components/radio-card/radio-card-fieldset.component.d.ts +21 -0
- package/core/shared/components/radio-card/radio-card.component.d.ts +19 -0
- package/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.component.d.ts +28 -0
- package/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.service.d.ts +31 -0
- package/core/shared/components/rich-text-editor/prosemirror/custom-nodes.d.ts +4 -0
- package/core/shared/components/rich-text-editor/prosemirror/inputrules.d.ts +5 -5
- package/core/shared/components/rich-text-editor/prosemirror/menu/links.d.ts +1 -1
- package/core/shared/components/rich-text-editor/prosemirror/menu/menu-common.d.ts +12 -0
- package/core/shared/components/rich-text-editor/prosemirror/menu/menu-plugin.d.ts +9 -0
- package/core/shared/components/rich-text-editor/prosemirror/menu/sub-menu-with-icon.d.ts +14 -0
- package/core/shared/components/rich-text-editor/prosemirror/plugins/image-plugin.d.ts +7 -0
- package/core/shared/components/rich-text-editor/prosemirror/plugins/link-select-plugin.d.ts +1 -1
- package/core/shared/components/rich-text-editor/prosemirror/plugins/raw-editor-plugin.d.ts +7 -0
- package/core/shared/components/rich-text-editor/prosemirror/plugins/tables-plugin.d.ts +13 -0
- package/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.d.ts +7 -3
- package/core/shared/components/rich-text-editor/prosemirror/types.d.ts +0 -2
- package/core/shared/components/rich-text-editor/raw-html-dialog/raw-html-dialog.component.d.ts +18 -0
- package/core/shared/components/rich-text-editor/rich-text-editor.component.d.ts +6 -2
- package/core/shared/dynamic-form-inputs/code-editor-form-input/base-code-editor-form-input.component.d.ts +27 -0
- package/core/shared/dynamic-form-inputs/code-editor-form-input/html-editor-form-input.component.d.ts +19 -0
- package/core/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.d.ts +5 -17
- package/core/shared/dynamic-form-inputs/register-dynamic-input-components.d.ts +2 -1
- package/core/vendure-admin-ui-core.metadata.json +1 -1
- package/customer/components/customer-group-member-list/customer-group-member-list.component.d.ts +11 -4
- package/customer/vendure-admin-ui-customer.metadata.json +1 -1
- package/esm2015/catalog/catalog.module.js +25 -2
- package/esm2015/catalog/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.js +4 -1
- package/esm2015/catalog/components/assign-to-channel-dialog/assign-to-channel-dialog.component.js +51 -0
- package/esm2015/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.component.js +89 -0
- package/esm2015/catalog/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.graphql.js +69 -0
- package/esm2015/catalog/components/collection-detail/collection-detail.component.js +3 -3
- package/esm2015/catalog/components/collection-list/collection-list-bulk-actions.js +147 -0
- package/esm2015/catalog/components/collection-list/collection-list.component.js +17 -8
- package/esm2015/catalog/components/collection-tree/collection-tree-node.component.js +16 -7
- package/esm2015/catalog/components/collection-tree/collection-tree.component.js +3 -2
- package/esm2015/catalog/components/facet-list/facet-list-bulk-actions.js +208 -0
- package/esm2015/catalog/components/facet-list/facet-list.component.js +13 -4
- package/esm2015/catalog/components/product-detail/product-detail.component.js +35 -23
- package/esm2015/catalog/components/product-list/product-list-bulk-actions.js +173 -0
- package/esm2015/catalog/components/product-list/product-list.component.js +10 -5
- package/esm2015/catalog/components/product-variants-list/product-variants-list.component.js +2 -2
- package/esm2015/catalog/providers/routing/collection-resolver.js +2 -1
- package/esm2015/catalog/public_api.js +7 -1
- package/esm2015/core/common/component-registry-types.js +1 -1
- package/esm2015/core/common/generated-types.js +5 -1
- package/esm2015/core/common/introspection-result.js +296 -191
- package/esm2015/core/common/utilities/bulk-action-utils.js +44 -0
- package/esm2015/core/common/utilities/selection-manager.js +33 -1
- package/esm2015/core/common/version.js +2 -2
- package/esm2015/core/components/breadcrumb/breadcrumb.component.js +1 -1
- package/esm2015/core/data/definitions/collection-definitions.js +30 -1
- package/esm2015/core/data/definitions/facet-definitions.js +31 -1
- package/esm2015/core/data/definitions/order-definitions.js +114 -1
- package/esm2015/core/data/definitions/product-definitions.js +15 -1
- package/esm2015/core/data/providers/collection-data.service.js +17 -2
- package/esm2015/core/data/providers/customer-data.service.js +8 -4
- package/esm2015/core/data/providers/facet-data.service.js +18 -2
- package/esm2015/core/data/providers/order-data.service.js +38 -2
- package/esm2015/core/data/providers/product-data.service.js +7 -2
- package/esm2015/core/data/utils/remove-readonly-custom-fields.js +5 -1
- package/esm2015/core/providers/bulk-action-registry/bulk-action-registry.service.js +27 -0
- package/esm2015/core/providers/bulk-action-registry/bulk-action-types.js +2 -0
- package/esm2015/core/providers/bulk-action-registry/register-bulk-action.js +63 -0
- package/esm2015/core/providers/dashboard-widget/dashboard-widget.service.js +1 -4
- package/esm2015/core/providers/modal/modal.service.js +2 -1
- package/esm2015/core/providers/nav-builder/nav-builder-types.js +1 -1
- package/esm2015/core/public_api.js +19 -2
- package/esm2015/core/shared/components/action-bar/action-bar.component.js +4 -8
- package/esm2015/core/shared/components/asset-gallery/asset-gallery.component.js +2 -2
- package/esm2015/core/shared/components/bulk-action-menu/bulk-action-menu.component.js +99 -0
- package/esm2015/core/shared/components/data-table/data-table.component.js +64 -15
- package/esm2015/core/shared/components/dropdown/dropdown-menu.component.js +4 -3
- package/esm2015/core/shared/components/facet-value-selector/facet-value-selector.component.js +2 -2
- package/esm2015/core/shared/components/language-selector/language-selector.component.js +2 -2
- package/esm2015/core/shared/components/order-state-label/order-state-label.component.js +2 -1
- package/esm2015/core/shared/components/product-search-input/product-search-input.component.js +1 -1
- package/esm2015/core/shared/components/product-selector/product-selector.component.js +1 -1
- package/esm2015/core/shared/components/radio-card/radio-card-fieldset.component.js +57 -0
- package/esm2015/core/shared/components/radio-card/radio-card.component.js +54 -0
- package/esm2015/core/shared/components/rich-text-editor/external-image-dialog/external-image-dialog.component.js +2 -2
- package/esm2015/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.component.js +140 -0
- package/esm2015/core/shared/components/rich-text-editor/prosemirror/context-menu/context-menu.service.js +45 -0
- package/esm2015/core/shared/components/rich-text-editor/prosemirror/custom-nodes.js +60 -0
- package/esm2015/core/shared/components/rich-text-editor/prosemirror/menu/links.js +4 -4
- package/esm2015/core/shared/components/rich-text-editor/prosemirror/menu/menu-common.js +23 -1
- package/esm2015/core/shared/components/rich-text-editor/prosemirror/menu/menu-plugin.js +12 -0
- package/esm2015/core/shared/components/rich-text-editor/prosemirror/menu/menu.js +73 -18
- package/esm2015/core/shared/components/rich-text-editor/prosemirror/menu/sub-menu-with-icon.js +16 -0
- package/esm2015/core/shared/components/rich-text-editor/prosemirror/plugins/image-plugin.js +100 -0
- package/esm2015/core/shared/components/rich-text-editor/prosemirror/plugins/raw-editor-plugin.js +97 -0
- package/esm2015/core/shared/components/rich-text-editor/prosemirror/plugins/tables-plugin.js +166 -0
- package/esm2015/core/shared/components/rich-text-editor/prosemirror/prosemirror.service.js +47 -17
- package/esm2015/core/shared/components/rich-text-editor/prosemirror/types.js +1 -1
- package/esm2015/core/shared/components/rich-text-editor/raw-html-dialog/raw-html-dialog.component.js +57 -0
- package/esm2015/core/shared/components/rich-text-editor/rich-text-editor.component.js +20 -9
- package/esm2015/core/shared/components/simple-dialog/simple-dialog.component.js +2 -2
- package/esm2015/core/shared/dynamic-form-inputs/code-editor-form-input/base-code-editor-form-input.component.js +59 -0
- package/esm2015/core/shared/dynamic-form-inputs/code-editor-form-input/html-editor-form-input.component.js +66 -0
- package/esm2015/core/shared/dynamic-form-inputs/code-editor-form-input/json-editor-form-input.component.js +47 -84
- package/esm2015/core/shared/dynamic-form-inputs/dynamic-form-input/dynamic-form-input.component.js +3 -3
- package/esm2015/core/shared/dynamic-form-inputs/register-dynamic-input-components.js +3 -1
- package/esm2015/core/shared/pipes/state-i18n-token.pipe.js +2 -1
- package/esm2015/core/shared/shared.module.js +13 -1
- package/esm2015/customer/components/customer-group-list/customer-group-list.component.js +2 -2
- package/esm2015/customer/components/customer-group-member-list/customer-group-member-list.component.js +6 -6
- package/esm2015/customer/components/customer-list/customer-list.component.js +2 -2
- package/esm2015/dashboard/dashboard.module.js +6 -2
- package/esm2015/order/components/coupon-code-selector/coupon-code-selector.component.js +42 -0
- package/esm2015/order/components/draft-order-detail/draft-order-detail.component.js +195 -0
- package/esm2015/order/components/draft-order-variant-selector/draft-order-variant-selector.component.js +59 -0
- package/esm2015/order/components/order-detail/order-detail.component.js +2 -2
- package/esm2015/order/components/order-editor/order-editor.component.js +5 -11
- package/esm2015/order/components/order-list/order-list.component.js +20 -4
- package/esm2015/order/components/order-table/order-table.component.js +16 -5
- package/esm2015/order/components/select-address-dialog/select-address-dialog.component.js +91 -0
- package/esm2015/order/components/select-address-dialog/select-address-dialog.graphql.js +14 -0
- package/esm2015/order/components/select-customer-dialog/select-customer-dialog.component.js +59 -0
- package/esm2015/order/components/select-shipping-method-dialog/select-shipping-method-dialog.component.js +30 -0
- package/esm2015/order/order.module.js +13 -1
- package/esm2015/order/order.routes.js +26 -7
- package/esm2015/order/providers/routing/order-resolver.js +29 -12
- package/esm2015/order/providers/routing/order.guard.js +41 -0
- package/esm2015/order/public_api.js +9 -1
- package/esm2015/settings/components/country-list/country-list.component.js +2 -2
- package/esm2015/settings/components/profile/profile.component.js +2 -2
- package/esm2015/settings/components/zone-list/zone-list.component.js +2 -2
- package/esm2015/settings/components/zone-member-list/zone-member-list.component.js +2 -2
- package/esm2015/system/components/health-check/health-check.component.js +1 -1
- package/fesm2015/vendure-admin-ui-catalog.js +835 -61
- package/fesm2015/vendure-admin-ui-catalog.js.map +1 -1
- package/fesm2015/vendure-admin-ui-core.js +3122 -1514
- package/fesm2015/vendure-admin-ui-core.js.map +1 -1
- package/fesm2015/vendure-admin-ui-customer.js +7 -7
- package/fesm2015/vendure-admin-ui-customer.js.map +1 -1
- package/fesm2015/vendure-admin-ui-dashboard.js +5 -1
- package/fesm2015/vendure-admin-ui-dashboard.js.map +1 -1
- package/fesm2015/vendure-admin-ui-order.js +780 -232
- package/fesm2015/vendure-admin-ui-order.js.map +1 -1
- package/fesm2015/vendure-admin-ui-settings.js +4 -4
- package/fesm2015/vendure-admin-ui-settings.js.map +1 -1
- package/fesm2015/vendure-admin-ui-system.js +1 -1
- package/order/components/coupon-code-selector/coupon-code-selector.component.d.ts +18 -0
- package/order/components/draft-order-detail/draft-order-detail.component.d.ts +49 -0
- package/order/components/draft-order-variant-selector/draft-order-variant-selector.component.d.ts +21 -0
- package/order/components/order-editor/order-editor.component.d.ts +1 -6
- package/order/components/order-list/order-list.component.d.ts +1 -0
- package/order/components/order-table/order-table.component.d.ts +11 -2
- package/order/components/select-address-dialog/select-address-dialog.component.d.ts +24 -0
- package/order/components/select-address-dialog/select-address-dialog.graphql.d.ts +1 -0
- package/order/components/select-customer-dialog/select-customer-dialog.component.d.ts +22 -0
- package/order/components/select-shipping-method-dialog/select-shipping-method-dialog.component.d.ts +16 -0
- package/order/providers/routing/order-resolver.d.ts +8 -5
- package/order/providers/routing/order.guard.d.ts +9 -0
- package/order/public_api.d.ts +8 -0
- package/order/vendure-admin-ui-order.metadata.json +1 -1
- package/package.json +13 -12
- package/settings/components/zone-member-list/zone-member-list.component.d.ts +3 -1
- package/settings/vendure-admin-ui-settings.metadata.json +1 -1
- package/static/i18n-messages/cs.json +33 -0
- package/static/i18n-messages/de.json +33 -0
- package/static/i18n-messages/en.json +36 -4
- package/static/i18n-messages/es.json +33 -0
- package/static/i18n-messages/fr.json +33 -0
- package/static/i18n-messages/it.json +33 -0
- package/static/i18n-messages/pl.json +33 -0
- package/static/i18n-messages/pt_BR.json +33 -0
- package/static/i18n-messages/pt_PT.json +33 -0
- package/static/i18n-messages/ru.json +33 -0
- package/static/i18n-messages/uk.json +33 -0
- package/static/i18n-messages/zh_Hans.json +33 -0
- package/static/i18n-messages/zh_Hant.json +33 -0
- package/static/styles/global/_forms.scss +4 -2
- package/static/styles/global/_overrides.scss +1 -1
- package/static/styles/global/_utilities.scss +4 -0
- package/static/theme.min.css +1 -1
- package/system/vendure-admin-ui-system.metadata.json +1 -1
- package/core/shared/components/rich-text-editor/prosemirror/menu/images.d.ts +0 -4
- package/esm2015/core/shared/components/rich-text-editor/prosemirror/menu/images.js +0 -36
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { MenuItem } from 'prosemirror-menu';
|
|
2
|
+
import { NodeSelection, Plugin } from 'prosemirror-state';
|
|
3
|
+
import { ExternalImageDialogComponent, } from '../../external-image-dialog/external-image-dialog.component';
|
|
4
|
+
import { canInsert, renderClarityIcon } from '../menu/menu-common';
|
|
5
|
+
export function insertImageItem(nodeType, modalService) {
|
|
6
|
+
return new MenuItem({
|
|
7
|
+
title: 'Insert image',
|
|
8
|
+
label: 'Image',
|
|
9
|
+
render: renderClarityIcon({ shape: 'image', label: 'Image' }),
|
|
10
|
+
class: '',
|
|
11
|
+
css: '',
|
|
12
|
+
enable(state) {
|
|
13
|
+
return canInsert(state, nodeType);
|
|
14
|
+
},
|
|
15
|
+
run(state, _, view) {
|
|
16
|
+
let attrs;
|
|
17
|
+
if (state.selection instanceof NodeSelection && state.selection.node.type === nodeType) {
|
|
18
|
+
attrs = state.selection.node.attrs;
|
|
19
|
+
}
|
|
20
|
+
modalService
|
|
21
|
+
.fromComponent(ExternalImageDialogComponent, {
|
|
22
|
+
closable: true,
|
|
23
|
+
locals: {
|
|
24
|
+
existing: attrs,
|
|
25
|
+
},
|
|
26
|
+
})
|
|
27
|
+
.subscribe(result => {
|
|
28
|
+
if (result) {
|
|
29
|
+
// tslint:disable-next-line:no-non-null-assertion
|
|
30
|
+
view.dispatch(view.state.tr.replaceSelectionWith(nodeType.createAndFill(result)));
|
|
31
|
+
}
|
|
32
|
+
view.focus();
|
|
33
|
+
});
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
export const imageContextMenuPlugin = (contextMenuService, modalService) => new Plugin({
|
|
38
|
+
view: () => {
|
|
39
|
+
return {
|
|
40
|
+
update: view => {
|
|
41
|
+
if (!view.hasFocus()) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const { doc, selection } = view.state;
|
|
45
|
+
let imageNode;
|
|
46
|
+
let imageNodePos = 0;
|
|
47
|
+
doc.nodesBetween(selection.from, selection.to, (n, pos, parent) => {
|
|
48
|
+
if (n.type.name === 'image') {
|
|
49
|
+
imageNode = n;
|
|
50
|
+
imageNodePos = pos;
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
if (imageNode) {
|
|
55
|
+
const node = view.nodeDOM(imageNodePos);
|
|
56
|
+
if (node instanceof HTMLImageElement) {
|
|
57
|
+
contextMenuService.setContextMenu({
|
|
58
|
+
ref: selection,
|
|
59
|
+
title: 'Image',
|
|
60
|
+
iconShape: 'image',
|
|
61
|
+
element: node,
|
|
62
|
+
coords: view.coordsAtPos(imageNodePos),
|
|
63
|
+
items: [
|
|
64
|
+
{
|
|
65
|
+
enabled: true,
|
|
66
|
+
iconShape: 'image',
|
|
67
|
+
label: 'Image properties',
|
|
68
|
+
onClick: () => {
|
|
69
|
+
contextMenuService.clearContextMenu();
|
|
70
|
+
modalService
|
|
71
|
+
.fromComponent(ExternalImageDialogComponent, {
|
|
72
|
+
closable: true,
|
|
73
|
+
locals: {
|
|
74
|
+
// tslint:disable-next-line:no-non-null-assertion
|
|
75
|
+
existing: imageNode.attrs,
|
|
76
|
+
},
|
|
77
|
+
})
|
|
78
|
+
.subscribe(result => {
|
|
79
|
+
if (result) {
|
|
80
|
+
// tslint:disable-next-line:no-non-null-assertion
|
|
81
|
+
view.dispatch(view.state.tr.replaceSelectionWith(
|
|
82
|
+
// tslint:disable-next-line:no-non-null-assertion
|
|
83
|
+
imageNode.type.createAndFill(result)));
|
|
84
|
+
}
|
|
85
|
+
view.focus();
|
|
86
|
+
});
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
],
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
contextMenuService.clearContextMenu();
|
|
95
|
+
}
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
},
|
|
99
|
+
});
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3NyYy9zaGFyZWQvY29tcG9uZW50cy9yaWNoLXRleHQtZWRpdG9yL3Byb3NlbWlycm9yL3BsdWdpbnMvaW1hZ2UtcGx1Z2luLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU1QyxPQUFPLEVBQWUsYUFBYSxFQUFFLE1BQU0sRUFBZSxNQUFNLG1CQUFtQixDQUFDO0FBaUJwRixPQUFPLEVBRUgsNEJBQTRCLEdBQy9CLE1BQU0sNkRBQTZELENBQUM7QUFHckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5FLE1BQU0sVUFBVSxlQUFlLENBQUMsUUFBa0IsRUFBRSxZQUEwQjtJQUMxRSxPQUFPLElBQUksUUFBUSxDQUFDO1FBQ2hCLEtBQUssRUFBRSxjQUFjO1FBQ3JCLEtBQUssRUFBRSxPQUFPO1FBQ2QsTUFBTSxFQUFFLGlCQUFpQixDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDN0QsS0FBSyxFQUFFLEVBQUU7UUFDVCxHQUFHLEVBQUUsRUFBRTtRQUNQLE1BQU0sQ0FBQyxLQUFrQjtZQUNyQixPQUFPLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUNELEdBQUcsQ0FBQyxLQUFrQixFQUFFLENBQUMsRUFBRSxJQUFnQjtZQUN2QyxJQUFJLEtBQXFDLENBQUM7WUFDMUMsSUFBSSxLQUFLLENBQUMsU0FBUyxZQUFZLGFBQWEsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO2dCQUNwRixLQUFLLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJ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LEVBQUUsQ0FBQzt3Q0FDakIsQ0FBQyxDQUFDLENBQUM7b0NBQ1gsQ0FBQztpQ0FDSjs2QkFDSjt5QkFDSixDQUFDLENBQUM7cUJBQ047aUJBQ0o7cUJBQU07b0JBQ0gsa0JBQWtCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztpQkFDekM7WUFDTCxDQUFDO1NBQ0osQ0FBQztJQUNOLENBQUM7Q0FDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3Byb3NlbWlycm9yLW1lbnUnO1xyXG5pbXBvcnQgeyBOb2RlLCBOb2RlVHlwZSB9IGZyb20gJ3Byb3NlbWlycm9yLW1vZGVsJztcclxuaW1wb3J0IHsgRWRpdG9yU3RhdGUsIE5vZGVTZWxlY3Rpb24sIFBsdWdpbiwgVHJhbnNhY3Rpb24gfSBmcm9tICdwcm9zZW1pcnJvci1zdGF0ZSc7XHJcbmltcG9ydCB7XHJcbiAgICBhZGRDb2x1bW5BZnRlcixcclxuICAgIGFkZENvbHVtbkJlZm9yZSxcclxuICAgIGFkZFJvd0FmdGVyLFxyXG4gICAgYWRkUm93QmVmb3JlLFxyXG4gICAgZGVsZXRlQ29sdW1uLFxyXG4gICAgZGVsZXRlUm93LFxyXG4gICAgZGVsZXRlVGFibGUsXHJcbiAgICBtZXJnZUNlbGxzLFxyXG4gICAgc3BsaXRDZWxsLFxyXG4gICAgdG9nZ2xlSGVhZGVyQ29sdW1uLFxyXG4gICAgdG9nZ2xlSGVhZGVyUm93LFxyXG59IGZyb20gJ3Byb3NlbWlycm9yLXRhYmxlcyc7XHJcbmltcG9ydCB7IEVkaXRvclZpZXcgfSBmcm9tICdwcm9zZW1pcnJvci12aWV3JztcclxuXHJcbmltcG9ydCB7IE1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3Byb3ZpZGVycy9tb2RhbC9tb2RhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICAgIEV4dGVybmFsSW1hZ2VBdHRycyxcclxuICAgIEV4dGVybmFsSW1hZ2VEaWFsb2dDb21wb25lbnQsXHJcbn0gZnJvbSAnLi4vLi4vZXh0ZXJuYWwtaW1hZ2UtZGlhbG9nL2V4dGVybmFsLWltYWdlLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBSYXdIdG1sRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcmF3LWh0bWwtZGlhbG9nL3Jhdy1odG1sLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb250ZXh0TWVudUl0ZW0sIENvbnRleHRNZW51U2VydmljZSB9IGZyb20gJy4uL2NvbnRleHQtbWVudS9jb250ZXh0LW1lbnUuc2VydmljZSc7XHJcbmltcG9ydCB7IGNhbkluc2VydCwgcmVuZGVyQ2xhcml0eUljb24gfSBmcm9tICcuLi9tZW51L21lbnUtY29tbW9uJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRJbWFnZUl0ZW0obm9kZVR5cGU6IE5vZGVUeXBlLCBtb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSkge1xyXG4gICAgcmV0dXJuIG5ldyBNZW51SXRlbSh7XHJcbiAgICAgICAgdGl0bGU6ICdJbnNlcnQgaW1hZ2UnLFxyXG4gICAgICAgIGxhYmVsOiAnSW1hZ2UnLFxyXG4gICAgICAgIHJlbmRlcjogcmVuZGVyQ2xhcml0eUljb24oeyBzaGFwZTogJ2ltYWdlJywgbGFiZWw6ICdJbWFnZScgfSksXHJcbiAgICAgICAgY2xhc3M6ICcnLFxyXG4gICAgICAgIGNzczogJycsXHJcbiAgICAgICAgZW5hYmxlKHN0YXRlOiBFZGl0b3JTdGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gY2FuSW5zZXJ0KHN0YXRlLCBub2RlVHlwZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBydW4oc3RhdGU6IEVkaXRvclN0YXRlLCBfLCB2aWV3OiBFZGl0b3JWaWV3KSB7XHJcbiAgICAgICAgICAgIGxldCBhdHRyczogRXh0ZXJuYWxJbWFnZUF0dHJzIHwgdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICBpZiAoc3RhdGUuc2VsZWN0aW9uIGluc3RhbmNlb2YgTm9kZVNlbGVjdGlvbiAmJiBzdGF0ZS5zZWxlY3Rpb24ubm9kZS50eXBlID09PSBub2RlVHlwZSkge1xyXG4gICAgICAgICAgICAgICAgYXR0cnMgPSBzdGF0ZS5zZWxlY3Rpb24ubm9kZS5hdHRycyBhcyBFeHRlcm5hbEltYWdlQXR0cnM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbW9kYWxTZXJ2aWNlXHJcbiAgICAgICAgICAgICAgICAuZnJvbUNvbXBvbmVudChFeHRlcm5hbEltYWdlRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xvc2FibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgbG9jYWxzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nOiBhdHRycyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1ub24tbnVsbC1hc3NlcnRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgdmlldy5kaXNwYXRjaCh2aWV3LnN0YXRlLnRyLnJlcGxhY2VTZWxlY3Rpb25XaXRoKG5vZGVUeXBlLmNyZWF0ZUFuZEZpbGwocmVzdWx0KSEpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdmlldy5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgaW1hZ2VDb250ZXh0TWVudVBsdWdpbiA9IChjb250ZXh0TWVudVNlcnZpY2U6IENvbnRleHRNZW51U2VydmljZSwgbW9kYWxTZXJ2aWNlOiBNb2RhbFNlcnZpY2UpID0+XHJcbiAgICBuZXcgUGx1Z2luKHtcclxuICAgICAgICB2aWV3OiAoKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICB1cGRhdGU6IHZpZXcgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdmlldy5oYXNGb2N1cygpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBkb2MsIHNlbGVjdGlvbiB9ID0gdmlldy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaW1hZ2VOb2RlOiBOb2RlIHwgdW5kZWZpbmVkO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpbWFnZU5vZGVQb3MgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGRvYy5ub2Rlc0JldHdlZW4oc2VsZWN0aW9uLmZyb20sIHNlbGVjdGlvbi50bywgKG4sIHBvcywgcGFyZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuLnR5cGUubmFtZSA9PT0gJ2ltYWdlJykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VOb2RlID0gbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlTm9kZVBvcyA9IHBvcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbWFnZU5vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHZpZXcubm9kZURPTShpbWFnZU5vZGVQb3MpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEhUTUxJbWFnZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRNZW51U2VydmljZS5zZXRDb250ZXh0TWVudSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBzZWxlY3Rpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdJbWFnZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblNoYXBlOiAnaW1hZ2UnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnQ6IG5vZGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29vcmRzOiB2aWV3LmNvb3Jkc0F0UG9zKGltYWdlTm9kZVBvcyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXM6IFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25TaGFwZTogJ2ltYWdlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnSW1hZ2UgcHJvcGVydGllcycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dE1lbnVTZXJ2aWNlLmNsZWFyQ29udGV4dE1lbnUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZyb21Db21wb25lbnQoRXh0ZXJuYWxJbWFnZURpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2FibGU6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbHM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3Rpbmc6IGltYWdlTm9kZSEuYXR0cnMgYXMgRXh0ZXJuYWxJbWFnZUF0dHJzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1ub24tbnVsbC1hc3NlcnRpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3LmRpc3BhdGNoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3LnN0YXRlLnRyLnJlcGxhY2VTZWxlY3Rpb25XaXRoKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLW5vbi1udWxsLWFzc2VydGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VOb2RlIS50eXBlLmNyZWF0ZUFuZEZpbGwocmVzdWx0KSEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXcuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRNZW51U2VydmljZS5jbGVhckNvbnRleHRNZW51KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9LFxyXG4gICAgfSk7XHJcbiJdfQ==
|
package/esm2015/core/shared/components/rich-text-editor/prosemirror/plugins/raw-editor-plugin.js
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { DOMParser, DOMSerializer } from 'prosemirror-model';
|
|
2
|
+
import { Plugin } from 'prosemirror-state';
|
|
3
|
+
import { RawHtmlDialogComponent } from '../../raw-html-dialog/raw-html-dialog.component';
|
|
4
|
+
/**
|
|
5
|
+
* Implements editing of raw HTML for the selected node in the editor.
|
|
6
|
+
*/
|
|
7
|
+
export const rawEditorPlugin = (contextMenuService, modalService) => new Plugin({
|
|
8
|
+
view: _view => {
|
|
9
|
+
const domParser = DOMParser.fromSchema(_view.state.schema);
|
|
10
|
+
const domSerializer = DOMSerializer.fromSchema(_view.state.schema);
|
|
11
|
+
return {
|
|
12
|
+
update: view => {
|
|
13
|
+
if (!view.hasFocus()) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
let topLevelNode;
|
|
17
|
+
const { doc, selection } = view.state;
|
|
18
|
+
let topLevelNodePos = 0;
|
|
19
|
+
doc.nodesBetween(selection.from, selection.to, (n, pos, parent) => {
|
|
20
|
+
if (parent === doc) {
|
|
21
|
+
topLevelNode = n;
|
|
22
|
+
topLevelNodePos = pos;
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
if (topLevelNode) {
|
|
27
|
+
const node = view.nodeDOM(topLevelNodePos);
|
|
28
|
+
if (node instanceof HTMLElement) {
|
|
29
|
+
contextMenuService.setContextMenu({
|
|
30
|
+
ref: selection,
|
|
31
|
+
title: '',
|
|
32
|
+
// iconShape: 'ellipsis-vertical',
|
|
33
|
+
element: node,
|
|
34
|
+
coords: view.coordsAtPos(topLevelNodePos),
|
|
35
|
+
items: [
|
|
36
|
+
{
|
|
37
|
+
enabled: true,
|
|
38
|
+
iconShape: 'code',
|
|
39
|
+
label: 'Edit HTML',
|
|
40
|
+
onClick: () => {
|
|
41
|
+
contextMenuService.clearContextMenu();
|
|
42
|
+
const element = domSerializer.serializeNode(
|
|
43
|
+
// tslint:disable-next-line:no-non-null-assertion
|
|
44
|
+
topLevelNode);
|
|
45
|
+
modalService
|
|
46
|
+
.fromComponent(RawHtmlDialogComponent, {
|
|
47
|
+
size: 'xl',
|
|
48
|
+
locals: {
|
|
49
|
+
html: element.outerHTML,
|
|
50
|
+
},
|
|
51
|
+
})
|
|
52
|
+
.subscribe(result => {
|
|
53
|
+
var _a;
|
|
54
|
+
if (result) {
|
|
55
|
+
const domNode = htmlToDomNode(result, (topLevelNode === null || topLevelNode === void 0 ? void 0 : topLevelNode.isLeaf) ? undefined : node);
|
|
56
|
+
if (domNode) {
|
|
57
|
+
let tr = view.state.tr;
|
|
58
|
+
const parsedNodeSlice = domParser.parse(domNode);
|
|
59
|
+
try {
|
|
60
|
+
tr = tr.replaceRangeWith(topLevelNodePos, topLevelNodePos +
|
|
61
|
+
((_a = topLevelNode === null || topLevelNode === void 0 ? void 0 : topLevelNode.nodeSize) !== null && _a !== void 0 ? _a : 0), parsedNodeSlice);
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
// tslint:disable-next-line:no-console
|
|
65
|
+
console.error(err);
|
|
66
|
+
}
|
|
67
|
+
view.dispatch(tr);
|
|
68
|
+
view.focus();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
function htmlToDomNode(html, wrapInParent) {
|
|
83
|
+
html = `${html.trim()}`;
|
|
84
|
+
const template = document.createElement('template');
|
|
85
|
+
if (wrapInParent) {
|
|
86
|
+
const parentClone = wrapInParent.cloneNode(false);
|
|
87
|
+
parentClone.innerHTML = html;
|
|
88
|
+
template.content.appendChild(parentClone);
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
const parent = document.createElement('p');
|
|
92
|
+
parent.innerHTML = html;
|
|
93
|
+
template.content.appendChild(parent);
|
|
94
|
+
}
|
|
95
|
+
return template.content.firstChild;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmF3LWVkaXRvci1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL3JpY2gtdGV4dC1lZGl0b3IvcHJvc2VtaXJyb3IvcGx1Z2lucy9yYXctZWRpdG9yLXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUkzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUd6Rjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLGtCQUFzQyxFQUFFLFlBQTBCLEVBQUUsRUFBRSxDQUNsRyxJQUFJLE1BQU0sQ0FBQztJQUNQLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRTtRQUNWLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzRCxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkUsT0FBTztZQUNILE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFO29CQUNsQixPQUFPO2lCQUNWO2dCQUNELElBQUksWUFBOEIsQ0FBQztnQkFDbkMsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUN0QyxJQUFJLGVBQWUsR0FBRyxDQUFDLENBQUM7Z0JBQ3hCLEdBQUcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLENB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LFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDN0IsUUFBUSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7S0FDN0M7U0FBTTtRQUNILE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDeEIsUUFBUSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDeEM7SUFDRCxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO0FBQ3ZDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET01QYXJzZXIsIERPTVNlcmlhbGl6ZXIsIE5vZGUgfSBmcm9tICdwcm9zZW1pcnJvci1tb2RlbCc7XHJcbmltcG9ydCB7IFBsdWdpbiB9IGZyb20gJ3Byb3NlbWlycm9yLXN0YXRlJztcclxuaW1wb3J0IHsgUHJvdG9jb2wgfSBmcm9tICdwdXBwZXRlZXInO1xyXG5cclxuaW1wb3J0IHsgTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vcHJvdmlkZXJzL21vZGFsL21vZGFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSYXdIdG1sRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vcmF3LWh0bWwtZGlhbG9nL3Jhdy1odG1sLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDb250ZXh0TWVudVNlcnZpY2UgfSBmcm9tICcuLi9jb250ZXh0LW1lbnUvY29udGV4dC1tZW51LnNlcnZpY2UnO1xyXG5cclxuLyoqXHJcbiAqIEltcGxlbWVudHMgZWRpdGluZyBvZiByYXcgSFRNTCBmb3IgdGhlIHNlbGVjdGVkIG5vZGUgaW4gdGhlIGVkaXRvci5cclxuICovXHJcbmV4cG9ydCBjb25zdCByYXdFZGl0b3JQbHVnaW4gPSAoY29udGV4dE1lbnVTZXJ2aWNlOiBDb250ZXh0TWVudVNlcnZpY2UsIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlKSA9PlxyXG4gICAgbmV3IFBsdWdpbih7XHJcbiAgICAgICAgdmlldzogX3ZpZXcgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBkb21QYXJzZXIgPSBET01QYXJzZXIuZnJvbVNjaGVtYShfdmlldy5zdGF0ZS5zY2hlbWEpO1xyXG4gICAgICAgICAgICBjb25zdCBkb21TZXJpYWxpemVyID0gRE9NU2VyaWFsaXplci5mcm9tU2NoZW1hKF92aWV3LnN0YXRlLnNjaGVtYSk7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICB1cGRhdGU6IHZpZXcgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdmlldy5oYXNGb2N1cygpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRvcExldmVsTm9kZTogTm9kZSB8IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRvYywgc2VsZWN0aW9uIH0gPSB2aWV3LnN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0b3BMZXZlbE5vZGVQb3MgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGRvYy5ub2Rlc0JldHdlZW4oc2VsZWN0aW9uLmZyb20sIHNlbGVjdGlvbi50bywgKG4sIHBvcywgcGFyZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnQgPT09IGRvYykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wTGV2ZWxOb2RlID0gbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcExldmVsTm9kZVBvcyA9IHBvcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0b3BMZXZlbE5vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IHZpZXcubm9kZURPTSh0b3BMZXZlbE5vZGVQb3MpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0TWVudVNlcnZpY2Uuc2V0Q29udGV4dE1lbnUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogc2VsZWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpY29uU2hhcGU6ICdlbGxpcHNpcy12ZXJ0aWNhbCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudDogbm9kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29yZHM6IHZpZXcuY29vcmRzQXRQb3ModG9wTGV2ZWxOb2RlUG9zKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtczogW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvblNoYXBlOiAnY29kZScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJ0VkaXQgSFRNTCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dE1lbnVTZXJ2aWNlLmNsZWFyQ29udGV4dE1lbnUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9tU2VyaWFsaXplci5zZXJpYWxpemVOb2RlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tbm9uLW51bGwtYXNzZXJ0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcExldmVsTm9kZSEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RhbFNlcnZpY2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZyb21Db21wb25lbnQoUmF3SHRtbERpYWxvZ0NvbXBvbmVudCwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogJ3hsJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2Fsczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWw6IGVsZW1lbnQub3V0ZXJIVE1MLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGRvbU5vZGUgPSBodG1sVG9Eb21Ob2RlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcExldmVsTm9kZT8uaXNMZWFmID8gdW5kZWZpbmVkIDogbm9kZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb21Ob2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ciA9IHZpZXcuc3RhdGUudHI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcnNlZE5vZGVTbGljZSA9IGRvbVBhcnNlci5wYXJzZShkb21Ob2RlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyID0gdHIucmVwbGFjZVJhbmdlV2l0aChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BMZXZlbE5vZGVQb3MsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wTGV2ZWxOb2RlUG9zICtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRvcExldmVsTm9kZT8ubm9kZVNpemUgPz8gMCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkTm9kZVNsaWNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1jb25zb2xlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldy5kaXNwYXRjaCh0cik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXcuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbmZ1bmN0aW9uIGh0bWxUb0RvbU5vZGUoaHRtbDogc3RyaW5nLCB3cmFwSW5QYXJlbnQ/OiBIVE1MRWxlbWVudCkge1xyXG4gICAgaHRtbCA9IGAke2h0bWwudHJpbSgpfWA7XHJcbiAgICBjb25zdCB0ZW1wbGF0ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RlbXBsYXRlJyk7XHJcbiAgICBpZiAod3JhcEluUGFyZW50KSB7XHJcbiAgICAgICAgY29uc3QgcGFyZW50Q2xvbmUgPSB3cmFwSW5QYXJlbnQuY2xvbmVOb2RlKGZhbHNlKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBwYXJlbnRDbG9uZS5pbm5lckhUTUwgPSBodG1sO1xyXG4gICAgICAgIHRlbXBsYXRlLmNvbnRlbnQuYXBwZW5kQ2hpbGQocGFyZW50Q2xvbmUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBwYXJlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7XHJcbiAgICAgICAgcGFyZW50LmlubmVySFRNTCA9IGh0bWw7XHJcbiAgICAgICAgdGVtcGxhdGUuY29udGVudC5hcHBlbmRDaGlsZChwYXJlbnQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRlbXBsYXRlLmNvbnRlbnQuZmlyc3RDaGlsZDtcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { MenuItem } from 'prosemirror-menu';
|
|
2
|
+
import { Plugin, TextSelection } from 'prosemirror-state';
|
|
3
|
+
import { addColumnAfter, addColumnBefore, addRowAfter, addRowBefore, deleteColumn, deleteRow, deleteTable, isInTable, mergeCells, splitCell, tableNodes, tableNodeTypes, toggleHeaderCell, toggleHeaderColumn, toggleHeaderRow, } from 'prosemirror-tables';
|
|
4
|
+
import { renderClarityIcon } from '../menu/menu-common';
|
|
5
|
+
export const tableContextMenuPlugin = (contextMenuService) => new Plugin({
|
|
6
|
+
view: () => {
|
|
7
|
+
return {
|
|
8
|
+
update: view => {
|
|
9
|
+
if (!view.hasFocus()) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const { doc, selection } = view.state;
|
|
13
|
+
let tableNode;
|
|
14
|
+
let tableNodePos = 0;
|
|
15
|
+
doc.nodesBetween(selection.from, selection.to, (n, pos, parent) => {
|
|
16
|
+
if (n.type.name === 'table') {
|
|
17
|
+
tableNode = n;
|
|
18
|
+
tableNodePos = pos;
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
if (tableNode) {
|
|
23
|
+
const node = view.nodeDOM(tableNodePos);
|
|
24
|
+
if (node instanceof Element) {
|
|
25
|
+
function createMenuItem(label, commandFn, iconClass) {
|
|
26
|
+
const enabled = commandFn(view.state);
|
|
27
|
+
return {
|
|
28
|
+
label,
|
|
29
|
+
enabled,
|
|
30
|
+
iconClass,
|
|
31
|
+
onClick: () => {
|
|
32
|
+
contextMenuService.clearContextMenu();
|
|
33
|
+
view.focus();
|
|
34
|
+
commandFn(view.state, view.dispatch);
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
const separator = {
|
|
39
|
+
label: '',
|
|
40
|
+
separator: true,
|
|
41
|
+
enabled: true,
|
|
42
|
+
onClick: () => {
|
|
43
|
+
/**/
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
contextMenuService.setContextMenu({
|
|
47
|
+
ref: selection,
|
|
48
|
+
title: 'Table',
|
|
49
|
+
iconShape: 'table',
|
|
50
|
+
element: node,
|
|
51
|
+
coords: view.coordsAtPos(tableNodePos),
|
|
52
|
+
items: [
|
|
53
|
+
createMenuItem('Insert column before', addColumnBefore, 'add-column'),
|
|
54
|
+
createMenuItem('Insert column after', addColumnAfter, 'add-column'),
|
|
55
|
+
createMenuItem('Insert row before', addRowBefore, 'add-row'),
|
|
56
|
+
createMenuItem('Insert row after', addRowAfter, 'add-row'),
|
|
57
|
+
createMenuItem('Merge cells', mergeCells),
|
|
58
|
+
createMenuItem('Split cell', splitCell),
|
|
59
|
+
separator,
|
|
60
|
+
createMenuItem('Toggle header column', toggleHeaderColumn),
|
|
61
|
+
createMenuItem('Toggle header row', toggleHeaderRow),
|
|
62
|
+
separator,
|
|
63
|
+
createMenuItem('Delete column', deleteColumn),
|
|
64
|
+
createMenuItem('Delete row', deleteRow),
|
|
65
|
+
createMenuItem('Delete table', deleteTable),
|
|
66
|
+
],
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
contextMenuService.clearContextMenu();
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
export function getTableNodes() {
|
|
78
|
+
return tableNodes({
|
|
79
|
+
tableGroup: 'block',
|
|
80
|
+
cellContent: 'block+',
|
|
81
|
+
cellAttributes: {
|
|
82
|
+
background: {
|
|
83
|
+
default: null,
|
|
84
|
+
getFromDOM(dom) {
|
|
85
|
+
return dom.style.backgroundColor || null;
|
|
86
|
+
},
|
|
87
|
+
setDOMAttr(value, attrs) {
|
|
88
|
+
if (value) {
|
|
89
|
+
attrs.style = (attrs.style || '') + `background-color: ${value};`;
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
export function getTableMenu(schema) {
|
|
97
|
+
function item(label, cmd, iconShape) {
|
|
98
|
+
return new MenuItem({
|
|
99
|
+
label,
|
|
100
|
+
select: cmd,
|
|
101
|
+
run: cmd,
|
|
102
|
+
render: iconShape ? renderClarityIcon({ shape: iconShape, label }) : undefined,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
function separator() {
|
|
106
|
+
return new MenuItem({
|
|
107
|
+
select: state => isInTable(state),
|
|
108
|
+
run: state => {
|
|
109
|
+
/**/
|
|
110
|
+
},
|
|
111
|
+
render: view => {
|
|
112
|
+
const el = document.createElement('div');
|
|
113
|
+
el.classList.add('menu-separator');
|
|
114
|
+
return el;
|
|
115
|
+
},
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
return [
|
|
119
|
+
item('Insert column before', addColumnBefore),
|
|
120
|
+
item('Insert column after', addColumnAfter),
|
|
121
|
+
item('Insert row before', addRowBefore),
|
|
122
|
+
item('Insert row after', addRowAfter),
|
|
123
|
+
item('Merge cells', mergeCells),
|
|
124
|
+
item('Split cell', splitCell),
|
|
125
|
+
separator(),
|
|
126
|
+
item('Toggle header column', toggleHeaderColumn),
|
|
127
|
+
item('Toggle header row', toggleHeaderRow),
|
|
128
|
+
item('Toggle header cells', toggleHeaderCell),
|
|
129
|
+
separator(),
|
|
130
|
+
item('Delete column', deleteColumn),
|
|
131
|
+
item('Delete row', deleteRow),
|
|
132
|
+
item('Delete table', deleteTable),
|
|
133
|
+
];
|
|
134
|
+
}
|
|
135
|
+
export function addTable(state, dispatch, { rowsCount, colsCount, withHeaderRow, cellContent }) {
|
|
136
|
+
const offset = state.tr.selection.anchor + 1;
|
|
137
|
+
const nodes = createTable(state, rowsCount, colsCount, withHeaderRow, cellContent);
|
|
138
|
+
const tr = state.tr.replaceSelectionWith(nodes).scrollIntoView();
|
|
139
|
+
const resolvedPos = tr.doc.resolve(offset);
|
|
140
|
+
tr.setSelection(TextSelection.near(resolvedPos));
|
|
141
|
+
dispatch(tr);
|
|
142
|
+
}
|
|
143
|
+
function createTable(state, rowsCount, colsCount, withHeaderRow, cellContent) {
|
|
144
|
+
const types = tableNodeTypes(state.schema);
|
|
145
|
+
const headerCells = [];
|
|
146
|
+
const cells = [];
|
|
147
|
+
const createCell = (cellType, _cellContent) => _cellContent ? cellType.createChecked(null, _cellContent) : cellType.createAndFill();
|
|
148
|
+
for (let index = 0; index < colsCount; index += 1) {
|
|
149
|
+
const cell = createCell(types.cell, cellContent);
|
|
150
|
+
if (cell) {
|
|
151
|
+
cells.push(cell);
|
|
152
|
+
}
|
|
153
|
+
if (withHeaderRow) {
|
|
154
|
+
const headerCell = createCell(types.header_cell, cellContent);
|
|
155
|
+
if (headerCell) {
|
|
156
|
+
headerCells.push(headerCell);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
const rows = [];
|
|
161
|
+
for (let index = 0; index < rowsCount; index += 1) {
|
|
162
|
+
rows.push(types.row.createChecked(null, withHeaderRow && index === 0 ? headerCells : cells));
|
|
163
|
+
}
|
|
164
|
+
return types.table.createChecked(null, rows);
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGVzLXBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvc2hhcmVkL2NvbXBvbmVudHMvcmljaC10ZXh0LWVkaXRvci9wcm9zZW1pcnJvci9wbHVnaW5zL3RhYmxlcy1wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRXpELE9BQU8sRUFBZSxNQUFNLEVBQUUsYUFBYSxFQUFlLE1BQU0sbUJBQW1CLENBQUM7QUFDcEYsT0FBTyxFQUNILGNBQWMsRUFDZCxlQUFlLEVBQ2YsV0FBVyxFQUNYLFlBQVksRUFDWixZQUFZLEVBQ1osU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFNBQVMsRUFDVCxVQUFVLEVBQ1YsY0FBYyxFQUNkLGdCQUFnQixFQUNoQixrQkFBa0IsRUFDbEIsZUFBZSxHQUNsQixNQUFNLG9CQUFvQixDQUFDO0FBSzVCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXhELE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUMsa0JBQXNDLEVBQUUsRUFBRSxDQUM3RSxJQUFJLE1BQU0sQ0FBQztJQUNQLElBQUksRUFBRSxHQUFHLEVBQUU7UUFDUCxPQUFPO1lBQ0gsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUU7b0JBQ2xCLE9BQU87aUJBQ1Y7Z0JBQ0QsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUN0QyxJQUFJLFNBQTJCLENBQUM7Z0JBQ2hDLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztnQkFDckIsR0FBRyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLFNB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QUssQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxhQUFhLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQ2hHO0lBRUQsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDakQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lbnVFbGVtZW50LCBNZW51SXRlbSB9IGZyb20gJ3Byb3NlbWlycm9yLW1lbnUnO1xyXG5pbXBvcnQgeyBOb2RlLCBTY2hlbWEgfSBmcm9tICdwcm9zZW1pcnJvci1tb2RlbCc7XHJcbmltcG9ydCB7IEVkaXRvclN0YXRlLCBQbHVnaW4sIFRleHRTZWxlY3Rpb24sIFRyYW5zYWN0aW9uIH0gZnJvbSAncHJvc2VtaXJyb3Itc3RhdGUnO1xyXG5pbXBvcnQge1xyXG4gICAgYWRkQ29sdW1uQWZ0ZXIsXHJcbiAgICBhZGRDb2x1bW5CZWZvcmUsXHJcbiAgICBhZGRSb3dBZnRlcixcclxuICAgIGFkZFJvd0JlZm9yZSxcclxuICAgIGRlbGV0ZUNvbHVtbixcclxuICAgIGRlbGV0ZVJvdyxcclxuICAgIGRlbGV0ZVRhYmxlLFxyXG4gICAgaXNJblRhYmxlLFxyXG4gICAgbWVyZ2VDZWxscyxcclxuICAgIHNwbGl0Q2VsbCxcclxuICAgIHRhYmxlTm9kZXMsXHJcbiAgICB0YWJsZU5vZGVUeXBlcyxcclxuICAgIHRvZ2dsZUhlYWRlckNlbGwsXHJcbiAgICB0b2dnbGVIZWFkZXJDb2x1bW4sXHJcbiAgICB0b2dnbGVIZWFkZXJSb3csXHJcbn0gZnJvbSAncHJvc2VtaXJyb3ItdGFibGVzJztcclxuaW1wb3J0IHsgRGVjb3JhdGlvbiwgRGVjb3JhdGlvblNldCB9IGZyb20gJ3Byb3NlbWlycm9yLXZpZXcnO1xyXG5cclxuaW1wb3J0IHsgQ29udGV4dE1lbnVJdGVtLCBDb250ZXh0TWVudVNlcnZpY2UgfSBmcm9tICcuLi9jb250ZXh0LW1lbnUvY29udGV4dC1tZW51LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBidWlsZE1lbnVJdGVtcyB9IGZyb20gJy4uL21lbnUvbWVudSc7XHJcbmltcG9ydCB7IHJlbmRlckNsYXJpdHlJY29uIH0gZnJvbSAnLi4vbWVudS9tZW51LWNvbW1vbic7XHJcblxyXG5leHBvcnQgY29uc3QgdGFibGVDb250ZXh0TWVudVBsdWdpbiA9IChjb250ZXh0TWVudVNlcnZpY2U6IENvbnRleHRNZW51U2VydmljZSkgPT5cclxuICAgIG5ldyBQbHVnaW4oe1xyXG4gICAgICAgIHZpZXc6ICgpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHVwZGF0ZTogdmlldyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF2aWV3Lmhhc0ZvY3VzKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGRvYywgc2VsZWN0aW9uIH0gPSB2aWV3LnN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0YWJsZU5vZGU6IE5vZGUgfCB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRhYmxlTm9kZVBvcyA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgZG9jLm5vZGVzQmV0d2VlbihzZWxlY3Rpb24uZnJvbSwgc2VsZWN0aW9uLnRvLCAobiwgcG9zLCBwYXJlbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG4udHlwZS5uYW1lID09PSAndGFibGUnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZU5vZGUgPSBuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVOb2RlUG9zID0gcG9zO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRhYmxlTm9kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gdmlldy5ub2RlRE9NKHRhYmxlTm9kZVBvcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gY3JlYXRlTWVudUl0ZW0oXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kRm46IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGU6IEVkaXRvclN0YXRlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaD86ICh0cjogVHJhbnNhY3Rpb24pID0+IHZvaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSA9PiBib29sZWFuLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25DbGFzcz86IHN0cmluZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk6IENvbnRleHRNZW51SXRlbSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZW5hYmxlZCA9IGNvbW1hbmRGbih2aWV3LnN0YXRlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbkNsYXNzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0TWVudVNlcnZpY2UuY2xlYXJDb250ZXh0TWVudSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlldy5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZEZuKHZpZXcuc3RhdGUsIHZpZXcuZGlzcGF0Y2gpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZXBhcmF0b3I6IENvbnRleHRNZW51SXRlbSA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogJycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VwYXJhdG9yOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljazogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0TWVudVNlcnZpY2Uuc2V0Q29udGV4dE1lbnUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogc2VsZWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAnVGFibGUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25TaGFwZTogJ3RhYmxlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50OiBub2RlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb3Jkczogdmlldy5jb29yZHNBdFBvcyh0YWJsZU5vZGVQb3MpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zOiBbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU1lbnVJdGVtKCdJbnNlcnQgY29sdW1uIGJlZm9yZScsIGFkZENvbHVtbkJlZm9yZSwgJ2FkZC1jb2x1bW4nKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTWVudUl0ZW0oJ0luc2VydCBjb2x1bW4gYWZ0ZXInLCBhZGRDb2x1bW5BZnRlciwgJ2FkZC1jb2x1bW4nKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTWVudUl0ZW0oJ0luc2VydCByb3cgYmVmb3JlJywgYWRkUm93QmVmb3JlLCAnYWRkLXJvdycpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVNZW51SXRlbSgnSW5zZXJ0IHJvdyBhZnRlcicsIGFkZFJvd0FmdGVyLCAnYWRkLXJvdycpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVNZW51SXRlbSgnTWVyZ2UgY2VsbHMnLCBtZXJnZUNlbGxzKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTWVudUl0ZW0oJ1NwbGl0IGNlbGwnLCBzcGxpdENlbGwpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXBhcmF0b3IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU1lbnVJdGVtKCdUb2dnbGUgaGVhZGVyIGNvbHVtbicsIHRvZ2dsZUhlYWRlckNvbHVtbiksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU1lbnVJdGVtKCdUb2dnbGUgaGVhZGVyIHJvdycsIHRvZ2dsZUhlYWRlclJvdyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcGFyYXRvcixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTWVudUl0ZW0oJ0RlbGV0ZSBjb2x1bW4nLCBkZWxldGVDb2x1bW4pLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVNZW51SXRlbSgnRGVsZXRlIHJvdycsIGRlbGV0ZVJvdyksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU1lbnVJdGVtKCdEZWxldGUgdGFibGUnLCBkZWxldGVUYWJsZSksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dE1lbnVTZXJ2aWNlLmNsZWFyQ29udGV4dE1lbnUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRUYWJsZU5vZGVzKCkge1xyXG4gICAgcmV0dXJuIHRhYmxlTm9kZXMoe1xyXG4gICAgICAgIHRhYmxlR3JvdXA6ICdibG9jaycsXHJcbiAgICAgICAgY2VsbENvbnRlbnQ6ICdibG9jaysnLFxyXG4gICAgICAgIGNlbGxBdHRyaWJ1dGVzOiB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQ6IHtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBnZXRGcm9tRE9NKGRvbSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAoZG9tIGFzIEhUTUxFbGVtZW50KS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgfHwgbnVsbDtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzZXRET01BdHRyKHZhbHVlLCBhdHRycykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRycy5zdHlsZSA9IChhdHRycy5zdHlsZSB8fCAnJykgKyBgYmFja2dyb3VuZC1jb2xvcjogJHt2YWx1ZX07YDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFRhYmxlTWVudShzY2hlbWE6IFNjaGVtYSkge1xyXG4gICAgZnVuY3Rpb24gaXRlbShcclxuICAgICAgICBsYWJlbDogc3RyaW5nLFxyXG4gICAgICAgIGNtZDogKHN0YXRlOiBFZGl0b3JTdGF0ZSwgZGlzcGF0Y2g/OiAodHI6IFRyYW5zYWN0aW9uKSA9PiB2b2lkKSA9PiBib29sZWFuLFxyXG4gICAgICAgIGljb25TaGFwZT86IHN0cmluZyxcclxuICAgICkge1xyXG4gICAgICAgIHJldHVybiBuZXcgTWVudUl0ZW0oe1xyXG4gICAgICAgICAgICBsYWJlbCxcclxuICAgICAgICAgICAgc2VsZWN0OiBjbWQsXHJcbiAgICAgICAgICAgIHJ1bjogY21kLFxyXG4gICAgICAgICAgICByZW5kZXI6IGljb25TaGFwZSA/IHJlbmRlckNsYXJpdHlJY29uKHsgc2hhcGU6IGljb25TaGFwZSwgbGFiZWwgfSkgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gc2VwYXJhdG9yKCk6IE1lbnVFbGVtZW50IHtcclxuICAgICAgICByZXR1cm4gbmV3IE1lbnVJdGVtKHtcclxuICAgICAgICAgICAgc2VsZWN0OiBzdGF0ZSA9PiBpc0luVGFibGUoc3RhdGUpLFxyXG4gICAgICAgICAgICBydW46IHN0YXRlID0+IHtcclxuICAgICAgICAgICAgICAgIC8qKi9cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgcmVuZGVyOiB2aWV3ID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgICAgICAgICBlbC5jbGFzc0xpc3QuYWRkKCdtZW51LXNlcGFyYXRvcicpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBbXHJcbiAgICAgICAgaXRlbSgnSW5zZXJ0IGNvbHVtbiBiZWZvcmUnLCBhZGRDb2x1bW5CZWZvcmUpLFxyXG4gICAgICAgIGl0ZW0oJ0luc2VydCBjb2x1bW4gYWZ0ZXInLCBhZGRDb2x1bW5BZnRlciksXHJcbiAgICAgICAgaXRlbSgnSW5zZXJ0IHJvdyBiZWZvcmUnLCBhZGRSb3dCZWZvcmUpLFxyXG4gICAgICAgIGl0ZW0oJ0luc2VydCByb3cgYWZ0ZXInLCBhZGRSb3dBZnRlciksXHJcbiAgICAgICAgaXRlbSgnTWVyZ2UgY2VsbHMnLCBtZXJnZUNlbGxzKSxcclxuICAgICAgICBpdGVtKCdTcGxpdCBjZWxsJywgc3BsaXRDZWxsKSxcclxuICAgICAgICBzZXBhcmF0b3IoKSxcclxuICAgICAgICBpdGVtKCdUb2dnbGUgaGVhZGVyIGNvbHVtbicsIHRvZ2dsZUhlYWRlckNvbHVtbiksXHJcbiAgICAgICAgaXRlbSgnVG9nZ2xlIGhlYWRlciByb3cnLCB0b2dnbGVIZWFkZXJSb3cpLFxyXG4gICAgICAgIGl0ZW0oJ1RvZ2dsZSBoZWFkZXIgY2VsbHMnLCB0b2dnbGVIZWFkZXJDZWxsKSxcclxuICAgICAgICBzZXBhcmF0b3IoKSxcclxuICAgICAgICBpdGVtKCdEZWxldGUgY29sdW1uJywgZGVsZXRlQ29sdW1uKSxcclxuICAgICAgICBpdGVtKCdEZWxldGUgcm93JywgZGVsZXRlUm93KSxcclxuICAgICAgICBpdGVtKCdEZWxldGUgdGFibGUnLCBkZWxldGVUYWJsZSksXHJcbiAgICBdO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRkVGFibGUoc3RhdGUsIGRpc3BhdGNoLCB7IHJvd3NDb3VudCwgY29sc0NvdW50LCB3aXRoSGVhZGVyUm93LCBjZWxsQ29udGVudCB9KSB7XHJcbiAgICBjb25zdCBvZmZzZXQgPSBzdGF0ZS50ci5zZWxlY3Rpb24uYW5jaG9yICsgMTtcclxuXHJcbiAgICBjb25zdCBub2RlcyA9IGNyZWF0ZVRhYmxlKHN0YXRlLCByb3dzQ291bnQsIGNvbHNDb3VudCwgd2l0aEhlYWRlclJvdywgY2VsbENvbnRlbnQpO1xyXG4gICAgY29uc3QgdHIgPSBzdGF0ZS50ci5yZXBsYWNlU2VsZWN0aW9uV2l0aChub2Rlcykuc2Nyb2xsSW50b1ZpZXcoKTtcclxuICAgIGNvbnN0IHJlc29sdmVkUG9zID0gdHIuZG9jLnJlc29sdmUob2Zmc2V0KTtcclxuXHJcbiAgICB0ci5zZXRTZWxlY3Rpb24oVGV4dFNlbGVjdGlvbi5uZWFyKHJlc29sdmVkUG9zKSk7XHJcblxyXG4gICAgZGlzcGF0Y2godHIpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVUYWJsZShzdGF0ZSwgcm93c0NvdW50LCBjb2xzQ291bnQsIHdpdGhIZWFkZXJSb3csIGNlbGxDb250ZW50KSB7XHJcbiAgICBjb25zdCB0eXBlcyA9IHRhYmxlTm9kZVR5cGVzKHN0YXRlLnNjaGVtYSk7XHJcbiAgICBjb25zdCBoZWFkZXJDZWxsczogTm9kZVtdID0gW107XHJcbiAgICBjb25zdCBjZWxsczogTm9kZVtdID0gW107XHJcbiAgICBjb25zdCBjcmVhdGVDZWxsID0gKGNlbGxUeXBlLCBfY2VsbENvbnRlbnQpID0+XHJcbiAgICAgICAgX2NlbGxDb250ZW50ID8gY2VsbFR5cGUuY3JlYXRlQ2hlY2tlZChudWxsLCBfY2VsbENvbnRlbnQpIDogY2VsbFR5cGUuY3JlYXRlQW5kRmlsbCgpO1xyXG5cclxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjb2xzQ291bnQ7IGluZGV4ICs9IDEpIHtcclxuICAgICAgICBjb25zdCBjZWxsID0gY3JlYXRlQ2VsbCh0eXBlcy5jZWxsLCBjZWxsQ29udGVudCk7XHJcblxyXG4gICAgICAgIGlmIChjZWxsKSB7XHJcbiAgICAgICAgICAgIGNlbGxzLnB1c2goY2VsbCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAod2l0aEhlYWRlclJvdykge1xyXG4gICAgICAgICAgICBjb25zdCBoZWFkZXJDZWxsID0gY3JlYXRlQ2VsbCh0eXBlcy5oZWFkZXJfY2VsbCwgY2VsbENvbnRlbnQpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGhlYWRlckNlbGwpIHtcclxuICAgICAgICAgICAgICAgIGhlYWRlckNlbGxzLnB1c2goaGVhZGVyQ2VsbCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgcm93czogTm9kZVtdID0gW107XHJcblxyXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHJvd3NDb3VudDsgaW5kZXggKz0gMSkge1xyXG4gICAgICAgIHJvd3MucHVzaCh0eXBlcy5yb3cuY3JlYXRlQ2hlY2tlZChudWxsLCB3aXRoSGVhZGVyUm93ICYmIGluZGV4ID09PSAwID8gaGVhZGVyQ2VsbHMgOiBjZWxscykpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0eXBlcy50YWJsZS5jcmVhdGVDaGVja2VkKG51bGwsIHJvd3MpO1xyXG59XHJcbiJdfQ==
|
|
@@ -1,27 +1,35 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
1
|
+
import { Injectable, Injector } from '@angular/core';
|
|
2
2
|
import { baseKeymap } from 'prosemirror-commands';
|
|
3
3
|
import { dropCursor } from 'prosemirror-dropcursor';
|
|
4
4
|
import { gapCursor } from 'prosemirror-gapcursor';
|
|
5
5
|
import { history } from 'prosemirror-history';
|
|
6
6
|
import { keymap } from 'prosemirror-keymap';
|
|
7
|
-
import { menuBar } from 'prosemirror-menu';
|
|
8
7
|
import { DOMParser, DOMSerializer, Schema } from 'prosemirror-model';
|
|
9
8
|
import { schema } from 'prosemirror-schema-basic';
|
|
10
9
|
import { addListNodes } from 'prosemirror-schema-list';
|
|
11
10
|
import { EditorState, Plugin } from 'prosemirror-state';
|
|
11
|
+
import { columnResizing, fixTables, tableEditing } from 'prosemirror-tables';
|
|
12
12
|
import { EditorView } from 'prosemirror-view';
|
|
13
13
|
import { ModalService } from '../../../../providers/modal/modal.service';
|
|
14
|
+
import { ContextMenuService } from './context-menu/context-menu.service';
|
|
15
|
+
import { iframeNode, iframeNodeView } from './custom-nodes';
|
|
14
16
|
import { buildInputRules } from './inputrules';
|
|
15
17
|
import { buildKeymap } from './keymap';
|
|
16
|
-
import {
|
|
18
|
+
import { customMenuPlugin } from './menu/menu-plugin';
|
|
19
|
+
import { imageContextMenuPlugin } from './plugins/image-plugin';
|
|
17
20
|
import { linkSelectPlugin } from './plugins/link-select-plugin';
|
|
21
|
+
import { rawEditorPlugin } from './plugins/raw-editor-plugin';
|
|
22
|
+
import { getTableNodes, tableContextMenuPlugin } from './plugins/tables-plugin';
|
|
18
23
|
export class ProsemirrorService {
|
|
19
|
-
constructor(
|
|
20
|
-
this.
|
|
24
|
+
constructor(injector, contextMenuService) {
|
|
25
|
+
this.injector = injector;
|
|
26
|
+
this.contextMenuService = contextMenuService;
|
|
21
27
|
// Mix the nodes from prosemirror-schema-list into the basic schema to
|
|
22
28
|
// create a schema with list support.
|
|
23
29
|
this.mySchema = new Schema({
|
|
24
|
-
nodes: addListNodes(schema.spec.nodes, 'paragraph block*', 'block')
|
|
30
|
+
nodes: addListNodes(schema.spec.nodes, 'paragraph block*', 'block')
|
|
31
|
+
.append(getTableNodes())
|
|
32
|
+
.addToEnd('iframe', iframeNode),
|
|
25
33
|
marks: schema.spec.marks,
|
|
26
34
|
});
|
|
27
35
|
this.enabled = true;
|
|
@@ -40,13 +48,30 @@ export class ProsemirrorService {
|
|
|
40
48
|
}
|
|
41
49
|
},
|
|
42
50
|
editable: () => options.isReadOnly(),
|
|
51
|
+
handleDOMEvents: {
|
|
52
|
+
focus: view => {
|
|
53
|
+
this.contextMenuService.setVisibility(true);
|
|
54
|
+
},
|
|
55
|
+
blur: view => {
|
|
56
|
+
this.contextMenuService.setVisibility(false);
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
nodeViews: {
|
|
60
|
+
iframe: iframeNodeView,
|
|
61
|
+
},
|
|
43
62
|
});
|
|
44
63
|
}
|
|
45
64
|
update(text) {
|
|
46
65
|
if (this.editorView) {
|
|
47
|
-
const
|
|
48
|
-
if (
|
|
49
|
-
this.
|
|
66
|
+
const currentText = this.getTextFromState(this.editorView.state);
|
|
67
|
+
if (text !== currentText) {
|
|
68
|
+
let state = this.getStateFromText(text);
|
|
69
|
+
if (document.body.contains(this.editorView.dom)) {
|
|
70
|
+
const fix = fixTables(state);
|
|
71
|
+
if (fix)
|
|
72
|
+
state = state.apply(fix.setMeta('addToHistory', false));
|
|
73
|
+
this.editorView.updateState(state);
|
|
74
|
+
}
|
|
50
75
|
}
|
|
51
76
|
}
|
|
52
77
|
}
|
|
@@ -86,13 +111,17 @@ export class ProsemirrorService {
|
|
|
86
111
|
dropCursor(),
|
|
87
112
|
gapCursor(),
|
|
88
113
|
linkSelectPlugin,
|
|
114
|
+
columnResizing({}),
|
|
115
|
+
tableEditing({ allowTableNodeSelection: true }),
|
|
116
|
+
tableContextMenuPlugin(this.contextMenuService),
|
|
117
|
+
imageContextMenuPlugin(this.contextMenuService, this.injector.get(ModalService)),
|
|
118
|
+
rawEditorPlugin(this.contextMenuService, this.injector.get(ModalService)),
|
|
119
|
+
customMenuPlugin({
|
|
120
|
+
floatingMenu: options.floatingMenu,
|
|
121
|
+
injector: this.injector,
|
|
122
|
+
schema: options.schema,
|
|
123
|
+
}),
|
|
89
124
|
];
|
|
90
|
-
if (options.menuBar !== false) {
|
|
91
|
-
plugins.push(menuBar({
|
|
92
|
-
floating: options.floatingMenu !== false,
|
|
93
|
-
content: options.menuContent || buildMenuItems(options.schema, this.modalService).fullMenu,
|
|
94
|
-
}));
|
|
95
|
-
}
|
|
96
125
|
if (options.history !== false) {
|
|
97
126
|
plugins.push(history());
|
|
98
127
|
}
|
|
@@ -107,6 +136,7 @@ ProsemirrorService.decorators = [
|
|
|
107
136
|
{ type: Injectable }
|
|
108
137
|
];
|
|
109
138
|
ProsemirrorService.ctorParameters = () => [
|
|
110
|
-
{ type:
|
|
139
|
+
{ type: Injector },
|
|
140
|
+
{ type: ContextMenuService }
|
|
111
141
|
];
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvc2VtaXJyb3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvc2hhcmVkL2NvbXBvbmVudHMvcmljaC10ZXh0LWVkaXRvci9wcm9zZW1pcnJvci9wcm9zZW1pcnJvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUU5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxjQUFjLEVBQUUs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UUFFRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQ2pCLElBQUksTUFBTSxDQUFDO1lBQ1AsS0FBSyxFQUFFO2dCQUNILFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRTthQUMzQztTQUNKLENBQUMsQ0FDTCxDQUFDO0lBQ04sQ0FBQzs7O1lBdkdKLFVBQVU7OztZQWRGLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGJhc2VLZXltYXAgfSBmcm9tICdwcm9zZW1pcnJvci1jb21tYW5kcyc7XHJcbmltcG9ydCB7IGRyb3BDdXJzb3IgfSBmcm9tICdwcm9zZW1pcnJvci1kcm9wY3Vyc29yJztcclxuaW1wb3J0IHsgZ2FwQ3Vyc29yIH0gZnJvbSAncHJvc2VtaXJyb3ItZ2FwY3Vyc29yJztcclxuaW1wb3J0IHsgaGlzdG9yeSB9IGZyb20gJ3Byb3NlbWlycm9yLWhpc3RvcnknO1xyXG5pbXBvcnQgeyBrZXltYXAgfSBmcm9tICdwcm9zZW1pcnJvci1rZXltYXAnO1xyXG5pbXBvcnQgeyBtZW51QmFyIH0gZnJvbSAncHJvc2VtaXJyb3ItbWVudSc7XHJcbmltcG9ydCB7IERPTVBhcnNlciwgRE9NU2VyaWFsaXplciwgU2NoZW1hIH0gZnJvbSAncHJvc2VtaXJyb3ItbW9kZWwnO1xyXG5pbXBvcnQgeyBzY2hlbWEgfSBmcm9tICdwcm9zZW1pcnJvci1zY2hlbWEtYmFzaWMnO1xyXG5pbXBvcnQgeyBhZGRMaXN0Tm9kZXMgfSBmcm9tICdwcm9zZW1pcnJvci1zY2hlbWEtbGlzdCc7XHJcbmltcG9ydCB7IEVkaXRvclN0YXRlLCBQbHVnaW4gfSBmcm9tICdwcm9zZW1pcnJvci1zdGF0ZSc7XHJcbmltcG9ydCB7IEVkaXRvclZpZXcgfSBmcm9tICdwcm9zZW1pcnJvci12aWV3JztcclxuXHJcbmltcG9ydCB7IE1vZGFsU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3Byb3ZpZGVycy9tb2RhbC9tb2RhbC5zZXJ2aWNlJztcclxuXHJcbmltcG9ydCB7IGJ1aWxkSW5wdXRSdWxlcyB9IGZyb20gJy4vaW5wdXRydWxlcyc7XHJcbmltcG9ydCB7IGJ1aWxkS2V5bWFwIH0gZnJvbSAnLi9rZXltYXAnO1xyXG5pbXBvcnQgeyBidWlsZE1lbnVJdGVtcyB9IGZyb20gJy4vbWVudS9tZW51JztcclxuaW1wb3J0IHsgbGlua1NlbGVjdFBsdWdpbiB9IGZyb20gJy4vcGx1Z2lucy9saW5rLXNlbGVjdC1wbHVnaW4nO1xyXG5pbXBvcnQgeyBTZXR1cE9wdGlvbnMgfSBmcm9tICcuL3R5cGVzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlRWRpdG9yVmlld09wdGlvbnMge1xyXG4gICAgb25UZXh0SW5wdXQ6IChjb250ZW50OiBzdHJpbmcpID0+IHZvaWQ7XHJcbiAgICBlbGVtZW50OiBIVE1MRWxlbWVudDtcclxuICAgIGlzUmVhZE9ubHk6ICgpID0+IGJvb2xlYW47XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFByb3NlbWlycm9yU2VydmljZSB7XHJcbiAgICBlZGl0b3JWaWV3OiBFZGl0b3JWaWV3O1xyXG5cclxuICAgIC8vIE1peCB0aGUgbm9kZXMgZnJvbSBwcm9zZW1pcnJvci1zY2hlbWEtbGlzdCBpbnRvIHRoZSBiYXNpYyBzY2hlbWEgdG9cclxuICAgIC8vIGNyZWF0ZSBhIHNjaGVtYSB3aXRoIGxpc3Qgc3VwcG9ydC5cclxuICAgIHByaXZhdGUgbXlTY2hlbWEgPSBuZXcgU2NoZW1hKHtcclxuICAgICAgICBub2RlczogYWRkTGlzdE5vZGVzKHNjaGVtYS5zcGVjLm5vZGVzLCAncGFyYWdyYXBoIGJsb2NrKicsICdibG9jaycpLFxyXG4gICAgICAgIG1hcmtzOiBzY2hlbWEuc3BlYy5tYXJrcyxcclxuICAgIH0pO1xyXG4gICAgcHJpdmF0ZSBlbmFibGVkID0gdHJ1ZTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlKSB7fVxyXG5cclxuICAgIGNyZWF0ZUVkaXRvclZpZXcob3B0aW9uczogQ3JlYXRlRWRpdG9yVmlld09wdGlvbnMpIHtcclxuICAgICAgICB0aGlzLmVkaXRvclZpZXcgPSBuZXcgRWRpdG9yVmlldzxTY2hlbWE+KG9wdGlvbnMuZWxlbWVudCwge1xyXG4gICAgICAgICAgICBzdGF0ZTogdGhpcy5nZXRTdGF0ZUZyb21UZXh0KCcnKSxcclxuICAgICAgICAgICAgZGlzcGF0Y2hUcmFuc2FjdGlvbjogdHIgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmVuYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXRvclZpZXcudXBkYXRlU3RhdGUodGhpcy5lZGl0b3JWaWV3LnN0YXRlLmFwcGx5KHRyKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAodHIuZG9jQ2hhbmdlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldFRleHRGcm9tU3RhdGUodGhpcy5lZGl0b3JWaWV3LnN0YXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLm9uVGV4dElucHV0KGNvbnRlbnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlZGl0YWJsZTogKCkgPT4gb3B0aW9ucy5pc1JlYWRPbmx5KCksXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlKHRleHQ6IHN0cmluZykge1xyXG4gICAgICAgIGlmICh0aGlzLmVkaXRvclZpZXcpIHtcclxuICAgICAgICAgICAgY29uc3Qgc3RhdGUgPSB0aGlzLmdldFN0YXRlRnJvbVRleHQodGV4dCk7XHJcbiAgICAgICAgICAgIGlmIChkb2N1bWVudC5ib2R5LmNvbnRhaW5zKHRoaXMuZWRpdG9yVmlldy5kb20pKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXRvclZpZXcudXBkYXRlU3RhdGUoc3RhdGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRlc3Ryb3koKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdG9yVmlldykge1xyXG4gICAgICAgICAgICB0aGlzLmVkaXRvclZpZXcuZGVzdHJveSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRFbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgICAgICBpZiAodGhpcy5lZGl0b3JWaWV3KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlZCA9IGVuYWJsZWQ7XHJcbiAgICAgICAgICAgIC8vIFVwZGF0aW5nIHRoZSBzdGF0ZSBjYXVzZXMgUHJvc2VNaXJyb3IgdG8gY2hlY2sgdGhlXHJcbiAgICAgICAgICAgIC8vIGBlZGl0YWJsZSgpYCBmdW5jdGlvbiBmcm9tIHRoZSBjb250cnVjdG9yIGNvbmZpZyBvYmplY3RcclxuICAgICAgICAgICAgLy8gbmV3bHkuXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yVmlldy51cGRhdGVTdGF0ZSh0aGlzLmVkaXRvclZpZXcuc3RhdGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFN0YXRlRnJvbVRleHQodGV4dDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IEVkaXRvclN0YXRlIHtcclxuICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICBkaXYuaW5uZXJIVE1MID0gdGV4dCA/PyAnJztcclxuICAgICAgICByZXR1cm4gRWRpdG9yU3RhdGUuY3JlYXRlKHtcclxuICAgICAgICAgICAgZG9jOiBET01QYXJzZXIuZnJvbVNjaGVtYSh0aGlzLm15U2NoZW1hKS5wYXJzZShkaXYpLFxyXG4gICAgICAgICAgICBwbHVnaW5zOiB0aGlzLmNvbmZpZ3VyZVBsdWdpbnMoeyBzY2hlbWE6IHRoaXMubXlTY2hlbWEsIGZsb2F0aW5nTWVudTogZmFsc2UgfSksXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRUZXh0RnJvbVN0YXRlKHN0YXRlOiBFZGl0b3JTdGF0ZSk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgY29uc3QgZnJhZ21lbnQgPSBET01TZXJpYWxpemVyLmZyb21TY2hlbWEodGhpcy5teVNjaGVtYSkuc2VyaWFsaXplRnJhZ21lbnQoc3RhdGUuZG9jLmNvbnRlbnQpO1xyXG5cclxuICAgICAgICBkaXYuYXBwZW5kQ2hpbGQoZnJhZ21lbnQpO1xyXG5cclxuICAgICAgICByZXR1cm4gZGl2LmlubmVySFRNTDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNvbmZpZ3VyZVBsdWdpbnMob3B0aW9uczogU2V0dXBPcHRpb25zKSB7XHJcbiAgICAgICAgY29uc3QgcGx1Z2lucyA9IFtcclxuICAgICAgICAgICAgYnVpbGRJbnB1dFJ1bGVzKG9wdGlvbnMuc2NoZW1hKSxcclxuICAgICAgICAgICAga2V5bWFwKGJ1aWxkS2V5bWFwKG9wdGlvbnMuc2NoZW1hLCBvcHRpb25zLm1hcEtleXMpKSxcclxuICAgICAgICAgICAga2V5bWFwKGJhc2VLZXltYXApLFxyXG4gICAgICAgICAgICBkcm9wQ3Vyc29yKCksXHJcbiAgICAgICAgICAgIGdhcEN1cnNvcigpLFxyXG4gICAgICAgICAgICBsaW5rU2VsZWN0UGx1Z2luLFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgaWYgKG9wdGlvbnMubWVudUJhciAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgcGx1Z2lucy5wdXNoKFxyXG4gICAgICAgICAgICAgICAgbWVudUJhcih7XHJcbiAgICAgICAgICAgICAgICAgICAgZmxvYXRpbmc6IG9wdGlvbnMuZmxvYXRpbmdNZW51ICE9PSBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBjb250ZW50OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLm1lbnVDb250ZW50IHx8IGJ1aWxkTWVudUl0ZW1zKG9wdGlvbnMuc2NoZW1hLCB0aGlzLm1vZGFsU2VydmljZSkuZnVsbE1lbnUsXHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9wdGlvbnMuaGlzdG9yeSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgcGx1Z2lucy5wdXNoKGhpc3RvcnkoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcGx1Z2lucy5jb25jYXQoXHJcbiAgICAgICAgICAgIG5ldyBQbHVnaW4oe1xyXG4gICAgICAgICAgICAgICAgcHJvcHM6IHtcclxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiB7IGNsYXNzOiAndmRyLXByb3NlbWlycm9yJyB9LFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
142
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvc2VtaXJyb3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9zcmMvc2hhcmVkL2NvbXBvbmVudHMvcmljaC10ZXh0LWVkaXRvci9wcm9zZW1pcnJvci9wcm9zZW1pcnJvci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDckUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUc5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFFekUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDekUsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVB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QyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3ZCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTthQUN6QixDQUFDO1NBQ0wsQ0FBQztRQUNGLElBQUksT0FBTyxDQUFDLE9BQU8sS0FBSyxLQUFLLEVBQUU7WUFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQzNCO1FBRUQsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUNqQixJQUFJLE1BQU0sQ0FBQztZQUNQLEtBQUssRUFBRTtnQkFDSCxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUU7YUFDM0M7U0FDSixDQUFDLENBQ0wsQ0FBQztJQUNOLENBQUM7OztZQTVISixVQUFVOzs7WUFqQ1UsUUFBUTtZQWdCcEIsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgYmFzZUtleW1hcCB9IGZyb20gJ3Byb3NlbWlycm9yLWNvbW1hbmRzJztcclxuaW1wb3J0IHsgZHJvcEN1cnNvciB9IGZyb20gJ3Byb3NlbWlycm9yLWRyb3BjdXJzb3InO1xyXG5pbXBvcnQgeyBnYXBDdXJzb3IgfSBmcm9tICdwcm9zZW1pcnJvci1nYXBjdXJzb3InO1xyXG5pbXBvcnQgeyBoaXN0b3J5IH0gZnJvbSAncHJvc2VtaXJyb3ItaGlzdG9yeSc7XHJcbmltcG9ydCB7IGtleW1hcCB9IGZyb20gJ3Byb3NlbWlycm9yLWtleW1hcCc7XHJcbmltcG9ydCB7IERPTVBhcnNlciwgRE9NU2VyaWFsaXplciwgU2NoZW1hIH0gZnJvbSAncHJvc2VtaXJyb3ItbW9kZWwnO1xyXG5pbXBvcnQgeyBzY2hlbWEgfSBmcm9tICdwcm9zZW1pcnJvci1zY2hlbWEtYmFzaWMnO1xyXG5pbXBvcnQgeyBhZGRMaXN0Tm9kZXMgfSBmcm9tICdwcm9zZW1pcnJvci1zY2hlbWEtbGlzdCc7XHJcbmltcG9ydCB7IEVkaXRvclN0YXRlLCBQbHVnaW4gfSBmcm9tICdwcm9zZW1pcnJvci1zdGF0ZSc7XHJcbmltcG9ydCB7IGNvbHVtblJlc2l6aW5nLCBmaXhUYWJsZXMsIHRhYmxlRWRpdGluZyB9IGZyb20gJ3Byb3NlbWlycm9yLXRhYmxlcyc7XHJcbmltcG9ydCB7IEVkaXRvclZpZXcgfSBmcm9tICdwcm9zZW1pcnJvci12aWV3JztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuaW1wb3J0IHsgTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vcHJvdmlkZXJzL21vZGFsL21vZGFsLnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IHsgQ29udGV4dE1lbnVTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZXh0LW1lbnUvY29udGV4dC1tZW51LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBpZnJhbWVOb2RlLCBpZnJhbWVOb2RlVmlldyB9IGZyb20gJy4vY3VzdG9tLW5vZGVzJztcclxuaW1wb3J0IHsgYnVpbGRJbnB1dFJ1bGVzIH0gZnJvbSAnLi9pbnB1dHJ1bGVzJztcclxuaW1wb3J0IHsgYnVpbGRLZXltYXAgfSBmcm9tICcuL2tleW1hcCc7XHJcbmltcG9ydCB7IGN1c3RvbU1lbnVQbHVnaW4gfSBmcm9tICcuL21lbnUvbWVudS1wbHVnaW4nO1xyXG5pbXBvcnQgeyBpbWFnZUNvbnRleHRNZW51UGx1Z2luIH0gZnJvbSAnLi9wbHVnaW5zL2ltYWdlLXBsdWdpbic7XHJcbmltcG9ydCB7IGxpbmtTZWxlY3RQbHVnaW4gfSBmcm9tICcuL3BsdWdpbnMvbGluay1zZWxlY3QtcGx1Z2luJztcclxuaW1wb3J0IHsgcmF3RWRpdG9yUGx1Z2luIH0gZnJvbSAnLi9wbHVnaW5zL3Jhdy1lZGl0b3ItcGx1Z2luJztcclxuaW1wb3J0IHsgZ2V0VGFibGVOb2RlcywgdGFibGVDb250ZXh0TWVudVBsdWdpbiB9IGZyb20gJy4vcGx1Z2lucy90YWJsZXMtcGx1Z2luJztcclxuaW1wb3J0IHsgU2V0dXBPcHRpb25zIH0gZnJvbSAnLi90eXBlcyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUVkaXRvclZpZXdPcHRpb25zIHtcclxuICAgIG9uVGV4dElucHV0OiAoY29udGVudDogc3RyaW5nKSA9PiB2b2lkO1xyXG4gICAgZWxlbWVudDogSFRNTEVsZW1lbnQ7XHJcbiAgICBpc1JlYWRPbmx5OiAoKSA9PiBib29sZWFuO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBQcm9zZW1pcnJvclNlcnZpY2Uge1xyXG4gICAgZWRpdG9yVmlldzogRWRpdG9yVmlldztcclxuXHJcbiAgICAvLyBNaXggdGhlIG5vZGVzIGZyb20gcHJvc2VtaXJyb3Itc2NoZW1hLWxpc3QgaW50byB0aGUgYmFzaWMgc2NoZW1hIHRvXHJcbiAgICAvLyBjcmVhdGUgYSBzY2hlbWEgd2l0aCBsaXN0IHN1cHBvcnQuXHJcbiAgICBwcml2YXRlIG15U2NoZW1hID0gbmV3IFNjaGVtYSh7XHJcbiAgICAgICAgbm9kZXM6IGFkZExpc3ROb2RlcyhzY2hlbWEuc3BlYy5ub2RlcywgJ3BhcmFncmFwaCBibG9jayonLCAnYmxvY2snKVxyXG4gICAgICAgICAgICAuYXBwZW5kKGdldFRhYmxlTm9kZXMoKSBhcyBhbnkpXHJcbiAgICAgICAgICAgIC5hZGRUb0VuZCgnaWZyYW1lJywgaWZyYW1lTm9kZSksXHJcbiAgICAgICAgbWFya3M6IHNjaGVtYS5zcGVjLm1hcmtzLFxyXG4gICAgfSk7XHJcbiAgICBwcml2YXRlIGVuYWJsZWQgPSB0cnVlO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLCBwcml2YXRlIGNvbnRleHRNZW51U2VydmljZTogQ29udGV4dE1lbnVTZXJ2aWNlKSB7fVxyXG5cclxuICAgIGNvbnRleHRNZW51SXRlbXMkOiBPYnNlcnZhYmxlPHN0cmluZz47XHJcblxyXG4gICAgY3JlYXRlRWRpdG9yVmlldyhvcHRpb25zOiBDcmVhdGVFZGl0b3JWaWV3T3B0aW9ucykge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yVmlldyA9IG5ldyBFZGl0b3JWaWV3KG9wdGlvbnMuZWxlbWVudCwge1xyXG4gICAgICAgICAgICBzdGF0ZTogdGhpcy5nZXRTdGF0ZUZyb21UZXh0KCcnKSxcclxuICAgICAgICAgICAgZGlzcGF0Y2hUcmFuc2FjdGlvbjogdHIgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmVuYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVkaXRvclZpZXcudXBkYXRlU3RhdGUodGhpcy5lZGl0b3JWaWV3LnN0YXRlLmFwcGx5KHRyKSk7XHJcbiAgICAgICAgICAgICAgICBpZiAodHIuZG9jQ2hhbmdlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLmdldFRleHRGcm9tU3RhdGUodGhpcy5lZGl0b3JWaWV3LnN0YXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLm9uVGV4dElucHV0KGNvbnRlbnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlZGl0YWJsZTogKCkgPT4gb3B0aW9ucy5pc1JlYWRPbmx5KCksXHJcbiAgICAgICAgICAgIGhhbmRsZURPTUV2ZW50czoge1xyXG4gICAgICAgICAgICAgICAgZm9jdXM6IHZpZXcgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dE1lbnVTZXJ2aWNlLnNldFZpc2liaWxpdHkodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgYmx1cjogdmlldyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0TWVudVNlcnZpY2Uuc2V0VmlzaWJpbGl0eShmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBub2RlVmlld3M6IHtcclxuICAgICAgICAgICAgICAgIGlmcmFtZTogaWZyYW1lTm9kZVZpZXcsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlKHRleHQ6IHN0cmluZykge1xyXG4gICAgICAgIGlmICh0aGlzLmVkaXRvclZpZXcpIHtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFRleHQgPSB0aGlzLmdldFRleHRGcm9tU3RhdGUodGhpcy5lZGl0b3JWaWV3LnN0YXRlKTtcclxuICAgICAgICAgICAgaWYgKHRleHQgIT09IGN1cnJlbnRUZXh0KSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgc3RhdGUgPSB0aGlzLmdldFN0YXRlRnJvbVRleHQodGV4dCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuYm9keS5jb250YWlucyh0aGlzLmVkaXRvclZpZXcuZG9tKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpeCA9IGZpeFRhYmxlcyhzdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpeCkgc3RhdGUgPSBzdGF0ZS5hcHBseShmaXguc2V0TWV0YSgnYWRkVG9IaXN0b3J5JywgZmFsc2UpKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXRvclZpZXcudXBkYXRlU3RhdGUoc3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRlc3Ryb3koKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdG9yVmlldykge1xyXG4gICAgICAgICAgICB0aGlzLmVkaXRvclZpZXcuZGVzdHJveSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRFbmFibGVkKGVuYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgICAgICBpZiAodGhpcy5lZGl0b3JWaWV3KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlZCA9IGVuYWJsZWQ7XHJcbiAgICAgICAgICAgIC8vIFVwZGF0aW5nIHRoZSBzdGF0ZSBjYXVzZXMgUHJvc2VNaXJyb3IgdG8gY2hlY2sgdGhlXHJcbiAgICAgICAgICAgIC8vIGBlZGl0YWJsZSgpYCBmdW5jdGlvbiBmcm9tIHRoZSBjb250cnVjdG9yIGNvbmZpZyBvYmplY3RcclxuICAgICAgICAgICAgLy8gbmV3bHkuXHJcbiAgICAgICAgICAgIHRoaXMuZWRpdG9yVmlldy51cGRhdGVTdGF0ZSh0aGlzLmVkaXRvclZpZXcuc3RhdGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFN0YXRlRnJvbVRleHQodGV4dDogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IEVkaXRvclN0YXRlIHtcclxuICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICBkaXYuaW5uZXJIVE1MID0gdGV4dCA/PyAnJztcclxuICAgICAgICByZXR1cm4gRWRpdG9yU3RhdGUuY3JlYXRlKHtcclxuICAgICAgICAgICAgZG9jOiBET01QYXJzZXIuZnJvbVNjaGVtYSh0aGlzLm15U2NoZW1hKS5wYXJzZShkaXYpLFxyXG4gICAgICAgICAgICBwbHVnaW5zOiB0aGlzLmNvbmZpZ3VyZVBsdWdpbnMoeyBzY2hlbWE6IHRoaXMubXlTY2hlbWEsIGZsb2F0aW5nTWVudTogZmFsc2UgfSksXHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXRUZXh0RnJvbVN0YXRlKHN0YXRlOiBFZGl0b3JTdGF0ZSk6IHN0cmluZyB7XHJcbiAgICAgICAgY29uc3QgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgY29uc3QgZnJhZ21lbnQgPSBET01TZXJpYWxpemVyLmZyb21TY2hlbWEodGhpcy5teVNjaGVtYSkuc2VyaWFsaXplRnJhZ21lbnQoc3RhdGUuZG9jLmNvbnRlbnQpO1xyXG5cclxuICAgICAgICBkaXYuYXBwZW5kQ2hpbGQoZnJhZ21lbnQpO1xyXG5cclxuICAgICAgICByZXR1cm4gZGl2LmlubmVySFRNTDtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGNvbmZpZ3VyZVBsdWdpbnMob3B0aW9uczogU2V0dXBPcHRpb25zKSB7XHJcbiAgICAgICAgY29uc3QgcGx1Z2lucyA9IFtcclxuICAgICAgICAgICAgYnVpbGRJbnB1dFJ1bGVzKG9wdGlvbnMuc2NoZW1hKSxcclxuICAgICAgICAgICAga2V5bWFwKGJ1aWxkS2V5bWFwKG9wdGlvbnMuc2NoZW1hLCBvcHRpb25zLm1hcEtleXMpKSxcclxuICAgICAgICAgICAga2V5bWFwKGJhc2VLZXltYXApLFxyXG4gICAgICAgICAgICBkcm9wQ3Vyc29yKCksXHJcbiAgICAgICAgICAgIGdhcEN1cnNvcigpLFxyXG4gICAgICAgICAgICBsaW5rU2VsZWN0UGx1Z2luLFxyXG4gICAgICAgICAgICBjb2x1bW5SZXNpemluZyh7fSksXHJcbiAgICAgICAgICAgIHRhYmxlRWRpdGluZyh7IGFsbG93VGFibGVOb2RlU2VsZWN0aW9uOiB0cnVlIH0pLFxyXG4gICAgICAgICAgICB0YWJsZUNvbnRleHRNZW51UGx1Z2luKHRoaXMuY29udGV4dE1lbnVTZXJ2aWNlKSxcclxuICAgICAgICAgICAgaW1hZ2VDb250ZXh0TWVudVBsdWdpbih0aGlzLmNvbnRleHRNZW51U2VydmljZSwgdGhpcy5pbmplY3Rvci5nZXQoTW9kYWxTZXJ2aWNlKSksXHJcbiAgICAgICAgICAgIHJhd0VkaXRvclBsdWdpbih0aGlzLmNvbnRleHRNZW51U2VydmljZSwgdGhpcy5pbmplY3Rvci5nZXQoTW9kYWxTZXJ2aWNlKSksXHJcbiAgICAgICAgICAgIGN1c3RvbU1lbnVQbHVnaW4oe1xyXG4gICAgICAgICAgICAgICAgZmxvYXRpbmdNZW51OiBvcHRpb25zLmZsb2F0aW5nTWVudSxcclxuICAgICAgICAgICAgICAgIGluamVjdG9yOiB0aGlzLmluamVjdG9yLFxyXG4gICAgICAgICAgICAgICAgc2NoZW1hOiBvcHRpb25zLnNjaGVtYSxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgXTtcclxuICAgICAgICBpZiAob3B0aW9ucy5oaXN0b3J5ICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICBwbHVnaW5zLnB1c2goaGlzdG9yeSgpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBwbHVnaW5zLmNvbmNhdChcclxuICAgICAgICAgICAgbmV3IFBsdWdpbih7XHJcbiAgICAgICAgICAgICAgICBwcm9wczoge1xyXG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHsgY2xhc3M6ICd2ZHItcHJvc2VtaXJyb3InIH0sXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL3JpY2gtdGV4dC1lZGl0b3IvcHJvc2VtaXJyb3IvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJvc2VtaXJyb3ItbWVudSc7XHJcbmltcG9ydCB7IFNjaGVtYSB9IGZyb20gJ3Byb3NlbWlycm9yLW1vZGVsJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2V0dXBPcHRpb25zIHtcclxuICAgIHNjaGVtYTogU2NoZW1hO1xyXG4gICAgbWFwS2V5cz86IEtleW1hcDtcclxuICAgIG1lbnVCYXI/OiBib29sZWFuO1xyXG4gICAgaGlzdG9yeT86IGJvb2xlYW47XHJcbiAgICBmbG9hdGluZ01lbnU/
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvc3JjL3NoYXJlZC9jb21wb25lbnRzL3JpY2gtdGV4dC1lZGl0b3IvcHJvc2VtaXJyb3IvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJvc2VtaXJyb3ItbWVudSc7XHJcbmltcG9ydCB7IFNjaGVtYSB9IGZyb20gJ3Byb3NlbWlycm9yLW1vZGVsJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2V0dXBPcHRpb25zIHtcclxuICAgIHNjaGVtYTogU2NoZW1hO1xyXG4gICAgbWFwS2V5cz86IEtleW1hcDtcclxuICAgIG1lbnVCYXI/OiBib29sZWFuO1xyXG4gICAgaGlzdG9yeT86IGJvb2xlYW47XHJcbiAgICBmbG9hdGluZ01lbnU/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBLZXltYXAgPSBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBmYWxzZT47XHJcbiJdfQ==
|