@worktile/theia 1.2.7 → 1.2.11
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/worktile-theia.umd.js +802 -162
- package/bundles/worktile-theia.umd.js.map +1 -1
- package/components/inline-toolbar/inline-toolbar.component.d.ts +24 -0
- package/components/inline-toolbar/inline-toolbar.component.scss +18 -0
- package/components/nav-split-line/nav-split-line.component.d.ts +6 -1
- package/components/toolbar-dropdown/toolbar-dropdown.component.scss +3 -0
- package/components/toolbar-item/toolbar-item.component.d.ts +14 -5
- package/constants/code.d.ts +7 -7
- package/constants/node-types.d.ts +0 -1
- package/constants/toolbar.d.ts +6 -2
- package/custom-types.d.ts +1 -0
- package/editor.component.d.ts +6 -4
- package/editor.module.d.ts +59 -52
- package/esm2015/components/color-select/color-select.component.js +3 -2
- package/esm2015/components/inline-toolbar/inline-toolbar.component.js +136 -0
- package/esm2015/components/nav-split-line/nav-split-line.component.js +26 -5
- package/esm2015/components/toolbar-base-item/toolbar-base-item.component.js +3 -2
- package/esm2015/components/toolbar-item/toolbar-item.component.js +70 -24
- package/esm2015/constants/code.js +7 -7
- package/esm2015/constants/node-types.js +1 -2
- package/esm2015/constants/toolbar.js +37 -5
- package/esm2015/custom-types.js +1 -1
- package/esm2015/editor.component.js +24 -19
- package/esm2015/editor.module.js +20 -8
- package/esm2015/interfaces/toolbar.js +1 -1
- package/esm2015/plugins/code/code.component.js +13 -8
- package/esm2015/plugins/common/auto-insert-data..js +2 -3
- package/esm2015/plugins/common/get-fragment.plugin.js +4 -4
- package/esm2015/plugins/deserializers/deserialize-html.plugin.js +8 -1
- package/esm2015/plugins/image/image.plugin.js +1 -2
- package/esm2015/plugins/index.js +8 -4
- package/esm2015/plugins/link/link.plugin.js +7 -2
- package/esm2015/plugins/list/list.plugin.js +9 -9
- package/esm2015/plugins/list/queries/get-start-list-item.js +9 -2
- package/esm2015/plugins/list/queries/is-selection-in-same-list-item.js +17 -0
- package/esm2015/plugins/node-id/node-id.plugin.js +7 -2
- package/esm2015/plugins/paint-format/options.js +54 -0
- package/esm2015/plugins/paint-format/paint-format.editor.js +67 -0
- package/esm2015/plugins/placeholder/placeholder.component.js +75 -0
- package/esm2015/plugins/public-api.js +2 -1
- package/esm2015/plugins/quick-insert/components/quick-insert.component.js +76 -0
- package/esm2015/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.js +75 -0
- package/esm2015/plugins/quick-insert/quick-insert.editor.js +61 -0
- package/esm2015/plugins/quick-insert/quick-insert.plugint.js +37 -0
- package/esm2015/plugins/table/components/row/row.component.js +3 -1
- package/esm2015/plugins/table/components/table.component.js +6 -3
- package/esm2015/plugins/table/components/td/td.component.js +2 -1
- package/esm2015/plugins/table/components/toolbar/table-toolbar.component.js +1 -1
- package/esm2015/plugins/table/table.plugin.js +3 -3
- package/esm2015/plugins/vertical-align/toolbar-item.component.js +11 -6
- package/esm2015/public-api.js +2 -1
- package/esm2015/services/context.service.js +2 -2
- package/esm2015/services/toolbar.service.js +5 -5
- package/esm2015/utils/auto-focus.js +2 -2
- package/esm2015/utils/fragment.js +3 -3
- package/esm2015/utils/is-clean-empty-paragraph.js +32 -0
- package/esm2015/utils/weak-maps.js +2 -1
- package/fesm2015/worktile-theia.js +778 -160
- package/fesm2015/worktile-theia.js.map +1 -1
- package/interfaces/toolbar.d.ts +3 -2
- package/package.json +1 -1
- package/plugins/code/code.component.d.ts +3 -2
- package/plugins/list/queries/get-start-list-item.d.ts +8 -2
- package/plugins/list/queries/is-selection-in-same-list-item.d.ts +5 -0
- package/plugins/paint-format/options.d.ts +2 -0
- package/plugins/paint-format/paint-format.editor.d.ts +7 -0
- package/{components → plugins}/placeholder/placeholder.component.d.ts +5 -6
- package/{components → plugins}/placeholder/placeholder.component.scss +0 -0
- package/plugins/public-api.d.ts +1 -0
- package/plugins/quick-insert/components/quick-insert.component.d.ts +25 -0
- package/plugins/quick-insert/components/quick-insert.component.scss +21 -0
- package/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.d.ts +29 -0
- package/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.scss +21 -0
- package/plugins/quick-insert/quick-insert.editor.d.ts +8 -0
- package/plugins/quick-insert/quick-insert.plugint.d.ts +2 -0
- package/plugins/table/components/table.component.d.ts +1 -0
- package/plugins/vertical-align/toolbar-item.component.d.ts +1 -0
- package/public-api.d.ts +1 -0
- package/services/toolbar.service.d.ts +1 -1
- package/styles/editor.scss +41 -15
- package/styles/index.scss +5 -2
- package/utils/is-clean-empty-paragraph.d.ts +8 -0
- package/utils/weak-maps.d.ts +1 -0
- package/esm2015/components/placeholder/placeholder.component.js +0 -88
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktile-theia.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../packages/src/constants/default.ts","../../../packages/src/constants/node-types.ts","../../../packages/src/constants/toolbar.ts","../../../packages/src/constants/error.ts","../../../packages/src/constants/code.ts","../../../packages/src/components/text/text.component.ts","../../../packages/src/interfaces/view-base.ts","../../../packages/src/components/element/element.component.ts","../../../packages/src/interfaces/editor.ts","../../../packages/src/interfaces/toolbar.ts","../../../packages/src/interfaces/image.ts","../../../packages/src/interfaces/valid-children-types.ts","../../../packages/src/utils/id-creator.ts","../../../packages/src/queries/is-ancestor.ts","../../../packages/src/queries/get-last-node.ts","../../../packages/src/queries/is-collapsed.ts","../../../packages/src/queries/get-anchor-block-entry.ts","../../../packages/src/queries/is-empty-paragraph.ts","../../../packages/src/queries/is-paragraph.ts","../../../packages/src/queries/is-block-active.ts","../../../packages/src/queries/get-above-by-type.ts","../../../packages/src/queries/is-include-types.ts","../../../packages/src/queries/get-block-card-cursor.ts","../../../packages/src/queries/is-block-card-cursor.ts","../../../packages/src/queries/anchor-block-entry.ts","../../../packages/src/transforms/un-hang-range.ts","../../../packages/src/queries/get-nodes.ts","../../../packages/src/queries/get-nodes-by-type.ts","../../../packages/src/queries/anchor-block.ts","../../../packages/src/queries/get-block-above.ts","../../../packages/src/queries/is-ancestor-empty.ts","../../../packages/src/queries/is-block-above-empty.ts","../../../packages/src/queries/is-node-type-in.ts","../../../packages/src/queries/is-first-child.ts","../../../packages/src/queries/get-previous-path.ts","../../../packages/src/queries/get-node.ts","../../../packages/src/queries/get-parent.ts","../../../packages/src/queries/find-path.ts","../../../packages/src/utils/cast-array.ts","../../../packages/src/utils/match.ts","../../../packages/src/queries/find-node.ts","../../../packages/src/queries/find-descendant.ts","../../../packages/src/queries/get-last-child-path.ts","../../../packages/src/queries/is-point-at-root.ts","../../../packages/src/queries/is-range-at-root.ts","../../../packages/src/queries/get-next-sibling-nodes.ts","../../../packages/src/queries/is-block-text-empty-after-selection.ts","../../../packages/src/queries/get-above.ts","../../../packages/src/queries/is-start.ts","../../../packages/src/queries/is-range-across-blocks.ts","../../../packages/src/queries/some-node.ts","../../../packages/src/queries/get-children.ts","../../../packages/src/queries/is-descendant.ts","../../../packages/src/queries/is-node-type.ts","../../../packages/src/queries/anchor-inline-entry.ts","../../../packages/src/queries/anchor-inline.ts","../../../packages/src/utils/lodash.ts","../../../packages/src/queries/get-point-before.ts","../../../packages/src/queries/get-selection-nodes-by-type.ts","../../../packages/src/utils/fragment.ts","../../../packages/src/queries/is-across-blocks.ts","../../../packages/src/queries/get-text.ts","../../../packages/src/queries/get-point-from-location.ts","../../../packages/src/queries/get-rang-from-block-start.ts","../../../packages/src/queries/get-range-before.ts","../../../packages/src/queries/is-empty-content.ts","../../../packages/src/queries/get-block-card-above.ts","../../../packages/src/queries/get-plain-text.ts","../../../packages/src/queries/is-empty-paragraph-by-path.ts","../../../packages/src/queries/get-selection-marks.ts","../../../packages/src/queries/is-container-type.ts","../../../packages/src/queries/get-container-blocks.ts","../../../packages/src/transforms/set-marks.ts","../../../packages/src/transforms/clear-marks.ts","../../../packages/src/transforms/insert-element.ts","../../../packages/src/transforms/insert-element-next.ts","../../../packages/src/transforms/set-node.ts","../../../packages/src/transforms/unwrap-nodes-by-type.ts","../../../packages/src/transforms/on-keydown-reset-block-type.ts","../../../packages/src/transforms/move-children.ts","../../../packages/src/utils/create-empty-paragraph.ts","../../../packages/src/transforms/insert-paragraph.ts","../../../packages/src/transforms/apply-deep-to-nodes.ts","../../../packages/src/transforms/merge-deep-to-nodes.ts","../../../packages/src/transforms/un-wrap.ts","../../../packages/src/transforms/split-node.ts","../../../packages/src/transforms/delete-element.ts","../../../packages/src/transforms/set-end-selection.ts","../../../packages/src/transforms/insert-elements.ts","../../../packages/src/utils/weak-maps.ts","../../../packages/src/transforms/close-conversion-hint.ts","../../../packages/src/transforms/handle-continual-delete-backward.ts","../../../packages/src/transforms/handle-continual-insert-break.ts","../../../packages/src/plugins/list/queries/is-node-type-list.ts","../../../packages/src/plugins/list/list.editor.ts","../../../packages/src/plugins/todo-item/todo-item.editor.ts","../../../packages/src/plugins/blockquote/blockquote.editor.ts","../../../packages/src/constants/auto-format-rules.ts","../../../packages/src/plugins/common/history.plugin.ts","../../../packages/src/components/conversion-hint/conversion-hint.component.ts","../../../packages/src/components/conversion-hint/conversion-hint.component.html","../../../packages/src/utils/data-transform.ts","../../../packages/src/utils/editor-uuid.ts","../../../packages/src/utils/get-toolbar-class.ts","../../../packages/src/plugins/deserializers/deserialize-md.plugin.ts","../../../packages/src/plugins/common/auto-insert-data..ts","../../../packages/src/plugins/common/remove-empty.plugin.ts","../../../packages/src/plugins/common/reset-type.plugin.ts","../../../packages/src/services/context.service.ts","../../../packages/src/plugins/image/image.component.ts","../../../packages/src/plugins/image/image.component.html","../../../packages/src/plugins/image/image.editor.ts","../../../packages/src/plugins/image/image.plugin.ts","../../../packages/src/plugins/indent/on-keydown-indent.ts","../../../packages/src/plugins/indent/indent.plugin.ts","../../../packages/src/plugins/list/queries/is-list.ts","../../../packages/src/plugins/list/queries/is-in-list.ts","../../../packages/src/plugins/list/queries/is-list-nested.ts","../../../packages/src/plugins/list/queries/get-list-types.ts","../../../packages/src/plugins/list/queries/get-start-list-item.ts","../../../packages/src/plugins/list/queries/has-list-in-list-item.ts","../../../packages/src/plugins/list/queries/is-single-list-item.ts","../../../packages/src/plugins/list/queries/get-list-item-entry.ts","../../../packages/src/plugins/list/queries/is-selection-at-list-item-start.ts","../../../packages/src/plugins/list/transforms/insert-list-data.ts","../../../packages/src/plugins/list/transforms/move-list-item-up.ts","../../../packages/src/plugins/list/transforms/insert-list-item.ts","../../../packages/src/plugins/list/transforms/unwrap-list.ts","../../../packages/src/plugins/list/queries/get-list-item-sublist.ts","../../../packages/src/plugins/list/transforms/move-list-item-sublist-items-to-list-item-sublist.ts","../../../packages/src/plugins/list/normalizers/normalize-list-item.ts","../../../packages/src/plugins/list/normalizers/normalize-no.ts","../../../packages/src/plugins/list/normalizers/get-list-normalizer.ts","../../../packages/src/plugins/list/transforms/move-list-item-sublist-items-to-list.ts","../../../packages/src/plugins/list/transforms/move-list-item-down.ts","../../../packages/src/plugins/list/on-key-down-list.ts","../../../packages/src/pipes.ts","../../../packages/src/plugins/list/components/numbered-list.component.ts","../../../packages/src/plugins/list/components/bulleted-list.component.ts","../../../packages/src/plugins/list/components/list-item.component.ts","../../../packages/src/plugins/list/list.plugin.ts","../../../packages/src/utils/dom.ts","../../../packages/src/plugins/todo-item/todo-item.component.ts","../../../packages/src/plugins/todo-item/todo-item.plugin.ts","../../../packages/src/plugins/hr/hr.component.ts","../../../packages/src/plugins/hr/hr.plugin.ts","../../../packages/src/plugins/align/align.plugin.ts","../../../packages/src/plugins/heading/heading.plugin.ts","../../../packages/src/plugins/mark/mark.plugin.ts","../../../packages/src/plugins/node-id/node-id.plugin.ts","../../../packages/src/plugins/autoformat/transforms/auto-format-block.ts","../../../packages/src/plugins/autoformat/transforms/auto-format-inline.ts","../../../packages/src/plugins/autoformat/autoformat.plugin.ts","../../../packages/src/plugins/common/transforms.plugin.ts","../../../packages/src/plugins/normalizers/trailing-node.plugin.ts","../../../packages/src/plugins/common/block-card.plugin.ts","../../../packages/src/plugins/common/move-selection.plugin.ts","../../../packages/src/plugins/common/get-fragment.plugin.ts","../../../packages/src/plugins/todo-item/options.ts","../../../packages/src/plugins/table/table.types.ts","../../../packages/src/plugins/table/utils/create-cell.ts","../../../packages/src/plugins/table/utils/create-row.ts","../../../packages/src/plugins/table/utils/create-table.ts","../../../packages/src/plugins/table/utils/table-position.ts","../../../packages/src/plugins/table/utils/is-range-in-table.ts","../../../packages/src/plugins/table/utils/is-selection-in-table.ts","../../../packages/src/plugins/table/utils/calc-span.ts","../../../packages/src/plugins/table/utils/add-columns.ts","../../../packages/src/plugins/table/transforms/insert-column.ts","../../../packages/src/plugins/table/transforms/insert-row.ts","../../../packages/src/plugins/table/transforms/insert-table.ts","../../../packages/src/plugins/table/transforms/clear-cell.ts","../../../packages/src/plugins/table/utils/remove-columns.ts","../../../packages/src/plugins/table/transforms/remove-column.ts","../../../packages/src/plugins/table/transforms/remove-row.ts","../../../packages/src/plugins/table/utils/next-path.ts","../../../packages/src/plugins/table/transforms/remove-table.ts","../../../packages/src/plugins/table/table.editor.ts","../../../packages/src/plugins/mark/mark.editor.ts","../../../packages/src/plugins/mark/options.ts","../../../packages/src/plugins/list/options.ts","../../../packages/src/plugins/image/options.ts","../../../packages/src/plugins/hr/hr.editor.ts","../../../packages/src/plugins/hr/options.ts","../../../packages/src/plugins/heading/heading.editor.ts","../../../packages/src/plugins/heading/options.ts","../../../packages/src/plugins/blockquote/options.ts","../../../packages/src/plugins/align/align.editor.ts","../../../packages/src/plugins/align/options.ts","../../../packages/src/plugins/blockquote/blockquote.component.ts","../../../packages/src/plugins/blockquote/blockquote.plugin.ts","../../../packages/src/constants/color-select.ts","../../../packages/src/components/color-select/color-select.component.ts","../../../packages/src/components/color-select/color-select.component.html","../../../packages/src/services/color-select.service.ts","../../../packages/src/plugins/color/color.editor.ts","../../../packages/src/components/toolbar-base-item/toolbar-base-item.component.ts","../../../packages/src/plugins/color/toolbar-item.component.ts","../../../packages/src/plugins/color/options.ts","../../../packages/src/plugins/common/remove-void.plugin.ts","../../../packages/src/plugins/code/code.editor.ts","../../../packages/src/plugins/code/options.ts","../../../packages/src/components/toolbar-dropdown/toolbar-dropdown.component.ts","../../../packages/src/components/toolbar-dropdown/toolbar-dropdown.component.html","../../../packages/src/plugins/code/code.component.ts","../../../packages/src/plugins/code/code.component.html","../../../packages/src/plugins/code/code.plugin.ts","../../../packages/src/plugins/link/link.types.ts","../../../packages/src/plugins/link/link.editor.ts","../../../packages/src/plugins/link/options.ts","../../../packages/src/plugins/link/hover/link-hover.component.ts","../../../packages/src/plugins/link/hover/link-hover.component.html","../../../packages/src/plugins/link/edit/link-edit.component.ts","../../../packages/src/plugins/link/edit/link-edit.component.html","../../../packages/src/plugins/link/link.component.ts","../../../packages/src/plugins/normalizers/remove-empty-nodes.ts","../../../packages/src/plugins/link/link.plugin.ts","../../../packages/src/components/table-select/table-select.component.ts","../../../packages/src/components/table-select/table-select.component.html","../../../packages/src/plugins/table/toolbar-item.component.ts","../../../packages/src/plugins/table/options.ts","../../../packages/src/components/column-resize/column-resize-notifier.ts","../../../packages/src/components/column-resize/event-dispatcher.ts","../../../packages/src/plugins/table/utils/get-select-cell-node.ts","../../../packages/src/plugins/table/utils/merge-cell.ts","../../../packages/src/plugins/table/table.store.ts","../../../packages/src/plugins/table/utils/split-cell.ts","../../../packages/src/plugins/table/utils/set-menu-cell-invisibility.ts","../../../packages/src/components/nav-split-line/nav-split-line.component.ts","../../../packages/src/plugins/table/components/toolbar/table-toolbar.component.ts","../../../packages/src/plugins/table/components/toolbar/table-toolbar.component.html","../../../packages/src/plugins/table/utils/is-virtual-key.ts","../../../packages/src/components/contextmenu/contextmenu.component.ts","../../../packages/src/components/contextmenu/contextmenu.component.html","../../../packages/src/services/table-contextmenu.service.ts","../../../packages/src/plugins/table/table.service.ts","../../../packages/src/constants/selector.ts","../../../packages/src/plugins/table/components/insert-mark/insert-mark.component.ts","../../../packages/src/plugins/table/components/insert-mark/insert-mark.component.html","../../../packages/src/components/column-resize/selectors.ts","../../../packages/src/components/column-resize/column-resize.directive.ts","../../../packages/src/plugins/table/components/table.component.ts","../../../packages/src/plugins/table/components/table.component.html","../../../packages/src/plugins/table/transforms/clear-table-node.ts","../../../packages/src/plugins/table/utils/calc-anchor-position.ts","../../../packages/src/plugins/table/components/row/row.component.ts","../../../packages/src/components/column-resize/resizing.store.ts","../../../packages/src/components/column-resize/resize-ref.ts","../../../packages/src/components/column-resize/overlay-handle.component.ts","../../../packages/src/plugins/table/utils/get-base-height.ts","../../../packages/src/plugins/table/components/td/td.component.ts","../../../packages/src/plugins/table/components/td/td.component.html","../../../packages/src/plugins/table/table.plugin.ts","../../../packages/src/plugins/normalizers/insert-paragraph-nodes.ts","../../../packages/src/plugins/deserializers/deserialize-html.plugin.ts","../../../packages/src/plugins/vertical-align/vertical-align.editor.ts","../../../packages/src/plugins/vertical-align/toolbar-item.component.ts","../../../packages/src/plugins/vertical-align/toolbar-item.component.html","../../../packages/src/plugins/vertical-align/options.ts","../../../packages/src/plugins/index.ts","../../../packages/src/shortcuts/mark.ts","../../../packages/src/shortcuts/index.ts","../../../packages/src/services/toolbar.service.ts","../../../packages/src/utils/auto-focus.ts","../../../packages/src/utils/get-editable-element-height.ts","../../../packages/src/utils/auto-scroll-view.ts","../../../packages/src/components/toolbar-item/toolbar-item.component.ts","../../../packages/src/components/toolbar/toolbar.component.ts","../../../packages/src/components/toolbar/toolbar.component.html","../../../packages/src/components/placeholder/placeholder.component.ts","../../../packages/src/components/template/template.component.ts","../../../packages/src/components/template/template.component.html","../../../packages/src/editor.component.ts","../../../packages/src/editor.component.html","../../../packages/src/components/column-resize/column-resize.module.ts","../../../packages/src/components/toolbar-group/toolbar-group.component.ts","../../../packages/src/components/toolbar-group/toolbar-group.component.html","../../../packages/src/editor.module.ts","../../../packages/src/public-api.ts","../../../packages/src/worktile-theia.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export const PICTURE_ACCEPTED_UPLOAD_MIME = ['image/png', 'image/jpeg', 'image/gif', 'image/bmp'];\nexport const PICTURE_ACCEPTED_UPLOAD_SIZE = 20;\nexport const A_TAG_REL_ATTR = 'noopener noreferrer nofollow external ugc';\nexport const LINK_DEFAULT_TEXT = '链接';\nexport const TAB_SPACE = ' ';\nexport const ZERO_WIDTH_CHAR = '\\u200B';\nexport const CLIPBOARD_FORMAT_KEY = 'x-theia-fragment';\nexport const DEFAULT_SCROLL_CONTAINER = '.the-editable-container';\nexport const BLOCK_INSERT_ORIGIN = 'block-insert';\nexport const ELEMENT_UNIQUE_ID = 'key';\n\nexport enum TheMode {\n fullMode = 'full',\n liteMode = 'lite'\n}\n","import { CustomElementKinds } from '../custom-types';\n\nexport enum ElementKinds {\n image = 'image',\n paragraph = 'paragraph',\n headingList = 'heading-list',\n heading_1 = 'heading-one',\n heading_2 = 'heading-two',\n heading_3 = 'heading-three',\n heading_4 = 'heading-four',\n heading_5 = 'heading-five',\n heading_6 = 'heading-six',\n numberedList = 'numbered-list',\n bulletedList = 'bulleted-list',\n listItem = 'list-item',\n checkItem = 'check-item',\n table = 'table',\n tableRow = 'table-row',\n tableCell = 'table-cell',\n tableContent = 'paragraph',\n code = 'code',\n blockquote = 'block-quote',\n hr = 'hr',\n link = 'link',\n default = 'paragraph'\n}\n\nexport enum Alignment {\n left = 'left',\n center = 'center',\n right = 'right'\n}\n\nexport enum VerticalAlignment {\n top = 'top',\n middle = 'middle',\n bottom = 'bottom'\n}\n\nexport enum MarkTypes {\n bold = 'bold',\n italic = 'italic',\n underline = 'underlined',\n strike = 'strike',\n color = 'color',\n backgroundColor = 'background-color',\n codeLine = 'code-line'\n}\n\nexport enum ToolbarActionTypes {\n split = 'split',\n save = 'save',\n undo = 'undo',\n redo = 'redo',\n paintformat = 'paintformat',\n clean = 'clean',\n alignType = 'align-type',\n alignLeft = 'align-left',\n alignCenter = 'align-center',\n alignRight = 'align-right',\n verticalAlign = 'vertical-align',\n verticalAlignTop = 'vertical-align-top',\n verticalAlignMiddle = 'vertical-align-middle',\n verticalAlignBottom = 'vertical-align-bottom',\n headingList = 'heading-list',\n tableRemove = 'table-remove',\n tableDeleteRows = 'table-delete-rows',\n tableDeleteColumns = 'table-delete-columns'\n}\n\nexport const MarkProps: Array<MarkTypes> = [\n MarkTypes.backgroundColor,\n MarkTypes.bold,\n MarkTypes.codeLine,\n MarkTypes.color,\n MarkTypes.italic,\n MarkTypes.strike,\n MarkTypes.underline\n];\n\nexport const THE_INLINE_TOOLBAR_TYPES: Array<ElementKinds> = [ElementKinds.default, ElementKinds.listItem, ElementKinds.checkItem];\n\nexport const STANDARD_HEADING_TYPES: CustomElementKinds[] = [\n ElementKinds.heading_1,\n ElementKinds.heading_2,\n ElementKinds.heading_3,\n ElementKinds.heading_4\n];\n\nexport const HEADING_TYPES: CustomElementKinds[] = [...STANDARD_HEADING_TYPES, ElementKinds.heading_5, ElementKinds.heading_6];\n\nexport const ALIGN_BLOCK_TYPES: CustomElementKinds[] = [ElementKinds.default, ElementKinds.listItem, ElementKinds.image, ...HEADING_TYPES];\n\nexport const CONTAINER_BLOCKS: CustomElementKinds[] = [ElementKinds.blockquote, ElementKinds.tableCell];\n\nexport const LIST_BLOCK_TYPES: CustomElementKinds[] = [ElementKinds.numberedList, ElementKinds.bulletedList];\n\nexport const VOID_BLOCK_TYPES: CustomElementKinds[] = [ElementKinds.image, ElementKinds.hr];\n\nexport const BLOCK_DELETEBACKWARD_TYPES: CustomElementKinds[] = [ElementKinds.tableCell];\n","import { ComponentType } from 'slate-angular';\nimport { InjectionToken } from '@angular/core';\nimport { ElementKinds, MarkTypes } from './node-types';\nimport { ToolbarItem, ToolbarKey } from '../interfaces';\nimport { ToolbarActionTypes } from '../constants/node-types';\nimport type { TheToolbarGroupComponent } from '../components/toolbar-group/toolbar-group.component';\n\nexport const TheToolbarGroupToken = new InjectionToken<ComponentType<TheToolbarGroupComponent>>('the-toolbar-group-token');\n\nexport const BLOCK_TOOLBAR_HOTKEY = '/';\n\nexport enum DropdownMode {\n icon = 'icon-mode',\n text = 'text-mode'\n}\n\nexport const DefaultGlobalToolbarDefinition: ToolbarKey[] = [\n ElementKinds.headingList,\n ToolbarActionTypes.split,\n MarkTypes.bold,\n MarkTypes.italic,\n MarkTypes.underline,\n MarkTypes.strike,\n MarkTypes.codeLine,\n MarkTypes.color,\n MarkTypes.backgroundColor,\n ToolbarActionTypes.split,\n ToolbarActionTypes.alignType,\n ToolbarActionTypes.verticalAlign,\n ToolbarActionTypes.split,\n ElementKinds.numberedList,\n ElementKinds.bulletedList,\n ElementKinds.checkItem,\n ToolbarActionTypes.split,\n ElementKinds.link,\n ElementKinds.image,\n ElementKinds.table,\n ElementKinds.blockquote,\n ElementKinds.code\n];\n\nexport const DefaultInlineToolbarDefinition: ToolbarKey[] = [];\n\nexport const DefaultBlockToolbarDefinition: ToolbarKey[] = [ElementKinds.image];\n\nexport const ToolbarMoreGroup: ToolbarItem = {\n key: 'more',\n icon: 'more'\n};\n","export enum ErrorCodes {\n UNKNOW_ERROR = 1000,\n IMAGE_ERR_MIME_FORMAT = 1001,\n IMAGE_ERR_SIZE_LIMIT = 1002\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const DEFAULT_LANGUAGE = {\n showName: 'JavaScript',\n value: 'javascript'\n};\n\nexport const CODE_MODES = [\n {\n showName: 'Plain Text',\n value: ''\n },\n {\n showName: 'C-like',\n value: 'clike'\n },\n DEFAULT_LANGUAGE,\n {\n showName: 'CSS',\n value: 'css'\n },\n {\n showName: 'Dart',\n value: 'dart'\n },\n {\n showName: 'Django',\n value: 'django'\n },\n {\n showName: 'Dockerfile',\n value: 'dockerfile'\n },\n {\n showName: 'Go',\n value: 'go'\n },\n {\n showName: 'Markdown',\n value: 'markdown'\n },\n {\n showName: 'Nginx',\n value: 'nginx'\n },\n {\n showName: 'PHP',\n value: 'php'\n },\n {\n showName: 'Python',\n value: 'python'\n },\n {\n showName: 'Shell',\n value: 'shell'\n },\n {\n showName: 'SQL',\n value: 'sql'\n },\n {\n showName: 'Swift',\n value: 'swift'\n },\n {\n showName: 'HTML',\n value: 'htmlmixed'\n }\n];\n\nexport const EditorMode = {\n default: 'default',\n print: 'print'\n};\nexport type EditorMode = 'default' | 'print';\n\nexport class TheEditorConfig {\n mode: EditorMode;\n}\n\nexport const THE_EDITOR_CONFIG_TOKEN = new InjectionToken<TheEditorConfig>('the-editor-config');\n\nexport const THE_EDITOR_CONFIG_PROVIDER = {\n provide: THE_EDITOR_CONFIG_TOKEN,\n useValue: {\n mode: EditorMode.default\n }\n};\n\nexport const CODEMIRROR_PADDING_TOP = 10;\n","import { ChangeDetectorRef, Component, ElementRef, Renderer2 } from '@angular/core';\nimport { BaseTextComponent } from 'slate-angular';\nimport { MarkTypes } from '../../constants';\n\n@Component({\n selector: 'span[theText]',\n template: `<slate-leaves [context]=\"context\" [viewContext]=\"viewContext\"></slate-leaves>`,\n host: {\n 'data-slate-node': 'text'\n }\n})\nexport class TheTextComponent extends BaseTextComponent {\n constructor(public elementRef: ElementRef, public renderer2: Renderer2, cdr: ChangeDetectorRef) {\n super(elementRef, cdr);\n }\n\n excludes = ['color', 'background-color', 'text'];\n attributes = [];\n\n applyTextMark() {\n this.attributes.forEach(attr => {\n this.renderer2.removeAttribute(this.elementRef.nativeElement, attr);\n });\n this.attributes = [];\n for (const key in this.text) {\n if (Object.prototype.hasOwnProperty.call(this.text, key) && !this.excludes.includes(key) && !!this.text[key]) {\n const attr = `the-${key}`;\n this.renderer2.setAttribute(this.elementRef.nativeElement, attr, 'true');\n this.attributes.push(attr);\n }\n }\n\n if (this.text[MarkTypes.color]) {\n this.renderer2.setStyle(this.elementRef.nativeElement, 'color', this.text[MarkTypes.color]);\n } else {\n this.renderer2.removeStyle(this.elementRef.nativeElement, 'color');\n }\n if (this.text[MarkTypes.backgroundColor]) {\n this.renderer2.setStyle(this.elementRef.nativeElement, 'background-color', this.text[MarkTypes.backgroundColor]);\n } else {\n this.renderer2.removeStyle(this.elementRef.nativeElement, 'background-color');\n }\n }\n\n onContextChange() {\n super.onContextChange();\n this.applyTextMark();\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { AngularEditor, BaseElementComponent } from 'slate-angular';\nimport { Editor, Element } from 'slate';\n\n@Component({\n selector: 'TheBaseElementComponent',\n template: ''\n})\nexport class TheBaseElementComponent<T extends Element = Element, K extends AngularEditor = Editor>\n extends BaseElementComponent<T, K>\n implements OnInit\n{\n ngOnInit() {\n this.context.attributes['data-slate-key'] = this.context.element.key as string;\n super.ngOnInit();\n const blockClass = this.editor.isInline(this.element) ? 'slate-inline-block' : 'slate-block';\n this.nativeElement.classList.add(`slate-element-${this.element.type}`, blockClass);\n }\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { TheBaseElementComponent } from '../../interfaces/view-base';\n\n@Component({\n selector: '[theDefaultElement]',\n template: '<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TheDefaultElementComponent extends TheBaseElementComponent {}\n","import { ElementOptionsInfo } from './valid-children-types';\nimport { Ancestor, Range, Path, Point, Node, Span, NodeEntry, Editor, Element, Text } from 'slate';\nimport { AngularEditor, ViewType } from 'slate-angular';\nimport { HistoryEditor } from 'slate-history';\n// import * as TheQueries from '../queries';\n// import * as TheTransforms from '../transforms';\nimport { Predicate } from '../utils/match';\nimport { ToolbarOption } from './toolbar';\n\nexport interface TheEditor extends AngularEditor, HistoryEditor {\n renderElement: (element: Element) => ViewType;\n renderLeaf: (text: Text) => ViewType;\n insertElement: (element: Element) => void;\n isContainer: (element: Element) => boolean;\n extraElementOptions: ElementOptionsInfo[];\n disabled: boolean;\n [key: string]: any;\n}\n\nexport const TheEditor = {\n ...AngularEditor\n};\n\nexport interface ThePlugin {\n (editor: Editor): Editor;\n}\n\nexport enum TheDataMode {\n json = 'json',\n html = 'html'\n}\n\nexport interface TheOptions {\n readonly?: boolean;\n mode?: TheDataMode;\n disabled?: boolean;\n autoFocus?: boolean;\n placeholder?: string;\n scrollContainer?: string;\n maxHeight?: number;\n toolbar?: ToolbarOption;\n disablePlugins?: string[];\n extraElementOptions?: ElementOptionsInfo[];\n}\n\nexport type NodeMatch<T = Node> = Predicate<T>;\n\nexport interface MatchOptions<T = Node> {\n match?: NodeMatch<T>;\n block?: boolean;\n}\n\nexport interface EditorAboveOptions<T = Ancestor> extends MatchOptions<T> {\n at?: Range | Path | Point;\n mode?: 'highest' | 'lowest';\n voids?: boolean;\n}\n\nexport interface EditorNodesOptions {\n at?: Range | Path | Point | Span;\n match?: (node: Node) => boolean;\n mode?: 'highest' | 'lowest' | 'all';\n universal?: boolean;\n reverse?: boolean;\n voids?: boolean;\n}\n\nexport interface WrapOptions {\n at?: Path | Point | Range;\n match?: (node: Node) => boolean;\n mode?: 'highest' | 'lowest' | 'all';\n split?: boolean;\n voids?: boolean;\n}\n\nexport interface EditorParentOptions {\n depth?: number | undefined;\n edge?: 'start' | 'end' | undefined;\n}\n\nexport interface QueryOptions {\n // Condition on the node to be valid.\n filter?: (entry: NodeEntry<Node>) => boolean;\n // List of types that are valid. If empty or undefined - allow all.\n allow?: string[];\n // List of types that are invalid.\n exclude?: string[];\n}\n\nexport interface DomEventDataInfo {\n inputType?: string;\n key?: string;\n text?: string;\n json?: Node[];\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { Editor } from 'slate';\nimport { ElementKinds, MarkTypes, DropdownMode } from '../constants';\n\nexport type ToolbarKey = MarkTypes | ElementKinds | string;\n\nexport enum ToolbarItemType {\n default = 'default',\n toolDropdown = 'tool-dropdown'\n}\n\nexport enum ToolbarAlignment {\n left = 'start',\n center = 'center',\n right = 'end'\n}\n\nexport type ToolbarDefinition = {\n global?: string[];\n inline?: string[];\n block?: string[];\n};\n\ninterface ToolbarItemBase {\n key: ToolbarKey;\n execute?: (editor: Editor) => void;\n active?: (editor: Editor) => boolean | string;\n disable?: (editor: Editor) => boolean | string;\n transformToolbar?: (editor: Editor) => ToolbarDefinition | void;\n styles?: { [key: string]: string };\n includes?: (ToolbarKey | ToolbarItem)[];\n}\n\nexport interface CustomizeToolbarItem extends ToolbarItemBase {\n iconComponent?: ComponentType<any>;\n type?: ToolbarItemType;\n dropdownMode?: DropdownMode;\n}\n\nexport interface DefaultToolbarItem extends ToolbarItemBase {\n icon?: string;\n name?: string;\n type?: ToolbarItemType;\n}\n\nexport type ToolbarItem = CustomizeToolbarItem & DefaultToolbarItem;\n\nexport type ToolbarEntity = {\n global?: ToolbarItem[];\n inline?: ToolbarItem[];\n block?: ToolbarItem[];\n};\n\nexport interface ToolbarInitOption {\n toolbarDefinition: ToolbarDefinition;\n toolbarEntity: ToolbarEntity;\n toolbarOperations: Map<string, ToolbarItem>;\n}\n\nexport interface ToolbarOption extends ToolbarDefinition {\n align?: ToolbarAlignment;\n toolbarItems?: ToolbarItem[];\n}\n\nexport interface ToolbarItemsComposeReturn {\n items: ToolbarItem[];\n group: ToolbarItem[];\n}\n","import { Observable } from 'rxjs';\nimport { UploadFileEntity, FileUploadingItem } from './upload';\nimport { InjectionToken } from '@angular/core';\nimport { SafeUrl } from '@angular/platform-browser';\nimport { Alignment } from '../constants';\n\nexport interface ImageEntry {\n file?: File;\n name?: string;\n width?: number;\n height?: number;\n thumbUrl?: SafeUrl | string;\n originUrl?: SafeUrl | string;\n align?: Alignment;\n}\n\nexport interface TheImageUploaderService {\n uploadFileHandle: (files: any) => Observable<UploadFileEntity[]>;\n getUploadingItems$: () => Observable<FileUploadingItem[]>;\n}\n\nexport const THE_UPLOAD_SERVICE_TOKEN = new InjectionToken<TheImageUploaderService>('THE_UPLOAD_SERVICE_TOKEN');\n","import { ElementKinds, HEADING_TYPES } from '../constants/node-types';\nimport { CustomElementKinds } from '../custom-types';\n\nexport interface ElementOptionsInfo {\n type: CustomElementKinds;\n inValidChildrenTypes: CustomElementKinds[];\n isIndivisible?: boolean;\n}\nexport const inValidTypes: CustomElementKinds[] = [\n ElementKinds.table,\n ElementKinds.tableCell,\n ElementKinds.blockquote,\n ElementKinds.hr,\n ElementKinds.code\n];\n\nexport const DefaultElementOptions: ElementOptionsInfo[] = [\n {\n type: ElementKinds.bulletedList,\n inValidChildrenTypes: [...inValidTypes, ...HEADING_TYPES]\n },\n {\n type: ElementKinds.numberedList,\n inValidChildrenTypes: [...inValidTypes, ...HEADING_TYPES]\n },\n {\n type: ElementKinds.listItem,\n inValidChildrenTypes: [...inValidTypes, ...HEADING_TYPES]\n },\n {\n type: ElementKinds.blockquote,\n inValidChildrenTypes: inValidTypes\n },\n {\n type: ElementKinds.table,\n inValidChildrenTypes: [ElementKinds.table]\n },\n {\n type: ElementKinds.tableCell,\n inValidChildrenTypes: [ElementKinds.table, ElementKinds.tableCell]\n }\n];\n","export function idCreator(length = 5) {\n // remove numeral\n const $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz'; /****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/\n const maxPosition = $chars.length;\n let key = '';\n for (let i = 0; i < length; i++) {\n key += $chars.charAt(Math.floor(Math.random() * maxPosition));\n }\n return key;\n}\n","import { Ancestor, Editor, Element, Node } from 'slate';\n\nexport const isAncestor = (node: Node): node is Ancestor => Element.isElement(node) || Editor.isEditor(node);\n","import { Editor, Node, NodeEntry } from 'slate';\nimport { isAncestor } from './is-ancestor';\n\nconst getLastChild = (node: Node, level: number): Node => {\n if (!(level + 1) || !isAncestor(node)) {\n return node;\n }\n\n const { children } = node;\n const lastNode = children[children.length - 1];\n\n return getLastChild(lastNode, level - 1);\n};\n\nexport const getLastNode = (editor: Editor, level: number): NodeEntry => {\n const { children } = editor;\n const lastNode = children[children.length - 1];\n const [, lastPath] = Editor.last(editor, []);\n\n return [getLastChild(lastNode, level - 1), lastPath.slice(0, level + 1)];\n};\n","import { Range } from 'slate';\n\n/**\n * See {@link Range.isCollapsed}.\n * Return false if `range` is not defined.\n */\nexport const isCollapsed = (range?: Range | null) => !!range && Range.isCollapsed(range);\n","import { Editor, NodeEntry, Path, Point, Element } from 'slate';\n\nexport const getAnchorBlockEntry = (editor: Editor, at?: Path | Point): NodeEntry<Element> => {\n return Editor.above<Element>(editor, {\n match: n => Editor.isBlock(editor, n),\n at\n });\n};\n","import { Editor, Path, Point } from 'slate';\nimport { ElementKinds } from '../constants/node-types';\nimport { getAnchorBlockEntry } from './get-anchor-block-entry';\n\nexport const isEmptyParagraph = (editor: Editor, at?: Path | Point) => {\n const [block] = getAnchorBlockEntry(editor, at);\n return Editor.isEmpty(editor, block) && block.type === ElementKinds.paragraph;\n};\n","import { Editor, Element } from 'slate';\nimport { ElementKinds } from '../constants/node-types';\n\nexport const isParagraph = (editor: Editor) => {\n const [match] = Editor.nodes(editor, {\n match: n => Element.isElement(n) && n.type === ElementKinds.paragraph\n });\n return !!match;\n};\n","import { Editor, Element } from 'slate';\nimport { CustomElementKinds } from '../custom-types';\n\nexport const isBlockActive = (editor: Editor, format: CustomElementKinds) => {\n const [match] = Editor.nodes(editor, {\n match: n => Element.isElement(n) && n.type === format\n });\n return !!match;\n};\n","import { Editor, Element } from 'slate';\nimport { EditorAboveOptions } from '../interfaces';\n\n/**\n * Get the block above a location (default: selection) by type.\n */\nexport const getAboveByType = (editor: Editor, types: string[] | string, options: Omit<EditorAboveOptions, 'match'> = {}) => {\n if (!Array.isArray(types)) {\n types = [types];\n }\n\n return Editor.above(editor, {\n match: n => Element.isElement(n) && types.includes(n.type),\n ...options\n });\n};\n","import { Editor, Element } from 'slate';\nimport { CustomElementKinds } from '../custom-types';\nimport { getAboveByType } from './get-above-by-type';\n\nexport const isIncludeTypes = (editor: Editor, types: CustomElementKinds[]) => {\n const parentType = [];\n types.map((item: string) => {\n const entry = getAboveByType(editor, item);\n if (entry) {\n parentType.push((entry[0] as Element).type);\n }\n });\n return parentType.length > 0;\n};\n","import { Editor } from 'slate';\n\nexport const getBlockCardCenterCursor = (editor: Editor) => {\n return Editor.start(editor, editor.selection.anchor.path);\n};\n","import { Editor } from 'slate';\n\nexport const isBlockCardCursor = (editor: Editor) => {\n return editor.selection.anchor.offset < 0;\n};\n","import { Editor, NodeEntry, Path, Point, Element } from 'slate';\nimport { getBlockCardCenterCursor } from './get-block-card-cursor';\nimport { isBlockCardCursor } from './is-block-card-cursor';\n\nexport const anchorBlockEntry = (editor: Editor, at?: Path | Point): NodeEntry<Element> | undefined => {\n if (!at && isBlockCardCursor(editor)) {\n at = getBlockCardCenterCursor(editor);\n }\n\n return Editor.above<Element>(editor, {\n match: n => Editor.isBlock(editor, n),\n at\n });\n};\n","import { Editor, Path, Point, Range, Span } from 'slate';\n\nexport interface UnhangRangeOptions {\n at?: Range | Path | Point | Span;\n voids?: boolean;\n unhang?: boolean;\n}\n\n/**\n * Return {@link Editor.unhangRange} if `unhang` is true and if `at` (default: selection) is a range.\n */\nexport const unhangRange = (editor: Editor, options: UnhangRangeOptions = {}) => {\n const { at = editor.selection, voids, unhang = true } = options;\n\n if (Range.isRange(at) && unhang) {\n options.at = Editor.unhangRange(editor, at, { voids });\n }\n};\n","import { Editor } from 'slate';\nimport { EditorNodesOptions } from '../interfaces';\nimport { unhangRange, UnhangRangeOptions } from '../transforms/un-hang-range';\n\nexport const getNodes = (editor: Editor, options: EditorNodesOptions & UnhangRangeOptions = {}) => {\n unhangRange(editor, options);\n\n return Editor.nodes(editor, options);\n};\n","import { Editor, Element } from 'slate';\nimport { EditorNodesOptions } from '../interfaces';\nimport { getNodes } from './get-nodes';\n\n/**\n * Get the nodes with a type included in `types` at a location (default: selection).\n */\nexport const getNodesByType = (editor: Editor, types: string[] | string, options: Omit<EditorNodesOptions, 'match'> = {}) => {\n if (!Array.isArray(types)) {\n types = [types];\n }\n\n return getNodes(editor, {\n match: n => Element.isElement(n) && types.includes(n.type as string),\n ...options\n });\n};\n","import { Editor, Element } from 'slate';\nimport { anchorBlockEntry } from './anchor-block-entry';\n\nexport const anchorBlock = (editor: Editor): Element => {\n const entry = anchorBlockEntry(editor, editor.selection.anchor);\n return entry ? entry[0] : null;\n};\n","import { Ancestor, Editor, NodeEntry } from 'slate';\nimport { EditorAboveOptions } from '../interfaces';\n\n/**\n * Get the block above a location (default: selection).\n * If not found, return the editor entry.\n */\nexport const getBlockAbove = (editor: Editor, options: Omit<EditorAboveOptions, 'match'> = {}): NodeEntry<Ancestor> =>\n Editor.above(editor, {\n match: n => Editor.isBlock(editor, n),\n ...options\n }) || [editor, []];\n","import { Ancestor, Editor, Node } from 'slate';\n\n/**\n * Is an ancestor empty (empty text and no inline children).\n */\nexport const isAncestorEmpty = (editor: Editor, node: Ancestor) =>\n !Node.string(node) && !node.children.some(n => Editor.isInline(editor, n));\n","import { Editor } from 'slate';\nimport { getBlockAbove } from './get-block-above';\nimport { isAncestorEmpty } from './is-ancestor-empty';\n\n/**\n * Is the block above the selection empty.\n */\nexport const isBlockAboveEmpty = (editor: Editor) => {\n const blockEntry = getBlockAbove(editor);\n const [block] = blockEntry;\n return isAncestorEmpty(editor, block);\n};\n","import { Editor } from 'slate';\nimport { EditorNodesOptions } from '../interfaces';\nimport { getNodesByType } from './get-nodes-by-type';\n\n/**\n * Is there a node with a type included in `types` at a location (default: selection).\n */\nexport const isNodeTypeIn = (editor: Editor, types: string[] | string, options: Omit<EditorNodesOptions, 'match'> = {}) => {\n const [match] = getNodesByType(editor, types, options);\n return !!match;\n};\n","import { Path } from 'slate';\n\n/**\n * Is it the first child of the parent\n */\nexport const isFirstChild = (path: Path) => path[path.length - 1] === 0;\n","import { Path } from 'slate';\n\nexport const getPreviousPath = (path: Path): Path | undefined => {\n if (path.length === 0) return;\n\n const last = path[path.length - 1];\n\n if (last <= 0) return;\n\n return path.slice(0, -1).concat(last - 1);\n};\n","import { Editor, Node, Path } from 'slate';\n\nexport const getNode = (editor: Editor, path: Path) => {\n try {\n return Node.get(editor, path);\n } catch (err) {\n return null;\n }\n};\n","import { Ancestor, Editor, Location, NodeEntry } from 'slate';\nimport { EditorParentOptions } from '../interfaces';\n\n/**\n * See {@link Editor.parent}.\n * Returns undefined if there is no parent.\n */\nexport const getParent = (editor: Editor, at: Location, options?: EditorParentOptions): NodeEntry<Ancestor> | undefined => {\n try {\n return Editor.parent(editor, at, options);\n } catch (error) {}\n};\n","import { AngularEditor, NODE_TO_INDEX, NODE_TO_PARENT } from 'slate-angular';\nimport { Editor, Node, Path } from 'slate';\n\n/**\n * Find the path of Slate node.\n */\nexport const findPath = (editor: AngularEditor, node: Node): Path => {\n const path: Path = [];\n let child = node;\n\n while (true) {\n const parent = NODE_TO_PARENT.get(child);\n\n if (parent == null) {\n if (Editor.isEditor(child)) {\n return path;\n } else {\n break;\n }\n }\n\n const i = NODE_TO_INDEX.get(child);\n\n if (i == null) {\n break;\n }\n\n path.unshift(i);\n child = parent;\n }\n throw new Error(`Unable to find the path for Slate node: ${JSON.stringify(node)}`);\n};\n","export function castArray(data?: any) {\n if (!data) {\n return [];\n }\n return Array.isArray(data) ? data : [data];\n}\n","import { Editor } from 'slate';\nimport { castArray } from './cast-array';\n\nexport type PredicateObj<T> = Partial<Record<keyof T, any | any[]>>;\nexport type PredicateFn<T> = (obj: T) => boolean;\nexport type Predicate<T> = PredicateObj<T> | PredicateFn<T>;\n\n/**\n * Match the object with a predicate object or function.\n * If predicate is:\n * - object: every predicate key/value should be in obj.\n * - function: it should return true.\n */\nexport const match = <T>(obj: T, predicate?: Predicate<T>): boolean => {\n if (!predicate) return true;\n\n if (typeof predicate === 'object') {\n return Object.entries(predicate).every(([key, value]) => {\n const values = castArray(value);\n\n return values.includes(obj[key]);\n });\n }\n\n return predicate(obj);\n};\n\nexport const matchPredicate =\n <T>(predicate?: Predicate<T>) =>\n (obj: T) =>\n match(obj, predicate);\n\n/**\n * Extended query options for slate queries:\n * - `match` can be an object predicate where one of the values should include the node value.\n * Example: { type: ['1', '2'] } will match the nodes having one of these 2 types.\n */\nexport const getQueryOptions = <T>(editor: Editor, options: any) => {\n return {\n ...options,\n match: (n: T) => match<T>(n, options.match) && (!options?.block || Editor.isBlock(editor, n))\n };\n};\n","/**\n * Iterate through all of the nodes in the editor and return the first match. If\n * no match is found, return undefined.\n */\nimport { Editor, Location, Node, NodeEntry, Path, Range, Span } from 'slate';\nimport { MatchOptions } from '../interfaces';\nimport { match } from '../utils/match';\n\nexport type FindNodeOptions<T extends Node = Node> = {\n at?: Location | Span;\n reverse?: boolean;\n voids?: boolean;\n} & MatchOptions<T>;\n\n/**\n * Find node matching the condition.\n */\nexport const findNode = <T extends Node = Node>(editor: Editor, options: FindNodeOptions<T>): NodeEntry<T> | undefined => {\n // Slate throws when things aren't found so we wrap in a try catch and return undefined on throw.\n try {\n const { match: _match = () => true, at = editor.selection || [], reverse = false, voids = false } = options;\n\n let from;\n let to;\n if (Span.isSpan(at)) {\n [from, to] = at;\n } else if (Range.isRange(at)) {\n const first = Editor.path(editor, at, { edge: 'start' });\n const last = Editor.path(editor, at, { edge: 'end' });\n from = reverse ? last : first;\n to = reverse ? first : last;\n }\n\n let root: NodeEntry = [editor, []];\n if (Path.isPath(at)) {\n root = Editor.node(editor, at);\n }\n\n const nodeEntries = Node.nodes(root[0], {\n reverse,\n from,\n to,\n pass: ([n]) => (voids ? false : Editor.isVoid(editor, n))\n });\n\n for (const [node, path] of nodeEntries) {\n if (match<Node>(node, _match)) {\n return [node as any, path];\n }\n }\n } catch (error) {\n return undefined;\n }\n};\n","/**\n * Iterate through all of the nodes in the editor and return the first match. If\n * no match is found, return undefined.\n */\nimport { Editor, Node, NodeEntry, Path, Range, Span } from 'slate';\nimport { match } from '../utils/match';\nimport { FindNodeOptions } from './find-node';\n\n/**\n * Get the first descendant node matching the condition.\n */\nexport const findDescendant = <T extends Node = Node>(editor: Editor, options: FindNodeOptions<T>): NodeEntry<T> | undefined => {\n // Slate throws when things aren't found so we wrap in a try catch and return undefined on throw.\n try {\n const { match: _match, at = editor.selection, reverse = false, voids = false } = options;\n\n if (!at) return;\n\n let from;\n let to;\n if (Span.isSpan(at)) {\n [from, to] = at;\n } else if (Range.isRange(at)) {\n const first = Editor.path(editor, at, { edge: 'start' });\n const last = Editor.path(editor, at, { edge: 'end' });\n from = reverse ? last : first;\n to = reverse ? first : last;\n }\n\n let root: NodeEntry = [editor, []];\n if (Path.isPath(at)) {\n root = Editor.node(editor, at);\n }\n\n const nodeEntries = Node.descendants(root[0], {\n reverse,\n from,\n to,\n pass: ([n]) => (voids ? false : Editor.isVoid(editor, n))\n });\n\n for (const [node, path] of nodeEntries) {\n if (match<Node>(node, _match)) {\n return [node as any, (at as Path).concat(path)];\n }\n }\n } catch (error) {\n return undefined;\n }\n};\n","import { Ancestor, Descendant, NodeEntry, Path } from 'slate';\n\n/**\n * Get the last child of a node\n */\nexport const getLastChild = (nodeEntry: NodeEntry<Ancestor>): NodeEntry<Descendant> => {\n const [node, path] = nodeEntry;\n\n return [node.children[node.children.length - 1], path.concat([node.children.length - 1])];\n};\n\nexport const getLastChildPath = (nodeEntry: NodeEntry<Ancestor>): Path => getLastChild(nodeEntry)[1];\n","import { Point } from 'slate';\n\nexport const isPointAtRoot = (point: Point) => point.path.length === 2;\n","import { Range } from 'slate';\nimport { isPointAtRoot } from './is-point-at-root';\n\nexport const isRangeAtRoot = (range: Range) => isPointAtRoot(range.anchor) || isPointAtRoot(range.focus);\n","import { Ancestor, Descendant, NodeEntry, Path } from 'slate';\n\n/**\n * Get the next sibling nodes after a path.\n * @param ancestorEntry Ancestor of the sibling nodes\n * @param path Path of the reference node\n */\nexport const getNextSiblingNodes = (ancestorEntry: NodeEntry<Ancestor>, path: Path) => {\n const [ancestor, ancestorPath] = ancestorEntry;\n\n const leafIndex = path[ancestorPath.length];\n\n const siblings: Descendant[] = [];\n\n if (leafIndex + 1 < ancestor.children.length) {\n for (let i = leafIndex + 1; i < ancestor.children.length; i++) {\n siblings.push(ancestor.children[i]);\n }\n }\n\n return siblings;\n};\n","import { Editor, Text } from 'slate';\nimport { getBlockAbove } from './get-block-above';\nimport { getNextSiblingNodes } from './get-next-sibling-nodes';\n\n/**\n * Is there empty text after the selection.\n * If there is no leaf after the selected leaf, return {@link Editor.isEnd}.\n * Else, check if the next leaves are empty.\n */\nexport const isBlockTextEmptyAfterSelection = (editor: Editor) => {\n if (!editor.selection) {\n return false;\n }\n\n const blockAbove = getBlockAbove(editor);\n\n const cursor = editor.selection.focus;\n\n if (!Editor.isEnd(editor, cursor, Editor.parent(editor, editor.selection)[1])) {\n return false;\n }\n\n const siblingNodes = getNextSiblingNodes(blockAbove, cursor.path);\n\n if (siblingNodes.length) {\n for (const siblingNode of siblingNodes) {\n if ((siblingNode as Text).text) {\n return false;\n }\n }\n } else {\n return Editor.isEnd(editor, cursor, blockAbove[1]);\n }\n\n return true;\n};\n","import { Ancestor, Editor } from 'slate';\nimport { EditorAboveOptions } from '../interfaces';\nimport { getQueryOptions } from '../utils/match';\n\n/**\n * Get node above a location (default: selection).\n */\nexport const getAbove = <T = Ancestor>(editor: Editor, options: EditorAboveOptions<T> = {}) => {\n return Editor.above(editor, getQueryOptions(editor, options));\n};\n","import { Editor, Location, Point } from 'slate';\n\n/**\n * {@link Editor.isStart}. If point is null, return false.\n */\nexport const isStart = (editor: Editor, point: Point | null | undefined, at: Location): boolean =>\n !!point && Editor.isStart(editor, point, at);\n","import { Editor, Path, Range } from 'slate';\nimport { EditorAboveOptions } from '../interfaces';\nimport { getBlockAbove } from './get-block-above';\n\n/**\n * Is the range (default: selection) across blocks.\n */\nexport const isRangeAcrossBlocks = (\n editor: Editor,\n { at, ...options }: Omit<EditorAboveOptions, 'at' | 'match'> & { at?: Range | null } = {}\n) => {\n if (!at) at = editor.selection;\n if (!at) return false;\n\n const [start, end] = Range.edges(at);\n const startBlock = getBlockAbove(editor, {\n at: start,\n ...options\n });\n const endBlock = Editor.above(editor, {\n at: end,\n ...options\n });\n\n return startBlock && endBlock && !Path.equals(startBlock[1], endBlock[1]);\n};\n","import { Editor, Node } from 'slate';\nimport { findNode, FindNodeOptions } from './find-node';\n\n/**\n * Iterate through all of the nodes in the editor and break early for the first truthy match. Otherwise\n * returns false.\n */\nexport const someNode = <T extends Node = Node>(editor: Editor, options: FindNodeOptions<T>) => {\n return !!findNode<T>(editor, options);\n};\n","import { Node, NodeEntry, Path, Element } from 'slate';\n\n/**\n * Get children node entries of a node entry.\n * TODO: try Node.children\n */\nexport const getChildren = (nodeEntry: NodeEntry) => {\n const [node, path] = nodeEntry;\n\n const children = (Element.isElement(node) && (node.children as Node[])) || [];\n\n return children.map((child, index) => {\n const childPath = path.concat([index]) as Path;\n return [child, childPath] as NodeEntry;\n });\n};\n","import { Descendant, Element, Text } from 'slate';\n\nexport const isDescendant = (node: any): node is Descendant => Element.isElement(node) || Text.isText(node);\n","import { Node, NodeEntry, Element } from 'slate';\nimport { QueryOptions } from '../interfaces';\n\n/**\n * Is the node entry filling a condition.\n */\nexport const isNodeType = (entry?: NodeEntry<Node>, { filter = () => true, allow = [], exclude = [] }: QueryOptions = {}) => {\n let filterAllow: typeof filter = () => true;\n if (allow.length) {\n filterAllow = ([n]) => allow.includes((n as Element).type as string);\n }\n\n let filterExclude: typeof filter = () => true;\n if (exclude.length) {\n filterExclude = ([n]) => !exclude.includes((n as Element).type as string);\n }\n\n return !!entry && filter(entry) && filterAllow(entry) && filterExclude(entry);\n};\n","import { Editor, Element } from 'slate';\n\nexport const anchorInlineEntry = (editor: Editor) => {\n const match = Editor.above<Element>(editor, {\n match: n => Editor.isInline(editor, n)\n });\n if (match) {\n return match;\n }\n};\n","import { Editor } from 'slate';\nimport { anchorInlineEntry } from './anchor-inline-entry';\n\nexport const anchorInline = (editor: Editor) => {\n return anchorInlineEntry(editor)[0];\n};\n","import * as _lodash from 'lodash';\nexport const _ = _lodash;\n","import { Editor, Location, Path, Point } from 'slate';\nimport { castArray } from '../utils/cast-array';\nimport { _ } from '../utils/lodash';\n\nexport interface BeforeOptions {\n distance?: number | undefined;\n unit?: 'character' | 'word' | 'line' | 'block' | 'offset' | undefined;\n}\n\nexport interface PointBeforeOptions extends BeforeOptions {\n /**\n * Lookup before the location for `matchString`.\n */\n matchString?: string | string[];\n\n /**\n * Lookup before the location until this predicate is true\n */\n match?: (value: { beforeString: string; beforePoint: Point; at: Location }) => boolean;\n\n /**\n * If true, get the point after the matching point.\n * If false, get the matching point.\n */\n afterMatch?: boolean;\n\n /**\n * If true, lookup until the start of the editor value.\n * If false, lookup until the first invalid character.\n */\n skipInvalid?: boolean;\n\n /**\n * Allow lookup across multiple node paths.\n */\n multiPaths?: boolean;\n}\n\n/**\n * {@link Editor.before} with additional options.\n * TODO: support for sequence of any characters.\n */\nexport const getPointBefore = (editor: Editor, at: Location, options?: PointBeforeOptions) => {\n if (!options || (!options.match && !options.matchString)) {\n return Editor.before(editor, at, options);\n }\n\n let beforeAt = at;\n let previousBeforePoint = Editor.point(editor, at, { edge: 'end' });\n\n const stackLength = (options.matchString ? options.matchString.length : 0) + 1;\n const stack = Array(stackLength);\n\n const unitOffset = !options.unit || options.unit === 'offset';\n\n let count = 0;\n while (true) {\n const beforePoint = Editor.before(editor, beforeAt, options);\n\n // not found\n if (!beforePoint) {\n return;\n }\n\n // different path\n if (!options.multiPaths && !Path.equals(beforePoint.path, previousBeforePoint.path)) {\n return;\n }\n\n const beforeString = Editor.string(editor, {\n anchor: beforePoint,\n focus: previousBeforePoint\n });\n\n const matchString: string[] = castArray(options.matchString);\n\n let beforeStringToMatch = beforeString;\n\n if (unitOffset && stackLength) {\n stack.unshift({\n point: beforePoint,\n text: beforeString\n });\n stack.pop();\n\n beforeStringToMatch = _.map(stack.slice(0, -1), 'text').join('');\n }\n\n if (\n matchString.includes(beforeStringToMatch) ||\n (options.match ? options.match({ beforeString: beforeStringToMatch, beforePoint, at }) : '')\n ) {\n if (options.afterMatch) {\n if (stackLength && unitOffset) {\n return stack[stack.length - 1] ? stack[stack.length - 1].point : '';\n }\n return previousBeforePoint;\n }\n return beforePoint;\n }\n\n previousBeforePoint = beforePoint;\n beforeAt = beforePoint;\n\n count += 1;\n\n if (!options.skipInvalid) {\n if (!matchString || count > matchString.length) {\n return;\n }\n }\n }\n};\n","import { Node, Descendant, NodeEntry, Editor, Element } from 'slate';\nimport { CustomElementKinds } from '../custom-types';\nimport { getAboveByType } from './get-above-by-type';\n\nexport const getSelectionNodesByType = (editor: Editor, fragmentData: Descendant[], types: CustomElementKinds[] = []): Node => {\n try {\n const { selection } = editor;\n const nodes = Editor.node(editor, selection);\n const nodeType = (nodes[0] as Element).type;\n if (types.length > 0) {\n if (types.includes(nodeType)) {\n return Node.get(fragmentData[0], new Array(nodes[1].length - 1).fill(0));\n } else {\n let parentNode: NodeEntry;\n for (let i = 0; i < types.length; i++) {\n parentNode = getAboveByType(editor, types[i], { mode: 'lowest' });\n if (parentNode) {\n break;\n }\n }\n if (parentNode) {\n return Node.get(fragmentData[0], new Array(parentNode[1].length - 1).fill(0));\n }\n }\n }\n } catch (err) {\n return null;\n }\n};\n","import { Editor, Element, Text, Node } from 'slate';\nimport { CLIPBOARD_FORMAT_KEY } from '../constants/default';\n\nexport const getStartBlock = (editor: Editor, fragment: Element) => {\n const firstChild = fragment.children && fragment.children[0];\n if (firstChild && !Editor.isInline(editor, firstChild) && !Text.isText(firstChild) && Element.isElement(firstChild)) {\n return getStartBlock(editor, firstChild);\n }\n return fragment;\n};\n\nexport const getEndBlock = (editor: Editor, fragment: Element) => {\n const lastChild = fragment.children && fragment.children[fragment.children.length - 1];\n if (lastChild && !Editor.isInline(editor, lastChild) && !Text.isText(lastChild) && Element.isElement(lastChild)) {\n return getEndBlock(editor, lastChild);\n }\n return fragment;\n};\n\nexport const extractFragment = (data: DataTransfer, deleteKey?: string) => {\n const fragment = data.getData(`application/${CLIPBOARD_FORMAT_KEY}`);\n if (fragment) {\n const decoded = decodeURIComponent(window.atob(fragment));\n const nodes = JSON.parse(decoded) as Element[];\n // delete key to avoid duplicate keys\n if (deleteKey) {\n deleteElementKey(nodes, deleteKey);\n }\n return nodes;\n }\n return null;\n}\n\nexport function deleteElementKey(nodes: Node[], key: string) {\n nodes.forEach((node) => {\n if (node[key]) {\n delete node[key];\n }\n if (Element.isElement(node) && node.children) {\n deleteElementKey(node.children, key);\n }\n });\n return nodes;\n}\n","import { Editor, Element } from 'slate';\nimport { getStartBlock, getEndBlock } from '../utils/fragment';\n\nexport const isAcrossBlocks = (editor: Editor, fragment: Element[]) => {\n const startBlock = getStartBlock(editor, fragment[0]);\n const endBlock = getEndBlock(editor, fragment[fragment.length - 1]);\n return startBlock && endBlock && startBlock !== endBlock;\n};\n","import { Editor, Location } from 'slate';\n\n/**\n * See {@link Editor.string}.\n * If `at` is not defined, return an empty string.\n */\nexport const getText = (editor: Editor, at?: Location | null) => {\n return at && Editor.string(editor, at);\n};\n","import { Editor, Location, Path, Point, Range } from 'slate';\n\nexport const getPointFromLocation = (\n editor: Editor,\n {\n at = editor.selection,\n focus\n }: {\n at?: Location | null;\n focus?: boolean;\n } = {}\n) => {\n let point: Point | undefined;\n if (Range.isRange(at)) {\n point = !focus ? at.anchor : at.focus;\n }\n if (Point.isPoint(at)) {\n point = at;\n }\n if (Path.isPath(at)) {\n point = { path: at, offset: 0 };\n }\n\n return point;\n};\n","import { Editor } from 'slate';\nimport { EditorAboveOptions } from '../interfaces';\nimport { getBlockAbove } from './get-block-above';\nimport { getPointFromLocation } from './get-point-from-location';\n\n/**\n * Get the range from the start of the block above a location (default: selection) to the location.\n */\nexport const getRangeFromBlockStart = (editor: Editor, options: Omit<EditorAboveOptions, 'match'> = {}) => {\n const [, path] = getBlockAbove(editor, options);\n\n const start = Editor.start(editor, path);\n\n const focus = getPointFromLocation(editor, options);\n\n if (!focus) {\n return false;\n }\n\n return { anchor: start, focus };\n};\n","import { Editor, Location, Range } from 'slate';\nimport { getPointBefore, PointBeforeOptions } from './get-point-before';\n\nexport type RangeBeforeOptions = PointBeforeOptions;\n\n/**\n * Get range from {@link getPointBefore} to the end point of `at`.\n */\nexport const getRangeBefore = (editor: Editor, at: Location, options?: RangeBeforeOptions): Range | undefined => {\n const anchor = getPointBefore(editor, at, options);\n if (!anchor) {\n return;\n }\n\n const focus = Editor.point(editor, at, { edge: 'end' });\n\n return {\n anchor,\n focus\n };\n};\n","import { Descendant, Node, Element } from 'slate';\nimport { ElementKinds } from '../constants/node-types';\n\nexport const isEmptyContent = (children: Descendant[]) => {\n if (!children || children.length < 1) {\n return true;\n }\n if (children && children.length === 1) {\n const firstNode = children[0] as Element;\n if (firstNode.type === ElementKinds.default && !Node.string(firstNode)) {\n return true;\n }\n }\n return false;\n};\n","import { Ancestor, Editor, NodeEntry } from 'slate';\nimport { EditorAboveOptions } from '../interfaces/editor';\n\n/**\n * Get the block above a location (default: selection).\n * If not found, return the editor entry.\n */\nexport const getBlockCardAbove = (editor: Editor, options: Omit<EditorAboveOptions, 'match'> = {}): NodeEntry<Ancestor> =>\n Editor.above(editor, {\n match: n => editor.isBlockCard(n),\n ...options\n });\n","import { Editor, Node } from 'slate';\n\n/**\n * get plain text\n * can specify node text interval, the default is \\n\n */\nexport const getPlainText = (editor: Editor, format = '\\n') => {\n let text = '';\n if (editor && editor?.children) {\n for (let i = 0; i < editor?.children.length; i++) {\n const node = editor?.children[i];\n text += `${i === 0 ? '' : format}${Node.string(node)}`;\n }\n }\n return text;\n};\n","import { Editor, Node, Path, Element } from 'slate';\nimport { ElementKinds } from '../constants/node-types';\n\nexport const isEmptyParagraphByPath = (editor: Editor, at: Path) => {\n const block = Node.get(editor, at) as Element;\n return Editor.isEmpty(editor, block) && block.type === ElementKinds.paragraph;\n};\n","import { Editor, NodeEntry, Text } from 'slate';\nimport { MarkTypes, MarkProps } from '../constants';\n\nexport const getSelectionMarks = (editor: Editor): { [key in MarkTypes]?: any } => {\n const matchs = Editor.nodes(editor, { match: Text.isText });\n const marks = {};\n for (const match of matchs) {\n const [node] = match as NodeEntry<Text>;\n const { text, ...rest } = node;\n Object.assign(marks, rest);\n }\n for (const key in marks) {\n if (!MarkProps.includes(key as MarkTypes)) {\n delete marks[key];\n }\n }\n return marks;\n};\n","import { Element, Editor } from 'slate';\n\nexport const isContainer = (editor: Editor, value: Element) => Element.isElement(value) && editor.isContainer(value);\n","import { CONTAINER_BLOCKS } from '../constants/node-types';\nimport { Editor, Element } from 'slate';\nimport { isContainer } from './is-container-type';\n\nexport const getContainerBlocks = (editor: Editor) => {\n const containerNode = Editor.above<Element>(editor, {\n match: (node: Element) => {\n return Element.isElement(node) && isContainer(editor, node) && !CONTAINER_BLOCKS.includes(node.type);\n }\n });\n return !containerNode ? CONTAINER_BLOCKS : [...CONTAINER_BLOCKS, containerNode[0].type];\n};\n","import { Editor, Path, Point, Range, Text, Transforms } from 'slate';\nimport { MarkTypes } from '../constants';\n\nexport const setMarks = (editor: Editor, marks: { [key in MarkTypes]?: any }, at?: Path | Point | Range) => {\n Transforms.setNodes(editor, marks, {\n at,\n match: Text.isText,\n split: true\n });\n};\n","import { Editor, Range } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { MarkProps, MarkTypes } from '../constants/node-types';\nimport { setMarks } from './set-marks';\n\nexport const clearMarks = (editor: Editor) => {\n const { selection } = editor;\n if (!selection) {\n return;\n }\n\n if (Range.isCollapsed(selection)) {\n const marks = Editor.marks(editor);\n for (const key in marks) {\n Editor.removeMark(editor, key);\n }\n } else {\n const unsetMarks: { [key in MarkTypes]?: null | string } = {};\n MarkProps.forEach(key => {\n unsetMarks[key] = null;\n });\n setMarks(editor, unsetMarks);\n }\n};\n","import { Editor, Element } from 'slate';\nimport { TheEditor } from '../interfaces';\n\nexport const insertElement = (editor: TheEditor, element: Element) => editor.insertElement(element);\n","import { Editor, Range, Path, Transforms, Element } from 'slate';\nimport * as TheQueries from '../queries';\n\nexport const insertElementNext = (editor: Editor, node: Element) => {\n if (Range.isExpanded(editor.selection)) {\n Editor.deleteFragment(editor);\n }\n\n const anchorBlockPath = TheQueries.anchorBlockEntry(editor)[1];\n const isEmpty = TheQueries.isEmptyParagraph(editor);\n const nextPath = Path.next([anchorBlockPath[0]]);\n\n Transforms.insertNodes(editor, node, { at: nextPath });\n\n if (isEmpty && anchorBlockPath.length === 1) {\n Transforms.delete(editor, { at: anchorBlockPath });\n Transforms.select(editor, Editor.start(editor, anchorBlockPath));\n } else {\n Transforms.select(editor, Editor.start(editor, nextPath));\n }\n};\n","import { Editor, Transforms, Element } from 'slate';\nimport * as TheQueries from '../queries';\n\nexport const setNode = (editor: Editor, props: Partial<Element>, origin: Element) => {\n Transforms.setNodes(editor, props, { at: TheQueries.findPath(editor, origin) });\n};\n","import { Editor, Transforms, Element } from 'slate';\nimport { WrapOptions } from '../interfaces';\n\n/**\n * Unwrap nodes by type\n */\nexport const unwrapNodesByType = (editor: Editor, types: string[] | string, options: Omit<WrapOptions, 'match'> = {}) => {\n if (!Array.isArray(types)) {\n types = [types];\n }\n Transforms.unwrapNodes(editor, {\n match: n => Element.isElement(n) && types.includes(n.type as string),\n ...options\n });\n};\n","import isHotkey from 'is-hotkey';\nimport { Editor, Transforms, Element } from 'slate';\nimport { ResetBlockTypePluginOptions } from '../interfaces/reset-block-type-plugin-options';\nimport * as TheQueries from '../queries';\nimport { isCollapsed } from '../queries/is-collapsed';\n\nexport const onKeyDownResetBlockType =\n ({ rules }: ResetBlockTypePluginOptions) =>\n (event: KeyboardEvent | null, editor: Editor) => {\n let reset: boolean | undefined;\n\n if (editor.selection && isCollapsed(editor.selection)) {\n rules.forEach(({ types, defaultType, hotkey, predicate, onReset }) => {\n if (!event || (hotkey && isHotkey(hotkey, event))) {\n if (predicate(editor) && TheQueries.isNodeTypeIn(editor, types)) {\n if (event !== null) {\n event.preventDefault();\n }\n Transforms.setNodes(editor, { type: defaultType } as Element);\n\n onReset(editor);\n\n reset = true;\n }\n }\n });\n }\n\n return reset;\n };\n","import { Editor, Node, NodeEntry, Path, Transforms } from 'slate';\nimport * as TheQueries from '../queries';\n\nexport interface MoveChildrenOptions {\n /**\n * Parent node of the children to move.\n */\n at: NodeEntry | Path;\n\n /**\n * Path where to move the children.\n */\n to: Path;\n\n /**\n * Start index of the children to move.\n * Example: 1 means children[0] will not be moved.\n */\n start?: number;\n\n /**\n * Condition for the child to be moved\n */\n match?(entry: NodeEntry): boolean;\n}\n\n/**\n * 将节点的子级移动到路径。 返回移动的子级数。\n */\nexport const moveChildren = (editor: Editor, { at, to, match, start = 0 }: MoveChildrenOptions) => {\n let moved = 0;\n const parentPath = Path.isPath(at) ? at : at[1];\n const parentNode = Path.isPath(at) ? Node.get(editor, parentPath) : at[0];\n\n if (!Editor.isBlock(editor, parentNode)) return moved;\n\n for (let i = parentNode.children.length - 1; i >= start; i--) {\n const childPath = [...parentPath, i];\n const childNode = TheQueries.getNode(editor, childPath);\n\n if (!match || (childNode && match([childNode, childPath]))) {\n Transforms.moveNodes(editor, { at: childPath, to });\n moved++;\n }\n }\n\n return moved;\n};\n","import { Element } from 'slate';\nimport { ElementKinds } from '../constants/node-types';\nimport { idCreator } from './id-creator';\n\nexport const createEmptyParagraph: () => Element = () => {\n return {\n type: ElementKinds.paragraph,\n key: idCreator(),\n children: [\n {\n text: ''\n }\n ]\n };\n};\n","import { Editor, Location, Transforms } from 'slate';\nimport { createEmptyParagraph } from '../utils/create-empty-paragraph';\n\nexport const insertParagraph = (editor: Editor, at: Location) => {\n Transforms.insertNodes(editor, createEmptyParagraph(), { at });\n};\n","import { Descendant, Node, NodeEntry } from 'slate';\nimport { QueryOptions } from '../interfaces';\nimport * as TheQueries from '../queries';\n\nexport interface ApplyDeepToNodesOptions {\n // The destination node object.\n node: Node;\n // The source object. Can be a factory.\n source: Record<string, any> | (() => Record<string, any>);\n // Function to call on each node following the query.\n apply: (node: Node, source: Record<string, any> | (() => Record<string, any>)) => void;\n // Query to filter the nodes.\n query?: QueryOptions;\n}\n\n/**\n * Recursively apply an operation to children nodes with a query.\n */\nexport const applyDeepToNodes = ({ node, source, apply, query }: ApplyDeepToNodesOptions) => {\n const entry: NodeEntry<Node> = [node, []];\n\n if (TheQueries.isNodeType(entry, query)) {\n if (source instanceof Function) {\n apply(node, source());\n } else {\n apply(node, source);\n }\n }\n\n if (!TheQueries.isAncestor(node)) {\n return;\n }\n\n node.children.forEach((child: Descendant) => {\n applyDeepToNodes({ node: child, source, apply, query });\n });\n};\n","import { _ } from '../utils/lodash';\nimport { applyDeepToNodes, ApplyDeepToNodesOptions } from './apply-deep-to-nodes';\n\n/**\n * Recursively merge a source object to children nodes with a query.\n */\nexport const mergeDeepToNodes = (options: Omit<ApplyDeepToNodesOptions, 'apply'>) => {\n applyDeepToNodes({ ...options, apply: _.defaults });\n};\n","import { Editor, Transforms, Element } from 'slate';\nimport { CustomElementKinds } from '../custom-types';\nimport { ElementKinds } from '../constants/node-types';\n\nexport const unWrap = (editor: Editor, kind: CustomElementKinds) => {\n Editor.withoutNormalizing(editor, () => {\n Transforms.setNodes(editor, { type: ElementKinds.paragraph });\n Transforms.unwrapNodes(editor, {\n match: n => Element.isElement(n) && n.type === kind,\n split: true\n });\n });\n};\n","import { Transforms, Path, Editor, Element, NodeEntry } from 'slate';\nimport { CustomElementKinds } from '../custom-types';\nimport * as TheQueries from '../queries';\n\nexport const splitNode = (editor: Editor, indivisibleTypes: CustomElementKinds[]): Path => {\n const { selection } = editor;\n const indivisibleType = indivisibleTypes && indivisibleTypes.find(item => TheQueries.getAboveByType(editor, item, { mode: 'highest' }));\n let splitPath: Path;\n if (!indivisibleType) {\n Transforms.splitNodes(editor, {\n always: true,\n mode: 'highest'\n });\n splitPath = [selection.anchor.path[0]];\n } else {\n Transforms.splitNodes(editor, {\n always: true,\n mode: 'highest',\n match: (data: Element) => {\n if (data.type && !indivisibleTypes.includes(data.type)) {\n const [node] = TheQueries.getNodesByType(editor, data.type, { at: selection });\n const parentNode = Editor.parent(editor, node[1]) as NodeEntry<Element>;\n if (indivisibleTypes.includes(parentNode[0].type)) {\n splitPath = node[1];\n return true;\n }\n }\n }\n });\n }\n return splitPath;\n};\n","import { Editor, Element, Transforms, Path } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { createEmptyParagraph } from '../utils/create-empty-paragraph';\nimport * as TheQueries from '../queries';\n\nexport const deleteElement = (editor: Editor, element: Element) => {\n const at = TheQueries.findPath(editor, element);\n Transforms.insertNodes(editor, createEmptyParagraph(), { at });\n AngularEditor.focus(editor);\n Transforms.select(editor, at);\n Transforms.removeNodes(editor, { at: Path.next(at) });\n};\n","import { Editor, Transforms } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { getLastNode } from '../queries/get-last-node';\n\nexport const setEndSelection = (editor: Editor) => {\n const lastNode = getLastNode(editor, 1);\n const end = Editor.end(editor, lastNode[1]);\n Transforms.select(editor, end);\n AngularEditor.focus(editor);\n};\n","import { Editor, Element, Range, Path, Transforms } from 'slate';\nimport * as TheQueries from '../queries';\n\nexport const insertTheElements = (editor: Editor, nodes: Element[]) => {\n if (Range.isExpanded(editor.selection)) {\n Editor.deleteFragment(editor);\n }\n const isEmptyParagraph = TheQueries.isEmptyParagraph(editor, editor.selection.anchor);\n const parentPath = Path.parent(editor.selection.anchor.path);\n Editor.withoutNormalizing(editor, () => {\n Transforms.insertNodes(editor, nodes);\n if (parentPath.length && isEmptyParagraph) {\n Transforms.delete(editor, { at: parentPath });\n const lastPath = parentPath.pop();\n Transforms.select(editor, Editor.end(editor, [...parentPath, lastPath + nodes.length - 1]));\n } else {\n const lastPath = parentPath.pop();\n Transforms.select(editor, Editor.end(editor, [...parentPath, lastPath + nodes.length]));\n }\n });\n};\n","import { ThyPopoverRef } from 'ngx-tethys/popover';\nimport { Editor } from 'slate';\n\nexport const THE_EDITOR_UUID = new WeakMap<Editor, string>();\n\nexport const THE_EDITOR_CONVERSION_HINT_REF: WeakMap<Editor, ThyPopoverRef<any>> = new WeakMap();\n","import { Editor } from 'slate';\nimport { THE_EDITOR_CONVERSION_HINT_REF } from '../utils/weak-maps';\n\nexport const closeConversionHint = (editor: Editor) => {\n const hintRef = THE_EDITOR_CONVERSION_HINT_REF.get(editor);\n if (hintRef) {\n hintRef.close();\n }\n};\n","import { CustomElementKinds } from '../custom-types';\nimport { Editor, Element, NodeEntry } from 'slate';\nimport * as TheQueries from '../queries';\nimport { unWrap } from './un-wrap';\nimport { BlockElementKinds } from '../interfaces/element';\n\nexport function handleContinualDeleteBackward(editor: Editor, aboveResult: NodeEntry<Element>, type: CustomElementKinds) {\n const highestBlock = aboveResult[0];\n const lowestBlock = TheQueries.anchorBlock(editor);\n const wrapBlockType = highestBlock.type as BlockElementKinds;\n if (lowestBlock && Editor.isStart(editor, editor.selection.anchor, aboveResult[1])) {\n if (wrapBlockType === type) {\n if (highestBlock.children[0] === lowestBlock) {\n unWrap(editor, wrapBlockType);\n return true;\n }\n }\n }\n return false;\n}\n","import { CustomElementKinds } from '../custom-types';\nimport { Editor, Element } from 'slate';\nimport { unWrap } from './un-wrap';\n\nexport function handleContinualInsertBreak(editor: Editor, lowestBlock: Element, type: CustomElementKinds) {\n const isEmpty = Editor.isEmpty(editor, lowestBlock);\n const isEnd = Editor.isEnd(editor, editor.selection.anchor, editor.selection.focus.path);\n const aboveResult = Editor.above<Element>(editor, {\n match: n => Editor.isBlock(editor, n) && n.type === type\n });\n\n if (isEnd) {\n editor.marks = {};\n }\n\n if (aboveResult && aboveResult[0] && isEnd && isEmpty) {\n const wrapBlock = aboveResult[0];\n if (wrapBlock.type === type) {\n if (wrapBlock.children[wrapBlock.children.length - 1] === lowestBlock) {\n unWrap(editor, wrapBlock.type);\n return true;\n }\n }\n }\n return false;\n}\n","import { Element, Node } from 'slate';\nimport { ElementKinds } from '../../../constants/node-types';\n\nexport const isNodeTypeList = (n: Node): n is Element => {\n return [ElementKinds.bulletedList, ElementKinds.numberedList].includes((n as Element).type);\n};\n","import { Transforms, Node, Editor, Path, Element } from 'slate';\nimport { ElementKinds, LIST_BLOCK_TYPES } from '../../constants/node-types';\nimport * as TheQueries from '../../queries';\nimport * as TheTransforms from '../../transforms';\nimport { isNodeTypeList } from './queries/is-node-type-list';\n\nexport const ListEditor = {\n isList(editor: Editor, element: Element, type: ElementKinds.bulletedList | ElementKinds.numberedList) {\n return Editor.isBlock(editor, element) && element.type === type;\n },\n toggleList(editor: Editor, type: ElementKinds.bulletedList | ElementKinds.numberedList, startIndex?: number) {\n if (!editor.selection) {\n return;\n }\n if (!startIndex) {\n startIndex = 1;\n }\n const types = [ElementKinds.bulletedList, ElementKinds.numberedList];\n\n Editor.withoutNormalizing(editor, () => {\n const [...listItems] = Editor.nodes(editor, {\n match: node => Element.isElement(node) && node.type === ElementKinds.listItem,\n mode: 'lowest'\n });\n const firstListItemPath = listItems.length && listItems[0][1];\n const activeListPath = listItems.length && Path.parent(firstListItemPath);\n const activeListNode = listItems.length && (Node.get(editor, activeListPath) as Element);\n\n // 同级且类型相同:unwrap\n const isLowestActive =\n listItems.length &&\n listItems.every(\n ([, path]) =>\n activeListNode.type === type && (Path.isSibling(firstListItemPath, path) || Path.equals(firstListItemPath, path))\n );\n if (isLowestActive) {\n const upListItem = Path.parent(activeListPath);\n Transforms.unwrapNodes(editor, {\n at: editor.selection,\n match: node => node === activeListNode,\n split: true,\n mode: 'lowest'\n });\n if (upListItem && (Node.get(editor, upListItem) as Element).type === ElementKinds.listItem) {\n Transforms.moveNodes(editor, {\n at: editor.selection,\n to: Path.next(upListItem),\n match: node => Element.isElement(node) && node.type === ElementKinds.listItem\n });\n } else {\n Transforms.unwrapNodes(editor, {\n match: node => Element.isElement(node) && node.type === ElementKinds.listItem\n });\n }\n return;\n }\n\n // 跨级、同级且类型不同\n if (activeListNode && types.includes(activeListNode.type)) {\n Transforms.setNodes(\n editor,\n { type },\n { match: node => Element.isElement(node) && node.type !== type && types.includes(node.type) }\n );\n return;\n }\n\n // wrap\n this.buildListItem(editor);\n // Todo: types\n Transforms.wrapNodes(editor, { type, children: [], start: startIndex } as any, {\n at: editor.selection,\n match: node => Element.isElement(node) && node.type === ElementKinds.listItem\n });\n });\n },\n unwrapList(editor: Editor) {\n Editor.withoutNormalizing(editor, () => {\n TheTransforms.unwrapNodesByType(editor, [ElementKinds.bulletedList, ElementKinds.numberedList], { split: true, mode: 'all' });\n TheTransforms.unwrapNodesByType(editor, [ElementKinds.listItem], { split: true, mode: 'all' });\n });\n },\n wrapList(editor: Editor, type: ElementKinds.bulletedList | ElementKinds.numberedList) {\n Editor.withoutNormalizing(editor, () => {\n const listItem: Element = {\n type: ElementKinds.listItem,\n children: []\n };\n const list = {\n type,\n children: []\n };\n Transforms.wrapNodes(editor, list, { split: true });\n Transforms.wrapNodes(editor, listItem, { split: true });\n });\n },\n isActive(editor: Editor, type: ElementKinds.bulletedList | ElementKinds.numberedList) {\n const [match] = TheQueries.getNodesByType(editor, type);\n return !!match;\n },\n getActiveList(editor: Editor) {\n const [match] = TheQueries.getNodesByType(editor, LIST_BLOCK_TYPES);\n return match;\n },\n buildListItem(editor: Editor) {\n const nodes = Editor.nodes(editor, {\n match: node => Editor.isBlock(editor, node),\n mode: 'lowest'\n });\n for (const [node, path] of nodes) {\n if (!Editor.isVoid(editor, node) && Element.isElement(node) && node.type !== ElementKinds.paragraph) {\n Transforms.setNodes(\n editor,\n { type: ElementKinds.paragraph, checked: undefined } as any, // todo remove checked\n { at: path }\n );\n }\n if ((Node.parent(editor, path) as Element).type !== ElementKinds.listItem) {\n Transforms.wrapNodes(\n editor,\n { type: ElementKinds.listItem, children: [] },\n {\n at: path,\n split: true\n }\n );\n }\n }\n },\n buildInsertDataChildren(node: Element) {\n const { children } = node;\n const listItem = children[0];\n if (isNodeTypeList(node) && Element.isElement(listItem) && (listItem.children[0] as Element).type === ElementKinds.paragraph) {\n return node;\n }\n\n return this.buildInsertDataChildren(listItem);\n }\n};\n","import { Editor, Transforms } from 'slate';\nimport { ElementKinds } from '../../constants/node-types';\nimport * as TheQueries from '../../queries';\nimport { ListEditor } from '../list/list.editor';\n\nexport const TodoItemEditor = {\n isActive(editor: Editor) {\n const [match] = TheQueries.getNodesByType(editor, ElementKinds.checkItem);\n return !!match;\n },\n insertTodoItem(editor: Editor) {\n if (!editor.selection) {\n return;\n }\n const isActive = this.isActive(editor);\n const isNumberedList = ListEditor.isActive(editor, ElementKinds.numberedList);\n const isBulletedList = ListEditor.isActive(editor, ElementKinds.bulletedList);\n\n if (isActive) {\n Transforms.setNodes(editor, {\n type: ElementKinds.paragraph\n });\n } else {\n if (isNumberedList || isBulletedList) {\n ListEditor.unwrapList(editor);\n }\n Transforms.setNodes(editor, {\n type: ElementKinds.checkItem\n });\n }\n }\n};\n","import { Editor, Transforms, Element, Node } from 'slate';\nimport { ElementKinds } from '../../constants/node-types';\nimport * as TheQueries from '../../queries';\n\nexport const BlockquoteEditor = {\n toggleBlockquote(editor: Editor) {\n if (!TheQueries.isParagraph(editor)) {\n Transforms.insertNodes(editor, {\n type: ElementKinds.paragraph,\n mode: 'text',\n children: [\n {\n text: ''\n }\n ]\n } as Node);\n }\n const isActive = TheQueries.isBlockActive(editor, ElementKinds.blockquote);\n if (!isActive) {\n Transforms.wrapNodes(\n editor,\n { type: ElementKinds.blockquote, children: [] },\n {\n mode: 'lowest'\n }\n );\n } else {\n Transforms.unwrapNodes(editor, { match: n => Element.isElement(n) && n.type === ElementKinds.blockquote });\n }\n }\n};\n","import { Editor } from 'slate';\nimport { AutoFormatRule } from '../interfaces/auto-format';\nimport { MarkTypes, ElementKinds } from './node-types';\nimport * as TheQueries from '../queries';\nimport { ListEditor } from '../plugins/list/list.editor';\nimport { TodoItemEditor } from '../plugins/todo-item/todo-item.editor';\nimport { BlockquoteEditor } from '../plugins/blockquote/blockquote.editor';\n\nexport const autoFormatRules: AutoFormatRule[] = [\n {\n type: ElementKinds.heading_1,\n markup: '#'\n },\n {\n type: ElementKinds.heading_2,\n markup: '##'\n },\n {\n type: ElementKinds.heading_3,\n markup: '###'\n },\n {\n type: ElementKinds.heading_4,\n markup: '####'\n },\n {\n type: ElementKinds.heading_5,\n markup: '#####'\n },\n {\n type: ElementKinds.heading_6,\n markup: '######'\n },\n {\n type: ElementKinds.blockquote,\n markup: ['>'],\n format: (editor: Editor) => {\n BlockquoteEditor.toggleBlockquote(editor);\n }\n },\n {\n type: MarkTypes.bold,\n between: ['**', '**'],\n mode: 'inline',\n insertTrigger: true\n },\n {\n type: MarkTypes.bold,\n between: ['__', '__'],\n mode: 'inline',\n insertTrigger: true\n },\n {\n type: MarkTypes.italic,\n between: ['*', '*'],\n mode: 'inline',\n insertTrigger: true\n },\n {\n type: MarkTypes.italic,\n between: ['_', '_'],\n mode: 'inline',\n insertTrigger: true\n },\n {\n type: MarkTypes.codeLine,\n between: ['`', '`'],\n mode: 'inline',\n insertTrigger: true\n },\n {\n type: MarkTypes.strike,\n between: ['~~', '~~'],\n mode: 'inline',\n insertTrigger: true\n },\n {\n type: ElementKinds.code,\n markup: '```',\n insertTrigger: true\n },\n {\n type: ElementKinds.listItem,\n markup: [],\n match: (editor: Editor) => {\n return TheQueries.isParagraph(editor) ? ['*', '-', '+'] : [];\n },\n format: (editor: Editor) => {\n ListEditor.toggleList(editor, ElementKinds.bulletedList);\n }\n },\n {\n type: ElementKinds.listItem,\n markup: [],\n match: (editor: Editor, textFromBlockStart: string) => {\n return TheQueries.isParagraph(editor) && /^-?\\d+(\\.|\\))$/.test(textFromBlockStart) ? [textFromBlockStart] : [];\n },\n format: (editor: Editor, markup?: string[]) => {\n let startIndex = 1;\n if (markup) {\n startIndex = markup[0].split('.')[0] as unknown as number;\n if (startIndex === 0) {\n startIndex = 1;\n }\n }\n ListEditor.toggleList(editor, ElementKinds.numberedList, startIndex);\n }\n },\n {\n type: ElementKinds.checkItem,\n markup: [],\n match: (editor: Editor) => {\n return TheQueries.isParagraph(editor) ? ['[]'] : [];\n },\n format: (editor: Editor) => {\n TodoItemEditor.insertTodoItem(editor);\n }\n },\n {\n type: ElementKinds.hr,\n markup: '---',\n insertTrigger: true\n }\n];\n","import { Editor } from 'slate';\n\nexport const UNDOING = new WeakMap<Editor, boolean | undefined>();\nexport const REDOING = new WeakMap<Editor, boolean | undefined>();\n\nexport const withTheHistory = (editor: Editor): Editor => {\n const { undo, redo } = editor;\n\n editor.undo = () => {\n UNDOING.set(editor, true);\n undo();\n UNDOING.set(editor, false);\n };\n editor.redo = () => {\n REDOING.set(editor, true);\n redo();\n REDOING.set(editor, false);\n };\n\n return editor;\n};\n\nexport const TheHistoryEditor = {\n isUndoing(editor: Editor): boolean | undefined {\n return UNDOING.get(editor);\n },\n isRedoing(editor: Editor): boolean | undefined {\n return REDOING.get(editor);\n }\n};\n","import { ChangeDetectionStrategy, Component, HostListener, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Editor } from 'slate';\nimport * as TheTransforms from '../../transforms';\n\n@Component({\n selector: 'the-conversion-hint',\n templateUrl: 'conversion-hint.component.html',\n host: {\n class: 'the-conversion-hint'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TheConversionHintComponent implements OnInit, OnDestroy {\n @Input() editor: Editor;\n\n @Input() conversion: () => void;\n\n duration = 10000;\n pauseOnHover = true;\n closeTimer: any;\n\n @HostListener('mouseenter') mouseenter() {\n if (this.pauseOnHover) {\n this.clearCloseTimer();\n }\n }\n\n @HostListener('mouseleave') mouseleave() {\n if (this.pauseOnHover) {\n this.creatCloseTimer();\n }\n }\n\n ngOnInit() {\n this.creatCloseTimer();\n }\n\n ngOnDestroy() {\n this.clearCloseTimer();\n }\n\n creatCloseTimer() {\n this.closeTimer = setInterval(() => {\n clearInterval(this.closeTimer);\n TheTransforms.closeConversionHint(this.editor);\n }, this.duration);\n }\n\n clearCloseTimer() {\n clearInterval(this.closeTimer);\n }\n}\n","<ng-container>\n <thy-alert\n thyType=\"primary-weak\"\n thyIcon=\"info-circle-fill\"\n thyCloseable=\"true\"\n thyMessage=\"检测到粘贴内容符合Markdown语法\"\n >\n <ng-template #operation>\n <a href=\"javascript:;\" thyAlertActionItem (click)=\"conversion()\">\n 立即转换\n </a>\n </ng-template>\n </thy-alert>\n</ng-container>\n","import { Descendant } from 'slate';\nimport { TheiaConverter } from '@atinc/selene';\nimport { ElementKinds } from '../constants';\nimport { TheDataMode } from '../interfaces';\nimport { createEmptyParagraph } from './create-empty-paragraph';\n\nexport function plainToTheia(text: string): Descendant[] {\n if (typeof text !== 'string') {\n return text;\n }\n return text.split('\\n').map(i => {\n return {\n type: ElementKinds.paragraph,\n children: [\n {\n text: i\n }\n ]\n };\n });\n}\n\nexport function htmlToTheia(value: string): Descendant[] {\n if (typeof value === 'string') {\n const htmlDom = new DOMParser().parseFromString(value, 'text/html');\n return TheiaConverter.convertToTheia(Array.from(htmlDom.body.children));\n }\n return value;\n}\n\nexport function dataDeserialize(mode: TheDataMode, value: Descendant[] | string): Descendant[] {\n if (!value) {\n return [createEmptyParagraph()];\n }\n if (mode === TheDataMode.html) {\n if (typeof value !== 'string') {\n return value;\n }\n if (/<[^>]+>/.test(value)) {\n return htmlToTheia(value);\n }\n return plainToTheia(value);\n }\n return (value as Descendant[]) || [createEmptyParagraph()];\n}\n\nexport function dataSerializing(mode: TheDataMode, value: Descendant[]): string | Descendant[] {\n if (mode === TheDataMode.html) {\n return TheiaConverter.convertToHtml(value as any);\n }\n return value;\n}\n","import { Editor } from 'slate';\nimport { THE_EDITOR_UUID } from './weak-maps';\n\nexport const getEditorUUID = (editor: Editor) => {\n return THE_EDITOR_UUID.get(editor);\n};\n\nexport const setEditorUUID = (editor: Editor, uuid: string) => {\n THE_EDITOR_UUID.set(editor, uuid);\n};\n","import { Editor } from 'slate';\nimport { getEditorUUID } from './editor-uuid';\n\nexport const getToolbarClass = (editor: Editor) => {\n const uuid = getEditorUUID(editor);\n return `the-toolbar-${uuid}`;\n};\n","import { ChangeDetectorRef, ViewContainerRef } from '@angular/core';\nimport { Editor, Element, Node, Text, Transforms } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport marked from 'marked';\nimport { TheiaConverter } from '@atinc/selene';\nimport { ThyPopover } from 'ngx-tethys/popover';\nimport { CLIPBOARD_FORMAT_KEY, ElementKinds } from '../../constants';\nimport * as TheTransforms from '../../transforms';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { TheConversionHintComponent } from '../../components/conversion-hint/conversion-hint.component';\nimport { THE_EDITOR_CONVERSION_HINT_REF, getToolbarClass } from '../../utils';\n\nexport const withDeserializeMd = (options?: Record<string, any>) => (editor: Editor) => {\n const { insertData, onKeydown } = editor;\n\n editor.onKeydown = (event: KeyboardEvent) => {\n TheTransforms.closeConversionHint(editor);\n onKeydown(event);\n };\n\n editor.insertData = (data: DataTransfer) => {\n const popover = editor.injector.get(ThyPopover);\n const viewContainerRef = editor.injector.get(ViewContainerRef);\n const cdr = editor.injector.get(ChangeDetectorRef);\n\n const plainFragment = data.getData('text/plain');\n const slateFragment = data.getData(`application/${CLIPBOARD_FORMAT_KEY}`);\n const oldRange = editor.selection;\n TheTransforms.closeConversionHint(editor);\n\n if (plainFragment && isMarkdownStynx(plainFragment) && !slateFragment) {\n setTimeout(() => {\n const overlay = editor.injector.get(Overlay);\n const bodyElement = document.body;\n const toolbarClass = getToolbarClass(editor);\n const toolbarElement = document.querySelector(`.${toolbarClass}`) as HTMLElement;\n const origin = toolbarElement ? toolbarElement : bodyElement;\n const placement = toolbarElement ? 'top' : 'topRight';\n\n const hintPopverRef = popover.open(TheConversionHintComponent, {\n initialState: {\n editor,\n conversion: () => {\n try {\n const html = marked(plainFragment, { gfm: true });\n const htmlDom = new DOMParser().parseFromString(html, 'text/html');\n const fragment = TheiaConverter.convertToTheia(Array.from(htmlDom.body.children));\n\n if (!isUnformatted(fragment)) {\n TheTransforms.closeConversionHint(editor);\n\n editor.undo();\n\n setTimeout(() => {\n Transforms.select(editor, oldRange);\n TheTransforms.insertTheElements(editor, fragment);\n AngularEditor.focus(editor);\n });\n return;\n }\n } catch (error) {}\n }\n },\n origin,\n viewContainerRef,\n placement,\n offset: -100,\n hasBackdrop: false,\n backdropClosable: false,\n closeOnNavigation: false,\n scrollStrategy: overlay.scrollStrategies.reposition()\n });\n THE_EDITOR_CONVERSION_HINT_REF.set(editor, hintPopverRef);\n cdr.markForCheck();\n });\n }\n\n insertData(data);\n };\n return editor;\n};\n\nconst isUnformatted = (elements: Element[]) => {\n return elements.every(\n element =>\n element.type === ElementKinds.default &&\n element.children.every((node: Node) => {\n return Text.isText(node) && Object.keys(node).length === 1;\n })\n );\n};\n\nconst isMarkdownStynx = content => {\n // https://github.com/Chalarangelo/parse-md-js/blob/master/parsemd.js\n const codeBlockRegex = /((\\n\\t)(.*))+/g;\n const inlineCodeRegex = /(`)(.*?)\\1/g;\n const imageRegex = /!\\[([^\\[]+)\\]\\(([^\\)]+)\\)/g;\n const linkRegex = /\\[([^\\[]+)\\]\\(([^\\)]+)\\)/g;\n const headingRegex = /(#+\\s*)(.*)/g;\n const boldItalicsRegex = /(\\*{1,2})(\\S+)\\1/g;\n const strikethroughRegex = /(\\~\\~)(.*?)\\1/g;\n const blockquoteRegex = /\\n(>|\\>)(.*)/g;\n const horizontalRuleRegex = /\\n((\\-{3,})|(={3,}))/g;\n const unorderedListRegex = /(\\n\\s*(\\-|\\+)\\s.*)+/g;\n const orderedListRegex = /(\\n\\s*([0-9]+\\.)\\s.*)+/g;\n const paragraphRegex = /\\n+(?!<pre>)(?!<h)(?!<ul>)(?!<blockquote)(?!<hr)(?!\\t)([^\\n]+)\\n/g;\n // from marked\n const table =\n /^\\s*([^\\s].*\\|.*)\\s{0,3}(?:\\|\\s*)?(:?-+:?\\s*(?:\\|\\s*:?-+:?\\s*)*)\\|?(?:\\s*((?:(?!|hr|heading|blockquote|code|fences|list|html).*(?:|$))*)*|$)/g;\n const regexps = [\n inlineCodeRegex,\n imageRegex,\n linkRegex,\n headingRegex,\n boldItalicsRegex,\n strikethroughRegex,\n blockquoteRegex,\n horizontalRuleRegex,\n unorderedListRegex,\n orderedListRegex,\n table\n ];\n return regexps.some(regexp => regexp.test(content));\n};\n","import { Editor, Path, Transforms } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { ElementKinds, ELEMENT_UNIQUE_ID } from '../../constants';\nimport * as TheQueries from '../../queries';\nimport { DefaultElementOptions, ElementOptionsInfo } from '../../interfaces';\nimport * as TheTransforms from '../../transforms';\nimport { extractFragment } from '../../utils/fragment';\n\nexport const withAutoInsertData = (validChildren?: ElementOptionsInfo[]) => (editor: Editor) => {\n const { insertData } = editor;\n let allElementOptions = DefaultElementOptions;\n if (validChildren?.length) {\n const validInfo = mergeElementOptions(validChildren);\n allElementOptions = Object.values(validInfo);\n }\n\n editor.insertData = (data: DataTransfer) => {\n if (editor.extraElementOptions?.length) {\n const extraInfo = mergeElementOptions(editor.extraElementOptions);\n allElementOptions = Object.values(extraInfo);\n }\n const indivisibleTypes = allElementOptions.filter(item => item.isIndivisible).map(item => item.type);\n const fragment = extractFragment(data, ELEMENT_UNIQUE_ID);\n if (fragment) {\n if (TheQueries.isAcrossBlocks(editor, fragment) || Editor.isVoid(editor, fragment[0])) {\n const { selection } = editor;\n const [start] = Editor.edges(editor, selection);\n // query whether there is a node to be verified\n const tryVerifyNode = allElementOptions.find(item =>\n TheQueries.getAboveByType(editor, item.type, { at: start, mode: 'lowest' })\n );\n if (tryVerifyNode) {\n // is exist invalid element type in fragment\n const invalidIndex = fragment.findIndex(item => tryVerifyNode.inValidChildrenTypes.includes(item.type));\n if (invalidIndex > -1) {\n const validFragmentData = fragment.slice(0, invalidIndex);\n const invalidFragmentData = fragment.slice(invalidIndex, fragment.length);\n Editor.withoutNormalizing(editor, () => {\n if (validFragmentData.length > 0) {\n validFragmentData.forEach(item => {\n Transforms.insertNodes(editor, item);\n });\n }\n // split node\n const path = TheTransforms.splitNode(editor, indivisibleTypes);\n Transforms.insertNodes(editor, invalidFragmentData, {\n at: Path.next(path)\n });\n });\n return;\n }\n }\n Editor.withoutNormalizing(editor, () => {\n const isEmptyParagraph = TheQueries.isEmptyParagraph(editor, editor.selection.anchor);\n const emptyPath = Path.parent(editor.selection.anchor.path);\n Transforms.insertNodes(editor, fragment);\n if (isEmptyParagraph) {\n Transforms.delete(editor, { at: emptyPath });\n const lastPath = emptyPath.pop();\n Transforms.select(editor, [...emptyPath, lastPath + fragment.length - 1]);\n } else {\n const lastPath = emptyPath.pop();\n Transforms.select(editor, [...emptyPath, lastPath + fragment.length]);\n }\n AngularEditor.focus(editor);\n Transforms.collapse(editor, { edge: 'end' });\n });\n return;\n }\n }\n insertData(data);\n };\n\n return editor;\n};\n\nconst mergeElementOptions = (elementOptions: ElementOptionsInfo[]) => {\n elementOptions = elementOptions.filter(item => item.inValidChildrenTypes.length > 0);\n const combinationData = [...DefaultElementOptions, ...elementOptions];\n const dataInfo = {};\n combinationData.forEach(item => {\n const { type, inValidChildrenTypes, isIndivisible } = item;\n if (!dataInfo[type]) {\n dataInfo[type] = {\n type,\n inValidChildrenTypes,\n isIndivisible\n };\n }\n dataInfo[type].inValidChildrenTypes = Array.from(new Set([...inValidChildrenTypes, ...dataInfo[type].inValidChildrenTypes]));\n });\n return dataInfo;\n};\n","import { Path, Node, Editor, Transforms, Element } from 'slate';\nimport { HistoryEditor } from 'slate-history';\nimport { HEADING_TYPES } from '../../constants';\nimport * as TheQueries from '../../queries';\n\nexport const withRemoveEmpty = (editor: Editor): Editor => {\n const { deleteBackward, deleteForward } = editor;\n\n editor.deleteBackward = unit => {\n const { selection } = editor;\n const anchorBlock = TheQueries.anchorBlock(editor);\n\n if (!anchorBlock) {\n deleteBackward(unit);\n return;\n }\n\n // delete empty paragraphs or empty headings, the default operation is to delete before the void node\n const parentPath = Path.parent(editor.selection.anchor.path);\n const isEmptyHeading = HEADING_TYPES.includes(anchorBlock.type) && Editor.isEmpty(editor, anchorBlock);\n const isEmptyParagraph = TheQueries.isEmptyParagraph(editor, editor.selection.anchor);\n if (\n (isEmptyParagraph || isEmptyHeading) &&\n parentPath[parentPath.length - 1] > 0 &&\n Editor.isVoid(editor, Node.get(editor, Path.previous(parentPath)))\n ) {\n Transforms.delete(editor, { at: editor.selection.anchor.path.slice(0, editor.selection.anchor.path.length - 1) });\n return;\n }\n // just remove inline node when before inline node text length is 1, default action is remove current the block above inline node\n if (selection.anchor.path[selection.anchor.path.length - 1] > 0 && selection.anchor.offset === 0) {\n const beforePoint = Editor.before(editor, editor.selection);\n const inlineEntry = Editor.above<Element>(editor, {\n at: beforePoint,\n match: n => Editor.isInline(editor, n) && !Editor.isVoid(editor, n)\n });\n if (inlineEntry && Editor.string(editor, inlineEntry[1]).length === 1) {\n Transforms.removeNodes(editor, { at: inlineEntry[1] });\n return;\n }\n }\n deleteBackward(unit);\n };\n\n editor.deleteForward = unit => {\n const anchorBlockEntry = TheQueries.anchorBlockEntry(editor);\n if (\n anchorBlockEntry &&\n TheQueries.isAncestorEmpty(editor, anchorBlockEntry[0]) &&\n TheQueries.getNode(editor, Path.next(anchorBlockEntry[1]))\n ) {\n const pathRef = Editor.pathRef(editor, Path.parent(editor.selection.anchor.path));\n HistoryEditor.withoutMerging(editor, () => {\n Transforms.move(editor);\n });\n Transforms.delete(editor, { at: pathRef.unref() });\n return;\n }\n deleteForward(unit);\n };\n\n return editor;\n};\n","import { Editor, Range } from 'slate';\nimport { hotkeys, IS_SAFARI } from 'slate-angular';\nimport { BLOCK_DELETEBACKWARD_TYPES } from '../../constants';\nimport * as TheQueries from '../../queries';\n\nexport const withResetType = (editor: Editor): Editor => {\n const { onKeydown } = editor;\n\n editor.onKeydown = (event: KeyboardEvent) => {\n const { selection } = editor;\n\n if (IS_SAFARI && selection && Range.isCollapsed(selection) && hotkeys.isDeleteBackward(event)) {\n const blockEntry = TheQueries.getAboveByType(editor, BLOCK_DELETEBACKWARD_TYPES);\n if (blockEntry && blockEntry[0]) {\n const isStart = Editor.isStart(editor, selection.anchor, blockEntry[1]);\n if (isStart) {\n event.preventDefault();\n Editor.deleteBackward(editor);\n return;\n }\n }\n if (Editor.isStart(editor, selection.anchor, [0])) {\n event.preventDefault();\n Editor.deleteBackward(editor);\n return;\n }\n }\n onKeydown(event);\n };\n\n return editor;\n};\n","import { Injectable, NgZone, ViewContainerRef } from '@angular/core';\nimport { fromEvent, Observable } from 'rxjs';\nimport { MarkTypes } from '../constants/node-types';\n\nexport interface TheContextOptions {\n width?: number;\n nativeElement: HTMLElement;\n viewContainerRef: ViewContainerRef;\n}\n\ninterface PaintFormatStatus {\n isActive: boolean;\n marks: { [key in MarkTypes]?: any };\n}\n\n@Injectable()\nexport class TheContextService {\n private options: TheContextOptions;\n\n fileList: { url: string; file: File }[] = [];\n\n public paintFormatStatus: PaintFormatStatus = {\n isActive: false,\n marks: {}\n };\n\n public onMouseUp$: Observable<MouseEvent>;\n\n public onMouseMove$: Observable<MouseEvent>;\n\n public onMouseDown$: Observable<MouseEvent>;\n\n constructor(private ngZone: NgZone) {\n this.ngZone.runOutsideAngular(() => {\n this.onMouseUp$ = fromEvent<MouseEvent>(window, `mouseup`);\n this.onMouseMove$ = fromEvent<MouseEvent>(window, `mousemove`);\n this.onMouseDown$ = fromEvent<MouseEvent>(window, `mousedown`);\n });\n }\n\n public initialize(options: TheContextOptions) {\n this.options = options;\n }\n\n public getOptions() {\n if (!this.options.width) {\n this.options.width = (this.options.nativeElement.querySelector('.slate-editable-container') as HTMLDivElement).offsetWidth - 30;\n }\n return this.options;\n }\n\n setUploadFileList(file: { url: string; file: File }) {\n this.fileList.push(file);\n }\n\n removeUploadImage(file: File) {\n this.fileList.splice(\n this.fileList.findIndex(item => item.file === file),\n 1\n );\n }\n}\n","import { Component, OnInit, ElementRef, ViewChild, OnDestroy, Inject, AfterViewInit, ChangeDetectorRef } from '@angular/core';\nimport { AngularEditor, BeforeContextChange, SlateElementContext } from 'slate-angular';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ImageEntry, THE_UPLOAD_SERVICE_TOKEN, TheImageUploaderService } from '../../interfaces/image';\nimport { Alignment, ElementKinds } from '../../constants/node-types';\nimport { HistoryEditor } from 'slate-history';\nimport { Transforms, Editor } from 'slate';\nimport { Subscription } from 'rxjs/internal/Subscription';\nimport { map } from 'rxjs/operators';\nimport { ThyUploadStatus } from 'ngx-tethys/uploader';\nimport { TheContextService } from '../../services/context.service';\nimport { TheBaseElementComponent } from '../../interfaces';\nimport { ImageElement } from '../../custom-types';\n\ndeclare const $: any;\n\n@Component({\n selector: 'the-image, [theImage]',\n templateUrl: './image.component.html'\n})\nexport class TheImageComponent\n extends TheBaseElementComponent<ImageElement, Editor>\n implements OnInit, OnDestroy, AfterViewInit, BeforeContextChange<SlateElementContext>\n{\n imageEntry: ImageEntry = {};\n\n uploading = false;\n\n percentage = 0;\n\n file: File;\n\n private uploadingSubscription: Subscription;\n\n private mouseMoveSubscription: Subscription;\n\n private mouseUpSubscription: Subscription;\n\n private dragable = false;\n\n @ViewChild('imageContent')\n imageContent: ElementRef;\n\n @ViewChild('img', { static: false })\n img: ElementRef;\n\n constructor(\n public elementRef: ElementRef,\n public sanitizer: DomSanitizer,\n @Inject(THE_UPLOAD_SERVICE_TOKEN)\n private imageUploaderService: TheImageUploaderService,\n public cdr: ChangeDetectorRef,\n private theContextService: TheContextService\n ) {\n super(elementRef, cdr);\n }\n\n beforeContextChange = (value: SlateElementContext<ImageElement>) => {\n if (value.element !== this.element && value.element.thumbUrl) {\n this.imageEntry = {\n name: value.element.name,\n width: value.element.width,\n height: value.element.height,\n thumbUrl: value.element.thumbUrl,\n originUrl: value.element.originUrl,\n align: value.element.align || Alignment.center\n };\n }\n };\n\n ngOnInit() {\n this.file = this.theContextService.fileList.find(item => item.url === this.element.url)?.file;\n if (this.file && this.file instanceof File) {\n this.uploadImage(this.file);\n }\n super.ngOnInit();\n }\n\n ngOnDestroy() {\n this.uploadingSubscription.unsubscribe();\n this.mouseUpSubscription.unsubscribe();\n super.ngOnDestroy();\n }\n\n ngAfterViewInit() {\n this.mouseUpSubscription = this.theContextService.onMouseUp$.subscribe(e => this.endDrag(e));\n this.uploadingSubscription = this.imageUploaderService\n .getUploadingItems$()\n .pipe(map(fileUploadingItem => this.file && fileUploadingItem.find(item => item.file === this.file)))\n .subscribe(uploadingItem => {\n if (!uploadingItem || !uploadingItem.result) {\n return;\n }\n this.percentage = uploadingItem.result.uploadFile.progress.percentage;\n if (uploadingItem.result.status === ThyUploadStatus.done) {\n this.uploading = false;\n this.uploadingSubscription.unsubscribe();\n }\n this.cdr.detectChanges();\n });\n }\n\n async uploadImage(file: File) {\n const { width, height } = await this.resolveImageSize(file, this.theContextService.getOptions().width);\n this.imageEntry = {\n height,\n width,\n thumbUrl: this.sanitizer.bypassSecurityTrustResourceUrl(URL.createObjectURL(file))\n };\n this.uploading = true;\n const [uploadFileEntity] = await this.imageUploaderService.uploadFileHandle([file]).toPromise();\n const path = AngularEditor.findPath(this.editor, this.element);\n const { thumbUrl, originUrl } = uploadFileEntity;\n const imageInfo: ImageEntry = {\n name: file.name,\n width: this.imageEntry.width,\n height: this.imageEntry.height,\n thumbUrl,\n originUrl,\n align: this.imageEntry.align || Alignment.center\n };\n HistoryEditor.withoutSaving(this.editor, () =>\n Transforms.setNodes(\n this.editor,\n {\n type: ElementKinds.image,\n url: null,\n ...imageInfo\n },\n { at: path }\n )\n );\n }\n\n private resolveImageSize(imageFile: File, maxSize: number): Promise<{ height: number; width: number }> {\n const image = new Image();\n return new Promise(resolve => {\n image.onload = () => {\n const imageHeight = image.height;\n const imageWidth = image.width;\n const ratio = imageWidth > maxSize ? imageWidth / maxSize : false;\n const height = ratio ? imageHeight / ratio : imageHeight;\n const width = ratio ? imageWidth / ratio : imageWidth;\n resolve({ height, width });\n };\n image.src = URL.createObjectURL(imageFile);\n });\n }\n\n startDrag(event: MouseEvent, axis: string) {\n event.preventDefault();\n this.dragable = true;\n const imgElement = this.img.nativeElement as HTMLImageElement;\n const options = {\n axis,\n printerPositionX: event.pageX,\n printerPositionY: event.pageY,\n internalWidth: this.imageEntry.width | imgElement.width,\n internalHeight: this.imageEntry.height | imgElement.height,\n maxWidth: this.theContextService.getOptions().width\n };\n this.mouseMoveSubscription = this.theContextService.onMouseMove$.subscribe(e => this.mouseMoveHandle(e, options));\n }\n\n mouseMoveHandle(\n event: MouseEvent,\n options: {\n axis: string;\n printerPositionX: number;\n printerPositionY: number;\n internalWidth: number;\n internalHeight: number;\n maxWidth: number;\n }\n ) {\n if (this.dragable) {\n const { axis, printerPositionX, printerPositionY, internalWidth, internalHeight, maxWidth } = options;\n const isReversal = axis.includes('-');\n let offsetX = event.pageX - printerPositionX;\n let offsetY = event.pageY - printerPositionY;\n if (isReversal) {\n offsetX = -offsetX;\n offsetY = -offsetY;\n }\n if (this.element.align === 'center') {\n offsetX = offsetX * 2;\n }\n let { width, height } = this.element;\n if (axis.includes('x')) {\n width = offsetX + internalWidth;\n if (width >= maxWidth) {\n width = maxWidth;\n }\n if (width <= 100) {\n width = 100;\n }\n if (axis.includes('l')) {\n const ratio = internalWidth / width;\n height = internalHeight / ratio;\n }\n } else if (axis.includes('y')) {\n height = offsetY + internalHeight;\n if (height >= 1000) {\n height = 1000;\n }\n if (height <= 100) {\n height = 100;\n }\n if (axis.includes('l')) {\n const ratio = internalHeight / height;\n width = internalWidth / ratio;\n }\n }\n\n this.imageContent.nativeElement.style.width = width + 'px';\n this.imageContent.nativeElement.style.height = height + 'px';\n this.imageEntry.width = width;\n this.imageEntry.height = height;\n }\n }\n\n endDrag(event: MouseEvent) {\n if (this.dragable) {\n this.dragable = false;\n this.mouseMoveSubscription.unsubscribe();\n Transforms.setNodes(\n this.editor,\n {\n type: ElementKinds.image,\n ...this.imageEntry\n },\n { at: this.selection }\n );\n }\n }\n\n cancelUpload(event) {\n Transforms.removeNodes(this.editor, { at: this.selection });\n }\n\n preview($event: Event) {\n if (this.readonly || this.isCollapsed) {\n $.fancybox.open([{ src: this.imageEntry.originUrl }]);\n }\n $event.stopPropagation();\n }\n}\n","<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n<div class=\"image-container\" contenteditable=\"false\" [style.textAlign]=\"imageEntry.align || 'center'\">\n <div\n #imageContent\n *ngIf=\"imageEntry.thumbUrl\"\n class=\"image-content\"\n [class.pointer]=\"!selection\"\n [ngStyle]=\"{ width: imageEntry.width + 'px', height: imageEntry.height + 'px' }\"\n >\n <img #img class=\"main-image\" [src]=\"imageEntry.thumbUrl\" [alt]=\"imageEntry.name\" />\n <div *ngIf=\"selection\" class=\"image-profile\" [class.outline]=\"selection\">\n <span *ngIf=\"isCollapsed\" (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left top\"></span>\n <span *ngIf=\"isCollapsed\" (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right top\"></span>\n <span *ngIf=\"isCollapsed\" (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right bottom\"></span>\n <span *ngIf=\"isCollapsed\" (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left bottom\"></span>\n </div>\n <div *ngIf=\"uploading\" class=\"uploading\">\n <div class=\"uploading-percentage\">\n <thy-progress thyType=\"primary\" [thyValue]=\"percentage\" thySize=\"sm\"></thy-progress>\n <thy-icon (click)=\"cancelUpload($event)\" thyIconName=\"close-circle-bold-fill\" thyIconLegging=\"true\"></thy-icon>\n </div>\n </div>\n <div *ngIf=\"!uploading\" class=\"layer\" (mousedown)=\"preview($event)\" [class.readonly]=\"readonly\"></div>\n </div>\n <div *ngIf=\"!imageEntry.thumbUrl\" class=\"image-loading\" contenteditable=\"false\">\n <thy-icon thyIconName=\"image\"></thy-icon>\n </div>\n</div>\n","import { Editor, Transforms, Element } from 'slate';\nimport { TheContextService } from '../../services/context.service';\nimport { ElementKinds, ErrorCodes, PICTURE_ACCEPTED_UPLOAD_MIME, PICTURE_ACCEPTED_UPLOAD_SIZE } from '../../constants';\nimport * as TheQueries from '../../queries';\n\nexport const ImageEditor = {\n openUpload(editor: Editor) {\n const inputFile = document.createElement('input');\n inputFile.setAttribute('type', 'file');\n inputFile.setAttribute('accept', 'image/*');\n inputFile.onchange = (event: Event) => {\n ImageEditor.insertImages(editor, (event.target as any).files);\n };\n inputFile.click();\n },\n insertImages(editor: Editor, imageFiles: FileList | File[]) {\n const contextService = editor.injector.get(TheContextService);\n const imageNodes: Element[] = [];\n const text = { text: '' };\n for (const image of imageFiles) {\n const verify = ImageEditor.verifyImage(editor, image);\n if (verify) {\n const url = URL.createObjectURL(image);\n contextService.setUploadFileList({\n url,\n file: image\n });\n imageNodes.push({ type: ElementKinds.image, url, children: [text] });\n }\n }\n if (imageNodes.length > 0) {\n const at = editor.selection;\n Transforms.insertNodes(editor, imageNodes, { at });\n if (TheQueries.isCollapsed(editor.selection) && TheQueries.isEmptyParagraph(editor)) {\n Transforms.removeNodes(editor, { at });\n Transforms.select(editor, at);\n }\n }\n },\n verifyImage(editor: Editor, image: File) {\n if (!PICTURE_ACCEPTED_UPLOAD_MIME.includes(image.type)) {\n editor.onError({\n code: ErrorCodes.IMAGE_ERR_MIME_FORMAT\n });\n return false;\n }\n if (image.size / 1000000 >= PICTURE_ACCEPTED_UPLOAD_SIZE) {\n editor.onError({\n code: ErrorCodes.IMAGE_ERR_SIZE_LIMIT\n });\n return false;\n }\n return true;\n },\n isImageActive(editor: Editor): boolean {\n const [match] = Editor.nodes(editor, {\n match: n => Element.isElement(n) && n.type === ElementKinds.image,\n universal: true\n });\n return !!match;\n }\n};\n","import { Editor, Element } from 'slate';\nimport { ElementKinds } from '../../constants/node-types';\nimport { TheImageComponent } from './image.component';\nimport { ImageEditor } from './image.editor';\n\nexport const withImage = (editor: Editor): Editor => {\n const { insertData, isVoid, renderElement, isBlockCard } = editor;\n\n editor.isVoid = (element: Element) => {\n return element.type === ElementKinds.image || isVoid(element);\n };\n\n editor.insertData = (data: DataTransfer) => {\n // TODO:: 底层有点问题,粘贴多张图片时只能识别一张\n if (data.files.length) {\n const imageFiles: File[] = [];\n for (const file of data.files as FileList) {\n if (['image/png', 'image/jpeg', 'image/gif', 'image/bmp'].includes(file.type)) {\n imageFiles.push(file);\n }\n }\n if (imageFiles.length) {\n return ImageEditor.insertImages(editor, imageFiles);\n }\n }\n insertData(data);\n };\n\n editor.renderElement = (element: Element) => {\n if (element.type === ElementKinds.image) {\n return TheImageComponent;\n }\n return renderElement(element);\n };\n\n editor.isBlockCard = (element: Element) => {\n if (element && element.type === ElementKinds.image) {\n return true;\n }\n return isBlockCard(element);\n };\n\n return editor;\n};\n","import { Transforms, Range, Editor, Element } from 'slate';\nimport { CustomElementKinds } from '../../custom-types';\nimport { ElementKinds } from '../../constants';\nimport { TAB_SPACE } from '../../constants/default';\n\nexport const onKeydownIndent = (editor: Editor, event: KeyboardEvent, kinds: CustomElementKinds[]) => {\n const { selection } = editor;\n if (event.key === 'Tab') {\n event.preventDefault();\n const isExpanded = Range.isExpanded(selection);\n const nodes = Array.from(\n Editor.nodes<Element>(editor, {\n mode: 'highest',\n match: indentNodeMatch(kinds)\n })\n );\n const startBlock = nodes[0];\n if (startBlock && (isExpanded || Editor.isStart(editor, selection.anchor, [startBlock[1][0]]))) {\n if (!editor.isVoid(startBlock[0])) {\n if (event.shiftKey) {\n return cancelTextIntent(editor, startBlock[0], kinds);\n }\n let { textIndent } = startBlock[0];\n textIndent = textIndent ? textIndent : 0;\n textIndent += 2;\n if (textIndent < 50) {\n Transforms.setNodes(\n editor,\n { textIndent },\n {\n mode: 'highest',\n match: indentNodeMatch(kinds)\n }\n );\n return true;\n }\n }\n } else {\n editor.insertText(TAB_SPACE);\n return true;\n }\n }\n if (selection && Range.isCollapsed(selection) && event.key === 'Backspace') {\n const nodes = Array.from(\n Editor.nodes<Element>(editor, {\n mode: 'highest',\n match: indentNodeMatch(kinds)\n })\n );\n const startBlock = nodes[0];\n if (startBlock && Editor.isStart(editor, selection.anchor, [startBlock[1][0]])) {\n return cancelTextIntent(editor, startBlock[0], kinds);\n }\n }\n return false;\n};\n\nconst indentNodeMatch = (kinds: CustomElementKinds[]) => node => Element.isElement(node) && kinds.includes(node.type);\n\nfunction cancelTextIntent(editor: Editor, anchorBlock: Element, kinds: CustomElementKinds[]) {\n let { textIndent } = anchorBlock;\n if (textIndent > 2) {\n // prevent deleteBackward function\n event.preventDefault();\n textIndent -= 2;\n Transforms.setNodes(\n editor,\n { textIndent },\n {\n mode: 'highest',\n match: indentNodeMatch(kinds)\n }\n );\n return true;\n }\n if (textIndent === 2) {\n // prevent deleteBackward function\n event.preventDefault();\n Transforms.setNodes(\n editor,\n { textIndent: null },\n {\n mode: 'highest',\n match: node => Element.isElement(node) && kinds.includes(node.type)\n }\n );\n return true;\n }\n return false;\n}\n","import { Editor } from 'slate';\nimport { CustomElementKinds } from '../../custom-types';\nimport { onKeydownIndent } from './on-keydown-indent';\n\nexport const withIndent =\n (kinds: CustomElementKinds[]) =>\n <T extends Editor>(editor: T): T => {\n const { onKeydown } = editor;\n\n editor.onKeydown = (event: KeyboardEvent) => {\n const isContinue = !onKeydownIndent(editor, event, kinds);\n if (isContinue) {\n onKeydown(event);\n }\n };\n\n return editor;\n };\n","import { Element } from 'slate';\nimport { LIST_BLOCK_TYPES } from '../../../constants/node-types';\n\nexport const isList = (n: Element) => {\n return [...LIST_BLOCK_TYPES].includes(n.type);\n};\n","import { Editor, Path, Point, Range } from 'slate';\nimport * as TheQueries from '../../../queries';\nimport { ElementKinds } from '../../../constants';\n\nexport const isInList = (editor: Editor, at: Path | Range | Point | null = editor.selection) => {\n return TheQueries.isNodeTypeIn(editor, [ElementKinds.numberedList, ElementKinds.bulletedList], { at });\n};\n","import { Editor, Path, Element } from 'slate';\nimport { ElementKinds } from '../../../constants';\n\n/**\n * Is the list nested, i.e. its parent is a list item.\n */\nexport const isListNested = (editor: Editor, listPath: Path, options?: any) => {\n const [listParentNode] = Editor.parent(editor, listPath);\n return (listParentNode as Element).type === ElementKinds.listItem;\n};\n","import { ElementKinds } from '../../../constants';\n\nexport const getListTypes = () => {\n return [ElementKinds.bulletedList, ElementKinds.numberedList];\n};\n","import { Node, Element } from 'slate';\nimport { ElementKinds } from '../../../constants';\n\nexport const getStartListItem = (node: Node[], initialValue?: Node[]) => {\n if (!initialValue) {\n initialValue = [];\n }\n if (node) {\n return node.reduce((result: Node[], current: Element) => {\n if (current.type == ElementKinds.listItem && (current.children[0] as Element).type === ElementKinds.default) {\n result.push(current);\n } else {\n if (current.children) {\n getStartListItem(current.children as Node[], result);\n }\n }\n return result;\n }, initialValue);\n }\n};\n","import { Ancestor, Element, Node } from 'slate';\nimport { ElementKinds } from '../../../constants';\nimport { match } from '../../../utils/match';\nimport { getListTypes } from './get-list-types';\n\n/**\n *\n */\nexport const hasListInListItem = (listItemNode: Ancestor | Element) => {\n const sublist = (listItemNode.children as Node[]).find(n => match(n, { type: getListTypes() })) as Element | undefined;\n return listItemNode.children.length > 1 && sublist;\n};\n\n/**\n * p + ul/ol structure\n * @param listItemNode\n */\nexport const hasStableListInListItem = (listItemNode: Ancestor | Element) => {\n const sublist = (listItemNode.children as Node[]).find(n => match(n, { type: getListTypes() })) as Element | undefined;\n return listItemNode.children.length === 2 && sublist;\n};\n\n/**\n * li + p structure\n * @param listItemNode\n */\nexport const hasStableListItem = (listItemNode: Ancestor | Element) => {\n const type = (listItemNode.children[0] as Element).type;\n return listItemNode.children.length === 1 && type === ElementKinds.paragraph;\n};\n","import { Node, Element } from 'slate';\nimport { hasListInListItem } from './has-list-in-list-item';\nimport { isNodeTypeList } from './is-node-type-list';\n\n/**\n * list 中 是否是单个listItem,且listItem没有子列表\n */\nexport const isSingleListItem = (list: Node) => {\n return isNodeTypeList(list) && (list.children as Node[]).length === 1 && !hasListInListItem(list.children[0] as Element);\n};\n","import { Editor, Location, Element } from 'slate';\nimport * as TheQueries from '../../../queries';\nimport { ElementKinds } from '../../../constants';\nimport { ListItemElement } from '../../../custom-types';\nimport { isList } from './is-list';\n\n/**\n * 如果at(默认= selection)位于ul> li> p中,则返回li和ul节点条目。\n */\nexport const getListItemEntry = (editor: Editor, { at = editor.selection }: { at?: Location | null } = {}) => {\n if (at && TheQueries.isNodeTypeIn(editor, ElementKinds.listItem, { at })) {\n const selectionParent = TheQueries.getParent(editor, at);\n if (!selectionParent) return;\n const [, paragraphPath] = selectionParent;\n\n const listItem = TheQueries.getAboveByType(editor, ElementKinds.listItem, { at }) || TheQueries.getParent(editor, paragraphPath);\n\n if (!listItem) return;\n const [listItemNode, listItemPath] = listItem;\n\n if ((listItemNode as ListItemElement).type !== ElementKinds.listItem) return;\n\n const list = TheQueries.getParent(editor, listItemPath);\n if (!list || !isList(list[0] as Element)) return;\n\n return {\n list,\n listItem\n };\n }\n};\n","import { Editor } from 'slate';\nimport * as TheQueries from '../../../queries';\nimport { ElementKinds } from '../../../constants';\n\n/**\n * Is the selection focus at the start of its parent block.\n */\nexport const isSelectionAtListItemStart = (editor: Editor) => {\n const listItemEntry = TheQueries.getAboveByType(editor, [ElementKinds.listItem]);\n if (listItemEntry) {\n return TheQueries.isStart(editor, editor.selection.focus, listItemEntry[1]);\n }\n return false;\n};\n","import { NodeEntry, Ancestor, Node, Path, Transforms, Editor, Element } from 'slate';\nimport * as TheQueries from '../../../queries';\nimport { hasListInListItem } from '../queries/has-list-in-list-item';\nimport { getListItemEntry } from '../queries/get-list-item-entry';\n\nexport interface InsertListDataOptions {\n /**\n * 要粘贴的list数据\n */\n fromList: Element;\n\n /**\n * 粘贴list数据至此\n */\n toListItemEntry: NodeEntry<Ancestor>;\n}\n\nexport const insertListData = (editor: Editor, { fromList, toListItemEntry }: InsertListDataOptions) => {\n const { children } = fromList;\n const [toListItem, toListItemPath] = toListItemEntry;\n const nextListItemPath = Path.next(toListItemPath);\n const toListItemIsEmptyParagraph = TheQueries.isEmptyParagraph(editor, editor.selection.anchor);\n const hasSubList = hasListInListItem(toListItem as Element);\n\n let selectPath = [...toListItemPath];\n const liIndex = selectPath.pop();\n selectPath = [...selectPath, liIndex + children.length];\n\n Editor.withoutNormalizing(editor, () => {\n if (toListItemIsEmptyParagraph && hasSubList) {\n Transforms.insertNodes(editor, children, { at: nextListItemPath });\n } else {\n const insertListItemPath = toListItemIsEmptyParagraph ? toListItemPath : nextListItemPath;\n // 如果粘贴目标listItem为空,则先删除listItem\n if (toListItemIsEmptyParagraph) {\n Transforms.removeNodes(editor, { at: insertListItemPath });\n selectPath = Path.previous(selectPath);\n }\n Transforms.insertNodes(editor, children, { at: insertListItemPath });\n }\n\n /**\n * 粘贴目标lisItem有子列表\n */\n if (hasSubList) {\n const paragraphPath = toListItemPath.concat([0]);\n const nextSubListPath = Path.next(paragraphPath);\n\n // 判断粘贴数据是否是多级\n if (hasListInListItem(fromList.children[0] as Element)) {\n // 设置粘贴后正确选区\n Transforms.select(editor, Editor.end(editor, nextListItemPath));\n\n // 获取当前选区所在listItem entry\n const currentListItemEntry = getListItemEntry(editor, {});\n // 获取粘贴目标listItem中的子列表\n const { children: subListChildren } = Node.get(editor, nextSubListPath) as Element;\n\n /**\n * 复制子列表数据\n * 之所以是复制,而不是移动,因为无法单纯一次性移动子列表的所有listItem(不包含subList本身)到目标位置,\n * 需要循环移动才可以\n **/\n Transforms.insertNodes(editor, subListChildren as Node[], {\n at: Path.next(currentListItemEntry.listItem[1])\n });\n // 删除已被复制后无用的listItem/listItem subList\n Transforms.delete(editor, {\n at: toListItemIsEmptyParagraph ? toListItemPath : nextSubListPath\n });\n return;\n }\n\n Transforms.select(editor, Editor.end(editor, selectPath));\n\n // 粘贴数据不是多级\n const currentListItemEntry = getListItemEntry(editor, {});\n Transforms.moveNodes(editor, {\n at: nextSubListPath,\n to: currentListItemEntry.listItem[1].concat(1)\n });\n\n if (toListItemIsEmptyParagraph) {\n Transforms.delete(editor, { at: toListItemPath });\n }\n return;\n }\n });\n\n // 粘贴目标listItem没有子列表, 设置选区\n Transforms.select(editor, Editor.end(editor, selectPath));\n return;\n};\n","import { Ancestor, Editor, NodeEntry, Path, Transforms, Element } from 'slate';\nimport * as TheQueries from '../../../queries';\nimport { ElementKinds } from '../../../constants';\nimport { ListItemElement } from '../../../custom-types';\n\nexport interface MoveListItemUpOptions {\n list: NodeEntry<Ancestor>;\n listItem: NodeEntry<Ancestor>;\n}\n\n/**\n * 将列表项移到其父项旁边。\n * 父项应为列表项。\n */\nexport const moveListItemUp = (editor: Editor, { list, listItem }: MoveListItemUpOptions, options?: any) => {\n const [listNode, listPath] = list;\n const [, listItemPath] = listItem;\n\n const listParentEntry = TheQueries.getParent(editor, listPath);\n if (!listParentEntry) return;\n const [listParentNode, listParentPath] = listParentEntry;\n\n if ((listParentNode as Element).type !== ElementKinds.listItem) {\n return;\n }\n\n Editor.withoutNormalizing(editor, () => {\n const newListItemPath = Path.next(listParentPath);\n\n // 将 item 上移一层\n Transforms.moveNodes(editor, {\n at: listItemPath,\n to: newListItemPath\n });\n\n /**\n * 将下一个兄弟节点移动到新列表\n */\n const listItemIdx = listItemPath[listItemPath.length - 1];\n const siblingPath = [...listItemPath];\n const newListPath = newListItemPath.concat(1);\n let siblingFound = false;\n let newSiblingIdx = 0;\n\n listNode.children.forEach((n, idx) => {\n if (listItemIdx < idx) {\n if (!siblingFound) {\n siblingFound = true;\n\n Transforms.insertNodes(\n editor,\n {\n type: (listNode as ListItemElement).type,\n children: []\n },\n { at: newListPath }\n );\n }\n\n siblingPath[siblingPath.length - 1] = listItemIdx;\n const newSiblingsPath = newListPath.concat(newSiblingIdx);\n newSiblingIdx++;\n Transforms.moveNodes(editor, {\n at: siblingPath,\n to: newSiblingsPath\n });\n }\n });\n\n // 处理listItem下方有段落的情况\n const listIndex = listParentNode.children.findIndex(item => item.key === (listNode as Element).key);\n const behindNode = listParentNode.children.slice(listIndex + 1);\n if (behindNode.length > 0) {\n const nextPath = Path.next(newListItemPath);\n Transforms.insertNodes(\n editor,\n {\n type: ElementKinds.listItem,\n children: []\n },\n { at: nextPath }\n );\n const moveStartPath = TheQueries.findPath(editor, behindNode[0]);\n const moveEndPath = TheQueries.findPath(editor, behindNode[behindNode.length - 1]);\n const moveRange = Editor.range(editor, moveStartPath, moveEndPath);\n Transforms.moveNodes(editor, {\n at: moveRange,\n to: nextPath.concat(0),\n match: node => behindNode.includes(node as any)\n });\n }\n\n // 删除子列表(如果它是第一个列表项)\n if (!listItemIdx) {\n Transforms.removeNodes(editor, {\n at: listPath\n });\n }\n });\n return true;\n};\n","import { Editor, Path, Range, Transforms, Element } from 'slate';\nimport { ElementKinds } from '../../../constants';\nimport * as TheQueries from '../../../queries';\n\n/**\n * Insert list item if selection in li>p.\n */\nexport const insertListItem = (editor: Editor) => {\n if (editor.selection && !TheQueries.isRangeAtRoot(editor.selection)) {\n const paragraphEntry = TheQueries.getAboveByType(editor, ElementKinds.paragraph);\n if (!paragraphEntry) {\n return;\n }\n const [, paragraphPath] = paragraphEntry;\n\n const [listItemNode, listItemPath] = Editor.parent(editor, paragraphPath);\n if (Element.isElement(listItemNode) && listItemNode.type !== ElementKinds.listItem) {\n return;\n }\n\n if (!Range.isCollapsed(editor.selection)) {\n Transforms.delete(editor);\n }\n\n const isEnd = TheQueries.isBlockTextEmptyAfterSelection(editor);\n const nextNodePath = Path.next(paragraphPath);\n const nextListItemPath = Path.next(listItemPath);\n const nextEnd = Editor.end(editor, listItemPath);\n\n /**\n * If not end, split nodes, wrap a list item on the new paragraph and move it to the next list item\n */\n if (!isEnd) {\n Editor.withoutNormalizing(editor, () => {\n Transforms.splitNodes(editor, { at: editor.selection, always: true });\n Transforms.wrapNodes(\n editor,\n {\n type: ElementKinds.listItem,\n children: []\n },\n { at: nextNodePath }\n );\n Transforms.moveNodes(editor, {\n at: nextNodePath,\n to: nextListItemPath\n });\n });\n } else {\n /**\n * If end, insert a list item after and select it\n */\n Editor.withoutNormalizing(editor, () => {\n Transforms.insertNodes(\n editor,\n {\n type: ElementKinds.listItem,\n children: [{ type: ElementKinds.paragraph, children: [{ text: '' }] }]\n },\n { at: nextListItemPath }\n );\n Transforms.select(editor, nextListItemPath);\n });\n }\n\n /**\n * If there is a list in the list item, move it to the next list item\n */\n if (TheQueries.getNode(editor, nextNodePath)) {\n Transforms.moveNodes(editor, {\n at: Editor.range(editor, nextNodePath, nextEnd),\n to: nextListItemPath.concat(1),\n match: node => {\n // TODO: types\n return listItemNode.children.includes(node as any);\n }\n });\n }\n\n return true;\n }\n};\n","import { Editor } from 'slate';\nimport * as TheTransforms from '../../../transforms';\nimport { ElementKinds } from '../../../constants/node-types';\n\nexport const unwrapList = (editor: Editor) => {\n Editor.withoutNormalizing(editor, () => {\n TheTransforms.unwrapNodesByType(editor, ElementKinds.listItem);\n TheTransforms.unwrapNodesByType(editor, [ElementKinds.bulletedList, ElementKinds.numberedList], { split: true });\n });\n};\n","import { Ancestor, NodeEntry } from 'slate';\nimport { hasListInListItem } from './has-list-in-list-item';\n\n/**\n * 获取 listItem 内的列表(如果存在).\n * 它采用以下结构:ul> li > span + ul\n */\nexport const getListItemSublist = (listItem: NodeEntry<Ancestor>, options?: any): NodeEntry<Ancestor> | undefined => {\n const [listItemNode, listItemPath] = listItem;\n\n if (hasListInListItem(listItemNode)) {\n return [listItemNode.children[1] as Ancestor, listItemPath.concat([1])];\n }\n};\n","import { Ancestor, Editor, NodeEntry, Path, Transforms, Element } from 'slate';\nimport { moveChildren } from '../../../transforms/move-children';\nimport { getListItemSublist } from '../queries/get-list-item-sublist';\nimport * as TheQueries from '../../../queries';\n\nexport interface MoveListItemSublistItemsToListItemSublistOptions {\n /**\n * The list item to merge.\n */\n fromListItem: NodeEntry<Ancestor>;\n\n /**\n * The list item where to merge.\n */\n toListItem: NodeEntry<Ancestor>;\n\n /**\n * Move to the start of the list instead of the end.\n */\n start?: boolean;\n}\n\n/**\n * Move fromListItem sublist list items to the end of `toListItem` sublist.\n * If there is no `toListItem` sublist, insert one.\n */\nexport const moveListItemSublistItemsToListItemSublist = (\n editor: Editor,\n { fromListItem, toListItem, start }: MoveListItemSublistItemsToListItemSublistOptions,\n options?: any\n) => {\n const [, fromListItemPath] = fromListItem;\n const [toListItemNode, toListItemPath] = toListItem;\n\n const fromListItemSublist = getListItemSublist(fromListItem, options);\n if (!fromListItemSublist) return 0;\n const [, fromListItemSublistPath] = fromListItemSublist;\n\n const toListItemSublist = getListItemSublist(toListItem, options);\n\n let to: Path;\n\n if (!toListItemSublist) {\n const fromList = TheQueries.getParent(editor, fromListItemPath);\n if (!fromList) return 0;\n const [fromListNode] = fromList;\n\n const fromListType = (fromListNode as Element).type;\n const toListItemSublistPath = toListItemPath.concat([toListItemNode.children.length]);\n Transforms.insertNodes(editor, { type: fromListType, children: [] } as Element, { at: toListItemSublistPath });\n\n to = toListItemSublistPath.concat([0]);\n } else if (start) {\n const [, toListItemSublistPath] = toListItemSublist;\n to = toListItemSublistPath.concat([0]);\n } else {\n to = Path.next(TheQueries.getLastChildPath(toListItemSublist));\n }\n\n const moved = moveChildren(editor, {\n at: Path.previous(fromListItemSublistPath),\n to\n });\n\n // Remove the empty list\n Transforms.delete(editor, { at: fromListItemPath });\n\n return moved;\n};\n","import { Editor, Node, NodeEntry, Path, Element } from 'slate';\nimport { ListItemElement } from '../../../custom-types';\nimport { ElementKinds } from '../../../constants';\nimport { insertParagraph } from '../../../transforms/insert-paragraph';\n\nexport const normalizeListItem = (editor: Editor, { nodeEntry }: { nodeEntry: NodeEntry<ListItemElement> }) => {\n const [listItemNode, listItemPath] = nodeEntry;\n const firstChildPath: Path = listItemPath.concat([0]);\n const firstChild = (listItemNode.children as Node[])?.[0];\n\n if (!firstChild) {\n insertParagraph(editor, firstChildPath);\n return true;\n }\n\n // Ensure that all lists have a <p> tag as a first element\n if (Element.isElement(firstChild) && (firstChild.type === ElementKinds.bulletedList || firstChild.type === ElementKinds.numberedList)) {\n insertParagraph(editor, firstChildPath);\n return true;\n }\n};\n","import { Editor, Transforms, Path, Node, NodeEntry, Element } from 'slate';\nimport * as TheQueries from '../../../queries';\nimport * as TheTransforms from '../../../transforms';\n\n// 列表续号\nexport const normalizeNo = (editor: Editor, nodeEntry: NodeEntry) => {\n const [listNode, listPath] = nodeEntry;\n let moved = false;\n Editor.withoutNormalizing(editor, () => {\n /**\n * 获取nextList判断是否为同类型list\n * 如果为同类型list,则把nextList children移动到当前list的尾部, 并删除nextList\n */\n const nextPath = Path.next(listPath);\n const nextNode = TheQueries.getNode(editor, nextPath) as Node;\n if (nextNode && Element.isElement(nextNode) && Element.isElement(listNode) && nextNode.type === listNode.type) {\n TheTransforms.moveChildren(editor, {\n at: [nextNode, nextPath],\n to: listPath.concat((listNode.children as Node[]).length)\n });\n Transforms.removeNodes(editor, { at: nextPath });\n moved = true;\n }\n\n if (listPath[listPath.length - 1] !== 0) {\n /**\n * 获取prevList判断是否为同类型list\n * 如果为同类型list,则把当前list children移动到prevList的尾部, 并删除当前List\n */\n const currentListNode = TheQueries.getNode(editor, listPath);\n const prevPath = Path.previous(listPath);\n const prevNode = TheQueries.getNode(editor, prevPath) as Node;\n if (prevNode && Element.isElement(prevNode) && Element.isElement(currentListNode) && prevNode.type === currentListNode.type) {\n TheTransforms.moveChildren(editor, {\n at: [currentListNode, listPath],\n to: prevPath.concat((prevNode.children as Node[]).length)\n });\n Transforms.removeNodes(editor, { at: listPath });\n moved = true;\n }\n }\n });\n return moved;\n};\n","import { Descendant, Editor, NodeEntry, Transforms, Element } from 'slate';\nimport { ElementKinds } from '../../../constants';\nimport { match } from '../../../utils/match';\nimport { getListTypes } from '../queries/get-list-types';\nimport { normalizeListItem } from './normalize-list-item';\nimport { ListNormalizerOptions } from '../types';\nimport { normalizeNo } from './normalize-no';\nimport { isList } from '../queries/is-list';\nimport { TheHistoryEditor } from '../../common/history.plugin';\n\n/**\n * Normalize list node to force the ul>li>p+ul structure.\n */\nexport const getListNormalizer = (editor: Editor, { validLiChildrenTypes }: ListNormalizerOptions) => {\n const { normalizeNode } = editor;\n\n return ([node, path]: NodeEntry) => {\n // 不是选区, 执行续号检测操作\n if (isList(node as Element) && !TheHistoryEditor.isUndoing(editor)) {\n const moved = normalizeNo(editor, [node, path]);\n if (moved) {\n return;\n }\n }\n\n if (match(node, { type: getListTypes() })) {\n if (Element.isElement(node) && !(node.children as Descendant[]).length) {\n return Transforms.removeNodes(editor, { at: path });\n }\n }\n\n // normalize list item\n // 1. list-item at least one child\n // 2. list-item first child is not list\n if (Element.isElement(node) && node.type === ElementKinds.listItem) {\n if (normalizeListItem(editor, { nodeEntry: [node, path] })) {\n // Tree changed - kick off another normalization\n return;\n }\n }\n\n normalizeNode([node, path]);\n };\n};\n","import { Ancestor, Editor, NodeEntry, Path, Transforms } from 'slate';\nimport { getListTypes } from '../queries/get-list-types';\nimport { moveChildren } from '../../../transforms/move-children';\nimport * as TheQueries from '../../../queries';\n\nexport interface MergeListItemIntoListOptions {\n /**\n * 该节点的子列表的列表项将被移动。\n */\n fromListItem: NodeEntry<Ancestor>;\n\n /**\n * 列表项将被移动到该列表中。\n */\n toList: NodeEntry<Ancestor>;\n\n /**\n * 具体位置\n */\n location?: number;\n}\n\n/**\n * 将 fromListItem 子列表的列表项移到 toList\n */\nexport const moveListItemSublistItemsToList = (editor: Editor, { fromListItem, toList, location }: MergeListItemIntoListOptions) => {\n const fromListItemSublist = TheQueries.findDescendant(editor, {\n at: fromListItem[1],\n match: {\n type: getListTypes()\n }\n });\n if (!fromListItemSublist) return 0;\n\n const [, fromListItemSublistPath] = fromListItemSublist;\n const lastChildPath = TheQueries.getLastChildPath(toList);\n let moved: number;\n Editor.withoutNormalizing(editor, () => {\n moved = moveChildren(editor, {\n at: fromListItemSublistPath,\n to: location ? toList[1].concat(location) : Path.next(lastChildPath)\n });\n\n // 删除空白列表\n Transforms.delete(editor, { at: fromListItemSublistPath });\n });\n\n return moved;\n};\n","import { Ancestor, Editor, NodeEntry, Path, Transforms, Element, Node } from 'slate';\nimport { getListItemEntry } from '../queries/get-list-item-entry';\nimport { hasListInListItem } from '../queries/has-list-in-list-item';\nimport { moveListItemSublistItemsToList } from './move-list-item-sublist-items-to-list';\nimport { isNodeTypeList } from '../queries/is-node-type-list';\n\nexport interface MoveListItemDownOptions {\n list: NodeEntry<Ancestor>;\n listItem: NodeEntry<Ancestor>;\n}\n\nexport const moveListItemDown = (editor: Editor, { list, listItem }: MoveListItemDownOptions) => {\n const [listNode] = list;\n const [, listItemPath] = listItem;\n\n Editor.withoutNormalizing(editor, () => {\n // 以前的兄弟是新父级\n const previousSiblingItem = Editor.node(editor, Path.previous(listItemPath)) as NodeEntry<Ancestor>;\n\n if (previousSiblingItem) {\n const [previousNode, previousPath] = previousSiblingItem;\n const lastChildIndexOfPreviousNode = previousNode.children.length - 1;\n const lastChildOfPreviousNode = previousNode.children[lastChildIndexOfPreviousNode] as Element;\n\n const newPath = previousPath.concat(\n isNodeTypeList(lastChildOfPreviousNode)\n ? [lastChildIndexOfPreviousNode, lastChildOfPreviousNode.children.length]\n : [previousNode.children.length]\n );\n\n if (!isNodeTypeList(lastChildOfPreviousNode)) {\n // 创建新子列表\n const type = (listNode as Element).type;\n Transforms.wrapNodes(editor, { type, children: [] } as Element, {\n at: listItemPath\n });\n }\n // 将当前listItem移动到子列表\n Transforms.moveNodes(editor, {\n at: listItemPath,\n to: newPath\n });\n\n const currentListItemEntry = getListItemEntry(editor, {});\n if (hasListInListItem(currentListItemEntry.listItem[0])) {\n moveListItemSublistItemsToList(editor, {\n fromListItem: currentListItemEntry.listItem,\n toList: currentListItemEntry.list\n });\n }\n }\n });\n};\n","import { Editor } from 'slate';\nimport { moveListItemUp } from './transforms/move-list-item-up';\nimport { moveListItemDown } from './transforms/move-list-item-down';\nimport { getListItemEntry } from './queries/get-list-item-entry';\nimport * as TheQueries from '../../queries';\n\nexport function onKeyDownList(e: KeyboardEvent, editor: Editor) {\n let moved: boolean | undefined = false;\n if (e.key === 'Tab') {\n const res = getListItemEntry(editor, {});\n if (!res) {\n return false;\n }\n const { list, listItem } = res;\n const [, listItemPath] = listItem;\n\n e.preventDefault();\n\n // move up with shift+tab\n const shiftTab = e.shiftKey;\n if (shiftTab) {\n moved = moveListItemUp(editor, { list, listItem });\n if (moved) {\n e.preventDefault();\n return true;\n }\n }\n\n // move down with tab\n const tab = !e.shiftKey;\n if (tab && !TheQueries.isFirstChild(listItemPath)) {\n moveListItemDown(editor, { list, listItem });\n return true;\n }\n return false;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Element } from 'slate';\nimport { Alignment } from './constants/node-types';\n\n@Pipe({\n name: 'elementStyle'\n})\nexport class ElementStylePipe implements PipeTransform {\n transform(element: Element, align?: Alignment) {\n const style: { [key: string]: string } = {};\n if (element.align || align) {\n style.textAlign = (element.align as string) || align || Alignment.left;\n }\n if (element.textIndent) {\n style.textIndent = element.textIndent + 'em';\n }\n return style;\n }\n}\n\n@Pipe({\n name: 'elementClass'\n})\nexport class ElementClassPipe implements PipeTransform {\n transform(element: Element) {\n let classStr = '';\n const prefix = 'indent';\n if (element.textIndent) {\n classStr += `${prefix}-${element.textIndent}`;\n }\n return classStr;\n }\n}\n","import { Component, OnInit, ElementRef, OnDestroy, ChangeDetectorRef, HostBinding } from '@angular/core';\nimport { Editor } from 'slate';\nimport { ElementClassPipe } from '../../../pipes';\nimport { NumberedListElement } from '../../../custom-types';\nimport { TheBaseElementComponent } from '../../../interfaces';\n\n@Component({\n selector: 'ol[theOl]',\n template: `<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>`,\n providers: [ElementClassPipe]\n})\nexport class TheNumberedListComponent extends TheBaseElementComponent<NumberedListElement, Editor> implements OnInit, OnDestroy {\n @HostBinding('attr.start')\n get start() {\n return this.element.start;\n }\n\n @HostBinding('class')\n get class() {\n return this.elementClassPipe.transform(this.element);\n }\n\n constructor(public elementRef: ElementRef, public cdr: ChangeDetectorRef, private elementClassPipe: ElementClassPipe) {\n super(elementRef, cdr);\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnInit, ElementRef, OnDestroy, ChangeDetectorRef, HostBinding } from '@angular/core';\nimport { Editor } from 'slate';\nimport { ElementClassPipe } from '../../../pipes';\nimport { BulletedListElement } from '../../../custom-types';\nimport { TheBaseElementComponent } from '../../../interfaces';\n\n@Component({\n selector: 'ul[theUl]',\n template: `<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>`,\n providers: [ElementClassPipe]\n})\nexport class TheBulletedListComponent extends TheBaseElementComponent<BulletedListElement, Editor> implements OnInit, OnDestroy {\n @HostBinding('class')\n get class() {\n return this.elementClassPipe.transform(this.element);\n }\n\n constructor(public elementRef: ElementRef, public cdr: ChangeDetectorRef, private elementClassPipe: ElementClassPipe) {\n super(elementRef, cdr);\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnInit, ElementRef, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { Editor, Element } from 'slate';\nimport { TheBaseElementComponent } from '../../../interfaces';\n\n@Component({\n selector: 'li[theLi]',\n template: `<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>`\n})\nexport class TheListItemComponent extends TheBaseElementComponent<Element, Editor> implements OnInit, OnDestroy {\n constructor(public elementRef: ElementRef, public cdr: ChangeDetectorRef) {\n super(elementRef, cdr);\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","import { Transforms, Node, Editor, Path, Ancestor, Element } from 'slate';\nimport { AngularEditor, getPlainText } from 'slate-angular';\nimport { CLIPBOARD_FORMAT_KEY, ElementKinds, ELEMENT_UNIQUE_ID } from '../../constants';\nimport * as TheQueries from '../../queries';\nimport * as TheTransforms from '../../transforms';\nimport { isList } from './queries/is-list';\nimport { isInList } from './queries/is-in-list';\nimport { isListNested } from './queries/is-list-nested';\nimport { getListTypes } from './queries/get-list-types';\nimport { getStartListItem } from './queries/get-start-list-item';\nimport { isSingleListItem } from './queries/is-single-list-item';\nimport { getListItemEntry } from './queries/get-list-item-entry';\nimport { hasListInListItem, hasStableListInListItem, hasStableListItem } from './queries/has-list-in-list-item';\nimport { isSelectionAtListItemStart } from './queries/is-selection-at-list-item-start';\nimport { insertListData } from './transforms/insert-list-data';\nimport { moveListItemUp } from './transforms/move-list-item-up';\nimport { insertListItem } from './transforms/insert-list-item';\nimport { unwrapList } from './transforms/unwrap-list';\nimport { moveListItemSublistItemsToListItemSublist } from './transforms/move-list-item-sublist-items-to-list-item-sublist';\nimport { getListNormalizer } from './normalizers/get-list-normalizer';\nimport { onKeyDownList } from './on-key-down-list';\nimport { WithListOptions } from './types';\nimport { TheNumberedListComponent } from './components/numbered-list.component';\nimport { TheBulletedListComponent } from './components/bulleted-list.component';\nimport { TheListItemComponent } from './components/list-item.component';\nimport { extractFragment } from '../../utils/fragment';\n\nexport const withList =\n ({ validLiChildrenTypes }: WithListOptions = {}) =>\n (editor: Editor) => {\n const { insertBreak, deleteBackward, onKeydown, insertData, setFragmentData, renderElement } = editor;\n\n const resetBlockTypesListRule = {\n types: [ElementKinds.listItem],\n defaultType: ElementKinds.paragraph,\n onReset: (_editor: Editor) => unwrapList(_editor)\n };\n\n editor.insertBreak = () => {\n const node = TheQueries.anchorBlock(editor);\n\n if (!node) {\n insertBreak();\n return;\n }\n\n const isVoid = Editor.isVoid(editor, node);\n if (isVoid) {\n insertBreak();\n return;\n }\n const listEntry = getListItemEntry(editor, {});\n if (listEntry) {\n let moved: boolean | undefined;\n const { list, listItem } = listEntry;\n const [listItemNode, listItemPath] = listItem;\n const cursor = editor.selection.focus;\n const isStart = Editor.isStart(editor, cursor, listItemPath);\n\n // deprecated\n // 如果有子级\n if (hasListInListItem(listItemNode)) {\n /**\n * If selection is at the end of li,\n * insert below li where children will be moved.\n */\n if (Editor.isEnd(editor, cursor, listItemPath)) {\n return Transforms.insertNodes(\n editor,\n {\n type: ElementKinds.listItem,\n children: [{ type: ElementKinds.paragraph, children: [{ text: '' }] }]\n },\n { at: Path.next(listItemPath), select: true }\n );\n }\n\n /**\n * 如果选区是在listItem的开头,则在listItem上方插入\n */\n if (isStart) {\n return Transforms.insertNodes(\n editor,\n {\n type: ElementKinds.listItem,\n children: [{ type: ElementKinds.paragraph, children: [{ text: '' }] }]\n },\n { at: listItemPath }\n );\n }\n }\n\n // 如果选择的listItem为空则将其向上移动\n if (isStart && TheQueries.isBlockAboveEmpty(editor)) {\n moved = moveListItemUp(editor, { list, listItem });\n if (moved) return;\n }\n\n const didReset = TheTransforms.onKeyDownResetBlockType({\n rules: [\n {\n ...resetBlockTypesListRule,\n predicate: () => !moved && isStart && TheQueries.isBlockAboveEmpty(editor)\n }\n ]\n })(null, editor);\n if (didReset) {\n return;\n }\n\n /**\n * Add a new list item if selection is in a LIST_ITEM > p.type.\n */\n if (!moved) {\n const inserted = insertListItem(editor);\n if (inserted) {\n return;\n }\n }\n }\n\n insertBreak();\n };\n\n editor.setFragmentData = unit => {\n const { selection } = editor;\n const [start] = Editor.edges(editor, selection);\n if (isInList(editor, start)) {\n const fragmentData = editor.getFragment();\n const fragmentElement = fragmentData[0] as Element;\n if (getListTypes().includes(fragmentElement.type)) {\n const startNodes = getStartListItem([fragmentElement.children[0]]);\n // 复制列表中的图片时startNodes长度为零\n if (startNodes.length === 0) {\n setFragmentData(unit);\n return;\n }\n const children = startNodes.concat((fragmentElement.children as Node[]).slice(1));\n const fragmentNodes = [\n {\n ...fragmentElement,\n children\n }\n ] as Node[];\n const fragment = fragmentNodes.concat(fragmentData.slice(1));\n const domRange = AngularEditor.toDOMRange(editor, selection);\n const contents = domRange.cloneContents();\n const stringObj = JSON.stringify(fragment);\n const encoded = window.btoa(encodeURIComponent(stringObj));\n unit.setData(`application/${CLIPBOARD_FORMAT_KEY}`, encoded);\n const div = document.createElement('div');\n div.appendChild(contents);\n div.setAttribute('hidden', 'true');\n document.body.appendChild(div);\n unit.setData('text/html', div.innerHTML);\n unit.setData('text/plain', getPlainText(div));\n document.body.removeChild(div);\n return;\n }\n }\n setFragmentData(unit);\n };\n\n editor.deleteBackward = unit => {\n const res = getListItemEntry(editor, {});\n\n if (res && isSelectionAtListItemStart(editor)) {\n const { list, listItem } = res;\n const [, listPath] = list;\n const [listItemNode, listItemPath] = listItem;\n\n const previousListItemPath = TheQueries.getPreviousPath(listItemPath);\n\n if (previousListItemPath) {\n const beforePoint = Editor.before(editor, listItemPath);\n const parentPath = Path.parent(beforePoint.path);\n const parentNode = Node.get(editor, parentPath);\n if (Editor.isVoid(editor, parentNode)) {\n Editor.withoutNormalizing(editor, () => {\n TheTransforms.unwrapNodesByType(editor, [ElementKinds.bulletedList, ElementKinds.numberedList], {\n split: true\n });\n TheTransforms.unwrapNodesByType(editor, ElementKinds.listItem);\n });\n return;\n }\n }\n\n if (previousListItemPath && hasStableListInListItem(listItemNode)) {\n Editor.withoutNormalizing(editor, () => {\n deleteBackward(unit);\n const [previousListItemNode] = Editor.node(editor, previousListItemPath);\n moveListItemSublistItemsToListItemSublist(\n editor,\n {\n fromListItem: listItem,\n toListItem: [previousListItemNode as Ancestor, previousListItemPath],\n start: false\n },\n {}\n );\n });\n return;\n }\n\n // move listItem children to before listItem\n if (listItemNode.children.length > 1) {\n Editor.withoutNormalizing(editor, () => {\n const beforePathRef = Editor.pathRef(editor, listItemPath);\n const beforePoint = Editor.before(editor, listItemPath);\n const startPoint = Editor.start(editor, listItemPath);\n const endPoint = Editor.end(editor, listItemPath);\n const isInFirstChild = !isListNested(editor, listPath) && TheQueries.isFirstChild(listItemPath);\n const to = isInFirstChild ? listPath : Path.next(Path.parent(beforePoint.path));\n\n // TODO: types\n Transforms.moveNodes(editor, {\n at: Editor.range(editor, startPoint, endPoint),\n to,\n match: node => listItemNode.children.includes(node as any)\n });\n Transforms.delete(editor, { at: beforePathRef.unref() });\n\n if (!isInFirstChild) {\n deleteBackward(unit);\n }\n });\n return;\n }\n\n // deprecated\n if (!isListNested(editor, listPath) && TheQueries.isFirstChild(listItemPath)) {\n unwrapList(editor);\n return;\n }\n }\n\n deleteBackward(unit);\n };\n\n editor.insertData = (data: DataTransfer) => {\n const text = data.getData('text/plain');\n const fragment = extractFragment(data, ELEMENT_UNIQUE_ID);\n const aboveEntry = Editor.above(editor, {\n match: n => Editor.isBlock(editor, n) && n.type === ElementKinds.listItem\n });\n if (fragment) {\n const res = getListItemEntry(editor, {});\n if (\n fragment.length === 1 &&\n isList(fragment[0] as Element) &&\n aboveEntry &&\n !isSingleListItem(fragment[0]) &&\n hasStableListItem(res.listItem[0])\n ) {\n insertListData(editor, { fromList: fragment[0] as Element, toListItemEntry: aboveEntry });\n return;\n }\n }\n\n insertData(data);\n };\n\n editor.onKeydown = (event: KeyboardEvent) => {\n const isContinue = !onKeyDownList(event, editor);\n if (isContinue) {\n onKeydown(event);\n }\n };\n\n editor.normalizeNode = getListNormalizer(editor, { validLiChildrenTypes: validLiChildrenTypes });\n\n editor.renderElement = (element: Element) => {\n if (element.type === ElementKinds.numberedList) {\n return TheNumberedListComponent;\n }\n if (element.type === ElementKinds.bulletedList) {\n return TheBulletedListComponent;\n }\n if (element.type === ElementKinds.listItem) {\n return TheListItemComponent;\n }\n return renderElement(element);\n };\n\n return editor;\n };\n","import { Element } from 'slate';\nimport { DOMElement } from 'slate-angular';\nimport { Alignment } from '../constants';\n\n/** Converts CSS pixel values to numbers, eg \"123px\" to 123. Returns NaN for non pixel values. */\nexport function coercePixelsFromCssValue(cssValue: string): number {\n const match = cssValue.match(/(\\d+)px/);\n if (match) {\n return Number(match[1]);\n }\n}\n\nexport function getElementWidth(element: HTMLElement) {\n // Optimization: Check style.width first as we probably set it already before reading\n // offsetWidth which triggers layout.\n return coercePixelsFromCssValue(element.style.width) || element.offsetWidth;\n}\n\nexport function getElementHeight(element: HTMLElement) {\n return Math.round(element.getBoundingClientRect().height);\n}\n\nexport function getColsTotalWidth(cols: HTMLTableColElement[]) {\n return cols.reduce((total, col) => {\n return total + getElementWidth(col);\n }, 0);\n}\n\nexport function getRowsTotalHeight(rows: HTMLTableRowElement[]) {\n return rows.reduce((total, row) => {\n return total + getElementHeight(row);\n }, 0);\n}\n\nexport function useElementStyle(el: HTMLElement, element: Element) {\n if (element.align) {\n el.style.textAlign = (element.align as string) || Alignment.left;\n }\n\n if (element.textIndent) {\n el.style.textIndent = element.textIndent + 'em';\n }\n\n if (element.verticalAlign) {\n el.style.verticalAlign = element.verticalAlign;\n }\n}\n\nexport function getElementClassByPrefix(el: DOMElement, prefix: string) {\n let matchClass = null;\n el.classList.forEach((value, key) => {\n if (value.includes(prefix)) {\n matchClass = value;\n }\n });\n return matchClass;\n}\n","import { Component, ElementRef, HostBinding, ChangeDetectorRef, OnInit } from '@angular/core';\nimport { Editor, Element } from 'slate';\nimport * as TheTransforms from '../../transforms';\nimport { TheBaseElementComponent } from '../../interfaces';\nimport { TodoItemElement } from '../../custom-types';\nimport { getElementClassByPrefix } from '../../utils/dom';\n\n@Component({\n selector: 'div[theTodoItem]',\n template: `\n <span contenteditable=\"false\" class=\"todo-item-status\">\n <input #checkbox type=\"checkbox\" [checked]=\"element.checked\" (click)=\"onCheck(checkbox.checked)\" />\n </span>\n <slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n `\n})\nexport class TheTodoItemComponent extends TheBaseElementComponent<TodoItemElement, Editor> implements OnInit {\n checked: boolean;\n\n @HostBinding('class.the-check-item') checkItemClass = true;\n\n constructor(public elementRef: ElementRef, public cdr: ChangeDetectorRef) {\n super(elementRef, cdr);\n }\n\n onContextChange() {\n super.onContextChange();\n if (this.initialized) {\n this.useIndentClass(this.elementRef.nativeElement, this.element);\n }\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.useIndentClass(this.elementRef.nativeElement, this.element);\n }\n\n onCheck(checked: boolean) {\n if (this.readonly) {\n return false;\n }\n TheTransforms.setNode(this.editor, { checked }, this.element);\n }\n\n useIndentClass(el: HTMLElement, element: Element) {\n const prefix = 'indent';\n if (element.textIndent) {\n const oldClass = getElementClassByPrefix(el, prefix);\n if (oldClass) {\n el.classList.remove(oldClass);\n }\n const newClassName = `${prefix}-${element.textIndent}`;\n el.classList.add(newClassName);\n } else {\n const oldClass = getElementClassByPrefix(el, prefix);\n if (oldClass) {\n el.classList.remove(oldClass);\n }\n }\n }\n}\n","import { Transforms, Range, Editor, Element, Descendant } from 'slate';\nimport { ElementKinds } from '../../constants';\nimport * as TheQueries from '../../queries';\nimport { TheTodoItemComponent } from './todo-item.component';\n\nexport const withTodoItem = (editor: Editor): Editor => {\n const { insertBreak, deleteBackward, renderElement } = editor;\n\n editor.insertBreak = () => {\n const { selection } = editor;\n\n if (selection && Range.isCollapsed(selection)) {\n const [match] = Editor.nodes(editor, {\n match: n => Element.isElement(n) && n.type === ElementKinds.checkItem\n });\n\n if (match) {\n const [, path] = match;\n const block = TheQueries.anchorBlock(editor);\n\n if (block && Editor.isStart(editor, selection.anchor, path) && Editor.isEmpty(editor, block)) {\n Transforms.setNodes(\n editor,\n {\n type: ElementKinds.default,\n checked: undefined\n } as Partial<Descendant>,\n {\n match: n => Element.isElement(n) && n.type === ElementKinds.checkItem\n }\n );\n return;\n }\n }\n }\n insertBreak();\n\n const anchorBlock = TheQueries.anchorBlock(editor);\n if (anchorBlock && anchorBlock.type === ElementKinds.checkItem) {\n Transforms.setNodes(editor, { checked: false });\n }\n };\n\n editor.deleteBackward = unit => {\n const { selection } = editor;\n\n if (selection && Range.isCollapsed(selection)) {\n const [match] = Editor.nodes(editor, {\n match: n => Element.isElement(n) && n.type === ElementKinds.checkItem\n });\n\n if (match) {\n const [, path] = match;\n\n if (Editor.isStart(editor, selection.anchor, path)) {\n Transforms.setNodes(editor, { type: ElementKinds.default, checked: undefined } as Partial<Descendant>, {\n match: n => Element.isElement(n) && n.type === ElementKinds.checkItem\n });\n return;\n }\n }\n }\n deleteBackward(unit);\n };\n\n editor.renderElement = (element: Element) => {\n if (element.type === ElementKinds.checkItem) {\n return TheTodoItemComponent;\n }\n return renderElement(element);\n };\n\n return editor;\n};\n","import { Component, ElementRef, ChangeDetectorRef, AfterViewInit } from '@angular/core';\nimport { Editor, Element } from 'slate';\nimport { TheBaseElementComponent } from '../../interfaces';\n\n@Component({\n selector: 'the-hr, [theHr]',\n template: `\n <div class=\"the-hr\" contenteditable=\"false\" [ngClass]=\"{ active: selection }\">\n <hr class=\"the-hr\" />\n <slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n </div>\n `\n})\nexport class TheHrComponent extends TheBaseElementComponent<Element, Editor> implements AfterViewInit {\n constructor(public elementRef: ElementRef, public cdr: ChangeDetectorRef) {\n super(elementRef, cdr);\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n const blockCardElement = this.nativeElement.closest('slate-block-card');\n if (blockCardElement) {\n blockCardElement.classList.add(`slate-block-card-${this.element.type}`);\n }\n });\n }\n}\n","import { Editor, Element } from 'slate';\nimport { ElementKinds } from '../../constants';\nimport { TheHrComponent } from './hr.component';\n\nexport const withHr = (editor: Editor): Editor => {\n const { isVoid, isBlockCard, renderElement } = editor;\n\n editor.isVoid = (element: Element) => {\n return element.type === ElementKinds.hr || isVoid(element);\n };\n\n editor.isBlockCard = (element: Element) => {\n if (element.type === ElementKinds.hr) {\n return true;\n }\n return isBlockCard(element);\n };\n\n editor.renderElement = (element: Element) => {\n if (element.type === ElementKinds.hr) {\n return TheHrComponent;\n }\n return renderElement(element);\n };\n\n return editor;\n};\n","import { Editor, Transforms } from 'slate';\nimport * as TheQueries from '../../queries';\nimport { Alignment } from '../../constants';\nimport { TheElement } from '../../custom-types';\n\nexport const withAlign = <T extends Editor>(editor: T): T => {\n const { deleteBackward } = editor;\n\n editor.deleteBackward = unit => {\n const { anchor } = editor.selection;\n const node = TheQueries.anchorBlock(editor) as TheElement;\n const isVoid = Editor.isVoid(editor, node);\n const alignTypes = [Alignment.center, Alignment.right];\n const startLine = Editor.start(editor, anchor.path);\n const startLineRange = { anchor, focus: startLine };\n const beforeText = Editor.string(editor, startLineRange);\n\n if (!isVoid && node && node.align && alignTypes.includes(node.align) && beforeText === '') {\n const align = alignTypes.indexOf(node.align) ? Alignment.center : undefined;\n return Transforms.setNodes(editor, { align });\n }\n deleteBackward(unit);\n };\n\n return editor;\n};\n","import { Editor, Transforms, Range } from 'slate';\nimport { ElementKinds } from '../../constants';\nimport * as TheQueries from '../../queries';\n\nexport const withHeading = (editor: Editor): Editor => {\n const { insertBreak } = editor;\n\n editor.insertBreak = () => {\n const { selection } = editor;\n const anchorBlock = TheQueries.getAnchorBlockEntry(editor);\n if (anchorBlock && Range.isCollapsed(selection) && anchorBlock[0].type.startsWith('heading')) {\n if (Editor.isStart(editor, selection.anchor, anchorBlock[1])) {\n insertBreak();\n Transforms.setNodes(\n editor,\n { type: ElementKinds.paragraph },\n {\n at: selection\n }\n );\n return;\n }\n if (Editor.isEnd(editor, selection.focus, anchorBlock[1])) {\n insertBreak();\n Transforms.setNodes(editor, { type: ElementKinds.paragraph });\n return;\n }\n }\n insertBreak();\n };\n\n return editor;\n};\n","import { Editor, Range, Text, Transforms } from 'slate';\nimport { ZERO_WIDTH_CHAR } from '../../constants';\nimport { MarkEditor } from './mark.editor';\n\nexport const withMark =\n () =>\n <T extends Editor>(editor: T) => {\n const e = editor as T & MarkEditor;\n\n e.removeMark = (key: string, shouldChange = true) => {\n const { selection } = e;\n if (selection) {\n if (Range.isExpanded(selection)) {\n Transforms.unsetNodes(e, key, {\n match: Text.isText,\n split: true\n });\n } else {\n const marks = { ...(Editor.marks(e) || {}) };\n delete marks[key];\n editor.marks = marks;\n const text = Editor.string(e, selection.anchor.path);\n if (text === ZERO_WIDTH_CHAR) {\n Transforms.unsetNodes(e, key, { at: selection.anchor.path });\n }\n if (text !== ZERO_WIDTH_CHAR && text !== '') {\n e.insertText(ZERO_WIDTH_CHAR);\n }\n if (shouldChange) {\n editor.onChange();\n }\n }\n }\n };\n\n e.addMark = (key: string, value: any) => {\n const { selection } = editor;\n\n if (selection) {\n if (Range.isExpanded(selection)) {\n Transforms.setNodes(e, { [key]: value }, { match: Text.isText, split: true });\n } else {\n const marks = {\n ...(Editor.marks(e) || {}),\n [key]: value\n };\n editor.marks = marks;\n const text = Editor.string(e, selection.anchor.path);\n if (text === ZERO_WIDTH_CHAR) {\n Transforms.setNodes(e, { [key]: value }, { at: selection.anchor.path });\n }\n if (text !== ZERO_WIDTH_CHAR && text !== '') {\n e.insertText(ZERO_WIDTH_CHAR);\n }\n }\n }\n };\n\n return e;\n };\n","import { NodeEntry, Element, Node, Editor, Operation } from 'slate';\nimport * as TheQueries from '../../queries';\nimport * as TheTransforms from '../../transforms';\nimport { QueryOptions } from '../../interfaces';\nimport { _ } from '../../utils/lodash';\n\nexport interface WithNodeIDProps extends QueryOptions {\n // Key used for the id. Default is `id`.\n idKey?: string;\n // ID factory, e.g. `uuid`\n idCreator?: () => void;\n // Filter `Text` nodes.\n filterText?: boolean;\n}\n\nexport const withNodeID =\n ({ idKey = 'id', idCreator = () => Date.now(), filterText = true, filter = () => true }: WithNodeIDProps = {}) =>\n <T extends Editor>(e: T) => {\n const editor = e as T & { removedIDs: Set<any> };\n\n const { apply } = editor;\n\n const idPropsCreator = () => ({ [idKey]: idCreator() });\n\n editor.removedIDs = new Set();\n\n editor.apply = (operation: Operation) => {\n if (operation.type === 'insert_node') {\n const newFilter = (entry: NodeEntry<Node>) => {\n const [_node] = entry;\n return filter(entry) && filterText ? Element.isElement(_node) : TheQueries.isDescendant(_node);\n };\n\n // fix can not find path by orign node\n let node = operation.node;\n if (!Object.isExtensible(node)) {\n node = _.cloneDeep(node);\n }\n\n // it will not overwrite ids once it's set as it's read-only\n TheTransforms.mergeDeepToNodes({\n node,\n source: idPropsCreator,\n query: {\n filter: newFilter,\n }\n });\n\n return apply({\n ...operation,\n node\n });\n }\n\n if (operation.type === 'split_node' && (!filterText || (operation.properties as Element).type)) {\n let id = operation.properties[idKey];\n if (editor.removedIDs.has(id)) {\n editor.removedIDs.delete(id);\n } else {\n id = idCreator();\n }\n\n return apply({\n ...operation,\n properties: {\n ...operation.properties,\n [idKey]: id\n }\n });\n }\n\n if (operation.type === 'merge_node' && (!filterText || (operation.properties as Element).type)) {\n editor.removedIDs.add((operation.properties as Element)[idKey]);\n }\n\n return apply(operation);\n };\n\n return editor;\n };\n","import { Editor, Location, Transforms, Node } from 'slate';\n\nexport const autoFormatBlock = (\n editor: Editor,\n type: string,\n at: Location,\n {\n preFormat,\n format\n }: {\n preFormat?: (editor: Editor) => void;\n format?: (editor: Editor, markups?: string[]) => void;\n },\n markups?: string[]\n) => {\n Transforms.delete(editor, { at });\n\n if (preFormat) {\n preFormat(editor);\n }\n\n if (!format) {\n Transforms.setNodes(editor, { type } as Node, { match: n => Editor.isBlock(editor, n) });\n } else {\n format(editor, markups);\n }\n};\n","import { Range, Transforms } from 'slate';\nimport * as TheQueries from '../../../queries';\nimport { MarkEditor } from '../../../plugins/mark/mark.editor';\n\nexport const autoFormatInline = (\n editor: MarkEditor,\n {\n type,\n between,\n markup,\n ignoreTrim\n }: {\n type: string;\n between?: string[];\n markup?: string;\n ignoreTrim?: boolean;\n }\n) => {\n const selection = editor.selection as Range;\n\n const startMarkup = between ? between[0] : markup;\n const endMarkup = between ? between[1] : '';\n\n let endMarkupPointBefore = selection.anchor;\n if (endMarkup) {\n endMarkupPointBefore = TheQueries.getPointBefore(editor, selection, {\n matchString: endMarkup\n });\n if (!endMarkupPointBefore) {\n return false;\n }\n }\n\n const startMarkupPointAfter = TheQueries.getPointBefore(editor, endMarkupPointBefore, {\n matchString: startMarkup,\n skipInvalid: true,\n afterMatch: true\n });\n\n if (!startMarkupPointAfter) {\n return false;\n }\n\n // found\n\n const markupRange: Range = {\n anchor: startMarkupPointAfter,\n focus: endMarkupPointBefore\n };\n\n if (!ignoreTrim) {\n const markupText = TheQueries.getText(editor, markupRange);\n if (markupText.trim() !== markupText) {\n return false;\n }\n }\n\n // delete end markup\n if (endMarkup) {\n endMarkupPointBefore = TheQueries.getPointBefore(editor, selection, {\n matchString: endMarkup\n });\n Transforms.delete(editor, {\n at: {\n anchor: endMarkupPointBefore,\n focus: selection.anchor\n }\n });\n }\n\n // add mark to the text between the markups\n Transforms.select(editor, markupRange);\n editor.addMark(type, true);\n Transforms.collapse(editor, { edge: 'end' });\n editor.removeMark(type, false);\n\n // delete start markup\n const startMarkupPointBefore = TheQueries.getPointBefore(editor, selection, {\n matchString: startMarkup,\n skipInvalid: true\n });\n Transforms.delete(editor, {\n at: {\n anchor: startMarkupPointBefore,\n focus: startMarkupPointAfter\n }\n });\n\n return true;\n};\n","import { Editor, Range } from 'slate';\nimport * as TheQueries from '../../queries';\nimport { castArray } from '../../utils/cast-array';\nimport { WithAutoFormatOptions } from '../../interfaces/auto-format';\nimport { autoFormatBlock } from './transforms/auto-format-block';\nimport { autoFormatInline } from './transforms/auto-format-inline';\n\nexport const withAutoFormat =\n ({ rules }: WithAutoFormatOptions) =>\n <T extends Editor>(editor: T) => {\n const { insertText } = editor;\n\n editor.insertText = text => {\n if (!TheQueries.isCollapsed(editor.selection)) {\n return insertText(text);\n }\n\n for (const { query, ...rule } of rules) {\n const {\n trigger = ' ',\n mode = 'block',\n type,\n markup,\n preFormat,\n format,\n match,\n between,\n ignoreTrim,\n insertTrigger,\n allowSameTypeAbove = false,\n triggerAtBlockStart = true\n } = rule;\n\n if (query && !query(editor, rule)) continue;\n\n const triggers: string[] = castArray(trigger);\n\n // Check trigger\n if (!triggers.includes(text)) continue;\n\n const valid = () => insertTrigger && insertText(text);\n\n if (mode === 'block') {\n let markups: string[] = castArray(markup);\n let markupRange: Range | undefined;\n\n if (triggerAtBlockStart) {\n markupRange = TheQueries.getRangeFromBlockStart(editor) as Range;\n\n // Don't autoformat if there is void nodes.\n const hasVoidNode = TheQueries.someNode(editor, {\n at: markupRange,\n match: n => Editor.isVoid(editor, n)\n });\n if (hasVoidNode) continue;\n\n const textFromBlockStart = TheQueries.getText(editor, markupRange);\n if (match) {\n markups = match(editor, textFromBlockStart);\n }\n if (!markups.includes(textFromBlockStart)) continue;\n } else {\n markupRange = TheQueries.getRangeBefore(editor, editor.selection as Range, {\n matchString: markup,\n skipInvalid: true\n });\n if (!markupRange) continue;\n\n const blockAbovePath = TheQueries.getBlockAbove(editor)?.[1];\n if (!blockAbovePath) continue;\n\n // If the markup is not at the start, insert break before autoformatting.\n if (!Editor.isStart(editor, markupRange.anchor, blockAbovePath)) {\n editor.insertBreak();\n }\n }\n\n if (!allowSameTypeAbove) {\n // Don't autoformat if already in a block of the same type.\n const isBelowSameBlockType = TheQueries.someNode(editor, { match: { type } });\n if (isBelowSameBlockType) continue;\n }\n\n // Start of the block\n autoFormatBlock(\n editor,\n type,\n markupRange,\n {\n preFormat,\n format\n },\n markups\n );\n return valid();\n }\n\n if (mode === 'inline') {\n if (\n autoFormatInline(editor, {\n type,\n between,\n ignoreTrim,\n markup: Array.isArray(markup) ? markup[0] : markup\n })\n ) {\n return valid();\n }\n }\n }\n\n insertText(text);\n };\n\n return editor;\n };\n","import { Editor, Transforms } from 'slate';\n\ntype Params = Parameters<typeof Transforms.insertNodes>;\n\nexport interface TransformEditor {\n insertNodes: (nodes: Params[1], options?: Params[2]) => void;\n}\n\nexport const withTransforms =\n () =>\n <T extends Editor>(editor: T) => {\n const e = editor as T & TransformEditor;\n\n e.insertNodes = (nodes, options) => {\n try {\n Transforms.insertNodes(editor, nodes, options);\n } catch (err) {}\n };\n\n return e;\n };\n","import { Editor, Path, Element, Node } from 'slate';\nimport { QueryOptions } from '../../interfaces';\nimport { ElementKinds } from '../../constants';\nimport { TransformEditor } from '../common/transforms.plugin';\nimport * as TheQueries from '../../queries';\nimport { CustomElementKinds } from '../../custom-types';\n\nexport interface WithTrailingNode extends QueryOptions {\n type?: CustomElementKinds;\n level?: number;\n}\n\nexport const withTrailingNode =\n ({ type = ElementKinds.paragraph, level = 1, ...query }: WithTrailingNode = {}) =>\n <T extends Editor & TransformEditor>(editor: T) => {\n const { normalizeNode } = editor;\n\n editor.normalizeNode = ([currentNode, currentPath]) => {\n if (!currentPath.length) {\n const entry = TheQueries.getLastNode(editor, level);\n const [lastNode, lastPath] = entry;\n\n if (Element.isElement(lastNode) && lastNode.type !== type && TheQueries.isNodeType(entry, query)) {\n editor.insertNodes(\n {\n type,\n children: [{ text: '' }]\n } as Node,\n { at: Path.next(lastPath) }\n );\n }\n }\n\n return normalizeNode([currentNode, currentPath]);\n };\n\n return editor;\n };\n","import { Editor, Node, Range, Path, Transforms } from 'slate';\nimport { HistoryEditor } from 'slate-history';\nimport { AngularEditor, hotkeys, hasBlockCard, isCardLeft, FAKE_RIGHT_BLOCK_CARD_OFFSET } from 'slate-angular';\nimport * as TheTransforms from '../../transforms';\nimport * as TheQueries from '../../queries';\nimport { createEmptyParagraph } from '../../utils/create-empty-paragraph';\nimport { insertParagraph } from '../../transforms/insert-paragraph';\n\nexport const withBlockCard = (editor: Editor): Editor => {\n const { insertBreak, deleteBackward, onKeydown, deleteForward, insertData, insertText } = editor;\n\n editor.insertBreak = () => {\n const domSelection = window.getSelection();\n const anchorNode = domSelection.anchorNode;\n if (domSelection && domSelection.isCollapsed && hasBlockCard(domSelection)) {\n const isLeftCursor = isCardLeft(anchorNode);\n const cardEntry = AngularEditor.toSlateCardEntry(editor, anchorNode);\n const cursorRootPath = cardEntry[1];\n TheTransforms.insertParagraph(editor, isLeftCursor ? cursorRootPath : Path.next(cursorRootPath));\n if (!isLeftCursor) {\n Transforms.select(editor, Path.next(cursorRootPath));\n }\n return;\n }\n insertBreak();\n };\n\n editor.deleteBackward = unit => {\n const domSelection = window.getSelection();\n const anchorNode = domSelection.anchorNode;\n if (domSelection && domSelection.isCollapsed && hasBlockCard(domSelection)) {\n const isLeftCursor = isCardLeft(anchorNode);\n const cardEntry = AngularEditor.toSlateCardEntry(editor, anchorNode);\n const cursorRootPath = cardEntry[1];\n if (isLeftCursor) {\n const previousPath = Path.hasPrevious(cursorRootPath) && Path.previous(cursorRootPath);\n if (!previousPath) {\n return;\n }\n if (previousPath && TheQueries.isEmptyParagraphByPath(editor, previousPath)) {\n Transforms.removeNodes(editor, {\n at: previousPath\n });\n return;\n }\n HistoryEditor.withoutMerging(editor, () => {\n Transforms.select(editor, Editor.end(editor, previousPath));\n });\n return;\n } else {\n TheTransforms.insertParagraph(editor, cursorRootPath);\n Transforms.select(editor, cursorRootPath);\n Transforms.removeNodes(editor, { at: Path.next(cursorRootPath) });\n return;\n }\n }\n\n const blockCard = TheQueries.getBlockCardAbove(editor);\n const beforePoint = Editor.before(editor, editor.selection.anchor);\n const beforeBlockCard = TheQueries.getBlockCardAbove(editor, { at: beforePoint });\n if (!blockCard && beforeBlockCard) {\n if (TheQueries.isBlockAboveEmpty(editor)) {\n const [node, path] = Editor.parent(editor, editor.selection.anchor.path);\n HistoryEditor.withoutMerging(editor, () => {\n const rightCursor = { path: beforeBlockCard[1], offset: FAKE_RIGHT_BLOCK_CARD_OFFSET };\n Transforms.select(editor, { anchor: rightCursor, focus: rightCursor });\n });\n Transforms.delete(editor, { at: path });\n return;\n } else {\n Transforms.delete(editor, { at: beforeBlockCard[1] });\n }\n return;\n }\n\n deleteBackward(unit);\n };\n\n editor.deleteForward = unit => {\n const domSelection = window.getSelection();\n const anchorNode = domSelection.anchorNode;\n if (domSelection && domSelection.isCollapsed && hasBlockCard(domSelection)) {\n const isLeftCursor = isCardLeft(anchorNode);\n const cardEntry = AngularEditor.toSlateCardEntry(editor, anchorNode);\n const cursorRootPath = cardEntry[1];\n if (isLeftCursor) {\n TheTransforms.insertParagraph(editor, cursorRootPath);\n Transforms.select(editor, cursorRootPath);\n Transforms.removeNodes(editor, { at: Path.next(cursorRootPath) });\n return;\n } else {\n const nextPath = Path.next(cursorRootPath);\n HistoryEditor.withoutMerging(editor, () => {\n Transforms.select(editor, Editor.start(editor, nextPath));\n });\n return;\n }\n }\n\n const blockCard = TheQueries.getBlockCardAbove(editor);\n const afterPoint = Editor.after(editor, editor.selection.anchor);\n const afterBlockCard = TheQueries.getBlockCardAbove(editor, { at: afterPoint });\n if (!blockCard && afterBlockCard) {\n if (TheQueries.isBlockAboveEmpty(editor)) {\n HistoryEditor.withoutMerging(editor, () => {\n const leftCursor = { path: afterBlockCard[1], offset: -1 };\n Transforms.select(editor, { anchor: leftCursor, focus: leftCursor });\n });\n Transforms.delete(editor, { at: Path.previous(afterBlockCard[1]) });\n return;\n }\n return;\n }\n\n deleteForward(unit);\n };\n\n editor.onKeydown = (event: KeyboardEvent) => {\n const domSelection = window.getSelection();\n const anchorNode = domSelection.anchorNode;\n const nativeEvent = event;\n const { selection } = editor;\n\n const isMoveBackward = hotkeys.isMoveBackward(nativeEvent);\n const isMoveForward = hotkeys.isMoveForward(nativeEvent);\n const isMoveUp = hotkeys.isMoveUp(nativeEvent);\n const isMoveDown = hotkeys.isMoveDown(nativeEvent);\n const isCollapsed = selection && Range.isCollapsed(selection);\n const anchorEntry = TheQueries.anchorBlockEntry(editor);\n\n // block card cursor\n if (anchorNode && hasBlockCard(domSelection)) {\n const isCardLeftCursor = isCardLeft(anchorNode);\n // ↓ + left-block-card 或者 → + right-block-card\n if ((isMoveDown && isCardLeftCursor) || (isMoveForward && !isCardLeftCursor)) {\n nativeEvent.preventDefault();\n const [, path] = AngularEditor.toSlateCardEntry(editor, anchorNode);\n const after = Editor.after(editor, path);\n if (after) {\n Transforms.select(editor, Editor.after(editor, path));\n }\n return;\n }\n // ↑ + right-block-card 或者 ← + left-block-card\n if ((isMoveUp && !isCardLeftCursor) || (isMoveBackward && isCardLeftCursor)) {\n nativeEvent.preventDefault();\n const [, path] = AngularEditor.toSlateCardEntry(editor, anchorNode);\n const before = Editor.before(editor, path);\n if (before) {\n Transforms.select(editor, before);\n }\n return;\n }\n\n // move to card center\n if ((isCardLeftCursor && isMoveForward) || (!isCardLeftCursor && isMoveBackward)) {\n nativeEvent.preventDefault();\n const [, path] = AngularEditor.toSlateCardEntry(editor, anchorNode);\n Transforms.select(editor, isCardLeftCursor ? Editor.start(editor, path) : Editor.end(editor, path));\n return;\n }\n }\n // block card center\n if (isCollapsed && (isMoveUp || isMoveDown) && anchorEntry) {\n const [block, path] = anchorEntry;\n if (editor.isBlockCard(block)) {\n event.preventDefault();\n Transforms.select(editor, isMoveUp ? Editor.before(editor, path) : Editor.after(editor, path));\n return;\n }\n }\n if (isCollapsed && (isMoveBackward || isMoveForward) && anchorEntry) {\n const [block] = anchorEntry;\n if (editor.isBlockCard(block)) {\n event.preventDefault();\n AngularEditor.moveBlockCard(editor, block, { direction: isMoveBackward ? 'left' : 'right' });\n return;\n }\n }\n // move to block card cursor\n if (isCollapsed && isMoveBackward && Editor.isStart(editor, selection.anchor, selection.anchor.path.slice(0, 1))) {\n const currentPath = selection.anchor.path.slice(0, 1);\n if (currentPath[0] > 0) {\n const previousNode = Node.get(editor, Path.previous(currentPath));\n if (previousNode && editor.isBlockCard(previousNode)) {\n event.preventDefault();\n AngularEditor.moveBlockCard(editor, previousNode, { direction: 'right' });\n return;\n }\n }\n }\n if (isCollapsed && isMoveForward && Editor.isEnd(editor, selection.anchor, selection.anchor.path.slice(0, 1))) {\n const currentPath = selection.anchor.path.slice(0, 1);\n if (currentPath[0] < editor.children.length - 1) {\n const previousNode = Node.get(editor, Path.next(currentPath));\n if (previousNode && editor.isBlockCard(previousNode)) {\n event.preventDefault();\n AngularEditor.moveBlockCard(editor, previousNode, { direction: 'left' });\n return;\n }\n }\n }\n\n onKeydown(event);\n };\n\n editor.insertData = (data: DataTransfer) => {\n const domSelection = window.getSelection();\n const anchorNode = domSelection.anchorNode;\n if (domSelection && domSelection.isCollapsed && hasBlockCard(domSelection)) {\n const isLeftCursor = isCardLeft(anchorNode);\n const cardEntry = AngularEditor.toSlateCardEntry(editor, anchorNode);\n const cursorRootPath = cardEntry[1];\n if (isLeftCursor) {\n Transforms.insertNodes(editor, createEmptyParagraph(), { at: cursorRootPath });\n Transforms.select(editor, cursorRootPath);\n } else {\n Transforms.insertNodes(editor, createEmptyParagraph(), { at: Path.next(cursorRootPath) });\n Transforms.select(editor, Path.next(cursorRootPath));\n }\n }\n insertData(data);\n };\n\n editor.insertText = (text: string) => {\n const domSelection = window.getSelection();\n const anchorNode = domSelection?.anchorNode;\n if (AngularEditor.isBlockCardLeftCursor(editor) || AngularEditor.isBlockCardRightCursor(editor)) {\n const isLeftCursor = isCardLeft(anchorNode);\n const cardEntry = AngularEditor.toSlateCardEntry(editor, anchorNode);\n const cursorRootPath = cardEntry[1];\n if (isLeftCursor) {\n insertParagraph(editor, cursorRootPath);\n Transforms.select(editor, cursorRootPath);\n } else {\n const nextPath = Path.next(cursorRootPath);\n insertParagraph(editor, nextPath);\n Transforms.select(editor, nextPath);\n }\n }\n insertText(text);\n };\n\n return editor;\n};\n","import { Editor, Transforms, Range } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport * as TheQueries from '../../queries';\nimport { timer } from 'rxjs';\n\nexport const withMoveSelection = (editor: Editor) => {\n const { onClick, deleteBackward } = editor;\n\n editor.onClick = (event: MouseEvent) => {\n const domSelection = window.getSelection();\n if (domSelection && !domSelection.isCollapsed && event.detail >= 2 && editor.selection) {\n const slateSelection = AngularEditor.toSlateRange(editor, domSelection);\n const isNextStart = slateSelection.focus.offset === 0;\n\n if (Range.isExpanded(slateSelection) && Range.isForward(slateSelection) && isNextStart) {\n const beforePoint = Editor.before(editor, slateSelection.focus);\n const changedRange = Editor.range(editor, slateSelection.anchor, beforePoint);\n\n // slate-angular throttle 80ms, so wait selectionchange complete\n timer(81).subscribe(() => {\n Transforms.select(editor, changedRange);\n });\n return;\n }\n }\n onClick(event);\n };\n\n editor.deleteBackward = unit => {\n const { selection } = editor;\n const inlineBlockEntry = Editor.above(editor, {\n match: n => Editor.isInline(editor, n)\n });\n // fix deleteBackward on the start of inline block\n // deleteBackward logic bug\n if (inlineBlockEntry && !Editor.isVoid(editor, inlineBlockEntry[0]) && selection.anchor.offset === 0) {\n const beforePoint = TheQueries.getPointBefore(editor, selection.focus);\n Transforms.select(editor, beforePoint);\n }\n deleteBackward(unit);\n };\n\n return editor;\n};\n","import { Editor, Node, Element } from 'slate';\nimport * as TheQueries from '../../queries';\nimport { CustomElementKinds } from '../../custom-types';\n\nexport const withGetFragment =\n (elementKinds: CustomElementKinds[] = []) =>\n <T extends Editor>(editor: T) => {\n const { getFragment } = editor;\n editor.getFragment = () => {\n const { selection } = editor;\n const containerBlocks = [...elementKinds, ...TheQueries.getContainerBlocks(editor)];\n if (selection && selection.anchor.path[0] === selection.focus.path[0]) {\n const fragmentData = Node.fragment(editor, selection);\n const nodes = TheQueries.getSelectionNodesByType(editor, fragmentData, containerBlocks);\n return nodes && Element.isElement(nodes) ? nodes.children : getFragment();\n }\n return getFragment();\n };\n\n return editor;\n };\n","import { ElementKinds } from '../../constants/node-types';\nimport { ToolbarItem } from '../../interfaces';\nimport { TodoItemEditor } from './todo-item.editor';\n\nexport const TodoItemOptions: ToolbarItem[] = [\n {\n key: ElementKinds.checkItem,\n icon: 'list-check',\n name: '待办事项',\n execute: editor => TodoItemEditor.insertTodoItem(editor),\n active: editor => TodoItemEditor.isActive(editor)\n }\n];\n","import { InjectionToken } from '@angular/core';\nimport { ComponentType } from 'slate-angular';\nimport { ElementKinds } from '../../constants/node-types';\nimport type { TheTableComponent } from './components/table.component';\n\nexport const TheTableToken = new InjectionToken<ComponentType<TheTableComponent>>('the-Table-token');\n\nexport const BASE_CELL_HEIGHT = 41; // min height\nexport const BASE_FILL_HEIGHT = 2 * 8 + 1; // padding * 2 + border 1\nexport const BASE_CELL_INNER_HEIGHT = BASE_CELL_HEIGHT - BASE_FILL_HEIGHT; // 24\n\nexport interface TheTableColumn {\n width: number;\n}\n\nexport interface MenuEntity {\n icon: string;\n name: string;\n key: string;\n divider?: boolean;\n extendIcon?: string;\n invisibility?: boolean;\n backgroundColor?: string;\n actionHandle: (entity: MenuEntity) => void;\n activeHandle?: (event: MouseEvent) => void;\n deactiveHandle?: (event: MouseEvent) => void;\n}\n\nexport interface SelectedCell {\n row: number;\n col: number;\n}\n\nexport interface TableOptionsFormat {\n typeTable?: ElementKinds.table;\n typeRow?: ElementKinds.tableRow;\n typeCell?: ElementKinds.tableCell;\n typeContent?: ElementKinds.tableContent;\n exitBlockType?: string;\n defaultWidth?: number;\n minWidth?: number;\n maxWidth?: number;\n}\n\nexport class TableOptions {\n // The type of table blocks\n typeTable: ElementKinds.table = ElementKinds.table;\n // The type of row blocks\n typeRow: ElementKinds.tableRow = ElementKinds.tableRow;\n // The type of cell blocks\n typeCell: ElementKinds.tableCell = ElementKinds.tableCell;\n // The default type for blocks in cells\n typeContent: ElementKinds.tableContent = ElementKinds.tableContent;\n // The type of block inserted when exiting\n exitBlockType: ElementKinds.paragraph = ElementKinds.paragraph;\n\n defaultWidth = 200;\n\n minWidthPx = 41;\n\n maxWidthPx = 1000;\n\n minHeightPx = 41;\n\n maxHeightPx = 1000;\n\n constructor(options?: TableOptionsFormat) {\n if (!options) {\n return;\n }\n const { typeTable, typeRow, typeCell, typeContent } = options;\n this.typeTable = typeTable;\n this.typeRow = typeRow;\n this.typeCell = typeCell;\n this.typeContent = typeContent;\n }\n}\n","import { Text } from 'slate';\nimport { TableCellElement } from '../../../custom-types';\nimport { TableOptions } from '../table.types';\n\n/**\n * Create a new cell\n */\nexport function createCell(opts: TableOptions, nodes?: Text[]): TableCellElement {\n return {\n type: opts.typeCell,\n children: nodes || [createEmptyContent(opts)]\n };\n}\n\n/**\n * Create a new default content block\n */\nexport function createEmptyContent(opts: TableOptions) {\n return {\n type: opts.typeContent,\n children: [{ text: '' }]\n };\n}\n","import { Text } from 'slate';\nimport { TableRowElement } from '../../../custom-types';\nimport { TableOptions } from '../table.types';\nimport { createCell } from './create-cell';\n\n/**\n * Create a new row block\n */\nexport function createRow(opts: TableOptions, columns: number, getCellContent?: (column: number) => Text[]): TableRowElement {\n const cellNodes = new Array(columns).fill(1).map(i => createCell(opts, getCellContent ? getCellContent(i) : undefined));\n\n return {\n type: opts.typeRow,\n children: cellNodes\n };\n}\n","import { Node } from 'slate';\nimport { TableElement } from '../../../custom-types';\nimport { TableOptions } from '../table.types';\nimport { createRow } from './create-row';\n\n/**\n * Create a table\n */\nexport function createTable(\n opts: TableOptions,\n columns: number,\n rows: number,\n getCellContent?: (row: number, column: number) => Node[]\n): TableElement {\n const rowNodes = new Array(rows).fill(1).map(i => createRow(opts, columns, getCellContent ? getCellContent.bind(null, i) : undefined));\n\n rowNodes[0].header = true;\n return {\n type: opts.typeTable,\n children: rowNodes\n };\n}\n","import { Node, Path, NodeEntry, Element } from 'slate';\nimport { TableCellElement, TableElement } from '../../../custom-types';\nimport { SelectedCell, TableOptions } from '../table.types';\n\nexport class TablePosition {\n // TheElement container for the table\n tableEntry?: NodeEntry<TableElement>;\n\n // TheElement for current row\n rowEntry?: NodeEntry<Element>;\n\n // TheElement for current cell\n cellEntry?: NodeEntry<TableCellElement>;\n\n // Current content TheElement in the cell\n contentEntry?: NodeEntry<Element>;\n\n constructor(\n options = {\n tableEntry: null,\n rowEntry: null,\n cellEntry: null,\n contentEntry: null\n }\n ) {\n const { tableEntry, rowEntry, cellEntry, contentEntry } = options;\n this.tableEntry = tableEntry;\n this.rowEntry = rowEntry;\n this.cellEntry = cellEntry;\n this.contentEntry = contentEntry;\n }\n\n /**\n * Create a new instance of a TablePosition from a Slate document\n * and a node key.\n */\n static create(opts: TableOptions, containerNode: Node, path: Path): TablePosition {\n const ancestors = Array.from(Node.ancestors(containerNode, path));\n const tableEntry = ancestors.find(([p]) => Element.isElement(p) && p.type === opts.typeTable) || [];\n const rowEntry = ancestors.find(([p]) => Element.isElement(p) && p.type === opts.typeRow) || [];\n const cellEntry = ancestors.find(([p]) => Element.isElement(p) && p.type === opts.typeCell) || [];\n const contentEntry = ancestors.find(([p]) => Element.isElement(p) && p.type === opts.typeContent) || [];\n\n return new TablePosition({\n tableEntry,\n rowEntry,\n cellEntry,\n contentEntry\n });\n }\n\n get table(): TableElement {\n if (!this.tableEntry) {\n throw new Error('Not in a table');\n }\n return this.tableEntry[0];\n }\n\n get row(): Element {\n if (!this.rowEntry) {\n throw new Error('Not in a row');\n }\n return this.rowEntry[0];\n }\n\n get cell(): TableCellElement {\n if (!this.cellEntry) {\n throw new Error('Not in a cell');\n }\n return this.cellEntry[0];\n }\n\n /**\n * Check to see if this position is within a cell\n */\n isInCell(): boolean {\n return Boolean(this.cellEntry.length > 0);\n }\n\n /**\n * Check to see if this position is within a row\n */\n isInRow(): boolean {\n return Boolean(this.rowEntry.length > 0);\n }\n\n /**\n * Check to see if this position is within a table\n */\n isInTable(): boolean {\n return Boolean(this.tableEntry.length > 0);\n }\n\n /**\n * Check to see if this position is at the top of the cell.\n */\n isTopOfCell(): boolean {\n const { contentEntry, cellEntry } = this;\n\n if (!contentEntry || !cellEntry) {\n return false;\n }\n\n const { children } = cellEntry[0];\n const index = children.findIndex(content => content === contentEntry[0]);\n\n return index === 0;\n }\n\n /**\n * Check to see if this position is at the bottom of the cell.\n */\n isBottomOfCell(): boolean {\n const { contentEntry, cellEntry } = this;\n\n if (!contentEntry || !cellEntry) {\n return false;\n }\n\n const { children } = cellEntry[0];\n const index = children.findIndex(content => content === contentEntry[0]);\n\n return index === children.length - 1;\n }\n\n /**\n * Get count of columns\n */\n getWidth(): number {\n const { table } = this;\n const rows = table.children;\n const cells = rows[0].children as Node[];\n\n return cells.length;\n }\n\n /**\n * Get count of rows\n */\n getHeight(): number {\n const { table } = this;\n const rows = table.children;\n\n return rows.length;\n }\n\n /**\n * Get index of current row in the table.\n */\n getRowIndex(): number {\n const { table, row } = this;\n const rows = table.children;\n\n return rows.findIndex(x => x === row);\n }\n\n /**\n * Get index of current column in the row.\n */\n getColumnIndex(): number {\n const { row, cell } = this;\n const cells = row.children;\n\n return cells.findIndex(x => x === cell);\n }\n\n /**\n * find current above column in the table\n */\n findAbove() {\n const { table } = this;\n const rowIndex = this.getRowIndex();\n const columnIndex = this.getColumnIndex();\n let y = 0;\n let t = table.children[rowIndex].children[columnIndex];\n while (t) {\n y++;\n if (table.children[rowIndex - y] && table.children[rowIndex - y].children[columnIndex]) {\n t = table.children[rowIndex - y].children[columnIndex];\n return t;\n }\n return;\n }\n }\n\n findNext() {\n const { table } = this;\n let rowIndex = this.getRowIndex();\n let columnIndex = this.getColumnIndex();\n let nextCell = this.cell;\n while (nextCell && nextCell.hidden) {\n if (columnIndex + 1 < this.getWidth()) {\n columnIndex++;\n nextCell = this.table.children[rowIndex].children[columnIndex];\n } else {\n columnIndex = 0;\n rowIndex++;\n nextCell = this.table.children[rowIndex].children[columnIndex];\n }\n }\n return nextCell;\n }\n\n findPrevious() {\n const { table } = this;\n let rowIndex = this.getRowIndex();\n let columnIndex = this.getColumnIndex();\n let previousCell = this.cell;\n while (previousCell && previousCell.hidden) {\n if (columnIndex - 1 >= 0) {\n columnIndex--;\n previousCell = this.table.children[rowIndex].children[columnIndex];\n } else {\n columnIndex = this.getWidth() - 1;\n rowIndex--;\n previousCell = this.table.children[rowIndex].children[columnIndex];\n }\n }\n return previousCell;\n }\n\n /**\n * find current below column in the table\n */\n findBelow() {\n const { table } = this;\n const rowIndex = this.getRowIndex();\n const columnIndex = this.getColumnIndex();\n let y = 0;\n let t = table.children[rowIndex].children[columnIndex];\n while (t) {\n y++;\n if (table.children[rowIndex + y] && table.children[rowIndex + y].children[columnIndex]) {\n t = table.children[rowIndex + y].children[columnIndex];\n return t;\n }\n return;\n }\n }\n\n /**\n * True if on first cell of the table\n */\n isFirstCell(): boolean {\n return this.isFirstRow() && this.isFirstColumn();\n }\n\n /**\n * True if on last cell of the table\n */\n isLastCell(): boolean {\n return this.isLastRow() && this.isLastColumn();\n }\n\n /**\n * True if on first row\n */\n isFirstRow(): boolean {\n return this.getRowIndex() === 0;\n }\n\n /**\n * True if on last row\n */\n isLastRow(): boolean {\n return this.getRowIndex() === this.getHeight() - 1;\n }\n\n /**\n * True if on first column\n */\n isFirstColumn(): boolean {\n return this.getColumnIndex() === 0;\n }\n\n /**\n * True if on last column\n */\n isLastColumn(): boolean {\n return this.getColumnIndex() === this.getWidth() - 1;\n }\n\n /**\n * find cell data with col and row\n */\n\n findCellByPath(cell: SelectedCell): TableCellElement {\n return this.table.children[cell.row].children[cell.col] as TableCellElement;\n }\n}\n","import { Node, Range } from 'slate';\nimport { TableOptions } from '../table.types';\nimport { TablePosition } from './table-position';\n\n/**\n * True if the given range is inside one table\n */\nexport function isRangeInTable(opts: TableOptions, node: Node, range: Range): boolean {\n const { anchor, focus } = range;\n const startPosition = TablePosition.create(opts, node, anchor.path);\n const endPosition = TablePosition.create(opts, node, focus.path);\n\n // Only handle events in tables\n if (!startPosition.isInTable() || !endPosition.isInTable()) {\n return false;\n }\n\n // Inside the same table\n return startPosition.table === endPosition.table;\n}\n","import { Editor } from 'slate';\nimport { TableOptions } from '../table.types';\nimport { isRangeInTable } from './is-range-in-table';\n\n/**\n * Is the selection in a table\n */\nexport function isSelectionInTable(opts: TableOptions, editor: Editor): boolean {\n if (!editor.selection) {\n return false;\n }\n return isRangeInTable(opts, editor, editor.selection);\n}\n","import { TableCellElement, TableElement } from '../../../custom-types';\n\nexport interface CellRect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport function calcSpanForRow(table: TableElement, targetIndex: number) {\n const rowspans = [];\n table.children\n .filter((row, rowIndex) => rowIndex < targetIndex)\n .forEach((row, rowIndex) => {\n row.children.forEach((cell: TableCellElement, columnIndex) => {\n if (cell.rowspan && cell.rowspan > 1) {\n const rect = {\n x: rowIndex,\n y: columnIndex,\n width: cell.colspan || 1,\n height: cell.rowspan || 1\n };\n rowspans.push(rect);\n }\n });\n });\n return table.children[0].children.map((cell, columnIndex) => {\n return rowspans.some(rowspan => isInside(rowspan, targetIndex, columnIndex));\n });\n}\n\nexport function calcSpanForColumn(table: TableElement, targetIndex: number) {\n const rowspans = [];\n table.children.forEach((row, rowIndex) => {\n row.children\n .filter((cell, columnIndex) => columnIndex < targetIndex)\n .forEach((cell: TableCellElement, columnIndex) => {\n if (cell.colspan && cell.colspan > 1) {\n const rect = {\n x: rowIndex,\n y: columnIndex,\n width: cell.colspan || 1,\n height: cell.rowspan || 1\n };\n rowspans.push(rect);\n }\n });\n });\n return table.children.map((cell, rowIndx) => {\n return rowspans.some(rowspan => isInside(rowspan, rowIndx, targetIndex));\n });\n}\n\nexport function calcOriginSpan(table: TableElement, targetRowIndex: number, targetColumnIndex: number) {\n for (let rowIndex = 0; rowIndex <= targetRowIndex; rowIndex++) {\n const row = table.children[rowIndex];\n const originCell = row.children\n .filter((cell, columnIndex) => columnIndex <= targetColumnIndex)\n .find((cell: TableCellElement, columnIndex) => {\n if (cell.rowspan > 1 || cell.colspan > 1) {\n const rect = {\n x: rowIndex,\n y: columnIndex,\n width: cell.colspan || 1,\n height: cell.rowspan || 1\n };\n return isInside(rect, targetRowIndex, targetColumnIndex);\n }\n });\n if (originCell) {\n return originCell;\n }\n }\n}\n\nexport function isInside(cellRect: CellRect, rowIndex: number, columnIndex: number): boolean {\n if (\n rowIndex >= cellRect.x &&\n rowIndex <= cellRect.x + cellRect.height - 1 &&\n columnIndex >= cellRect.y &&\n columnIndex <= cellRect.y + cellRect.width - 1\n ) {\n return true;\n }\n return false;\n}\n","import { TableElement } from '../../../custom-types';\nimport { TableOptions } from '../table.types';\n\nexport function addColumns(table: TableElement, columnsCount: number, insertIndex?: number) {\n if (table.columns.length < columnsCount) {\n if (!insertIndex && insertIndex !== 0) {\n insertIndex = table.columns.length;\n }\n const opts = new TableOptions();\n let columns = table.columns.slice(0, columnsCount).map(item => {\n return { width: item.width };\n });\n const preTotalWidth = table.columns.reduce((prevValue, column) => {\n return prevValue + column.width;\n }, 0);\n\n for (let i = 0; i < columnsCount - table.columns.length; i++) {\n columns.splice(insertIndex, 0, { width: opts.defaultWidth });\n }\n const currentTotalWidth = columns.reduce((prevValue, column) => {\n return prevValue + column.width;\n }, 0);\n\n const percentage = preTotalWidth / currentTotalWidth;\n return columns.map((column, index) => {\n const width = Math.round(column.width * percentage > opts.minWidthPx ? column.width * percentage : opts.minWidthPx);\n return { width };\n });\n }\n return table.columns;\n}\n","import { Transforms, Editor, NodeEntry } from 'slate';\nimport { TablePosition, createCell } from '../utils';\nimport { calcSpanForColumn } from '../utils/calc-span';\nimport { addColumns } from '../utils/add-columns';\nimport { TableOptions } from '../table.types';\nimport { TableCellElement, TableElement } from '../../../custom-types';\n\n/**\n * Insert a new column in current table\n */\nexport function insertColumn(\n opts: TableOptions,\n editor: Editor,\n count = 1,\n at?: number, // Column index\n getCell?: (column: number, row: number) => TableCellElement\n) {\n const { selection } = editor;\n const {\n anchor: { path }\n } = selection;\n\n const tablePosition = TablePosition.create(opts, editor, path);\n const { table, tableEntry } = tablePosition;\n\n const insertColumnIndex = typeof at === 'undefined' ? tablePosition.getColumnIndex() + 1 : at;\n\n // Insert the new cell\n\n Editor.withoutNormalizing(editor, () => {\n const colspan = calcSpanForColumn(table, insertColumnIndex);\n for (let i = 0; i < count; i++) {\n table.children.forEach((row, rowIndex) => {\n const isInside = colspan[rowIndex];\n const newCell = getCell ? getCell(insertColumnIndex, rowIndex) : createCell(opts);\n if (isInside) {\n newCell.hidden = true;\n const dirtyCell = row.children.find(\n (cell: TableCellElement, columnIndex: number) =>\n !cell.hidden &&\n columnIndex < insertColumnIndex &&\n cell.colspan &&\n cell.colspan + columnIndex > insertColumnIndex\n ) as TableCellElement;\n if (dirtyCell) {\n Transforms.setNodes(\n editor,\n { colspan: dirtyCell.colspan + 1 },\n {\n at: tablePosition.tableEntry[1].concat(rowIndex).concat(row.children.indexOf(dirtyCell))\n }\n );\n }\n }\n Transforms.insertNodes(editor, [newCell], {\n at: tablePosition.tableEntry[1].concat(rowIndex).concat(insertColumnIndex)\n });\n });\n }\n if (table.columns) {\n Transforms.setNodes(editor, { columns: addColumns(table, table.columns.length + 1, insertColumnIndex) }, { at: tableEntry[1] });\n }\n });\n}\n\n/**\n * Insert new column in the row\n */\nexport function insertColumnAtRow(\n opts: TableOptions,\n editor: Editor,\n count = 1,\n tableEntry: NodeEntry<TableElement>,\n rowIndex: number,\n columnIndex: number,\n getCell?: (column: number, row: number) => TableCellElement\n) {\n Editor.withoutNormalizing(editor, () => {\n for (let i = 0; i < count; i++) {\n const newCell = getCell ? getCell(columnIndex, rowIndex) : createCell(opts);\n Transforms.insertNodes(editor, [newCell], {\n at: tableEntry[1].concat([rowIndex, columnIndex])\n });\n }\n });\n}\n","import { Editor, Element, Transforms } from 'slate';\nimport { TableRowElement } from '../../../custom-types';\nimport { TableOptions } from '../table.types';\nimport { TablePosition, createRow } from '../utils';\nimport { calcSpanForRow } from '../utils/calc-span';\n\n/**\n * Insert a new row in current table\n */\nexport function insertRow(\n opts: TableOptions,\n editor: Editor,\n count = 1,\n at?: number // row index\n) {\n const tablePosition = TablePosition.create(opts, editor, editor.selection.anchor.path);\n const { table, row } = tablePosition;\n\n // Create a new row with the right count of cells\n const columns = (table.children[0].children as Element[]).length;\n const newRows: TableRowElement[] = [];\n\n const rowIndex = tablePosition.getRowIndex();\n const insertRowIndex = typeof at === 'undefined' ? rowIndex + 1 : at;\n\n for (let i = 0; i < count; i++) {\n const newRow = createRow(opts, columns);\n newRows.push(newRow);\n }\n\n if (newRows.length === 1) {\n const rowspan = calcSpanForRow(table, insertRowIndex);\n newRows[0].children.forEach((cell, columnIndex) => {\n const isInside = rowspan[columnIndex];\n if (isInside) {\n cell.hidden = true;\n const dirtyRow = table.children.find(\n (row: TableRowElement, rowIndex: number) =>\n !row.children[columnIndex].hidden &&\n rowIndex < insertRowIndex &&\n row.children[columnIndex].rowspan &&\n row.children[columnIndex].rowspan + rowIndex > insertRowIndex\n );\n if (dirtyRow) {\n Transforms.setNodes(\n editor,\n { rowspan: dirtyRow.children[columnIndex].rowspan + 1 },\n {\n at: tablePosition.tableEntry[1].concat(table.children.indexOf(dirtyRow)).concat(columnIndex)\n }\n );\n }\n }\n });\n }\n\n Transforms.insertNodes(editor, newRows, {\n at: tablePosition.tableEntry[1].concat(insertRowIndex)\n });\n}\n","import * as TheTransforms from '../../../transforms';\nimport { Editor, Node, Transforms } from 'slate';\nimport { TheEditor } from '../../../interfaces/editor';\nimport { TableOptions } from '../table.types';\nimport { createTable } from '../utils';\n\n/**\n * Insert a new table\n */\nexport function insertTable(\n opts: TableOptions,\n editor: Editor,\n columns: number = 3,\n rows: number = 3,\n getCellContent?: (column: number, row: number) => Node[]\n) {\n const { selection } = editor;\n if (!selection?.anchor) {\n return;\n }\n // Create the table node\n const table = createTable(opts, columns, rows, getCellContent);\n TheTransforms.insertElement(editor, table);\n}\n","import { Transforms, NodeEntry, Editor, Element } from 'slate';\nimport { TableOptions } from '../table.types';\nimport { createCell } from '../utils/create-cell';\n\n/**\n * Clear the content of the given cell\n */\nexport function clearCell(opts: TableOptions, editor: Editor, cellEntry: NodeEntry<Element>) {\n Transforms.removeNodes(editor, { at: cellEntry[1] });\n const cellNode = {\n ...cellEntry[0],\n ...createCell(opts)\n };\n Transforms.insertNodes(editor, { ...cellNode }, { at: cellEntry[1] });\n}\n","import { TableElement } from '../../../custom-types';\n\nexport function removeColumns(table: TableElement, columnsCount: number, index?: number) {\n if (table.columns.length > columnsCount) {\n let removeColumns = [];\n if ((index && index > 0) || index === 0) {\n removeColumns = table.columns.slice(index, index + 1);\n } else {\n removeColumns = table.columns.slice(columnsCount);\n }\n if (removeColumns.length) {\n const addWidth =\n removeColumns.reduce((totalWidth, cell) => {\n return (totalWidth += cell.width);\n }, 0) / columnsCount;\n return table.columns\n .filter(item => !removeColumns.includes(item))\n .map(item => {\n return { width: item.width + Math.round(addWidth) };\n });\n }\n }\n return table.columns;\n}\n","import { Editor, Element, Transforms } from 'slate';\nimport { TablePosition } from '../utils';\nimport { clearCell } from './clear-cell';\nimport { removeColumns } from '../utils/remove-columns';\nimport { TableOptions } from '../table.types';\nimport { TableCellElement } from '../../../custom-types';\n\nexport function removeColumn(opts: TableOptions, editor: Editor, selectColIndex?: number) {\n const { selection } = editor;\n const {\n anchor: { path }\n } = selection;\n\n const tablePosition = TablePosition.create(opts, editor, path);\n const {\n tableEntry,\n table,\n row,\n cellEntry: [cellNode, cellPath]\n } = tablePosition;\n\n const rows = tableEntry[0].children as Element[];\n\n selectColIndex = selectColIndex === undefined ? [...cellPath].pop() : selectColIndex;\n\n Editor.withoutNormalizing(editor, () => {\n table.children.map((row, rowIndex) => {\n const dirtyCell = row.children.find(\n (cell: TableCellElement, columnIndex: number) =>\n !cell.hidden && columnIndex < selectColIndex && cell.colspan && cell.colspan + columnIndex > selectColIndex\n ) as TableCellElement;\n if (dirtyCell) {\n const colspan = dirtyCell.colspan - 1 > 1 ? dirtyCell.colspan - 1 : null;\n Transforms.setNodes(\n editor,\n { colspan },\n {\n at: tablePosition.tableEntry[1].concat(rowIndex).concat(row.children.indexOf(dirtyCell))\n }\n );\n }\n const removeCell = row.children[selectColIndex] as TableCellElement;\n const nextCell = row.children[selectColIndex + 1] as TableCellElement;\n if (nextCell && nextCell.hidden && removeCell.colspan > 1) {\n const colspan = removeCell.colspan - 1 > 1 ? removeCell.colspan - 1 : null;\n Transforms.setNodes(\n editor,\n { colspan, rowspan: removeCell.rowspan || null, hidden: null },\n { at: tablePosition.tableEntry[1].concat(rowIndex).concat(row.children.indexOf(nextCell)) }\n );\n }\n });\n });\n\n // Remove the cell from every row\n Editor.withoutNormalizing(editor, () => {\n if (tablePosition.getWidth() > 1) {\n rows.forEach((row, rowIndex) => {\n const at = tableEntry[1].concat([rowIndex, selectColIndex]);\n Transforms.removeNodes(editor, { at });\n });\n if (table.columns) {\n Transforms.setNodes(\n editor,\n { columns: removeColumns(table, table.columns.length - 1, selectColIndex) },\n { at: tableEntry[1] }\n );\n }\n } else {\n // If last column, clear text in cells instead\n rows.forEach((row, rowIndex) => {\n row.children.forEach((cell, cellIndex) => {\n const at = tableEntry[1].concat([rowIndex, cellIndex]);\n clearCell(opts, editor, [cell as Element, at]);\n });\n });\n }\n });\n}\n","import { Editor, Element, Transforms } from 'slate';\nimport { TableCellElement, TableRowElement } from '../../../custom-types';\nimport { TableOptions } from '../table.types';\nimport { TablePosition } from '../utils';\nimport { clearCell } from './clear-cell';\n\nexport function removeRow(opts: TableOptions, editor: Editor, selectRowIndex?: number) {\n const { selection } = editor;\n const {\n anchor: { path }\n } = selection;\n\n const tablePosition = TablePosition.create(opts, editor, path);\n const {\n tableEntry,\n table,\n rowEntry: [rowNode, rowPath]\n } = tablePosition;\n\n selectRowIndex = selectRowIndex === undefined ? [...rowPath].pop() : selectRowIndex;\n const at = tableEntry[1].concat(selectRowIndex);\n\n Editor.withoutNormalizing(editor, () => {\n table.children.map((row, rowIndex) => {\n if (rowIndex < selectRowIndex) {\n const dirtyCells = row.children.filter(\n (cell: TableCellElement, columnIndex: number) =>\n !cell.hidden && cell.rowspan && cell.rowspan + rowIndex > selectRowIndex\n );\n if (dirtyCells.length) {\n dirtyCells.map((dirtyCell: TableCellElement) => {\n const rowspan = dirtyCell.rowspan - 1 > 1 ? dirtyCell.rowspan - 1 : null;\n Transforms.setNodes(\n editor,\n { rowspan },\n {\n at: tablePosition.tableEntry[1].concat(rowIndex).concat(row.children.indexOf(dirtyCell))\n }\n );\n });\n }\n }\n });\n const removeRow = table.children[selectRowIndex] as TableRowElement;\n const nextRow = table.children[selectRowIndex + 1] as TableRowElement;\n if (nextRow) {\n removeRow.children.map((cell: TableCellElement, cellIndex) => {\n const nextCell = nextRow.children[cellIndex];\n if (nextCell && cell.rowspan > 1 && nextCell.hidden) {\n const rowspan = cell.rowspan - 1 > 1 ? cell.rowspan - 1 : null;\n Transforms.setNodes(\n editor,\n { colspan: cell.colspan || null, rowspan, hidden: null },\n { at: tablePosition.tableEntry[1].concat(selectRowIndex + 1).concat(cellIndex) }\n );\n }\n });\n }\n });\n\n // Update table by removing the row\n if (tablePosition.getHeight() > 1) {\n Transforms.removeNodes(editor, { at });\n } else {\n // If last remaining row, clear it instead\n Editor.withoutNormalizing(editor, () => {\n (rowNode.children as Element[]).forEach((cell, cellIndex) => {\n clearCell(opts, editor, [cell, at.concat(cellIndex)]);\n });\n });\n }\n}\n","import { Path } from 'slate';\n\nexport const NextPath = (path: Path) => {\n const [last, ...rest] = [...path].reverse();\n return [...rest.reverse(), last + 1];\n};\n","import { Editor, Element, Path, Transforms, NodeEntry, Descendant } from 'slate';\nimport { createEmptyParagraph } from '../../../utils/create-empty-paragraph';\nimport { TableOptions } from '../table.types';\nimport { TablePosition } from '../utils';\nimport { NextPath } from '../utils/next-path';\n\nexport function removeTable(opts: TableOptions, editor: Editor) {\n const { selection } = editor;\n const {\n anchor: { path }\n } = selection;\n const pos = TablePosition.create(opts, editor, path);\n const {\n table,\n tableEntry: [, tablePath]\n } = pos;\n let nextFocusEntry: NodeEntry<Element> = null;\n let shouldCollapseToEnd = false;\n\n const nextEntry = Editor.next<Element>(editor, { at: tablePath });\n if (nextEntry) {\n nextFocusEntry = nextEntry;\n } else {\n const prevEntry = Editor.previous<Element>(editor, { at: tablePath });\n if (prevEntry) {\n nextFocusEntry = prevEntry;\n shouldCollapseToEnd = true;\n } else if (opts.exitBlockType) {\n nextFocusEntry = [\n {\n type: opts.exitBlockType,\n children: [{ text: '' }]\n } as Element,\n null\n ];\n nextFocusEntry[1] = NextPath(tablePath);\n Transforms.insertNodes(editor, nextFocusEntry[0], { at: nextFocusEntry[1] });\n }\n }\n\n Transforms.removeNodes(editor, { at: tablePath });\n Transforms.insertNodes(editor, createEmptyParagraph(), { at: tablePath });\n\n if (!nextFocusEntry) {\n return;\n }\n\n if (shouldCollapseToEnd) {\n const endPoint = Editor.end(editor, nextFocusEntry[1]);\n Transforms.select(editor, endPoint);\n } else {\n const previousPath = Path.previous(nextFocusEntry[1]);\n const startPoint = Editor.start(editor, previousPath);\n Transforms.select(editor, startPoint);\n }\n}\n","import { Editor, Element, NodeEntry, Transforms, Text, Path, Range, Node } from 'slate';\nimport { TableOptions } from './table.types';\nimport { Alignment, ALIGN_BLOCK_TYPES, ElementKinds, MarkProps, MarkTypes, VerticalAlignment } from '../../constants/node-types';\nimport { insertColumn } from './transforms/insert-column';\nimport { insertRow } from './transforms/insert-row';\nimport { insertTable } from './transforms/insert-table';\nimport { removeColumn } from './transforms/remove-column';\nimport { removeRow } from './transforms/remove-row';\nimport { removeTable } from './transforms/remove-table';\nimport { clearCell } from './transforms/clear-cell';\nimport { getAboveByType } from '../../queries/get-above-by-type';\nimport { ELEMENT_TO_COMPONENT } from 'slate-angular';\nimport type { TheTableComponent } from './components/table.component';\nimport { TheEditor } from '../../interfaces';\nimport { TableCellElement, TableRowElement } from '../../custom-types';\nimport * as TheTransforms from '../../transforms';\n\nexport const TableEditor = {\n insertTable(editor: Editor, optionsParam?: TableOptions) {\n const opts = new TableOptions(optionsParam);\n insertTable(opts, editor);\n },\n insertColumn(editor: Editor, count: number = 1, at?: number, optionsParam?: TableOptions) {\n const opts = new TableOptions(optionsParam);\n insertColumn(opts, editor, count, at);\n },\n insertRow(editor: Editor, count: number = 1, at?: number, optionsParam?: TableOptions) {\n const opts = new TableOptions(optionsParam);\n insertRow(opts, editor, count, at);\n },\n removeTable(editor: Editor, optionsParam?: TableOptions) {\n const opts = new TableOptions(optionsParam);\n removeTable(opts, editor);\n },\n removeRow(editor: Editor, rowIndex?: number, optionsParam?: TableOptions) {\n const opts = new TableOptions(optionsParam);\n removeRow(opts, editor, rowIndex);\n },\n removeColumn(editor: Editor, colIndex?: number, optionsParam?: TableOptions) {\n const opts = new TableOptions(optionsParam);\n removeColumn(opts, editor, colIndex);\n },\n clearCell(editor: Editor, nodeEntry?: NodeEntry<Element>, optionsParam?: TableOptions) {\n const opts = new TableOptions(optionsParam);\n clearCell(opts, editor, nodeEntry);\n },\n isActive(editor: Editor) {\n const [table] = Editor.nodes(editor, { match: n => Element.isElement(n) && n.type === ElementKinds.table });\n return !!table;\n },\n getSelectedCells(editor: Editor) {\n const tableNode = getAboveByType(editor, ElementKinds.table);\n if (tableNode) {\n const tableComponent = ELEMENT_TO_COMPONENT.get(tableNode[0]) as TheTableComponent;\n const cells = tableComponent.tableStore.selectedCells;\n if (cells.length > 0) {\n return cells;\n }\n }\n return null;\n },\n isAlignActive(editor: TheEditor, alignment: Alignment) {\n const cells = TableEditor.getSelectedCells(editor);\n if (cells) {\n const lastCell = cells[cells.length - 1];\n const tableNode = getAboveByType(editor, ElementKinds.table);\n const cellPath = [...tableNode[1], lastCell.row, lastCell.col];\n const cell = Node.get(editor, cellPath) as TableCellElement;\n const { align } = cell;\n if (!align && alignment === Alignment.left) {\n return true;\n }\n return align === alignment;\n }\n return null;\n },\n setAlign(editor: Editor, alignment: Alignment) {\n return TableEditor.handleSelectedCells(editor, (cellPath, cellRange) => {\n Transforms.setNodes(\n editor,\n { align: alignment },\n {\n at: cellPath\n }\n );\n Transforms.setNodes(\n editor,\n { align: undefined },\n {\n at: cellRange,\n match: (n: Element) => ALIGN_BLOCK_TYPES.includes(n.type)\n }\n );\n });\n },\n setVerticalAlign(editor: TheEditor, alignment: VerticalAlignment) {\n const isSelected = TableEditor.handleSelectedCells(editor, cellPath => {\n Transforms.setNodes(editor, { verticalAlign: alignment }, { at: cellPath });\n });\n if (!isSelected) {\n const cellEntry = getAboveByType(editor, ElementKinds.tableCell);\n if (cellEntry) {\n const [, cellPath] = cellEntry;\n Transforms.setNodes(\n editor,\n { verticalAlign: alignment },\n {\n at: cellPath,\n match: (n: Element) => n.type === ElementKinds.tableCell\n }\n );\n return true;\n }\n return false;\n }\n return true;\n },\n isVerticalAlignActive(editor: TheEditor, alignment: VerticalAlignment) {\n const cells = TableEditor.getSelectedCells(editor);\n if (cells) {\n const lastCell = cells[cells.length - 1];\n const tableNode = getAboveByType(editor, ElementKinds.table);\n const cellPath = [...tableNode[1], lastCell.row, lastCell.col];\n const cell = Node.get(editor, cellPath) as TableCellElement;\n const { verticalAlign } = cell;\n if (!verticalAlign && alignment === VerticalAlignment.top) {\n return true;\n }\n return verticalAlign === alignment;\n } else {\n const cellElement = getAboveByType(editor, ElementKinds.tableCell);\n if (cellElement) {\n const { verticalAlign } = cellElement[0];\n if (!verticalAlign && alignment === VerticalAlignment.top) {\n return true;\n }\n return verticalAlign === alignment;\n }\n }\n return null;\n },\n toggleMark(editor: TheEditor, isActive: boolean, format: string | string[], value: string | boolean = true) {\n return TableEditor.handleSelectedCells(editor, at => {\n if (isActive) {\n Transforms.unsetNodes(editor, format, {\n at,\n match: Text.isText,\n split: true\n });\n } else {\n Transforms.setNodes(\n editor,\n { [format as string]: value },\n {\n at,\n match: Text.isText,\n split: true\n }\n );\n }\n });\n },\n clearMark(editor: TheEditor) {\n return TableEditor.handleSelectedCells(editor, (cellPath, cellRange) => {\n const unsetMarks: { [key in MarkTypes]?: null | string } = {};\n MarkProps.forEach(key => {\n unsetMarks[key] = null;\n });\n TheTransforms.setMarks(editor, unsetMarks, cellRange);\n });\n },\n handleSelectedCells(editor: TheEditor, handle: (cellPath: Path, cellRange: Range) => void) {\n const cells = TableEditor.getSelectedCells(editor);\n if (cells) {\n const tableNode = getAboveByType(editor, ElementKinds.table);\n Editor.withoutNormalizing(editor, () => {\n for (const cell of cells) {\n const { row, col } = cell;\n const cellPath = [...tableNode[1], row, col];\n const cellRange = { anchor: Editor.start(editor, cellPath), focus: Editor.end(editor, cellPath) };\n handle(cellPath, cellRange);\n }\n });\n return true;\n }\n return false;\n },\n isActiveHeader(editor: TheEditor) {\n const [tableRowEntry] = Editor.nodes(editor, { match: (n: Element) => n.type === ElementKinds.tableRow });\n return tableRowEntry && tableRowEntry[0] && (tableRowEntry[0] as TableRowElement).header;\n }\n};\n","import { Editor, Text, Node } from 'slate';\nimport { TableEditor } from '../table/table.editor';\n\nexport interface MarkEditor extends Editor {\n removeMark: (key: string, shouldChange?: boolean) => void;\n}\n\nexport const MarkEditor = {\n isMarkActive(editor: Editor, format) {\n if (!editor?.selection) {\n return;\n }\n const node = Node.get(editor, editor?.selection?.anchor?.path);\n if (!Text.isText(node)) {\n return false;\n }\n const marks = Editor.marks(editor);\n return marks && marks[format] ? true : false;\n },\n toggleMark(editor, format) {\n const isActive = MarkEditor.isMarkActive(editor, format);\n if (TableEditor.toggleMark(editor, isActive, format)) {\n return;\n }\n if (isActive) {\n Editor.removeMark(editor, format);\n } else {\n Editor.addMark(editor, format, true);\n }\n }\n};\n","import { MarkTypes } from '../../constants/node-types';\nimport { ToolbarItem } from '../../interfaces';\nimport { MarkEditor } from './mark.editor';\n\nexport const MarkOptions: ToolbarItem[] = [\n {\n key: MarkTypes.bold,\n icon: 'bold',\n name: '加粗',\n execute: editor => MarkEditor.toggleMark(editor, MarkTypes.bold),\n active: editor => MarkEditor.isMarkActive(editor, MarkTypes.bold)\n },\n {\n key: MarkTypes.italic,\n icon: 'italic',\n name: '斜体',\n execute: editor => MarkEditor.toggleMark(editor, MarkTypes.italic),\n active: editor => MarkEditor.isMarkActive(editor, MarkTypes.italic)\n },\n {\n key: MarkTypes.strike,\n icon: 'strike',\n name: '删除线',\n execute: editor => MarkEditor.toggleMark(editor, MarkTypes.strike),\n active: editor => MarkEditor.isMarkActive(editor, MarkTypes.strike)\n },\n {\n key: MarkTypes.underline,\n icon: 'underline',\n name: '下划线',\n execute: editor => MarkEditor.toggleMark(editor, MarkTypes.underline),\n active: editor => MarkEditor.isMarkActive(editor, MarkTypes.underline)\n },\n {\n key: MarkTypes.codeLine,\n icon: 'code',\n name: '行内代码',\n execute: editor => MarkEditor.toggleMark(editor, MarkTypes.codeLine),\n active: editor => MarkEditor.isMarkActive(editor, MarkTypes.codeLine)\n }\n];\n","import { ElementKinds } from '../../constants/node-types';\nimport { ToolbarItem } from '../../interfaces';\nimport { ListEditor } from './list.editor';\n\nexport const ListOptions: ToolbarItem[] = [\n {\n key: ElementKinds.numberedList,\n icon: 'list-ordered',\n name: '有序列表',\n execute: editor => ListEditor.toggleList(editor, ElementKinds.numberedList),\n active: editor => ListEditor.isActive(editor, ElementKinds.numberedList)\n },\n {\n key: ElementKinds.bulletedList,\n icon: 'list-bullet',\n name: '无序列表',\n execute: editor => ListEditor.toggleList(editor, ElementKinds.bulletedList),\n active: editor => ListEditor.isActive(editor, ElementKinds.bulletedList)\n }\n];\n","import { ElementKinds } from '../../constants/node-types';\nimport { ToolbarItem } from '../../interfaces';\nimport { ImageEditor } from './image.editor';\n\nexport const ImageOptions: ToolbarItem[] = [\n {\n key: ElementKinds.image,\n icon: 'image',\n name: '图片',\n execute: editor => ImageEditor.openUpload(editor),\n active: editor => ImageEditor.isImageActive(editor)\n }\n];\n","import { Editor } from 'slate';\nimport { ElementKinds } from '../../constants/node-types';\nimport * as TheTransforms from '../../transforms';\n\nexport const HrEditor = {\n insertHr(editor: Editor) {\n TheTransforms.insertElement(editor, { type: ElementKinds.hr, children: [{ text: '' }] });\n }\n};\n","import { ElementKinds } from '../../constants/node-types';\nimport { ToolbarItem } from '../../interfaces';\nimport * as TheQueries from '../../queries';\nimport { HrEditor } from './hr.editor';\n\nexport const HrOptions: ToolbarItem[] = [\n {\n key: ElementKinds.hr,\n icon: 'horizontal-line',\n name: '分割线',\n active: editor => TheQueries.isBlockActive(editor, ElementKinds.hr),\n execute: editor => HrEditor.insertHr(editor)\n }\n];\n","import { Editor, Transforms, Element } from 'slate';\nimport { ElementKinds } from '../../constants/node-types';\nimport { HeadingElementKinds } from '../../public-api';\n\nexport const HeadingEditor = {\n setHeading(editor: Editor, heading: HeadingElementKinds) {\n Editor.withoutNormalizing(editor, () => {\n const types = [ElementKinds.bulletedList, ElementKinds.numberedList, ElementKinds.listItem];\n Transforms.unwrapNodes(editor, {\n at: editor.selection,\n match: n => Element.isElement(n) && types.includes(n.type as any),\n mode: 'all',\n split: true\n });\n Transforms.setNodes(editor, { type: heading });\n });\n },\n isHeadingActive(editor: Editor, heading: HeadingElementKinds) {\n const [match] = Editor.nodes(editor, {\n match: n => Element.isElement(n) && n.type === heading,\n universal: true\n });\n return !!match;\n }\n};\n","import { Transforms } from 'slate';\nimport { ElementKinds, STANDARD_HEADING_TYPES } from '../../constants/node-types';\nimport { ToolbarItem, ToolbarItemType } from '../../interfaces';\nimport * as TheQueries from '../../queries';\nimport { HeadingEditor } from './heading.editor';\n\nexport const HeadingOptions: ToolbarItem[] = [\n {\n name: '正文',\n key: ElementKinds.headingList,\n type: ToolbarItemType.toolDropdown,\n includes: [ElementKinds.paragraph, ...STANDARD_HEADING_TYPES]\n },\n {\n key: ElementKinds.paragraph,\n name: '正文',\n styles: { height: '40px' },\n execute: editor => Transforms.setNodes(editor, { type: ElementKinds.paragraph }),\n active: editor => TheQueries.isParagraph(editor)\n },\n {\n key: ElementKinds.heading_1,\n name: '标题1',\n icon: 'header-1',\n styles: { height: '40px', fontSize: '28px' },\n execute: editor => HeadingEditor.setHeading(editor, ElementKinds.heading_1),\n active: editor => HeadingEditor.isHeadingActive(editor, ElementKinds.heading_1)\n },\n {\n key: ElementKinds.heading_2,\n icon: 'header-2',\n name: '标题2',\n styles: { height: '38px', fontSize: '24px' },\n execute: editor => HeadingEditor.setHeading(editor, ElementKinds.heading_2),\n active: editor => HeadingEditor.isHeadingActive(editor, ElementKinds.heading_2)\n },\n {\n key: ElementKinds.heading_3,\n icon: 'header-3',\n name: '标题3',\n styles: { height: '34px', fontSize: '20px' },\n execute: editor => HeadingEditor.setHeading(editor, ElementKinds.heading_3),\n active: editor => HeadingEditor.isHeadingActive(editor, ElementKinds.heading_3)\n },\n {\n key: ElementKinds.heading_4,\n icon: 'header-4',\n name: '标题4',\n styles: { height: '30px', fontSize: '16px' },\n execute: editor => HeadingEditor.setHeading(editor, ElementKinds.heading_4),\n active: editor => HeadingEditor.isHeadingActive(editor, ElementKinds.heading_4)\n }\n];\n","import { ElementKinds } from '../../constants/node-types';\nimport { ToolbarItem } from '../../interfaces';\nimport * as TheQueries from '../../queries';\nimport { BlockquoteEditor } from './blockquote.editor';\n\nexport const BlockquoteOptions: ToolbarItem[] = [\n {\n key: ElementKinds.blockquote,\n icon: 'blockquote',\n name: '引用',\n active: editor => TheQueries.isBlockActive(editor, ElementKinds.blockquote),\n execute: editor => BlockquoteEditor.toggleBlockquote(editor)\n }\n];\n","import { Editor, Transforms, Element } from 'slate';\nimport * as TheQueries from '../../queries';\nimport { Alignment, ALIGN_BLOCK_TYPES, ElementKinds } from '../../constants/node-types';\nimport { TableEditor } from '../table/table.editor';\n\nexport const AlignEditor = {\n isActive(editor: Editor, alignment: Alignment) {\n if (!editor?.selection) {\n return;\n }\n const tableCellAlign = TableEditor.isAlignActive(editor, alignment);\n if (tableCellAlign !== null) {\n return tableCellAlign;\n }\n\n const blockElement = TheQueries.anchorBlock(editor);\n if (blockElement) {\n const { align } = blockElement;\n if (!align && alignment === Alignment.left) {\n return true;\n }\n return align === alignment;\n }\n if (alignment === Alignment.left) {\n return true;\n }\n return false;\n },\n setAlign(editor: Editor, alignment: Alignment) {\n if (TableEditor.setAlign(editor, alignment)) {\n return;\n }\n const props = {\n align: alignment\n };\n Transforms.setNodes(editor, props, {\n at: editor.selection,\n match: (n: Element) => ALIGN_BLOCK_TYPES.includes(n.type)\n });\n }\n};\n","import { DropdownMode } from '../../constants';\nimport { Alignment, ToolbarActionTypes } from '../../constants/node-types';\nimport { ToolbarItem, ToolbarItemType } from '../../interfaces';\nimport { AlignEditor } from './align.editor';\n\nexport const AlignOptions: ToolbarItem[] = [\n {\n key: ToolbarActionTypes.alignType,\n type: ToolbarItemType.toolDropdown,\n dropdownMode: DropdownMode.icon,\n includes: [ToolbarActionTypes.alignLeft, ToolbarActionTypes.alignCenter, ToolbarActionTypes.alignRight],\n name: '对齐方式'\n },\n {\n key: ToolbarActionTypes.alignLeft,\n icon: 'align-left',\n name: '左对齐',\n execute: editor => AlignEditor.setAlign(editor, Alignment.left),\n active: editor => AlignEditor.isActive(editor, Alignment.left)\n },\n {\n key: ToolbarActionTypes.alignCenter,\n icon: 'align-center',\n name: '居中',\n execute: editor => AlignEditor.setAlign(editor, Alignment.center),\n active: editor => AlignEditor.isActive(editor, Alignment.center)\n },\n {\n key: ToolbarActionTypes.alignRight,\n icon: 'align-right',\n name: '右对齐',\n execute: editor => AlignEditor.setAlign(editor, Alignment.right),\n active: editor => AlignEditor.isActive(editor, Alignment.right)\n }\n];\n","import { Component, ElementRef, ChangeDetectorRef } from '@angular/core';\nimport { Editor, Element } from 'slate';\nimport { TheBaseElementComponent } from '../../interfaces';\n\n@Component({\n selector: 'blockquote[theBlockquote]',\n template: `<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>`\n})\nexport class TheBlockquoteComponent extends TheBaseElementComponent<Element, Editor> {\n constructor(public elementRef: ElementRef, public cdr: ChangeDetectorRef) {\n super(elementRef, cdr);\n }\n}\n","import { Editor, Element, Transforms } from 'slate';\nimport * as TheQueries from '../../queries';\nimport * as TheTransforms from '../../transforms';\nimport { ElementKinds } from '../../constants/node-types';\nimport { TheBlockquoteComponent } from './blockquote.component';\nimport { createEmptyParagraph } from '../../utils';\n\nexport const withBlockquote = (editor: Editor): Editor => {\n const { renderElement, deleteBackward, insertBreak, isContainer } = editor;\n\n editor.renderElement = (element: Element) => {\n if (element.type === ElementKinds.blockquote) {\n return TheBlockquoteComponent;\n }\n return renderElement(element);\n };\n\n editor.deleteBackward = unit => {\n const aboveResult = Editor.above<Element>(editor, {\n match: n => Editor.isBlock(editor, n) && n.type === ElementKinds.blockquote\n });\n if (!aboveResult) {\n return deleteBackward(unit);\n }\n const hasHandled = TheTransforms.handleContinualDeleteBackward(editor, aboveResult, ElementKinds.blockquote);\n if (hasHandled) {\n return;\n }\n return deleteBackward(unit);\n };\n\n editor.insertBreak = () => {\n const lowestBlock = TheQueries.anchorBlock(editor);\n\n if (!lowestBlock) {\n insertBreak();\n return;\n }\n const hasHandled = TheTransforms.handleContinualInsertBreak(editor, lowestBlock, ElementKinds.blockquote);\n if (hasHandled) {\n return;\n }\n const voidEntry = Editor.above<Element>(editor, {\n match: n => Editor.isBlock(editor, n) && Editor.isVoid(editor, n)\n });\n if (voidEntry && voidEntry[0]) {\n Transforms.insertNodes(editor, createEmptyParagraph());\n return;\n }\n return insertBreak();\n };\n\n editor.isContainer = (element: Element) => {\n return element.type === ElementKinds.blockquote ? true : isContainer(element);\n };\n\n return editor;\n};\n","export type ColorType = string;\n\nexport const Colors = [\n '#FFFFFF',\n '#333333',\n '#FF0100',\n '#FFDA00',\n '#A4E143',\n '#38D9F0',\n '#4EA8EE',\n '#9570E7',\n '#F3F3F3',\n '#CCCCCC',\n '#FEF3F1',\n '#FEFCDA',\n '#EDF6E8',\n '#E6FBFA',\n '#EBF4FC',\n '#F1EDF7',\n '#DDDDDD',\n '#A5A5A5',\n '#FCD5D0',\n '#F9EDA6',\n '#D4E9D7',\n '#C8E6EA',\n '#CCE0F2',\n '#DAD6EA',\n '#888888',\n '#494949',\n '#EE7976',\n '#E7B323',\n '#99C191',\n '#79C6CE',\n '#6EAAD7',\n '#9D8EC2',\n '#41464C',\n '#000000',\n '#BF1A1E',\n '#AD720E',\n '#1C7232',\n '#1C7892',\n '#18439D',\n '#521B78'\n];\n\nexport const BackgroundColors = [\n '#FFFFFF',\n '#FACCCC',\n '#FFEBCC',\n '#FFFFCC',\n '#CDE8CC',\n '#CCE0F5',\n '#EBD6FF',\n '#F3F3F3',\n '#F06665',\n '#FFC266',\n '#FFFF66',\n '#66B966',\n '#66A3E0',\n '#C285FF'\n];\n\nexport const SpecialTextColor = '#333333';\n\nexport const SpecialBackgroundColor = '#FFFFFF';\n\nexport const TableHeaderBackgroundColor = '#F3F3F3';\n\nexport interface ColorSelectOption {\n showCustom?: boolean;\n perRowColorNumbers: number;\n rowOptions: {\n [rowNumber: number]: string; // 设置每行选中的颜色\n };\n specialColor?: string;\n}\n","import { Component, OnInit, Input, ChangeDetectionStrategy, HostListener } from '@angular/core';\nimport { ThyPopoverRef } from 'ngx-tethys/popover';\nimport { ColorType, ColorSelectOption } from '../../constants/color-select';\n\n@Component({\n selector: 'the-color-select',\n templateUrl: 'color-select.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TheColorSelectComponent implements OnInit {\n @Input() selectedColor: string;\n\n @Input() selectAction: (color: ColorType) => void;\n\n @Input() showCustom = true;\n\n @Input() colors: string[];\n\n @Input() option: ColorSelectOption;\n\n color: string;\n\n customColor: string;\n\n selectColors: { rowValue: { value: string; classMaps: object }[]; tickColor: string }[] = [];\n\n @HostListener('document: mousedown', ['$event'])\n handleDocumentMouseDown(event: MouseEvent) {\n if (!document.querySelector('.color-container').contains(event.target as HTMLElement)) {\n this.popoverRef.close();\n }\n }\n\n constructor(private popoverRef: ThyPopoverRef<TheColorSelectComponent>) {}\n\n ngOnInit() {\n if (this.selectedColor) {\n this.customColor = this.selectedColor.slice(1);\n }\n this.buildColors();\n }\n\n @HostListener('mousedown', ['$event'])\n handleMouseDown(event: MouseEvent) {\n event.stopPropagation();\n }\n\n @HostListener('keydown', ['$event'])\n handleKeydown(event: MouseEvent) {\n event.stopPropagation();\n }\n\n buildColors() {\n const rows = parseInt((this.colors.length / this.option.perRowColorNumbers).toFixed(0), 10);\n for (let i = 0; i < rows; i++) {\n this.selectColors.push({\n rowValue: [\n ...this.colors.slice(i * this.option.perRowColorNumbers, (i + 1) * this.option.perRowColorNumbers).map(color => {\n return {\n value: color,\n classMaps: {\n selected: color === this.selectedColor,\n white: color === '#FFFFFF',\n 'mr-0': i === this.option.perRowColorNumbers - 1,\n 'mb-0': i === this.selectColors.length - 1,\n 'special-color': color === this.option.specialColor\n }\n };\n })\n ],\n tickColor: this.option.rowOptions && this.option.rowOptions[i + 1]\n });\n }\n }\n\n _selectColor(event: MouseEvent, color: string) {\n event.stopPropagation();\n if (this.option.specialColor && color === this.option.specialColor) {\n color = '';\n }\n this.selectedColor = color;\n this.selectAction(this.selectedColor);\n this.popoverRef.close();\n }\n\n colorChange(isEnter: boolean) {\n this.customColor = this.customColor.toLocaleUpperCase();\n this.selectedColor = '#' + this.customColor;\n if (this.customColor.length === 3) {\n this.selectedColor = '#' + this.customColor.replace(/(.)/g, '$1$1');\n }\n if (this.selectedColor.length === 7 && this.selectedColor !== this.option.specialColor) {\n this.selectColors = [];\n this.buildColors();\n }\n if (isEnter) {\n this.selectAction(this.selectedColor);\n this.popoverRef.close();\n }\n }\n customInputColorEnter(event: KeyboardEvent) {\n event.stopPropagation();\n this.selectAction(this.selectedColor);\n this.popoverRef.close();\n }\n}\n","<div class=\"color-container\">\n <div class=\"colors\">\n <div *ngFor=\"let row of selectColors; let rowIndex = index\">\n <span\n class=\"color-item\"\n *ngFor=\"let _color of row.rowValue; let i = index\"\n [ngClass]=\"_color.classMaps\"\n (mousedown)=\"_selectColor($event, _color.value)\"\n >\n <span [ngStyle]=\"{ background: _color.value }\">\n <thy-icon\n thyIconName=\"check\"\n [ngStyle]=\"{ color: row.tickColor }\"\n ></thy-icon>\n </span>\n </span>\n </div>\n </div>\n <div\n *ngIf=\"option.showCustom\"\n class=\"select-color\"\n >\n <span\n class=\"color\"\n [ngStyle]=\"{ background: selectedColor }\"\n ></span>\n #\n <input\n thyInput\n maxlength=\"6\"\n (keydown.enter)=\"customInputColorEnter($event)\"\n onkeyup=\"value=value.replace(/[^0-9A-Fa-f]/g,'')\"\n class=\"value\"\n [(ngModel)]=\"customColor\"\n (ngModelChange)=\"colorChange(false)\"\n />\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { ThyPlacement } from 'ngx-tethys/core';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys/popover';\nimport { TheColorSelectComponent } from '../components/color-select/color-select.component';\nimport { ColorType, ColorSelectOption } from '../constants/color-select';\n\n@Injectable()\nexport class TheColorSelectService {\n backdropClosable = false;\n\n hasBackdrop = false;\n\n insideClosable = false;\n\n placement: ThyPlacement = 'bottomLeft';\n\n offset = 10;\n\n colorSelectRef: ThyPopoverRef<TheColorSelectComponent>;\n\n get isOpenColorSelect() {\n return this.colorSelectRef && this.colorSelectRef.componentInstance;\n }\n\n constructor(private thyPopover: ThyPopover) {}\n\n toggleColorSelect(\n origin: HTMLElement,\n selectedColor: ColorType,\n colors: string[],\n option: ColorSelectOption,\n selectAction: (color: ColorType) => void,\n placement?: ThyPlacement,\n offset?: number\n ) {\n if (this.isOpenColorSelect) {\n this.colorSelectRef.close();\n }\n this.colorSelectRef = this.thyPopover.open(TheColorSelectComponent, {\n initialState: {\n selectedColor,\n selectAction,\n colors,\n option\n },\n origin,\n backdropClosable: this.backdropClosable,\n placement: placement || this.placement,\n offset: offset !== null ? offset : this.offset,\n hasBackdrop: this.hasBackdrop,\n insideClosable: this.insideClosable,\n panelClass: 'color-select-container'\n });\n return this.colorSelectRef;\n }\n\n closeColorSelect() {\n if (this.isOpenColorSelect) {\n this.colorSelectRef.close();\n }\n }\n}\n","import { Editor, Node, Text, Transforms } from 'slate';\nimport { Colors, ColorType, SpecialBackgroundColor, SpecialTextColor } from '../../constants/color-select';\nimport { MarkTypes } from '../../constants/node-types';\nimport { TheColorSelectService } from '../../services/color-select.service';\nimport { TableEditor } from '../table/table.editor';\n\nexport const ColorEditor = {\n getActiveColor(editor: Editor, type: MarkTypes.color | MarkTypes.backgroundColor): string {\n if (!editor?.selection) {\n return;\n }\n const node = Node.get(editor, editor.selection?.anchor.path);\n if (!Text.isText(node)) {\n return undefined;\n }\n const marks = Editor.marks(editor);\n return marks && marks[type];\n },\n setColor(editor: Editor, color: ColorType, type: MarkTypes.color | MarkTypes.backgroundColor) {\n if (TableEditor.toggleMark(editor, !color, type, color)) {\n return;\n }\n if (color) {\n Editor.addMark(editor, type, color);\n } else {\n Editor.removeMark(editor, type);\n }\n },\n selectColor(editor: Editor, type: MarkTypes.color | MarkTypes.backgroundColor) {\n const rangeRef = Editor.rangeRef(editor, editor.selection);\n const colorSelectService = editor.injector.get(TheColorSelectService);\n const element = (event.target as HTMLElement).closest('.thy-icon-nav-link');\n colorSelectService.toggleColorSelect(\n element as HTMLElement,\n ColorEditor.getActiveColor(editor, type),\n Colors,\n {\n showCustom: true,\n perRowColorNumbers: 8,\n rowOptions: { 2: '#aaa' },\n specialColor: type === MarkTypes.color ? SpecialTextColor : SpecialBackgroundColor\n },\n (newColor: ColorType) => {\n Transforms.select(editor, rangeRef.current);\n ColorEditor.setColor(editor, newColor, type);\n },\n 'bottomLeft',\n 0\n );\n }\n};\n","import { Directive } from '@angular/core';\nimport { Editor, Transforms } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { ToolbarItem } from '../../interfaces';\nimport * as TheQueries from '../../queries';\n\n@Directive()\nexport abstract class TheToolbarBaseItemComponent {\n editor: Editor;\n itemMousedownHandle: (item: ToolbarItem) => void;\n\n abstract statusChange(editor: Editor): void;\n\n execute(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.itemMousedownHandle && !this.editor.selection) {\n const lastNode = TheQueries.getLastNode(this.editor, 1);\n const end = Editor.end(this.editor, lastNode[1]);\n Transforms.select(this.editor, end);\n AngularEditor.focus(this.editor);\n }\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Editor, Transforms } from 'slate';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys/popover';\nimport { DefaultToolbarItem } from '../../interfaces';\nimport { ColorEditor } from './color.editor';\nimport { Colors, ColorType, SpecialBackgroundColor, SpecialTextColor } from '../../constants/color-select';\nimport { MarkTypes } from '../../constants/node-types';\nimport { TheColorSelectComponent } from '../../components/color-select/color-select.component';\nimport { TheToolbarBaseItemComponent } from '../../components/toolbar-base-item/toolbar-base-item.component';\n\n@Component({\n selector: 'the-color-toolbar-item',\n template: `\n <a\n class=\"link-width-down\"\n thyIconNavLink\n [ngStyle]=\"{\n width: item.key === 'color' ? '42px' : 'auto'\n }\"\n [thyTooltip]=\"item.name\"\n [thyIconNavLinkActive]=\"active\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"execute($event)\"\n >\n <thy-icon [thyIconName]=\"item.icon\" thyIconType=\"twotone\" [thyTwotoneColor]=\"active\"></thy-icon>\n <thy-icon\n [ngClass]=\"{\n 'link-down-icon': true,\n 'font-size-sm': true,\n 'text-desc': true\n }\"\n thyIconName=\"caret-down\"\n ></thy-icon>\n </a>\n `,\n host: {\n class: 'the-toolbar-item'\n }\n})\nexport class TheColorToolbarItemComponent extends TheToolbarBaseItemComponent {\n @Input() item: DefaultToolbarItem;\n\n @Input() editor: Editor;\n\n active: string | boolean = false;\n\n colorSelectRef: ThyPopoverRef<TheColorSelectComponent>;\n\n get isOpenColorSelect() {\n return this.colorSelectRef && this.colorSelectRef.componentInstance;\n }\n\n constructor(private thyPopover: ThyPopover) {\n super();\n }\n\n public statusChange(editor: Editor) {\n this.active = this.item?.active(editor);\n }\n\n execute(event: MouseEvent) {\n super.execute(event);\n if (this.editor?.disabled) {\n return;\n }\n const type = this.item.key as MarkTypes.color & MarkTypes.backgroundColor;\n this.toggleColorSelect(event, type);\n }\n\n toggleColorSelect(event: MouseEvent, type: MarkTypes.color | MarkTypes.backgroundColor) {\n if (this.isOpenColorSelect) {\n this.colorSelectRef.close();\n return;\n }\n this.colorSelectRef = this.thyPopover.open(TheColorSelectComponent, {\n initialState: {\n colors: Colors,\n selectedColor: ColorEditor.getActiveColor(this.editor, type),\n option: {\n showCustom: true,\n perRowColorNumbers: 8,\n rowOptions: { 2: '#aaa' },\n specialColor: type === MarkTypes.color ? SpecialTextColor : SpecialBackgroundColor\n },\n selectAction: (color: ColorType) => {\n Transforms.select(this.editor, this.editor.selection);\n ColorEditor.setColor(this.editor, color, type);\n }\n },\n origin: event.currentTarget as HTMLElement,\n backdropClosable: false,\n placement: 'bottomLeft',\n offset: 10,\n hasBackdrop: false,\n insideClosable: false,\n panelClass: 'color-select-container'\n });\n return this.colorSelectRef;\n }\n\n close() {\n if (this.isOpenColorSelect) {\n this.colorSelectRef.close();\n }\n }\n}\n","import { MarkTypes } from '../../constants/node-types';\nimport { ToolbarItem } from '../../interfaces';\nimport { ColorEditor } from './color.editor';\nimport { TheColorToolbarItemComponent } from './toolbar-item.component';\n\nexport const ColorOptions: ToolbarItem[] = [\n {\n key: MarkTypes.color,\n icon: 'color-tt',\n name: '字体颜色',\n iconComponent: TheColorToolbarItemComponent,\n active: editor => ColorEditor.getActiveColor(editor, MarkTypes.color)\n },\n {\n key: MarkTypes.backgroundColor,\n icon: 'background-tt',\n name: '背景颜色',\n iconComponent: TheColorToolbarItemComponent,\n active: editor => ColorEditor.getActiveColor(editor, MarkTypes.backgroundColor)\n }\n];\n","import { Editor, Path, Transforms } from 'slate';\nimport { HistoryEditor } from 'slate-history';\nimport { hotkeys } from 'slate-angular';\nimport * as TheQueries from '../../queries';\nimport { createEmptyParagraph } from '../../utils/create-empty-paragraph';\n\nexport const withRemoveVoid = <T extends Editor>(editor: T): T => {\n const { deleteBackward, deleteForward, onKeydown } = editor;\n\n const deleteBlockVoid = (e: Editor) => {\n const aboveEntry = TheQueries.getAbove(e);\n const canDelete = aboveEntry && Editor.isBlock(e, aboveEntry[0]) && Editor.isVoid(e, aboveEntry[0]);\n if (canDelete) {\n Transforms.insertNodes(e, createEmptyParagraph(), { at: Path.next(aboveEntry[1]) });\n Transforms.select(e, Path.next(aboveEntry[1]));\n Transforms.removeNodes(e, { at: aboveEntry[1] });\n }\n return canDelete;\n };\n\n editor.deleteBackward = unit => {\n if (deleteBlockVoid(editor)) {\n return;\n }\n deleteBackward(unit);\n };\n\n editor.onKeydown = event => {\n const aboveEntry = TheQueries.getAbove(editor);\n if (aboveEntry && Editor.isVoid(editor, aboveEntry[0]) && Editor.isInline(editor, aboveEntry[0])) {\n if (hotkeys.isDeleteBackward(event) || hotkeys.isDeleteForward(event)) {\n event.preventDefault();\n HistoryEditor.withoutMerging(editor, () => {\n Transforms.move(editor);\n });\n Transforms.delete(editor, { reverse: true });\n return;\n }\n if (hotkeys.isSplitBlock(event)) {\n event.preventDefault();\n Transforms.move(editor);\n return;\n }\n }\n onKeydown(event);\n };\n\n editor.deleteForward = unit => {\n if (deleteBlockVoid(editor)) {\n return;\n }\n deleteForward(unit);\n };\n return editor;\n};\n","import { Editor, Node, Range, Path, Transforms } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { CodeElement } from '../../custom-types';\nimport { ElementKinds } from '../../constants/node-types';\nimport * as TheTransforms from '../../transforms';\nimport { DEFAULT_LANGUAGE } from '../../constants/code';\n\nexport const CodeEditor = {\n setLanguage(editor: Editor, language: string, element: CodeElement) {\n const at = AngularEditor.findPath(editor, element);\n Transforms.setNodes(\n editor,\n { language },\n {\n at\n }\n );\n },\n setCodeContent(editor: Editor, content: string, element: CodeElement) {\n const at = AngularEditor.findPath(editor, element);\n Transforms.setNodes(\n editor,\n { content },\n {\n at\n }\n );\n },\n insertCode(editor: Editor) {\n const isSelectContent = Editor.string(editor, editor.selection);\n const [startPoint, endPoint] = Range.edges(editor.selection);\n const elementEntryIterator = Node.elements(editor, {\n from: startPoint.path,\n to: endPoint.path,\n pass: ([node, path]) => {\n return Editor.isBlock(editor, node);\n }\n });\n const elementEntrys = Array.from(elementEntryIterator);\n const isAllParagraph = elementEntrys.every(item => item[0].type === ElementKinds.paragraph);\n if (isSelectContent && editor.selection.anchor.path.length === 2 && isAllParagraph) {\n let content = elementEntrys.reduce((content, [element, path], index) => {\n const text = Node.string(element);\n return content + (elementEntrys.length - 1 === index ? `${text}` : `${text}\\n`);\n }, '');\n const codeElement: CodeElement = {\n type: ElementKinds.code,\n content,\n language: DEFAULT_LANGUAGE.value,\n children: [{ text: '' }]\n };\n Editor.withoutNormalizing(editor, () => {\n const lastPath = elementEntrys[elementEntrys.length - 1][1];\n Transforms.insertNodes(editor, codeElement, { at: Path.next(lastPath) });\n Transforms.select(editor, Path.next(lastPath));\n Transforms.removeNodes(editor, {\n at: {\n anchor: Editor.start(editor, elementEntrys[0][1]),\n focus: Editor.end(editor, lastPath)\n }\n });\n });\n } else {\n const codeElement: CodeElement = {\n type: ElementKinds.code,\n content: '',\n language: DEFAULT_LANGUAGE.value,\n children: [{ text: '' }]\n };\n TheTransforms.insertElement(editor, codeElement);\n }\n }\n};\n","import * as TheQueries from '../../queries';\nimport { ElementKinds } from '../../constants/node-types';\nimport { ToolbarItem } from '../../interfaces';\nimport { CodeEditor } from './code.editor';\n\nexport const CodeOptions: ToolbarItem[] = [\n {\n key: ElementKinds.code,\n icon: 'code-syntax',\n name: '代码块',\n active: editor => TheQueries.isBlockActive(editor, ElementKinds.code),\n execute: editor => CodeEditor.insertCode(editor)\n }\n];\n","import { Component, OnInit, ElementRef, Input, HostListener, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { ConnectedPosition, Overlay } from '@angular/cdk/overlay';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys/popover';\nimport { Editor } from 'slate';\nimport { DropdownMode } from '../../constants/toolbar';\nimport { DefaultToolbarItem, ToolbarItem } from '../../interfaces/toolbar';\nimport { TheToolbarBaseItemComponent } from '../toolbar-base-item/toolbar-base-item.component';\n\n@Component({\n selector: 'the-toolbar-dropdown',\n templateUrl: './toolbar-dropdown.component.html',\n host: {\n class: 'the-toolbar-dropdown-container'\n }\n})\nexport class TheToolbarDropdownComponent extends TheToolbarBaseItemComponent implements OnInit {\n private _item: DefaultToolbarItem;\n\n @Input() toolbarItem: ToolbarItem;\n\n @Input() menus: DefaultToolbarItem[];\n\n @Input() mode: DropdownMode = DropdownMode.text;\n\n @Input()\n set item(i: DefaultToolbarItem) {\n this._item = i;\n this.activeMenu = i;\n }\n get item() {\n return this._item;\n }\n\n @Input() itemMousedownHandle: (item: ToolbarItem) => void;\n\n editor: Editor;\n template: TemplateRef<any>;\n dropdownMode = DropdownMode;\n activeMenu: DefaultToolbarItem;\n dropdownPopoverRef: ThyPopoverRef<any>;\n\n get isOpen() {\n return this.dropdownPopoverRef && this.dropdownPopoverRef.getOverlayRef() && this.dropdownPopoverRef.getOverlayRef().hasAttached();\n }\n\n @ViewChild('iconModeTemplate', { static: true })\n iconModeTemplate: TemplateRef<any>;\n\n @ViewChild('textModeTemplate', { static: true })\n textModeTemplate: TemplateRef<any>;\n\n @ViewChild('dropdownTemplate', { static: true })\n dropdownTemplate: TemplateRef<any>;\n\n @HostListener('mousedown', ['$event'])\n toggleDropdown(event: MouseEvent) {\n super.execute(event);\n\n if (this.editor?.disabled) {\n return;\n }\n this.openDropdownPopover();\n }\n\n @HostListener('document: mousedown', ['$event'])\n handleDocumentMouseDown(event: MouseEvent) {\n if (!this.elementRef.nativeElement.contains(event.target as HTMLElement)) {\n this.closeDropdownPopover();\n }\n }\n\n constructor(\n public elementRef: ElementRef,\n private thyPopover: ThyPopover,\n private viewContainerRef: ViewContainerRef,\n private overlay: Overlay\n ) {\n super();\n }\n\n ngOnInit() {\n if (!this.template) {\n this.template = this.mode === this.dropdownMode.icon ? this.iconModeTemplate : this.textModeTemplate;\n }\n\n if (!this.activeMenu) {\n this.activeMenu = this.menus[0];\n }\n if (this.toolbarItem) {\n this.elementRef.nativeElement.classList.add(`${this.toolbarItem?.key}`);\n }\n }\n\n public statusChange(editor: Editor) {\n const activeItem = this.menus.find(i => {\n if (i?.active) {\n return i?.active(editor);\n }\n });\n this.activeMenu = activeItem ? activeItem : this.menus[0];\n }\n\n itemMousedown(event: MouseEvent, item: ToolbarItem) {\n super.execute(event);\n\n this.closeDropdownPopover();\n\n if (this.itemMousedownHandle) {\n this.itemMousedownHandle(item);\n return;\n }\n\n if (item?.execute) {\n item?.execute(this.editor);\n }\n }\n\n openDropdownPopover() {\n this.dropdownPopoverRef = this.thyPopover.open(this.dropdownTemplate, {\n origin: this.elementRef,\n panelClass: ['the-toolbar-dropdown-popover', this.toolbarItem?.key],\n placement: 'bottomLeft',\n insideClosable: false,\n backdropClosable: true,\n hasBackdrop: false,\n offset: 10,\n viewContainerRef: this.viewContainerRef,\n scrollStrategy: this.overlay.scrollStrategies.reposition()\n });\n this.dropdownPopoverRef?.getOverlayRef().updatePositionStrategy(this.createPositionStrategy());\n }\n\n closeDropdownPopover() {\n if (this.dropdownPopoverRef) {\n this.dropdownPopoverRef?.close();\n }\n }\n\n createPositionStrategy() {\n const topPosition: ConnectedPosition = {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetX: 0,\n offsetY: -15\n };\n const bottomPosition: ConnectedPosition = {\n ...topPosition,\n overlayY: 'top',\n offsetY: 42\n };\n return this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withFlexibleDimensions(false)\n .withGrowAfterOpen(false)\n .withPush(false)\n .withPositions([bottomPosition, topPosition]);\n }\n}\n","<ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n\n<ng-template #iconModeTemplate>\n <a thyIconNavLink class=\"icon-mode link-with-down\" [thyTooltip]=\"activeMenu?.name\" thyTooltipPlacement=\"top\">\n <thy-icon [thyIconName]=\"activeMenu?.icon\"></thy-icon>\n <thy-icon class=\"caret-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n</ng-template>\n\n<ng-template #textModeTemplate>\n <a thyIconNavLink class=\"text-mode\" [thyTooltip]=\"activeMenu?.name\" thyTooltipPlacement=\"top\">\n <span class=\"show-text\">{{ activeMenu?.name }}</span>\n <thy-icon class=\"text-caret-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n</ng-template>\n\n<ng-template #dropdownTemplate>\n <thy-action-menu class=\"dropdown\">\n <ng-container *ngFor=\"let menu of menus\">\n <a\n *ngIf=\"menu.key !== 'split'\"\n thyActionMenuItem\n href=\"javascript:;\"\n [thyActionMenuItemActive]=\"menu.key === activeMenu.key\"\n (mousedown)=\"itemMousedown($event, menu)\"\n [ngStyle]=\"menu?.styles\"\n >\n <span *ngIf=\"menu.icon && mode === dropdownMode.icon\" thyActionMenuItemIcon>\n <thy-icon [thyIconName]=\"menu.icon\"></thy-icon>\n </span>\n <span *ngIf=\"menu.name\" thyActionMenuItemName>{{ menu.name }}</span>\n </a>\n <thy-action-menu-divider *ngIf=\"menu.key === 'split'\"></thy-action-menu-divider>\n </ng-container>\n </thy-action-menu>\n</ng-template>\n","import { Component, ElementRef, ChangeDetectorRef, ChangeDetectionStrategy, OnInit, ViewChild, AfterViewInit, NgZone } from '@angular/core';\nimport { ThyNotifyService } from 'ngx-tethys/notify';\nimport { Editor, Transforms } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { CodeMirrorComponent } from 'ng-codemirror';\nimport { CODEMIRROR_PADDING_TOP, CODE_MODES, DropdownMode } from '../../constants';\nimport { DefaultToolbarItem, TheBaseElementComponent } from '../../interfaces';\nimport { CodeElement } from '../../custom-types';\nimport { CodeEditor } from './code.editor';\nimport * as TheTransforms from '../../transforms';\nimport { delay, take } from 'rxjs/operators';\n\n@Component({\n selector: 'div[theCode]',\n templateUrl: './code.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TheCodeComponent extends TheBaseElementComponent<CodeElement, Editor> implements OnInit, AfterViewInit {\n startRenderCodemirror = false;\n dropdownMode = DropdownMode;\n maxHeight = 350 - CODEMIRROR_PADDING_TOP * 2;\n codeMirrorFocused = false;\n\n menus = CODE_MODES.map(item => {\n return { key: item.value, name: item.showName };\n });\n\n options = {\n mode: this.menus[0].key,\n lineNumbers: false,\n readOnly: false,\n autofocus: false,\n lineWiseCopyCut: true,\n lineWrapping: false,\n cursorBlinkRate: 500\n };\n\n actives: DefaultToolbarItem = this.menus[0];\n\n get code() {\n return this.element.content;\n }\n\n @ViewChild('codemirror', { read: CodeMirrorComponent, static: false })\n codemirror: CodeMirrorComponent;\n\n onContextChange() {\n super.onContextChange();\n if (this.initialized) {\n if (this.options.readOnly !== this.readonly) {\n this.useReadonly();\n }\n if (this.options.mode !== this.element.language) {\n this.useMode();\n }\n }\n }\n\n constructor(\n public elementRef: ElementRef,\n public cdr: ChangeDetectorRef,\n private thyNotifyService: ThyNotifyService,\n private ngZone: NgZone\n ) {\n super(elementRef, cdr);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.elementRef.nativeElement.classList.add('the-code-container');\n }\n\n ngAfterViewInit() {\n if (this.readonly) {\n // delay 20ms\n // ccodemirror is too slow\n this.ngZone.onStable.pipe(take(1), delay(20)).subscribe(() => {\n this.renderCodemirror();\n });\n } else {\n // edit mode can not delay\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.renderCodemirror();\n this.initializeCodemirrorFocus();\n });\n }\n }\n\n renderCodemirror() {\n this.startRenderCodemirror = true;\n this.useReadonly();\n this.useMode();\n this.cdr.detectChanges();\n }\n\n initializeCodemirrorFocus() {\n if (this.isCollapsed) {\n setTimeout(() => {\n if (this.isCollapsed && this.codemirror && this.codemirror.editor && !this.codemirror.editor.hasFocus()) {\n AngularEditor.blur(this.editor);\n this.codemirror.editor.focus();\n this.codemirror.editor.refresh();\n }\n }, 200);\n }\n }\n\n codeChange($event) {\n CodeEditor.setCodeContent(this.editor, $event, this.element);\n }\n\n focusChange(codeMirrorFocused: boolean) {\n this.codeMirrorFocused = codeMirrorFocused;\n }\n\n onDelete(event: MouseEvent) {\n event.preventDefault();\n TheTransforms.deleteElement(this.editor, this.element);\n }\n\n onCopy(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n // remove codemorrir selection\n const selection = window.getSelection();\n if (selection.rangeCount > 0) {\n selection.removeAllRanges();\n }\n // focus the element\n setTimeout(() => {\n AngularEditor.focus(this.editor);\n Transforms.select(this.editor, AngularEditor.findPath(this.editor, this.element));\n });\n // copy the element\n setTimeout(() => {\n document.execCommand('copy');\n this.thyNotifyService.success('复制成功');\n }, 200);\n }\n\n onChangeLangulage = item => {\n this.options = { ...this.options, mode: item.key };\n this.actives = item;\n CodeEditor.setLanguage(this.editor, item.key, this.element);\n };\n\n useMode() {\n this.options = { ...this.options, mode: this.element.language };\n this.actives = this.menus.find(i => i.key === this.element.language);\n }\n\n useReadonly() {\n this.options = { ...this.options, readOnly: this.readonly, cursorBlinkRate: this.readonly ? -1 : 500 };\n }\n}\n","<div contenteditable=\"false\" class=\"the-block-operation\" *ngIf=\"codeMirrorFocused && !options.readOnly\">\n <thy-icon-nav>\n <the-toolbar-dropdown [menus]=\"menus\" [item]=\"actives\" [itemMousedownHandle]=\"onChangeLangulage\"></the-toolbar-dropdown>\n <a\n href=\"javascript:;\"\n thyIconNavLink\n thyIconNavLinkIcon=\"copy\"\n thyTooltip=\"复制\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"onCopy($event)\"\n ></a>\n <a\n href=\"javascript:;\"\n thyIconNavLink\n thyIconNavLinkIcon=\"trash\"\n thyTooltip=\"删除\"\n class=\"remove-link\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"onDelete($event)\"\n ></a>\n </thy-icon-nav>\n</div>\n\n<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n<ng-codemirror\n *ngIf=\"startRenderCodemirror\"\n #codemirror\n contenteditable=\"false\"\n class=\"ng-codemirror-wrapper\"\n [ngStyle]=\"{ maxHeight: maxHeight > 0 ? maxHeight + 'px' : 'auto' }\"\n [options]=\"options\"\n [ngModel]=\"code\"\n [delayRefreshTime]=\"300\"\n (ngModelChange)=\"codeChange($event)\"\n (focusChange)=\"focusChange($event)\"\n [autoMaxHeight]=\"maxHeight\"\n></ng-codemirror>\n","import { Editor, Element } from 'slate';\nimport { ElementKinds } from '../../constants/node-types';\nimport { TheCodeComponent } from './code.component';\n\nexport const withCode = (editor: Editor) => {\n const { isVoid, isBlockCard, renderElement } = editor;\n\n editor.isVoid = (element: Element) => {\n return element.type === ElementKinds.code ? true : isVoid(element);\n };\n\n editor.isBlockCard = (element: Element) => {\n if (element && element.type === ElementKinds.code) {\n return true;\n }\n return isBlockCard(element);\n };\n\n editor.renderElement = (element: Element) => {\n if (element.type === ElementKinds.code) {\n return TheCodeComponent;\n }\n return renderElement(element);\n };\n\n return editor;\n};\n","export enum LinkTags {\n insert = 'insert',\n edit = 'edit',\n selection = 'selection'\n}\nexport enum LinkCloseTypes {\n apply = 'apply',\n destroy = 'destroy'\n}\n","import { Range, Transforms, Editor, Element, Node } from 'slate';\nimport { ELEMENT_TO_COMPONENT } from 'slate-angular';\nimport { LinkElement } from '../../custom-types';\nimport { ElementKinds, LINK_DEFAULT_TEXT } from '../../constants';\nimport { getAboveByType } from '../../queries/get-above-by-type';\nimport { TheLinkComponent } from './link.component';\nimport { LinkTags } from './link.types';\n\nexport const LinkEditor = {\n insertLink(editor: Editor) {\n if (Range.isCollapsed(editor.selection)) {\n Promise.resolve()\n .then(() => {\n LinkEditor.wrapLink(editor, LINK_DEFAULT_TEXT, '');\n })\n .then(() => {\n const [linkNode] = getAboveByType(editor, ElementKinds.link);\n const linkComponent = ELEMENT_TO_COMPONENT.get(linkNode) as TheLinkComponent;\n linkComponent.openLinkEdit(LinkTags.insert);\n });\n } else {\n const isActive = LinkEditor.isLinkActive(editor);\n if (isActive) {\n LinkEditor.unwrapLink(editor);\n return;\n }\n\n const fragment = Node.fragment(editor, editor.selection)[0];\n const selectNode = Node.get(fragment, []);\n const selectText = Node.string(selectNode);\n\n Promise.resolve()\n .then(() => {\n LinkEditor.wrapLink(editor, selectText, '');\n })\n .then(() => {\n const [linkNode] = getAboveByType(editor, ElementKinds.link);\n const linkComponent = ELEMENT_TO_COMPONENT.get(linkNode) as TheLinkComponent;\n linkComponent.openLinkEdit(LinkTags.insert);\n });\n }\n },\n isLinkActive(editor: Editor) {\n const [link] = Editor.nodes(editor, { match: n => Element.isElement(n) && n.type === ElementKinds.link });\n return !!link;\n },\n wrapLink(editor: Editor, text: string, url: string) {\n if (LinkEditor.isLinkActive(editor)) {\n LinkEditor.unwrapLink(editor);\n }\n const { selection } = editor;\n const isCollapsed = selection && Range.isCollapsed(selection);\n const link: LinkElement = {\n type: ElementKinds.link,\n url,\n children: isCollapsed ? [{ text }] : []\n };\n if (isCollapsed) {\n Transforms.insertNodes(editor, link);\n } else {\n Transforms.wrapNodes(editor, link, { split: true });\n Transforms.collapse(editor, { edge: 'end' });\n }\n },\n unwrapLink(editor: Editor) {\n Transforms.unwrapNodes(editor, { match: n => Element.isElement(n) && n.type === ElementKinds.link });\n }\n};\n","import { ElementKinds } from '../../constants/node-types';\nimport { ToolbarItem } from '../../interfaces';\nimport { LinkEditor } from './link.editor';\n\nexport const LinkOptions: ToolbarItem[] = [\n {\n key: ElementKinds.link,\n icon: 'link-insert',\n name: '链接',\n execute: editor => LinkEditor.insertLink(editor),\n active: editor => LinkEditor.isLinkActive(editor)\n }\n];\n","import { Component, OnInit, Input } from '@angular/core';\nimport { A_TAG_REL_ATTR } from '../../../constants/default';\n\n@Component({\n selector: 'the-link-hover',\n templateUrl: './link-hover.component.html'\n})\nexport class TheLinkHoverComponent implements OnInit {\n @Input() link = '';\n\n @Input() dom: HTMLElement;\n\n @Input() editHandle: () => void;\n\n @Input() deleteHandle: () => void;\n\n aTagRelAttr = A_TAG_REL_ATTR;\n\n constructor() {}\n\n ngOnInit() {}\n\n editLink(event: MouseEvent) {\n event.preventDefault();\n this.editHandle();\n event.stopPropagation();\n }\n\n removeLink(event: MouseEvent) {\n event.preventDefault();\n this.deleteHandle();\n event.stopPropagation();\n }\n}\n","<div class=\"link-hover-card\">\n <a readonly href=\"{{ link }}\" target=\"_blank\" rel=\"{{ aTagRelAttr }}\" class=\"hover-control-plaintext text-truncate\">\n {{ link }}\n </a>\n <span class=\"operate-separator\"></span>\n <button thyButtonIcon=\"edit\" thySize=\"xs\" (mousedown)=\"editLink($event)\"></button>\n <span class=\"operate-separator\"></span>\n <button thyButtonIcon=\"unlink-insert\" thySize=\"xs\" (mousedown)=\"removeLink($event)\"></button>\n</div>\n","import { Component, OnInit, Input, HostBinding, HostListener } from '@angular/core';\nimport { ThyPopoverRef } from 'ngx-tethys/popover';\nimport { Transforms, Range, Node, Editor } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport * as TheQueries from '../../../queries';\nimport { TheEditor } from '../../../interfaces';\nimport { LinkCloseTypes, LinkTags } from '../link.types';\n\n@Component({\n selector: 'the-link-edit',\n templateUrl: './link-edit.component.html'\n})\nexport class TheLinkEditComponent implements OnInit {\n editor: Editor;\n\n @Input() tag: LinkTags;\n\n @Input() node: Node;\n\n @Input() link = '';\n\n @Input() text = '';\n\n @Input() originSelection: Range;\n\n originLink: string;\n\n @HostBinding('class')\n className = 'the-link-edit-container';\n\n originText: string;\n\n validatorConfig = {\n validationMessages: {\n link: {\n required: '链接不能为空',\n pattern: '请输入正确的链接'\n },\n text: {\n required: '文本不能为空'\n }\n }\n };\n\n @HostListener('document: mousedown', ['$event'])\n handleDocumentMouseDown(event: MouseEvent) {\n if (!document.querySelector('.the-link-edit-container').contains(event.target as HTMLElement)) {\n this.thyPopoverRef.close();\n }\n }\n\n constructor(public thyPopoverRef: ThyPopoverRef<any>) {}\n\n ngOnInit() {\n this.originText = this.text;\n this.originLink = this.link;\n this.thyPopoverRef.beforeClosed().subscribe(type => {\n switch (true) {\n case type === LinkCloseTypes.apply:\n break;\n case this.tag === LinkTags.insert:\n AngularEditor.focus(this.editor);\n Transforms.select(this.editor, this.originSelection);\n this.editor.undo();\n break;\n case this.tag === LinkTags.edit:\n AngularEditor.focus(this.editor);\n Transforms.select(this.editor, this.originSelection);\n break;\n }\n });\n }\n\n linkRegExp(val) {\n return /(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?/.test(val);\n }\n\n closePopover(type?: string) {\n this.thyPopoverRef.close(type);\n }\n\n applyLink(form) {\n const link = this.link.trim();\n if (this.linkRegExp(link)) {\n const linkPath = TheQueries.findPath(this.editor, this.node);\n if (this.originLink !== link) {\n Transforms.setNodes(this.editor, { url: link }, { at: linkPath });\n }\n if (this.originText !== this.text) {\n const [start, end] = Editor.edges(this.editor, linkPath);\n Transforms.insertText(this.editor, this.text, { at: { anchor: end, focus: end } });\n Transforms.delete(this.editor, { at: { anchor: start, focus: end } });\n }\n TheEditor.focus(this.editor);\n Transforms.select(this.editor, Editor.after(this.editor, linkPath));\n this.closePopover(LinkCloseTypes.apply);\n } else {\n form.validator.setElementErrorMessage(`link`, '请输入正确的链接');\n }\n }\n}\n","<form\n thyForm\n #linkForm=\"thyForm\"\n [thyFormValidatorConfig]=\"validatorConfig\"\n name=\"linkForm\"\n>\n <thy-form-group thyLabelText=\"文本\">\n <input\n thyInput\n placeholder=\"请输入文本\"\n required\n name=\"text\"\n [(ngModel)]=\"text\"\n thyAutofocus\n type=\"text\"\n />\n </thy-form-group>\n <thy-form-group thyLabelText=\"链接\">\n <input\n name=\"link\"\n thyInput\n placeholder=\"请输入链接\"\n required\n type=\"text\"\n #linkControl=\"ngModel\"\n [(ngModel)]=\"link\"\n />\n </thy-form-group>\n <thy-form-group-footer>\n <div class=\"btn-pair\">\n <button\n thyButton=\"link-secondary\"\n thySize=\"sm\"\n (click)=\"closePopover()\"\n >取消</button>\n <button\n thyButton=\"primary-square\"\n thySize=\"sm\"\n (thyFormSubmit)=\"applyLink(linkForm)\"\n >应用</button>\n </div>\n </thy-form-group-footer>\n</form>\n","import { Overlay } from '@angular/cdk/overlay';\nimport { Component, OnInit, ElementRef, OnDestroy, ChangeDetectorRef, ViewContainerRef, HostListener, NgZone } from '@angular/core';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys/popover';\nimport { Editor, Element, Node as SlateNode, Transforms, Text } from 'slate';\nimport { ElementKinds } from '../../constants';\nimport { LinkElement } from '../../custom-types';\nimport { TheBaseElementComponent } from '../../interfaces';\nimport { LinkCloseTypes, LinkTags } from './link.types';\nimport { TheLinkHoverComponent } from './hover/link-hover.component';\nimport { TheLinkEditComponent } from './edit/link-edit.component';\nimport { ThyClickDispatcher } from 'ngx-tethys';\nimport { SlateElementContext } from 'slate-angular';\n\n@Component({\n selector: '[TheBaseLinkComponent]',\n template: ''\n})\nexport class TheBaseLinkComponent extends TheBaseElementComponent<LinkElement, Editor> implements OnInit, OnDestroy {\n thyPopoverHoverRef: ThyPopoverRef<any>;\n thyPopoverEditRef: ThyPopoverRef<any>;\n\n get linkHoverOpened(): boolean {\n return this.thyPopoverHoverRef && this.thyPopoverHoverRef.componentInstance;\n }\n\n get linkEditOpened(): boolean {\n return this.thyPopoverEditRef && this.thyPopoverEditRef.componentInstance;\n }\n\n constructor(\n public elementRef: ElementRef,\n public cdr: ChangeDetectorRef,\n private thyPopover: ThyPopover,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private thyClickDispatcher: ThyClickDispatcher\n ) {\n super(elementRef, cdr);\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n closeHoverPopover() {\n if (this.linkHoverOpened) {\n this.thyPopoverHoverRef.close();\n }\n }\n\n beforeContextChange = (value: SlateElementContext) => {\n if (this.thyPopoverEditRef && this.thyPopoverEditRef.componentInstance) {\n let { originText } = this.thyPopoverEditRef.componentInstance;\n if (originText && originText !== (value.element.children[0] as Text).text) {\n this.thyPopoverEditRef.componentInstance.originText = (value.element.children[0] as Text).text;\n }\n }\n };\n\n @HostListener('click', ['$event'])\n mousedownHandle(event: MouseEvent) {\n this.openLinkHover();\n }\n\n openLinkEdit(tag: LinkTags) {\n if (this.linkHoverOpened) {\n this.thyPopoverHoverRef.afterClosed().subscribe(() => {\n this.internalOpenLinkEdit(tag);\n });\n this.thyPopover.close();\n } else {\n this.internalOpenLinkEdit(tag);\n }\n }\n\n isLinkEditOpenedByDom(dom: HTMLElement) {\n return this.linkEditOpened && this.thyPopoverEditRef.componentInstance.dom === dom;\n }\n\n closeEditPopover(type?: string) {\n if (this.linkEditOpened) {\n this.thyPopoverEditRef.close(type);\n }\n }\n\n openLinkHover() {\n const dom = this.nativeElement;\n const url = this.element.url;\n\n if (this.linkHoverOpened) {\n return;\n }\n this.thyPopoverHoverRef = this.thyPopover.open(TheLinkHoverComponent, {\n initialState: {\n link: url,\n dom: dom,\n editHandle: () => {\n this.openLinkEdit(LinkTags.edit);\n },\n deleteHandle: () => {\n Transforms.unwrapNodes(this.editor, { match: n => Element.isElement(n) && n.type === ElementKinds.link });\n this.closeHoverPopover();\n }\n },\n origin: dom,\n placement: 'bottomLeft',\n offset: 8,\n hasBackdrop: false,\n outsideClosable: true,\n viewContainerRef: this.viewContainerRef,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n panelClass: 'the-link-over'\n });\n }\n\n private internalOpenLinkEdit(tag: LinkTags) {\n const link = this.element.url;\n SlateNode.get(this.editor, this.editor.selection.focus.path);\n this.thyPopoverEditRef = this.thyPopover.open(TheLinkEditComponent, {\n initialState: {\n tag,\n editor: this.editor,\n node: this.element,\n text: SlateNode.string(this.element),\n link,\n originSelection: this.editor.selection\n },\n origin: this.elementRef.nativeElement,\n backdropClosable: true,\n placement: 'bottomLeft',\n offset: 8,\n hasBackdrop: false,\n originActiveClass: null,\n viewContainerRef: this.viewContainerRef,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n panelClass: 'the-link-edit'\n });\n this.cdr.markForCheck();\n }\n\n close(type?: string) {\n this.closeHoverPopover();\n this.closeEditPopover(type);\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n this.close(LinkCloseTypes.destroy);\n }\n}\n\n@Component({\n selector: 'span[theLink]',\n template: `<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>`\n})\nexport class TheLinkComponent extends TheBaseLinkComponent {}\n\n@Component({\n selector: 'a[theLink]',\n template: `<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>`,\n host: {\n '[attr.href]': 'element.url',\n target: '_blank'\n }\n})\nexport class TheReadonlyLinkComponent extends TheBaseLinkComponent {}\n","import { TheEditor } from '../../interfaces';\nimport { Node, NodeEntry, Transforms, Element } from 'slate';\nimport { castArray } from '../../utils/cast-array';\n\n/**\n * Remove nodes with empty text.\n */\nexport const withRemoveEmptyNodes = (options: { type: string | string[] }) => <T extends TheEditor>(editor: T) => {\n const types = castArray(options.type);\n\n const { normalizeNode } = editor;\n\n editor.normalizeNode = ([node, path]: NodeEntry<Element>) => {\n if (node.type && types.includes(node.type as string) && Node.string(node) === '') {\n\n Transforms.removeNodes(editor, { at: path });\n return;\n }\n\n normalizeNode([node, path]);\n };\n\n return editor;\n};\n","import isUrl from 'is-url';\nimport { Editor, Element } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { ElementKinds } from '../../constants/node-types';\nimport { LinkEditor } from './link.editor';\nimport { TheLinkComponent, TheReadonlyLinkComponent } from './link.component';\nimport { withRemoveEmptyNodes } from '../normalizers/remove-empty-nodes';\n\nexport const withLink = (editor: Editor) => {\n const { insertData, insertText, isInline, renderElement } = editor;\n\n editor.isInline = (element: Element) => {\n return element.type === ElementKinds.link ? true : isInline(element);\n };\n\n editor.insertText = text => {\n if (text && isUrl(text)) {\n LinkEditor.wrapLink(editor, text, text);\n } else {\n insertText(text);\n }\n };\n\n editor.insertData = data => {\n const text = data.getData('text/plain');\n\n if (text && isUrl(text)) {\n LinkEditor.wrapLink(editor, text, text);\n } else {\n insertData(data);\n }\n };\n\n editor.renderElement = (element: Element) => {\n if (element.type === ElementKinds.link) {\n return AngularEditor.isReadonly(editor) ? TheReadonlyLinkComponent : TheLinkComponent;\n }\n return renderElement(element);\n };\n\n editor = withRemoveEmptyNodes({ type: ElementKinds.link })(editor);\n\n return editor;\n};\n","import { Component, Input, OnInit } from '@angular/core';\nimport { insertTable } from '../../plugins/table/transforms/insert-table';\nimport { HostListener } from '@angular/core';\nimport { ThyPopoverRef } from 'ngx-tethys';\nimport { TheEditor } from '../../interfaces';\nimport { TableOptions } from '../../plugins/table/table.types';\n\n@Component({\n selector: 'table-select',\n templateUrl: './table-select.component.html'\n})\nexport class TheTableSelectComponent implements OnInit {\n @Input() optionsParam: TableOptions;\n @Input() editor: TheEditor;\n\n tableData = new Array(10);\n maxRowIndex = -1;\n maxColIndex = -1;\n\n @HostListener('document: mousedown', ['$event'])\n handleDocumentMouseDown(event: MouseEvent) {\n if (!document.querySelector('.table-selector-container').contains(event.target as HTMLElement)) {\n this.popoverRef.close();\n }\n }\n\n constructor(private popoverRef: ThyPopoverRef<TheTableSelectComponent>) {}\n\n ngOnInit(): void {}\n\n onSelectCells(rowIndex, colIndex) {\n this.maxRowIndex = rowIndex;\n this.maxColIndex = colIndex;\n }\n\n executeTable(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n const opts = new TableOptions(this.optionsParam);\n insertTable(opts, this.editor, this.maxRowIndex + 1, this.maxColIndex + 1);\n if (this.popoverRef) {\n this.popoverRef.close();\n this.maxColIndex = -1;\n this.maxRowIndex = -1;\n }\n }\n}\n","<div class=\"table-selector-container\">\n <div\n *ngFor=\"let item of tableData, let rowIndex = index\"\n class=\"selector-row\"\n (mousedown)=\"executeTable($event)\"\n >\n <span\n *ngFor=\"let item of tableData, let colIndex = index\"\n [ngClass]=\"{'active-cell': rowIndex<= maxRowIndex && colIndex <= maxColIndex, 'selector-cell': true}\"\n (mouseenter)=\"onSelectCells(rowIndex, colIndex)\"\n >\n </span>\n </div>\n <span class=\"selector-text\">{{maxRowIndex+1}} x {{maxColIndex+1}}</span>\n</div>\n","import { Overlay } from '@angular/cdk/overlay';\nimport { Component, Input } from '@angular/core';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys';\nimport { Editor } from 'slate';\nimport { TheToolbarBaseItemComponent } from '../../components/toolbar-base-item/toolbar-base-item.component';\nimport { TheTableSelectComponent } from '../../components/table-select/table-select.component';\nimport { ElementKinds } from '../../constants';\nimport { DefaultToolbarItem } from '../../interfaces';\nimport { TableOptions } from './table.types';\n\n@Component({\n selector: 'the-table-toolbar-item',\n template: `\n <a\n thyIconNavLink\n class=\"link-with-down\"\n [thyTooltip]=\"item?.name\"\n thyTooltipPlacement=\"top\"\n [thyIconNavLinkActive]=\"active\"\n (mousedown)=\"execute($event)\"\n >\n <thy-icon [thyIconName]=\"item.icon\"></thy-icon>\n <thy-icon class=\"link-down-icon font-size-sm text-desc table-down-icon\" thyIconName=\"caret-down\"> </thy-icon>\n </a>\n `,\n host: {\n class: 'the-toolbar-dropdown-container'\n }\n})\nexport class TheTableToolbarItemComponent extends TheToolbarBaseItemComponent {\n @Input() item: DefaultToolbarItem;\n\n @Input() editor: Editor;\n\n active: string | boolean = false;\n\n tableSelectRef: ThyPopoverRef<TheTableSelectComponent>;\n\n get isOpenTableSelect() {\n return this.tableSelectRef && this.tableSelectRef.componentInstance;\n }\n\n constructor(private thyPopover: ThyPopover, private overlay: Overlay) {\n super();\n }\n\n public statusChange(editor: Editor) {\n this.active = this.item?.active(editor);\n }\n\n execute(event: MouseEvent) {\n super.execute(event);\n\n if (this.editor?.disabled) {\n return;\n }\n const type = this.item.key;\n this.toggleTableSelect(event);\n }\n\n toggleTableSelect(event: MouseEvent, optionsParam?: TableOptions) {\n if (this.isOpenTableSelect) {\n this.tableSelectRef.close();\n return;\n }\n this.tableSelectRef = this.thyPopover.open(TheTableSelectComponent, {\n origin: event.currentTarget as HTMLElement,\n initialState: {\n editor: this.editor,\n optionsParam\n },\n backdropClosable: false,\n hasBackdrop: false,\n insideClosable: false,\n placement: 'bottomLeft',\n offset: 10,\n panelClass: 'the-table-selector-pannel',\n scrollStrategy: this.overlay.scrollStrategies.reposition()\n });\n return this.tableSelectRef;\n }\n}\n","import { ElementKinds } from '../../constants/node-types';\nimport { ToolbarItem } from '../../interfaces';\nimport { TheTableToolbarItemComponent } from './toolbar-item.component';\nimport { TableEditor } from './table.editor';\n\nexport const TableOptions: ToolbarItem[] = [\n {\n key: ElementKinds.table,\n icon: 'table-border-all',\n name: '表格',\n iconComponent: TheTableToolbarItemComponent,\n execute: editor => TableEditor.insertTable(editor),\n active: editor => TableEditor.isActive(editor)\n }\n];\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n/** Indicates the width of a column. */\nexport interface ColumnSize {\n /** The ID/name of the column, as defined in CdkColumnDef. */\n readonly tableCell: HTMLElement;\n\n /** The width / height in pixels of the column / row. */\n readonly deltaSize?: number;\n\n /** The width / height in pixels of the column / row prior to this update, if known. */\n readonly previousSize?: number;\n}\n\n/** Interface describing column size changes. */\nexport interface ColumnSizeAction extends ColumnSize {\n /**\n * Whether the resize action should be applied instantaneously. False for events triggered during\n * a UI-triggered resize (such as with the mouse) until the mouse button is released. True\n * for all programatically triggered resizes.\n */\n readonly completeImmediately?: boolean;\n}\n\n/**\n * Originating source of column resize events within a table.\n * @docs-private\n */\n@Injectable()\nexport class ColumnResizeNotifierSource {\n /** Emits when an in-progress resize is canceled. */\n readonly resizeCanceled = new Subject<ColumnSizeAction>();\n\n /** Emits when a resize is applied. */\n readonly resizeCompleted = new Subject<ColumnSize>();\n\n readonly resizeStarted = new Subject<ColumnSize>();\n\n /** Triggers a resize action. */\n readonly triggerResize = new Subject<ColumnSizeAction>();\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Subject, MonoTypeOperatorFunction, Observable, combineLatest } from 'rxjs';\nimport { distinctUntilChanged, share, map, startWith, skip, tap } from 'rxjs/operators';\n\nexport class HoveredCellInfo {\n cell: HTMLTableCellElement;\n position?: 'left' | 'right';\n}\n\n@Injectable()\nexport class TableCellEventDispatcher {\n readonly tableCellHovered = new Subject<HoveredCellInfo | null>();\n\n readonly overlayHandleActiveForCell = new Subject<HoveredCellInfo | null>();\n\n constructor(private readonly ngZone: NgZone) {}\n\n readonly tableCellHoveredOrActiveDistinct = combineLatest(\n this.tableCellHovered.pipe(startWith(null), distinctUntilChanged()),\n this.overlayHandleActiveForCell.pipe(startWith(null), distinctUntilChanged())\n ).pipe(\n skip(1), // Ignore initial [null, null] emission.\n map(([hovered, active]) => active || hovered),\n distinctUntilChanged(),\n share()\n );\n\n private readonly _tableCellHoveredDistinctReenterZone = this.tableCellHoveredOrActiveDistinct.pipe(this._enterZone(), share());\n\n private _lastSeenCell: Element | null = null;\n private _lastSeenCellHover: Observable<HoveredCellInfo> | null = null;\n\n /**\n * Emits whether the specified row should show its overlay controls.\n * Emission occurs within the NgZone.\n */\n resizeOverlayVisibleForTableCell(cell: Element): Observable<HoveredCellInfo> {\n if (cell !== this._lastSeenCell) {\n this._lastSeenCell = cell;\n this._lastSeenCellHover = this._tableCellHoveredDistinctReenterZone.pipe(\n map(hoveredCell => {\n if (hoveredCell && hoveredCell.cell === cell) {\n return hoveredCell;\n } else {\n return null;\n }\n }),\n distinctUntilChanged((x, y) => x === y || (x && y && x.cell === y.cell && x.position === y.position)),\n share()\n );\n }\n\n return this._lastSeenCellHover!;\n }\n\n private _enterZone<T>(): MonoTypeOperatorFunction<T> {\n return (source: Observable<T>) =>\n new Observable<T>(observer =>\n source.subscribe({\n next: value => this.ngZone.run(() => observer.next(value)),\n error: err => observer.error(err),\n complete: () => observer.complete()\n })\n );\n }\n}\n","import { Editor } from 'slate';\nimport { TablePosition } from '.';\nimport { SelectedCell, TableOptions } from '../table.types';\n\nexport function getSelectCellNode(editor: Editor, selectedCells: SelectedCell[]) {\n const { anchor } = editor.selection;\n const opts = new TableOptions();\n const pos = TablePosition.create(opts, editor, anchor.path);\n\n return selectedCells\n .map(item => {\n const node = pos.findCellByPath(item);\n if (node) {\n return {\n ...item,\n node: node\n };\n }\n })\n .filter(item => item);\n}\n","import { Transforms, Node, Path, Element, Editor } from 'slate';\nimport { TablePosition } from './table-position';\nimport { ElementKinds } from '../../../constants';\nimport { getSelectCellNode } from './get-select-cell-node';\nimport { TableCellElement } from '../../../custom-types';\nimport { SelectedCell, TableOptions } from '../table.types';\nimport * as TheQueries from '../../../queries';\n\nexport interface SelectedCellInfo {\n col: number;\n row: number;\n node: TableCellElement;\n maxRowSpan?: number;\n}\n\nexport function isSelectedCellMerged(editor: Editor): boolean {\n if (editor && editor.selection) {\n const opts = new TableOptions();\n const { anchor } = editor.selection;\n const { cell } = TablePosition.create(opts, editor, anchor.path);\n return (cell.colspan && cell.colspan !== 1) || (cell.rowspan && cell.rowspan !== 1);\n }\n return false;\n}\n\nexport function getLeftCellDict(selectCellNodes: SelectedCellInfo[]) {\n return selectCellNodes.reduce((dict, cell) => {\n if (!dict[cell.row]) {\n dict[cell.row] = cell;\n }\n return dict;\n }, {} as { [key: string]: SelectedCellInfo });\n}\n\nexport function calculateCellSpan(\n selectCellNodes: SelectedCellInfo[],\n leftCellDict: { [key: string]: SelectedCellInfo }\n): { rowspan: number; colspan: number } {\n let rowspan = 0,\n colspan = 0,\n crossCount = -1;\n selectCellNodes\n .filter(item => !item.node.hidden)\n .forEach(item => {\n const { row } = item;\n if (item.row === selectCellNodes[0].row) {\n colspan += item.node.colspan || 1;\n }\n const maxRowSpan = leftCellDict[row].maxRowSpan || 1;\n leftCellDict[row].maxRowSpan = (item.node.rowspan || 1) > maxRowSpan ? item.node.rowspan : maxRowSpan;\n });\n\n Object.values(leftCellDict).forEach((item: SelectedCellInfo) => {\n const { row, maxRowSpan } = item;\n if (crossCount < row) {\n rowspan += maxRowSpan;\n crossCount = row + maxRowSpan - 1;\n }\n });\n return { rowspan, colspan };\n}\n\nexport function mergeCell(editor: Editor, selectedCells: SelectedCell[]) {\n const selectCellNodes = getSelectCellNode(editor, selectedCells);\n Editor.withoutNormalizing(editor, () => {\n let leftTopCellPath: Path;\n const leftCellDict = getLeftCellDict(selectCellNodes);\n selectCellNodes.forEach((cell, index) => {\n const { row, node } = cell;\n if (node) {\n const cellPath = TheQueries.findPath(editor, node);\n if (index === 0) {\n leftTopCellPath = cellPath;\n } else {\n mergeCellContent(editor, leftTopCellPath, cellPath);\n Transforms.setNodes(editor, { colspan: null, rowspan: null, hidden: true }, { at: cellPath });\n }\n }\n });\n let { rowspan, colspan } = calculateCellSpan(selectCellNodes, leftCellDict);\n Transforms.setNodes(editor, { rowspan, colspan }, { at: leftTopCellPath });\n Transforms.select(editor, leftTopCellPath);\n Transforms.collapse(editor, { edge: 'end' });\n });\n}\n\nexport function mergeCellContent(editor: Editor, leftTopCellPath: Path, cellPath: Path) {\n Editor.withoutNormalizing(editor, () => {\n const { path } = Editor.end(editor, leftTopCellPath);\n const endRange = Editor.range(editor, Editor.start(editor, cellPath), Editor.end(editor, cellPath));\n let tableCell;\n\n path.pop();\n\n const nextPath = Path.next(path);\n\n Transforms.moveNodes(editor, {\n at: endRange,\n to: nextPath,\n match: node => {\n if (Element.isElement(node) && node.type === ElementKinds.tableCell) {\n tableCell = node;\n }\n if (Element.isElement(node) && node.type && tableCell && (tableCell.children as Node[]).includes(node)) {\n const isSingleEmptyParagraph =\n tableCell.children.length === 1 && Editor.isEmpty(editor, node) && node.type === ElementKinds.default;\n return !isSingleEmptyParagraph && true;\n }\n }\n });\n });\n}\n","import { Injectable } from '@angular/core';\nimport { Subject, Observable, BehaviorSubject, merge } from 'rxjs';\nimport { skip } from 'rxjs/operators';\nimport { Transforms, Node, Editor } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { TablePosition } from './utils';\nimport { _ } from '../../utils/lodash';\nimport { mergeCell } from './utils/merge-cell';\nimport { ColorType } from '../../constants/color-select';\nimport { SelectedCell, TableOptions } from './table.types';\nimport { TableCellElement, TableElement } from '../../custom-types';\nimport { TableEditor } from './table.editor';\n\n@Injectable()\nexport class TableStore {\n private selectedCells$: BehaviorSubject<SelectedCell[]> = new BehaviorSubject([]);\n private dangerousCells$: BehaviorSubject<SelectedCell[]> = new BehaviorSubject([]);\n private cellsChangeObject$: Subject<object> = new Subject();\n private tableChange$: Subject<object> = new Subject();\n\n selectedColumnsIndex: number[] = [];\n selectedRowsIndex: number[] = [];\n\n dangerousColumnsIndex: number[] = [];\n dangerousRowsIndex: number[] = [];\n\n isSelectedTable: boolean;\n\n editor: Editor;\n\n public anchorCellPath: number[];\n public focusCellPath: number[];\n public preFocusCellPath: number[];\n\n public focusCellElement: HTMLTableCellElement;\n\n public isPrepareSelecting = false;\n public isCellSelecting = false;\n public isRightClicking = false;\n\n public maxCol: number;\n\n get selectedCells() {\n return this.selectedCells$.getValue();\n }\n\n get dangerousCells() {\n return this.dangerousCells$.getValue();\n }\n\n constructor() {}\n\n getTablePath(editor: Editor) {\n const { selection } = editor;\n const {\n anchor: { path }\n } = selection;\n const opts = new TableOptions();\n return TablePosition.create(opts, editor, path).tableEntry[1];\n }\n\n getTablePosition(editor: Editor) {\n const { selection } = editor;\n const {\n anchor: { path }\n } = selection;\n const opts = new TableOptions();\n return TablePosition.create(opts, editor, path);\n }\n\n setSelectedCells(cells: SelectedCell[], pos: TablePosition) {\n const rowGroup = _.groupBy(cells, ({ row, col }) => row);\n const colGroup = _.groupBy(cells, ({ row, col }) => col);\n this.selectedRowsIndex = [];\n this.selectedColumnsIndex = [];\n for (const row in rowGroup) {\n if (rowGroup[row].length === pos.getWidth()) {\n this.selectedRowsIndex.push(parseInt(row, 10));\n }\n }\n for (const col in colGroup) {\n if (colGroup[col].length === pos.getHeight()) {\n this.selectedColumnsIndex.push(parseInt(col, 10));\n }\n }\n this.selectedRowsIndex = _.uniq(this.selectedRowsIndex);\n this.selectedColumnsIndex = _.uniq(this.selectedColumnsIndex);\n if (this.selectedRowsIndex.length === pos.getHeight() && this.selectedColumnsIndex.length === pos.getWidth()) {\n this.isSelectedTable = true;\n } else {\n this.isSelectedTable = false;\n }\n this.selectedCells$.next(cells);\n }\n\n initEditor(editor: Editor) {\n this.editor = editor;\n }\n\n selectRow(editor: Editor, index: number) {\n this.selectedRowsIndex = [index];\n this.selectedColumnsIndex = [];\n\n const { selection } = editor;\n const {\n anchor: { path }\n } = selection;\n const opts = new TableOptions();\n const pos = TablePosition.create(opts, editor, path);\n const result = [];\n for (let i = 0; i < pos.getWidth(); i++) {\n result.push({\n row: index,\n col: i\n });\n }\n this.setSelectedCells(result, pos);\n this.focusCell(editor, pos.tableEntry[1].concat([index, 0]));\n }\n\n selectColumn(editor: Editor, index: number) {\n this.selectedColumnsIndex = [index];\n this.selectedRowsIndex = [];\n\n const { selection } = editor;\n const {\n anchor: { path }\n } = selection;\n const opts = new TableOptions();\n const pos = TablePosition.create(opts, editor, path);\n const result = [];\n for (let i = 0; i < pos.getHeight(); i++) {\n result.push({\n row: i,\n col: index\n });\n }\n this.setSelectedCells(result, pos);\n this.focusCell(editor, pos.tableEntry[1].concat([0, index]));\n }\n\n selectTable(editor: Editor) {\n this.isSelectedTable = true;\n const { cells, pos } = this.getTableCellsAndPosition(editor);\n this.setSelectedCells(cells, pos);\n this.focusCell(editor, pos.tableEntry[1].concat([0, 0]));\n }\n\n private getTableCellsAndPosition(editor: Editor): { cells: SelectedCell[]; pos: TablePosition } {\n const pos = this.createTablePosition();\n const result = [];\n for (let i = 0; i < pos.getHeight(); i++) {\n for (let j = 0; j < pos.getWidth(); j++) {\n result.push({\n row: i,\n col: j\n });\n }\n }\n return { cells: result, pos };\n }\n\n selectCells(editor: Editor) {\n const opts = new TableOptions();\n const { anchor, focus } = editor.selection;\n const pos = TablePosition.create(opts, editor, anchor.path);\n const anchorPath = this.anchorCellPath.slice(-2);\n const focusPath = this.focusCellPath.slice(-2);\n\n const rows = [anchorPath[0], focusPath[0]].sort((m, n) => m - n);\n const columns = [anchorPath[1], focusPath[1]].sort((m, n) => m - n);\n\n const { colspan: anchorColspanCount, rowspan: anchorRowspanCount } = Editor.node(\n editor,\n this.anchorCellPath\n )[0] as TableCellElement;\n const { colspan: focusColspanCount, rowspan: focusRowspanCount } = Editor.node(editor, this.focusCellPath)[0] as TableCellElement;\n\n const anchorRow = anchorPath[0] + (anchorRowspanCount || 1) - 1;\n const focusRow = focusPath[0] + (focusRowspanCount || 1) - 1;\n const anchorCol = anchorPath[1] + (anchorColspanCount || 1) - 1;\n const focusCol = focusPath[1] + (focusColspanCount || 1) - 1;\n\n let initMaxCol = Math.max(anchorCol, focusCol);\n let initMaxRow = Math.max(anchorRow, focusRow);\n const { minRow, maxRow, minCol, maxCol } = this.getMinAndMaxCellIndex(initMaxRow, initMaxCol, rows[0], columns[0], pos.table);\n const result = [];\n for (let i = minRow; i < maxRow + 1; i++) {\n for (let j = minCol; j < maxCol + 1; j++) {\n result.push({\n row: i,\n col: j\n });\n }\n }\n this.setSelectedCells(result, pos);\n }\n\n getMinAndMaxCellIndex(maxRow: number, maxCol: number, minRow: number, minCol: number, table: TableElement) {\n const beforeCols = [];\n const beforeRows = [];\n let spanSelectedCells = [];\n if (this.selectedCells.length) {\n spanSelectedCells = this.selectedCells\n .map(item => {\n const { row, col } = item;\n const node = table.children[row].children[col] as TableCellElement;\n if (!node.hidden) {\n return {\n ...item,\n colspan: node.colspan || 1,\n rowspan: node.rowspan || 1\n };\n }\n })\n .filter(item => item);\n }\n table.children.map((row, rowIndex) => {\n if (rowIndex <= maxRow) {\n row.children.map((cell: TableCellElement, colIndex) => {\n if (colIndex <= maxCol) {\n const cellRowIndex = rowIndex + (cell.rowspan || 1) - 1;\n const cellColIndex = colIndex + (cell.colspan || 1) - 1;\n\n if (spanSelectedCells.length) {\n const { row: selectRow, col: selectCol, rowspan: selectRowspan, colspan: selectColspan } = spanSelectedCells[0];\n if (selectRow + selectRowspan - 1 >= minRow && selectCol + selectColspan - 1 >= minCol) {\n minRow = Math.min(spanSelectedCells[0].row, minRow);\n minCol = Math.min(spanSelectedCells[0].col, minCol);\n }\n }\n\n if (cell.colspan && cell.colspan > 1) {\n beforeCols.push({ rowIndex, colIndex, cellColIndex });\n if (cellColIndex >= minCol && cellRowIndex >= minRow) {\n maxCol = Math.max(maxCol, cellColIndex);\n minCol = Math.min(minCol, colIndex);\n }\n }\n\n if (cell.rowspan && cell.rowspan > 1) {\n beforeRows.push({ rowIndex, colIndex, cellRowIndex });\n if (cellColIndex >= minCol && cellRowIndex >= minRow) {\n minRow = Math.min(minRow, rowIndex);\n maxRow = Math.max(maxRow, cellRowIndex);\n }\n }\n }\n });\n }\n });\n\n // 判断选区范围内之前的单元格 如果存在cellColIndex === minCol,表示当前获取的minCol并不是最小的,重新获取minCol\n const colNode = beforeCols.filter(\n item => item.rowIndex <= maxRow && item.colIndex <= maxCol && item.rowIndex >= minRow && item.cellColIndex === minCol\n );\n const rowNode = beforeRows.filter(\n item => item.rowIndex <= maxRow && item.colIndex <= maxCol && item.colIndex >= minCol && item.cellRowIndex === minRow\n );\n if (colNode.length || rowNode.length) {\n return this.getMinAndMaxCellIndex(maxRow, maxCol, minRow, minCol, table);\n }\n return {\n minRow,\n maxRow,\n minCol,\n maxCol\n };\n }\n\n selectCell(cell: HTMLTableCellElement, editor: Editor) {\n if (!editor.selection) {\n return;\n }\n const node = AngularEditor.toSlateNode(editor, cell);\n const path = AngularEditor.findPath(editor, node);\n this.anchorCellPath = path;\n this.focusCellPath = path;\n this.focusCellElement = cell;\n const [row, col] = path.slice(-2);\n const opts = new TableOptions();\n const { anchor } = editor.selection;\n const pos = TablePosition.create(opts, editor, anchor.path);\n this.setSelectedCells([{ row, col }], pos);\n }\n\n selectedCellsChange(): Observable<SelectedCell[]> {\n return this.selectedCells$.asObservable().pipe(skip(1));\n }\n\n cellsPositionChange() {\n return this.cellsChangeObject$.asObservable();\n }\n\n changeCells() {\n this.cellsChangeObject$.next();\n }\n\n emitTableChange() {\n this.tableChange$.next();\n }\n\n tableChange() {\n return this.tableChange$.asObservable();\n }\n\n clearSelectedCells() {\n this.selectedColumnsIndex = [];\n this.selectedRowsIndex = [];\n this.isSelectedTable = false;\n this.isCellSelecting = false;\n this.isRightClicking = false;\n this.selectedCells$.next([]);\n }\n\n selectCellStart(cell: HTMLTableCellElement, editor: Editor) {\n this.isPrepareSelecting = true;\n const node = AngularEditor.toSlateNode(editor, cell);\n const path = AngularEditor.findPath(editor, node);\n this.anchorCellPath = path;\n this.focusCellPath = null;\n if (!this.preFocusCellPath) {\n this.preFocusCellPath = this.anchorCellPath;\n }\n }\n\n selectCellOngoing(cell: HTMLTableCellElement, editor: Editor) {\n if (AngularEditor.isReadonly(editor)) {\n return;\n }\n if (!editor.selection) {\n return;\n }\n let isChanged: boolean;\n if (cell) {\n const node = AngularEditor.toSlateNode(editor, cell);\n const path = AngularEditor.findPath(editor, node);\n isChanged = !this.focusCellPath || this.focusCellPath.toString() !== path.toString();\n this.focusCellPath = path;\n this.focusCellElement = cell;\n } else {\n isChanged =\n !this.focusCellPath ||\n (this.focusCellPath.toString() === this.anchorCellPath.toString() && this.selectedCells.length === 0);\n }\n if (this.isPrepareSelecting && isChanged) {\n if (JSON.stringify(this.preFocusCellPath) !== JSON.stringify(this.focusCellPath)) {\n this.isCellSelecting = true;\n this.selectCells(editor);\n this.preFocusCellPath = this.focusCellPath;\n }\n }\n }\n\n selectCellEnd(editor: Editor) {\n if (this.isCellSelecting) {\n this.focusCell(editor, this.focusCellPath);\n }\n this.isPrepareSelecting = false;\n this.preFocusCellPath = null;\n }\n\n focusCell(editor: Editor, path: number[]) {\n const at = Editor.start(editor, path);\n Transforms.select(editor, at);\n }\n\n dangerousCellsChange(): Observable<SelectedCell[]> {\n return this.dangerousCells$.asObservable().pipe(skip(1));\n }\n\n setDangerousCells() {\n this.dangerousRowsIndex = this.selectedRowsIndex;\n this.dangerousColumnsIndex = this.selectedColumnsIndex;\n this.dangerousCells$.next(this.selectedCells);\n }\n\n clearDangerousCells() {\n this.dangerousRowsIndex = [];\n this.dangerousColumnsIndex = [];\n this.dangerousCells$.next([]);\n const pos = this.createTablePosition();\n if (pos.table) {\n this.isSelectedTable = this.selectedRowsIndex.length === pos.getHeight() && this.selectedColumnsIndex.length === pos.getWidth();\n }\n }\n\n dangerousOrSelectedCellsChange(): Observable<SelectedCell[]> {\n return merge(this.dangerousCells$.asObservable().pipe(skip(1)), this.selectedCells$.asObservable().pipe(skip(1)));\n }\n\n setDangerousRows() {\n const cells = this.selectedCells;\n const rows = _(cells).map('row').uniq().valueOf();\n const pos = this.createTablePosition();\n const result = [];\n\n this.dangerousRowsIndex = rows;\n this.isSelectedTable = rows.length === pos.getHeight();\n if (this.isSelectedTable) {\n this.dangerousColumnsIndex = [...Array(pos.getWidth())].map((v, i) => i);\n }\n\n for (const rowIndex of rows) {\n for (let i = 0; i < pos.getWidth(); i++) {\n result.push({\n row: rowIndex,\n col: i\n });\n }\n }\n this.dangerousCells$.next(result);\n }\n\n setDangerousColumns() {\n const cells = this.selectedCells;\n const cols = _(cells).map('col').uniq().valueOf();\n const pos = this.createTablePosition();\n const result = [];\n\n this.dangerousColumnsIndex = cols;\n this.isSelectedTable = cols.length === pos.getWidth();\n if (this.isSelectedTable) {\n this.dangerousRowsIndex = [...Array(pos.getHeight())].map((v, i) => i);\n }\n\n for (const colIndex of cols) {\n for (let i = 0; i < pos.getHeight(); i++) {\n result.push({\n row: i,\n col: colIndex\n });\n }\n }\n this.dangerousCells$.next(result);\n }\n\n setDangerousTable() {\n this.isSelectedTable = true;\n const { cells, pos } = this.getTableCellsAndPosition(this.editor);\n this.dangerousRowsIndex = [...Array(pos.getHeight())].map((v, i) => i);\n this.dangerousColumnsIndex = [...Array(pos.getWidth())].map((v, i) => i);\n this.dangerousCells$.next(cells);\n }\n\n selectFirstCell() {\n const { row, col } = this.selectedCells[0];\n const tablePath = this.getTablePath(this.editor);\n const path = Editor.start(this.editor, [...tablePath, row, col]);\n Transforms.select(this.editor, path);\n }\n\n setSelectedCellsBackgroundColor(backgroundColor: ColorType) {\n const cells = this.selectedCells;\n const tablePath = this.getTablePath(this.editor);\n Editor.withoutNormalizing(this.editor, () => {\n for (const cell of cells) {\n const { row, col } = cell;\n const cellPath = [...tablePath, row, col];\n Transforms.setNodes(this.editor, { backgroundColor }, { at: cellPath });\n }\n });\n }\n\n getSelectedCellBackgroundColor(): string {\n if (this.editor && this.editor.selection) {\n const {\n anchor: { path }\n } = this.editor.selection;\n const opts = new TableOptions();\n const { cell } = TablePosition.create(opts, this.editor, path);\n return cell && cell.backgroundColor;\n }\n return '';\n }\n\n clearSelectedCellsContent() {\n const cells = this.selectedCells;\n const tablePosition = this.getTablePosition(this.editor);\n if (tablePosition.isInTable()) {\n Editor.withoutNormalizing(this.editor, () => {\n for (const cell of cells) {\n const { row, col } = cell;\n const cellPath = [...tablePosition.tableEntry[1], row, col];\n const node = Node.get(this.editor, cellPath) as TableCellElement;\n TableEditor.clearCell(this.editor, [node, cellPath]);\n }\n });\n Transforms.select(this.editor, Editor.start(this.editor, tablePosition.cellEntry[1]));\n }\n }\n\n mergeCell(editor: Editor) {\n mergeCell(editor, this.selectedCells);\n }\n\n removeDangerousColumns() {\n const { dangerousColumnsIndex, isSelectedTable } = this;\n if (isSelectedTable) {\n TableEditor.removeTable(this.editor);\n return;\n }\n dangerousColumnsIndex\n .sort((a, b) => b - a)\n .forEach(index => {\n TableEditor.removeColumn(this.editor, index);\n });\n this.changeCells();\n }\n\n removeDangerousRows() {\n const { dangerousRowsIndex, isSelectedTable } = this;\n if (isSelectedTable) {\n TableEditor.removeTable(this.editor);\n return;\n }\n dangerousRowsIndex\n .sort((a, b) => b - a)\n .forEach(index => {\n TableEditor.removeRow(this.editor, index);\n });\n this.changeCells();\n }\n\n createTablePosition(): TablePosition {\n const {\n anchor: { path }\n } = this.editor.selection;\n const opts = new TableOptions();\n return TablePosition.create(opts, this.editor, path);\n }\n\n removeColumnOrRows() {\n const { selectedRowsIndex, selectedColumnsIndex, isSelectedTable } = this;\n if (isSelectedTable) {\n TableEditor.removeTable(this.editor);\n return;\n }\n if (selectedRowsIndex.length > 0 && selectedColumnsIndex.length === 0) {\n selectedRowsIndex\n .sort((a, b) => b - a)\n .forEach(index => {\n TableEditor.removeRow(this.editor, index);\n });\n this.changeCells();\n }\n if (selectedColumnsIndex.length > 0 && selectedRowsIndex.length === 0) {\n selectedColumnsIndex\n .sort((a, b) => b - a)\n .forEach(index => {\n TableEditor.removeColumn(this.editor, index);\n });\n this.changeCells();\n }\n }\n}\n","import { Editor, Transforms } from 'slate';\nimport { TableCellElement, TableElement } from '../../../custom-types';\nimport { TableOptions } from '../table.types';\nimport { TablePosition } from './table-position';\nimport * as TheQueries from '../../../queries';\n\nexport function splitCell(editor: Editor) {\n const opts = new TableOptions();\n const { anchor } = editor.selection;\n const tablePosition = TablePosition.create(opts, editor, anchor.path);\n const { cell, table, cellEntry } = tablePosition;\n if ((!cell.rowspan && !cell.colspan) || (cell.rowspan === 1 && cell.colspan === 1)) return editor;\n const cellRow = tablePosition.getRowIndex();\n const cellCol = tablePosition.getColumnIndex();\n resetTableCell(editor, table, cell, cellRow, cellCol);\n Transforms.select(editor, cellEntry[1]);\n Transforms.collapse(editor, { edge: 'end' });\n}\n\nexport function resetTableCell(editor: Editor, table: TableElement, cell: TableCellElement, cellRow: number, cellCol: number) {\n const rowSpanIndex = cellRow + (cell.rowspan || 1) - 1;\n const colSpanIndex = cellCol + (cell.colspan || 1) - 1;\n Editor.withoutNormalizing(editor, () => {\n table.children.map((row, rowIndex) => {\n row.children.map((col, colIndex) => {\n if (rowIndex >= cellRow && rowIndex <= rowSpanIndex && colIndex >= cellCol && colIndex <= colSpanIndex) {\n const path = TheQueries.findPath(editor, col);\n Transforms.setNodes(editor, { colspan: null, rowspan: null, hidden: null }, { at: path });\n }\n });\n });\n });\n}\n","import { Editor } from 'slate';\nimport { isSelectedCellMerged } from './merge-cell';\nimport { getSelectCellNode } from './get-select-cell-node';\nimport { MenuEntity, SelectedCell } from '../table.types';\n\nexport function setCellMenuInvisibility(editor: Editor, menuList: MenuEntity[], selectedCells: SelectedCell[], isActiveSelect?: boolean) {\n const isCellMerged = isSelectedCellMerged(editor);\n const selectCellNodes = getSelectCellNode(editor, selectedCells).filter(item => !item.node.hidden);\n menuList.forEach(item => {\n if (item.key === 'merge-cells') {\n item.invisibility = !(selectCellNodes && selectCellNodes.length > 1 && !isActiveSelect);\n }\n if (item.key === 'split-cells') {\n item.invisibility = !(selectCellNodes && selectCellNodes.length === 1 && isCellMerged && !isActiveSelect);\n }\n });\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'nav-split-line',\n template: ''\n})\nexport class NavSplitLineComponent implements OnInit {\n constructor() {}\n\n ngOnInit(): void {}\n}\n","import { Component, OnInit, Input, NgZone, OnDestroy } from '@angular/core';\nimport { ThyPopoverRef } from 'ngx-tethys/popover';\nimport { Editor } from 'slate';\nimport { TableStore } from '../../table.store';\nimport { ColorType, BackgroundColors, TableHeaderBackgroundColor, SpecialBackgroundColor } from '../../../../constants/color-select';\nimport { TheColorSelectService } from '../../../../services/color-select.service';\nimport { splitCell } from '../../utils/split-cell';\nimport { setCellMenuInvisibility } from '../../utils/set-menu-cell-invisibility';\nimport { MenuEntity } from '../../table.types';\nimport { TableEditor } from '../../table.editor';\n\n@Component({\n selector: 'the-table-toolbar',\n templateUrl: 'table-toolbar.component.html'\n})\nexport class TheTableToolbarComponent implements OnInit, OnDestroy {\n selectedColor: string;\n\n deleteIcon: string;\n\n iconName: string;\n\n @Input() tableStore: TableStore;\n\n @Input() isActiveSelect: boolean;\n\n get editor(): Editor {\n return this.tableStore && this.tableStore.editor;\n }\n\n cellMenuList: MenuEntity[] = [\n {\n key: 'merge-cells',\n name: '合并单元格',\n invisibility: false,\n icon: 'table-merge-cells',\n actionHandle: () => {\n event.preventDefault();\n event.stopPropagation();\n this.tableStore.mergeCell(this.editor);\n this.popoverRef.close();\n this.tableStore.clearSelectedCells();\n }\n },\n {\n key: 'split-cells',\n name: '拆分单元格',\n invisibility: false,\n icon: 'table-unmerge-cells',\n actionHandle: () => {\n event.preventDefault();\n event.stopPropagation();\n splitCell(this.editor);\n this.popoverRef.close();\n this.tableStore.clearSelectedCells();\n }\n }\n ];\n\n get isShowSplitLine() {\n return this.cellMenuList.filter(item => !item.invisibility).length > 1;\n }\n\n constructor(\n private ngZone: NgZone,\n private colorSelectService: TheColorSelectService,\n private popoverRef: ThyPopoverRef<TheTableToolbarComponent>\n ) {}\n\n ngOnInit() {\n this.deleteIcon = DeleteIcon[this.getDeleteIcon()];\n this.getIconName(this.deleteIcon);\n setCellMenuInvisibility(this.editor, this.cellMenuList, this.tableStore.selectedCells, this.isActiveSelect);\n this.selectedColor = this.tableStore.getSelectedCellBackgroundColor();\n }\n\n ngOnDestroy() {\n this.colorSelectService.closeColorSelect();\n }\n\n getIconName(key: string) {\n switch (key) {\n case 'trash':\n this.iconName = '删除表格';\n break;\n case 'table-delete-columns':\n this.iconName = '删除整列';\n break;\n case 'table-delete-rows':\n this.iconName = '删除整行';\n break;\n }\n }\n\n getDeleteIcon() {\n if (this.tableStore.isSelectedTable) {\n return DeleteIcon.trash;\n }\n if (this.tableStore.selectedRowsIndex.length > 0) {\n return DeleteIcon['table-delete-rows'];\n }\n if (this.tableStore.selectedColumnsIndex.length > 0) {\n return DeleteIcon['table-delete-columns'];\n }\n return null;\n }\n\n onDelete(event: MouseEvent) {\n event.preventDefault();\n this.tableStore.removeColumnOrRows();\n this.tableStore.clearDangerousCells();\n this.tableStore.clearSelectedCells();\n this.popoverRef.close();\n }\n\n onEnterDelete(event: MouseEvent) {\n this.tableStore.setDangerousCells();\n }\n\n onLeaveDelete(event: MouseEvent) {\n this.tableStore.clearDangerousCells();\n }\n\n openSelectColor(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n const element = (event.target as HTMLElement).closest('.thy-icon-nav-link');\n const isHeader = TableEditor.isActiveHeader(this.editor);\n this.ngZone.run(() => {\n this.colorSelectService.toggleColorSelect(\n element as HTMLElement,\n this.selectedColor,\n BackgroundColors,\n {\n perRowColorNumbers: 7,\n rowOptions: { 1: '#bbb', 2: '#bbb' },\n specialColor: isHeader ? TableHeaderBackgroundColor : SpecialBackgroundColor\n },\n (newColor: ColorType) => {\n if ((newColor === TableHeaderBackgroundColor && isHeader) || (newColor === SpecialBackgroundColor && !isHeader)) {\n this.tableStore.setSelectedCellsBackgroundColor(null);\n } else {\n this.tableStore.setSelectedCellsBackgroundColor(newColor);\n }\n this.selectedColor = newColor;\n }\n );\n });\n }\n}\n\nexport enum DeleteIcon {\n 'table-delete-rows',\n 'table-delete-columns',\n 'trash'\n}\n","<thy-icon-nav>\n <ng-container *ngFor=\"let item of cellMenuList\">\n <a href=\"javascript:;\" thyIconNavLink *ngIf=\"!item.invisibility\" [thyTooltip]=\"item.name\" (mousedown)=\"item.actionHandle()\">\n <thy-icon [thyIconName]=\"item.icon\"></thy-icon>\n </a>\n </ng-container>\n <nav-split-line *ngIf=\"!isActiveSelect && isShowSplitLine\"></nav-split-line>\n <a href=\"javascript:;\" thyIconNavLink thyTooltip=\"单元格背景\" (mousedown)=\"openSelectColor($event)\">\n <thy-icon thyIconName=\"background-tt\" thyIconType=\"twotone\" [thyTwotoneColor]=\"selectedColor\"></thy-icon>\n </a>\n <nav-split-line *ngIf=\"deleteIcon\"></nav-split-line>\n <a\n *ngIf=\"deleteIcon\"\n href=\"javascript:;\"\n thyIconNavLink\n [thyTooltip]=\"iconName\"\n class=\"danger\"\n [thyIconNavLinkIcon]=\"deleteIcon\"\n (mousedown)=\"onDelete($event)\"\n (mouseenter)=\"onEnterDelete($event)\"\n (mouseleave)=\"onLeaveDelete($event)\"\n ></a>\n</thy-icon-nav>\n","import isHotkey from 'is-hotkey';\n\nexport function isVirtualKey(e: KeyboardEvent) {\n const isMod = e.ctrlKey || e.metaKey;\n const isAlt = isHotkey('alt', e);\n const isShift = isHotkey('shift', e);\n const isCapsLock = e.key.includes('CapsLock');\n const isTab = e.key.includes('Tab');\n const isEsc = e.key.includes('Escape');\n const isF = e.key.startsWith('F');\n const isArrow = e.key.includes('Arrow') ? true : false;\n return isCapsLock || isMod || isAlt || isArrow || isShift || isTab || isEsc || isF;\n}\n","import { OnInit, Component, Input, HostBinding, HostListener, ElementRef } from '@angular/core';\nimport { ThyPopoverRef } from 'ngx-tethys/popover';\nimport { MenuEntity } from '../../plugins/table/table.types';\n\n@Component({\n selector: 'the-contextmenu',\n templateUrl: 'contextmenu.component.html'\n})\nexport class TheContextMenuComponent implements OnInit {\n @Input()\n menuEntities: MenuEntity[] = [];\n\n @Input()\n actionHandle: (entity: MenuEntity) => void;\n\n @Input()\n activeHandle: (event: MouseEvent, entity: MenuEntity) => void;\n\n @Input()\n deactiveHandle: (event: MouseEvent, entity: MenuEntity) => void;\n\n @HostBinding('class.the-overlay-menu-wrap')\n wrap = true;\n\n @HostListener('document: mousedown', ['$event'])\n handleDocumentMouseDown(event: MouseEvent) {\n if (!this.elementRef.nativeElement.contains(event.target as HTMLElement) && event.button !== 2) {\n this.thyPopoverRef.close();\n }\n }\n\n @HostListener('mousedown', ['$event'])\n handleMouseDown(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n itemMousedown(event: MouseEvent, entity: MenuEntity) {\n event.preventDefault();\n this.actionHandle(entity);\n this.thyPopoverRef.close();\n }\n\n itemMouseleave(event: MouseEvent, entity: MenuEntity) {\n event.preventDefault();\n this.deactiveHandle(event, entity);\n }\n\n itemMouseenter(event: MouseEvent, entity: MenuEntity) {\n event.preventDefault();\n this.activeHandle(event, entity);\n }\n\n constructor(public elementRef: ElementRef, private thyPopoverRef: ThyPopoverRef<TheContextMenuComponent>) {}\n\n ngOnInit() {}\n}\n","<thy-action-menu>\n <ng-container *ngFor=\"let menuItem of menuEntities\">\n <a\n thyActionMenuItem\n href=\"javascript:;\"\n *ngIf=\"!menuItem.invisibility\"\n (mousedown)=\"itemMousedown($event, menuItem)\"\n (mouseenter)=\"itemMouseenter($event, menuItem)\"\n (mouseleave)=\"itemMouseleave($event, menuItem)\"\n >\n <span thyActionMenuItemIcon>\n <thy-icon\n *ngIf=\"menuItem.backgroundColor; else elseIcon\"\n [thyIconName]=\"menuItem.icon\"\n thyIconType=\"twotone\"\n [thyTwotoneColor]=\"menuItem.backgroundColor\"\n ></thy-icon>\n <ng-template #elseIcon>\n <thy-icon [thyIconName]=\"menuItem.icon\"></thy-icon>\n </ng-template>\n </span>\n <span thyActionMenuItemName>{{ menuItem.name }}</span>\n <span *ngIf=\"menuItem.extendIcon\" thyActionMenuItemExtendIcon>\n <thy-icon thyIconName=\"{{ menuItem.extendIcon }}\"></thy-icon>\n </span>\n </a>\n <thy-action-menu-divider *ngIf=\"menuItem.divider\"></thy-action-menu-divider>\n </ng-container>\n</thy-action-menu>\n","import { Injectable, NgZone } from '@angular/core';\nimport { BackgroundColors, ColorType, SpecialBackgroundColor, TableHeaderBackgroundColor } from '../constants/color-select';\nimport { TableStore } from '../plugins/table/table.store';\nimport { TheColorSelectService } from './color-select.service';\nimport { TableEditor } from '../plugins/table/table.editor';\nimport { ThyPopoverRef, ThyPopover } from 'ngx-tethys/popover';\nimport { TheContextMenuComponent } from '../components/contextmenu/contextmenu.component';\nimport { TheContextService } from './context.service';\nimport { splitCell } from '../plugins/table/utils/split-cell';\nimport { setCellMenuInvisibility } from '../plugins/table/utils/set-menu-cell-invisibility';\nimport { MenuEntity } from '../plugins/table/table.types';\n\n@Injectable()\nexport class TheTableContextMenuService {\n menuRef: ThyPopoverRef<TheContextMenuComponent>;\n\n get isOpened() {\n return this.menuRef && this.menuRef.componentInstance;\n }\n\n get editor() {\n return this.tableStore && this.tableStore.editor;\n }\n\n get backgroundColor() {\n return this.tableStore.getSelectedCellBackgroundColor();\n }\n\n constructor(\n private colorSelectService: TheColorSelectService,\n private tableStore: TableStore,\n private thyPopover: ThyPopover,\n private ngZone: NgZone,\n private theContextService: TheContextService\n ) {}\n\n menuEntities: MenuEntity[] = [\n {\n key: 'background-color',\n icon: 'background-tt',\n divider: true,\n name: '单元格背景',\n extendIcon: 'angle-right',\n actionHandle: () => {},\n activeHandle: (event: MouseEvent) => {\n if (this.colorSelectService.isOpenColorSelect) {\n return;\n }\n const isHeader = TableEditor.isActiveHeader(this.editor);\n this.colorSelectService.toggleColorSelect(\n event.target as HTMLElement,\n this.backgroundColor,\n BackgroundColors,\n {\n perRowColorNumbers: 7,\n rowOptions: { 1: '#bbb', 2: '#bbb' },\n specialColor: isHeader ? TableHeaderBackgroundColor : SpecialBackgroundColor\n },\n (newColor: ColorType) => {\n if ((newColor === TableHeaderBackgroundColor && isHeader) || (newColor === SpecialBackgroundColor && !isHeader)) {\n this.tableStore.setSelectedCellsBackgroundColor(null);\n } else {\n this.tableStore.setSelectedCellsBackgroundColor(newColor);\n }\n this.tableStore.selectFirstCell();\n },\n 'rightTop',\n 0\n );\n },\n deactiveHandle: (event: MouseEvent) => {\n if (event.relatedTarget instanceof HTMLElement) {\n if (event.relatedTarget.classList.contains('color-container')) {\n return;\n }\n }\n if (this.colorSelectService.isOpenColorSelect) {\n this.colorSelectService.closeColorSelect();\n }\n }\n },\n {\n key: 'clear-selection',\n icon: 'sweep',\n divider: true,\n name: '清空选中区域',\n actionHandle: () => {\n this.tableStore.clearSelectedCellsContent();\n this.tableStore.selectFirstCell();\n }\n },\n {\n key: 'merge-cells',\n icon: 'table-merge-cells',\n name: '合并单元格',\n actionHandle: () => {\n this.tableStore.mergeCell(this.editor);\n }\n },\n {\n key: 'split-cells',\n icon: 'table-unmerge-cells',\n name: '拆分单元格',\n divider: true,\n actionHandle: () => {\n splitCell(this.editor);\n }\n },\n {\n key: 'delete-selection-rows',\n icon: 'table-delete-rows',\n name: '删除所在行',\n actionHandle: () => {\n this.tableStore.removeDangerousRows();\n this.tableStore.clearDangerousCells();\n },\n activeHandle: () => {\n this.tableStore.setDangerousRows();\n }\n },\n {\n key: 'delete-selection-columns',\n icon: 'table-delete-columns',\n divider: true,\n name: '删除所在列',\n actionHandle: () => {\n this.tableStore.removeDangerousColumns();\n this.tableStore.clearDangerousCells();\n },\n activeHandle: () => {\n this.tableStore.setDangerousColumns();\n }\n },\n {\n key: 'delete-table',\n icon: 'trash',\n name: '删除表格',\n actionHandle: () => {\n TableEditor.removeTable(this.editor);\n this.tableStore.clearDangerousCells();\n },\n activeHandle: () => {\n this.tableStore.setDangerousTable();\n }\n }\n ];\n\n openMenuList(event: MouseEvent) {\n this.ngZone.run(() => {\n setCellMenuInvisibility(this.editor, this.menuEntities, this.tableStore.selectedCells);\n this.menuEntities.forEach(item => {\n if (item.key === 'background-color') {\n item.backgroundColor = this.tableStore.getSelectedCellBackgroundColor();\n }\n });\n this.menuRef = this.thyPopover.open(TheContextMenuComponent, {\n origin: event.target as HTMLElement,\n initialState: {\n menuEntities: this.menuEntities,\n actionHandle: (entity: MenuEntity) => {\n entity.actionHandle(entity);\n },\n activeHandle: (menuEvent: MouseEvent, entity: MenuEntity) => {\n if (entity.activeHandle) {\n entity.activeHandle(menuEvent);\n }\n },\n deactiveHandle: (menuEvent: MouseEvent, entity: MenuEntity) => {\n if (entity.key.indexOf('delete') >= 0) {\n this.tableStore.clearDangerousCells();\n }\n if (entity.deactiveHandle) {\n entity.deactiveHandle(menuEvent);\n }\n }\n },\n originPosition: {\n x: event.x + 30,\n y: event.y\n },\n hasBackdrop: false,\n placement: 'bottomLeft',\n viewContainerRef: this.theContextService.getOptions().viewContainerRef,\n manualClosure: true,\n insideClosable: false,\n backdropClosable: false\n });\n this.menuRef.afterClosed().subscribe(() => {\n this.tableStore.clearSelectedCells();\n });\n });\n }\n\n closeContextMenu() {\n if (this.isOpened) {\n this.menuRef.close();\n return this.menuRef.afterClosed();\n }\n }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { ThyPlacement } from 'ngx-tethys/core';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys/popover';\nimport { TheTableToolbarComponent } from './components/toolbar/table-toolbar.component';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { TableStore } from './table.store';\nimport { TheTableContextMenuService } from '../../services/table-contextmenu.service';\nimport { TheContextService } from '../../services/context.service';\nimport { fromEvent, merge } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { isVirtualKey } from './utils/is-virtual-key';\n\n@Injectable()\nexport class TableService {\n backdropClosable = false;\n\n hasBackdrop = false;\n\n insideClosable = false;\n\n placement: ThyPlacement = 'topLeft';\n\n offset = 8;\n\n toolbarRef: ThyPopoverRef<any>;\n\n get isOpened() {\n return this.toolbarRef && this.toolbarRef.componentInstance;\n }\n\n constructor(\n private thyPopover: ThyPopover,\n private overlay: Overlay,\n private tableStore: TableStore,\n private theTableContextMenuService: TheTableContextMenuService,\n private ngZone: NgZone,\n private theContextService: TheContextService\n ) {}\n\n openToolbar(origin: HTMLElement, isActiveSelect?: boolean) {\n this.theTableContextMenuService.closeContextMenu();\n\n if (this.isOpened) {\n if (this.toolbarRef.containerInstance.config.origin === origin) {\n return;\n }\n this.toolbarRef.close();\n }\n this.toolbarRef = this.thyPopover.open(TheTableToolbarComponent, {\n initialState: {\n tableStore: this.tableStore,\n isActiveSelect\n },\n viewContainerRef: this.theContextService.getOptions().viewContainerRef,\n origin: this.getOrigin(origin),\n backdropClosable: this.backdropClosable,\n placement: this.placement,\n offset: this.offset,\n hasBackdrop: this.hasBackdrop,\n insideClosable: this.insideClosable,\n panelClass: 'the-table-toolbar-wrap',\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n manualClosure: true\n });\n this._listenCellClearEvent();\n }\n\n getOrigin(origin: HTMLElement): HTMLElement {\n if (origin instanceof HTMLTableCellElement && origin.tagName !== 'TH') {\n const { selectedRowsIndex, selectedColumnsIndex, focusCellPath, isSelectedTable, focusCellElement } = this.tableStore;\n const [row, col] = focusCellPath.slice(-2);\n const tableElement = focusCellElement.closest('.the-table-container') as HTMLElement;\n if (isSelectedTable && col === 0 && row === 0) {\n return tableElement.querySelector('.the-table-corner-controls');\n }\n if (selectedColumnsIndex.length > 0 && row === 0) {\n return tableElement.querySelectorAll('.the-table-col-controls-inner')[col] as HTMLElement;\n }\n if (selectedRowsIndex.length > 0 && col === 0) {\n return tableElement.querySelectorAll('.the-table-row-controls-button-wrap')[row] as HTMLElement;\n }\n }\n return origin;\n }\n\n closeToolbar() {\n if (this.isOpened) {\n this.ngZone.run(() => {\n this.toolbarRef.close();\n });\n return this.toolbarRef.afterClosed();\n }\n }\n\n _listenCellClearEvent() {\n const onMouseObservable = merge(\n fromEvent<MouseEvent>(document, 'mousedown').pipe(filter((e: MouseEvent) => e.button !== 2)),\n fromEvent<KeyboardEvent>(document, 'keydown').pipe(\n filter((e: KeyboardEvent) => {\n return !isVirtualKey(e);\n })\n )\n )\n .pipe(take(1))\n .subscribe((e: MouseEvent) => {\n if (this.tableStore.selectedCells && this.tableStore.selectedCells.length > 0) {\n if (e.type === 'keydown') {\n this.tableStore.clearSelectedCellsContent();\n }\n this.tableStore.clearSelectedCells();\n this.closeToolbar();\n onMouseObservable.unsubscribe();\n }\n });\n }\n}\n","export const SLA_TABLE_SELECTOR = '.slate-element-table';\n\nexport const SLA_TABLE_CELL_SELECTOR = '.slate-element-table-cell';\n","import { Component, OnInit, OnDestroy, Input, ChangeDetectorRef } from '@angular/core';\nimport { Editor, Range, Transforms } from 'slate';\nimport { ELEMENT_TO_COMPONENT } from 'slate-angular';\nimport { TableEditor } from '../../table.editor';\nimport { TablePosition } from '../../utils/table-position';\nimport { TableStore } from '../../table.store';\nimport type { TheTableComponent } from '../table.component';\nimport { TableOptions } from '../../table.types';\n\n@Component({\n selector: 'the-table-insert-mark',\n templateUrl: './insert-mark.component.html'\n})\nexport class TheInsertMarkComponent implements OnInit, OnDestroy {\n @Input() type: 'row' | 'column';\n @Input() at: number;\n @Input() tableStore: TableStore;\n\n public insertLength: string;\n\n public dotWrapperHovered: boolean;\n\n tooltipContent = '';\n\n get disabled(): boolean {\n return this.tableStore && !!this.tableStore.selectedCells.length;\n }\n\n get editor(): Editor {\n return this.tableStore && this.tableStore.editor;\n }\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit() {\n this.tooltipContent = this.type === 'row' ? '插入行' : '插入列';\n }\n\n onMouseDown(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n if (this.disabled) {\n return;\n }\n const fun = this.type === 'row' ? TableEditor.insertRow : TableEditor.insertColumn;\n fun(this.editor, 1, this.at);\n // update header\n if (this.type === 'row' && this.at === 0) {\n const { selection } = this.editor;\n const opts = new TableOptions();\n const table = TablePosition.create(opts, this.editor, selection.anchor.path);\n Transforms.setNodes(this.editor, { header: true }, { at: table.tableEntry[1].concat(0) });\n Transforms.setNodes(this.editor, { header: null }, { at: table.tableEntry[1].concat(1) });\n }\n this.tableStore.changeCells();\n }\n\n onMouseEnter(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n if (this.disabled) {\n return;\n }\n this.dotWrapperHovered = true;\n this.insertLength = this.getLength();\n this.cdr.detectChanges();\n }\n\n onMouseLeave(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n if (this.disabled) {\n return;\n }\n this.dotWrapperHovered = false;\n this.cdr.detectChanges();\n }\n\n getLength() {\n const { selection } = this.editor;\n if (selection && Range.isCollapsed(selection)) {\n const { table } = TablePosition.create(new TableOptions(), this.editor, selection.anchor.path);\n if (!table) {\n return;\n }\n const tableComponent = ELEMENT_TO_COMPONENT.get(table) as TheTableComponent;\n const tableWrapper = tableComponent.tableWrapper.nativeElement as HTMLElement;\n const tableElement = tableComponent.theTableElement.nativeElement as HTMLElement;\n let result = 0;\n if (this.type === 'row') {\n result = tableWrapper.offsetWidth + 11;\n } else {\n result = tableElement.offsetHeight - 1;\n }\n return result + 'px';\n }\n }\n\n ngOnDestroy() {}\n}\n","<div\n [thyTooltip]=\"!disabled && tooltipContent\"\n class=\"the-table-controls-insert-wrapper\"\n [ngClass]=\"{ disabled: disabled }\"\n contenteditable=\"false\"\n (mousedown)=\"onMouseDown($event)\"\n (mouseenter)=\"onMouseEnter($event)\"\n (mouseleave)=\"onMouseLeave($event)\"\n>\n <div\n class=\"the-table-controls-insert-line\"\n *ngIf=\"dotWrapperHovered\"\n [attr.data-dot-type]=\"type\"\n [ngStyle]=\"{ height: type === 'column' && insertLength, width: type === 'row' && insertLength }\"\n ></div>\n</div>\n","export const TABLE_SELECTOR = '.the-table';\n\nexport const TABLE_WRAPPER_SELECTOR = '.the-table-wrapper';\n\nexport const RESIZE_OVERLAY_SELECTOR = '.the-table-resize-overlay-thumb';\n","import { Directive, OnDestroy, AfterViewInit, ElementRef, ViewContainerRef, ChangeDetectorRef, NgZone, Inject } from '@angular/core';\nimport { fromEvent, ReplaySubject } from 'rxjs';\nimport { map, takeUntil, filter, mapTo, throttleTime } from 'rxjs/operators';\nimport { HoveredCellInfo, TableCellEventDispatcher } from './event-dispatcher';\nimport { RESIZE_OVERLAY_SELECTOR } from './selectors';\nimport { ColumnResizeNotifierSource } from './column-resize-notifier';\nimport { SLA_TABLE_CELL_SELECTOR } from '../../constants/selector';\nimport { TheTableToken } from '../../plugins/table/table.types';\nimport type { TheTableComponent } from '../../plugins/table/components/table.component';\n\n@Directive({\n selector: 'div[theColumnResize]'\n})\nexport class TheColumnResizeDirective implements AfterViewInit, OnDestroy {\n protected readonly destroyed = new ReplaySubject<void>();\n protected isXAxis: boolean;\n\n constructor(\n public elementRef: ElementRef,\n public viewContainerRef: ViewContainerRef,\n public cdr: ChangeDetectorRef,\n public ngZone: NgZone,\n public eventDispatcher: TableCellEventDispatcher,\n public resizeNotifier: ColumnResizeNotifierSource,\n @Inject(TheTableToken)\n public theTableComponent: TheTableComponent\n ) {}\n\n ngAfterViewInit() {\n this._listenForCellEdgeHoverEvents();\n this._listenStartDrag();\n this._listenEndDrag();\n }\n\n _listenForCellEdgeHoverEvents() {\n this.ngZone.runOutsideAngular(() => {\n const element = this.elementRef.nativeElement!;\n let previous: { x: number; y: number } = { x: 0, y: 0 };\n fromEvent<MouseEvent>(element, 'mousemove') // mouseover to mousemove 增加灵敏性\n .pipe(\n throttleTime(300), // 防抖\n map(event => {\n if (!this.theTableComponent.isCollapsed) {\n return null;\n }\n const cell = (event.target as HTMLElement).closest(SLA_TABLE_CELL_SELECTOR) as HTMLTableCellElement;\n let hoveredInfo: HoveredCellInfo;\n let position;\n if (cell) {\n if (previous.x > 0) {\n const rectCell = cell.getBoundingClientRect();\n const deltaX = previous.x - event.clientX;\n const deltaY = previous.y - event.clientY;\n if (Math.abs(deltaX) > Math.abs(deltaY) && deltaX !== 0) {\n const centerCellX = rectCell.x + rectCell.width / 2;\n position = event.x > centerCellX ? 'right' : 'left';\n this.isXAxis = true;\n }\n if (Math.abs(deltaY) > Math.abs(deltaX) && deltaY !== 0) {\n this.isXAxis = false;\n const centerCellY = rectCell.y + rectCell.height / 2;\n position = event.y > centerCellY ? 'top' : 'bottom';\n }\n hoveredInfo = {\n cell,\n position\n };\n }\n previous = {\n x: event.clientX,\n y: event.clientY\n };\n return position ? hoveredInfo : null;\n }\n return null;\n }),\n takeUntil(this.destroyed)\n )\n .subscribe(this.eventDispatcher.tableCellHovered);\n fromEvent<MouseEvent>(element, 'mouseleave')\n .pipe(\n filter(event => {\n return !!event.relatedTarget && !(event.relatedTarget as Element).matches(RESIZE_OVERLAY_SELECTOR);\n }),\n mapTo(null),\n takeUntil(this.destroyed)\n )\n .subscribe(this.eventDispatcher.tableCellHovered);\n });\n }\n\n _listenStartDrag() {\n this.resizeNotifier.resizeStarted.pipe(takeUntil(this.destroyed)).subscribe(() => {\n this.isXAxis ? this.theTableComponent.initializeColumns() : this.theTableComponent.initializeRows();\n });\n }\n\n _listenEndDrag() {\n this.resizeNotifier.resizeCompleted.pipe(takeUntil(this.destroyed)).subscribe(() => {\n this.isXAxis ? this.theTableComponent.transformColumnsWidth() : this.theTableComponent.transformRowHeight();\n });\n }\n\n ngOnDestroy() {\n this.destroyed.next();\n this.destroyed.complete();\n }\n}\n","import { Component, OnInit, ElementRef, OnDestroy, ChangeDetectorRef, NgZone, AfterViewInit, ViewChild, HostListener } from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { take, takeUntil, debounceTime } from 'rxjs/operators';\nimport { Editor, Transforms } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { TablePosition } from '../utils';\nimport { ColumnResizeNotifierSource } from '../../../components/column-resize/column-resize-notifier';\nimport { TableCellEventDispatcher } from '../../../components/column-resize/event-dispatcher';\nimport { TableStore } from '../table.store';\nimport { getElementHeight, getElementWidth } from '../../../utils/dom';\nimport { TableService } from '../table.service';\nimport { TheTableContextMenuService } from '../../../services/table-contextmenu.service';\nimport { TheContextService } from '../../../services/context.service';\nimport { TheBaseElementComponent } from '../../../interfaces/view-base';\nimport { TableCellElement, TableElement, TableRowElement } from '../../../custom-types';\nimport { TableOptions, TheTableColumn, TheTableToken } from '../table.types';\nimport { TheEditor } from '../../../interfaces/editor';\nimport { SLA_TABLE_CELL_SELECTOR } from '../../../constants/selector';\nimport * as TheTransforms from '../../../transforms';\n\n@Component({\n selector: 'the-table, [theTable]',\n templateUrl: './table.component.html',\n providers: [\n TableStore,\n TableService,\n TheTableContextMenuService,\n TableCellEventDispatcher,\n ColumnResizeNotifierSource,\n {\n provide: TheTableToken,\n useExisting: TheTableComponent\n }\n ]\n})\nexport class TheTableComponent extends TheBaseElementComponent<TableElement, Editor> implements OnInit, AfterViewInit, OnDestroy {\n destroy$: Subject<any> = new Subject();\n theTableWrapperWidth: number;\n\n rowControls: { height: number; rowIndex: number }[] = [];\n\n colControls = [];\n\n normalizedColumns: TheTableColumn[];\n\n isInTable: boolean;\n\n get columns(): TheTableColumn[] {\n return this.normalizedColumns || (this.element && this.element.columns);\n }\n\n get nativeElement(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n get tbodyNativeElement(): HTMLElement {\n return this.tbodyElement?.nativeElement;\n }\n\n get isSelectedAllCell() {\n return (\n this.tableStore.selectedRowsIndex.length === this.rowControls.length &&\n this.tableStore.selectedColumnsIndex.length === this.colControls.length\n );\n }\n\n @ViewChild('tableWrapper', { read: ElementRef, static: true })\n tableWrapper: ElementRef;\n\n @ViewChild('theTable', { read: ElementRef, static: true })\n theTableElement: ElementRef;\n\n @ViewChild('tbody', { read: ElementRef, static: true })\n tbodyElement: ElementRef;\n\n @HostListener('mousedown', ['$event'])\n handleMousedown(event: MouseEvent) {\n if (event.target instanceof Element && this.tbodyNativeElement.contains(event.target)) {\n return;\n }\n if (!TheEditor.isFocused(this.editor)) {\n TheEditor.focus(this.editor);\n }\n AngularEditor.moveBlockCard(this.editor, this.element, { direction: 'left' });\n event.preventDefault();\n }\n\n onContextChange() {\n super.onContextChange();\n if (this.initialized) {\n Promise.resolve().then(() => {\n this.tableStore.emitTableChange();\n this.useRowControls();\n });\n this.getIsInTable();\n this.getColControls();\n if (this.normalizedColumns) {\n this.normalizeShowColumns();\n }\n }\n }\n\n constructor(\n elementRef: ElementRef,\n public eventDispatcher: TableCellEventDispatcher,\n public resizeNotifier: ColumnResizeNotifierSource,\n public tableStore: TableStore,\n public cdr: ChangeDetectorRef,\n public ngZone: NgZone,\n public tableService: TableService,\n private theContextService: TheContextService,\n private theTableContextMenuService: TheTableContextMenuService\n ) {\n super(elementRef, cdr);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.getColControls();\n this.getIsInTable();\n }\n\n ngAfterViewInit() {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n const blockCardElement = this.nativeElement.closest('slate-block-card');\n if (blockCardElement) {\n blockCardElement.classList.add(`slate-block-card-${this.element.type}`);\n }\n this.tableStore.initEditor(this.editor);\n this.subscribeCellsChange();\n this.subscribeCellPositionChange();\n this.listenTableContextMenuEvent();\n this.useTableWrapperWidth();\n // need view render complete\n this.useRowControls();\n });\n }\n\n subscribeCellPositionChange() {\n this.tableStore\n .cellsPositionChange()\n .pipe(debounceTime(100), takeUntil(this.destroy$))\n .subscribe(x => {\n this.cdr.detectChanges();\n });\n }\n\n useTableWrapperWidth() {\n const rootWidth = this.theContextService.getOptions().width;\n const tablePath = TheEditor.findPath(this.editor, this.element);\n if (tablePath.length > 1) {\n // 解决table不在顶层时,拖动单元格宽度计算问题\n this.theTableWrapperWidth = this.tableWrapper.nativeElement.offsetWidth;\n } else {\n this.theTableWrapperWidth = rootWidth;\n }\n }\n\n subscribeCellsChange() {\n this.tableStore\n .dangerousOrSelectedCellsChange()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.cdr.detectChanges();\n });\n }\n\n useRowControls() {\n if (this.selection) {\n this.rowControls = this.calculateRowControls();\n this.cdr.detectChanges();\n }\n }\n\n calculateMinRowSpanCellForRows(): { cell?: TableCellElement; rowIndex: number }[] {\n const table = this.element;\n const cells = table.children.map((row, index) => {\n const noHiddenCells = row.children.filter(cell => !cell.hidden);\n if (noHiddenCells.length > 0) {\n const minRowspan = Math.min.apply(\n Math,\n noHiddenCells.map(cell => {\n return cell.rowspan || 1;\n })\n );\n\n const cell = row.children.find(item => !item.hidden && (item.rowspan || 1) === minRowspan);\n return {\n cell,\n rowIndex: index\n };\n } else {\n return {\n rowIndex: index\n };\n }\n });\n return cells;\n }\n\n calculateRowControls() {\n const minRowSpanCellForRows = this.calculateMinRowSpanCellForRows();\n\n const rowControls = [];\n let previousRowIndex = 0;\n let previousCombineRowIndex = 0;\n minRowSpanCellForRows.forEach((cellInfo, index) => {\n if (!cellInfo.cell) {\n rowControls.push({\n height: 0,\n rowIndex: index\n });\n previousCombineRowIndex = index;\n if (index === minRowSpanCellForRows.length - 1) {\n this.calculateRowControlsAvgHeight(previousCombineRowIndex, previousRowIndex, rowControls);\n }\n return;\n }\n\n // calculate combine row height\n if (previousCombineRowIndex > previousRowIndex) {\n this.calculateRowControlsAvgHeight(previousCombineRowIndex, previousRowIndex, rowControls);\n previousCombineRowIndex = 0;\n }\n\n const cellDom = AngularEditor.toDOMNode(this.editor, cellInfo.cell);\n let height = getElementHeight(cellDom);\n // 当cell为合并的单元格(rowspan > 1),计算其实际高度(当前单元格的高度 - 下方合并单元格的高度)\n if (cellInfo.cell.rowspan > 1) {\n const calcHeight = height - this.getBelowRowHeight(minRowSpanCellForRows, index, cellInfo.rowIndex, cellInfo.cell.rowspan);\n rowControls.push({\n height: calcHeight,\n rowIndex: cellInfo.rowIndex\n });\n } else {\n rowControls.push({\n height,\n rowIndex: cellInfo.rowIndex\n });\n }\n previousRowIndex = index;\n });\n return rowControls;\n }\n\n calculateRowControlsAvgHeight(\n previousCombineRowIndex: number,\n previousRowIndex: number,\n rowControls: { height: number; rowIndex: number }[]\n ) {\n const rowControl = rowControls[previousRowIndex];\n const count = previousCombineRowIndex - previousRowIndex;\n const avgHeight = Math.floor(rowControl.height / (count + 1));\n const firstHeight = rowControl.height - avgHeight * count;\n rowControl.height = firstHeight;\n rowControls\n .filter((item, _index) => _index > previousRowIndex && _index <= previousCombineRowIndex)\n .forEach(rowControl => {\n rowControl.height = avgHeight;\n });\n }\n\n getBelowRowHeight(\n cells: {\n cell?: TableCellElement;\n rowIndex: number;\n }[],\n index: number,\n rowIndex: number,\n rowspan: number\n ) {\n let belowRowlHeight = 0;\n cells.slice(index + 1, cells.length).map(item => {\n if (!item.cell) {\n return;\n }\n if (rowIndex + rowspan > item.rowIndex) {\n const cellDom = AngularEditor.toDOMNode(this.editor, item.cell);\n if (item.cell.rowspan > 1) {\n // 如果下方单元格的rowspan > 1,递归计算\n const height = this.getBelowRowHeight(\n cells,\n cells.findIndex(cell => cell.rowIndex === item.rowIndex),\n item.rowIndex,\n item.cell.rowspan\n );\n belowRowlHeight += getElementHeight(cellDom) - height;\n } else {\n belowRowlHeight += getElementHeight(cellDom);\n }\n }\n });\n return belowRowlHeight;\n }\n\n getColControls() {\n this.colControls = this.element?.children[0]?.children || [];\n }\n\n onColMouseDown(event: MouseEvent, index: number) {\n event.stopPropagation();\n event.preventDefault();\n if (!!this.selection && this.isInTable) {\n this.tableStore.clearDangerousCells();\n this.tableStore.selectColumn(this.editor, index);\n this.tableService.openToolbar(event.target as HTMLElement, true);\n }\n }\n\n getIsInTable() {\n if (this.selection) {\n const opts = new TableOptions();\n const selection = this.editor.selection;\n const startPosition = TablePosition.create(opts, this.editor, selection.anchor.path);\n const endPosition = TablePosition.create(opts, this.editor, selection.focus.path);\n this.isInTable = startPosition.isInTable() && endPosition.isInTable();\n } else {\n this.isInTable = false;\n }\n }\n\n normalizeShowColumns() {\n const table = this.element;\n const tr = table.children[0];\n if (this.element.columns) {\n let isGood = true;\n this.normalizedColumns = table.columns.map(item => {\n return { ...item };\n });\n if (this.element.columns.length !== tr.children.length) {\n this.normalizedColumns = tr.children.map((item, i) => this.columns[i] || { width: 200 });\n isGood = false;\n }\n const totalWidth = this.normalizedColumns.reduce((pre, cur) => {\n return pre + cur.width;\n }, 0);\n if (totalWidth < this.theTableWrapperWidth) {\n const lastColumnWidth =\n this.theTableWrapperWidth - totalWidth + this.normalizedColumns[this.normalizedColumns.length - 1].width;\n this.normalizedColumns[this.normalizedColumns.length - 1] = { width: lastColumnWidth };\n isGood = false;\n }\n if (isGood) {\n this.normalizedColumns = null;\n }\n }\n }\n\n initializeColumns() {\n if (!this.element.columns) {\n const tr = this.element.children[0] as TableRowElement;\n const tableWidth = AngularEditor.toDOMNode(this.editor, tr).offsetWidth;\n const columns = tr.children.map(cell => {\n return { width: Math.round(tableWidth / tr.children.length) - tr.children.length };\n });\n TheTransforms.setNode(this.editor, { columns }, this.element);\n }\n }\n\n initializeRows() {\n this.element.children.map(row => {\n if (!row.height) {\n const element = TheEditor.toDOMNode(this.editor, row);\n TheTransforms.setNode(this.editor, { height: getElementHeight(element) }, row);\n }\n });\n }\n\n transformRowHeight() {\n const rowElements = this.nativeElement.querySelector('tbody').children;\n if (rowElements) {\n ([...rowElements] as HTMLTableRowElement[]).map((row, index) => {\n const height = getElementHeight(row);\n TheTransforms.setNode(this.editor, { height }, this.element.children[index]);\n });\n }\n }\n\n transformColumnsWidth() {\n const cols = [...this.nativeElement.querySelector('colgroup').children] as HTMLTableColElement[];\n const columns: TheTableColumn[] = cols.map(col => {\n return { width: getElementWidth(col) };\n });\n TheTransforms.setNode(this.editor, { columns }, this.element);\n }\n\n onRowMouseDown(event: MouseEvent, index: number) {\n event.stopPropagation();\n event.preventDefault();\n this.tableStore.selectRow(this.editor, index);\n this.tableService.openToolbar(event.target as HTMLElement, true);\n }\n\n onSelectTable(event: MouseEvent) {\n event.stopPropagation();\n event.preventDefault();\n this.tableStore.selectTable(this.editor);\n this.tableService.openToolbar(event.target as HTMLElement);\n }\n\n listenTableContextMenuEvent() {\n this.ngZone.runOutsideAngular(() => {\n fromEvent<MouseEvent>(this.theTableElement.nativeElement, 'contextmenu')\n .pipe(takeUntil(this.destroy$))\n .subscribe(event => {\n if (this.readonly) {\n return;\n }\n event.preventDefault();\n this.tableStore.isRightClicking = true;\n const cell = (event.target as HTMLElement).closest(SLA_TABLE_CELL_SELECTOR) as HTMLTableCellElement;\n if (!cell) {\n return;\n } else {\n if (!cell.classList.contains('selected-cell')) {\n this.tableStore.selectCell(cell, this.editor);\n }\n }\n if (this.theTableContextMenuService.isOpened) {\n this.theTableContextMenuService\n .closeContextMenu()\n .pipe(take(1))\n .subscribe(() => {\n this.theTableContextMenuService.openMenuList(event);\n });\n } else if (this.tableService.isOpened) {\n this.tableService\n .closeToolbar()\n .pipe(take(1))\n .subscribe(() => {\n this.theTableContextMenuService.openMenuList(event);\n });\n } else {\n this.cdr.markForCheck();\n this.theTableContextMenuService.openMenuList(event);\n }\n\n // patch for right click select next cell\n setTimeout(() => {\n Transforms.select(this.editor, this.editor.selection.anchor.path);\n });\n });\n });\n }\n\n trackByFnRowCotrols(index: number) {\n return index;\n }\n\n trackByFnColCotrols(index: number) {\n return index;\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<div\n class=\"the-table-container\"\n theColumnResize\n [ngClass]=\"{\n 'the-table-with-controls': isInTable,\n 'the-table-selection-hide': tableStore.isCellSelecting || tableStore.isRightClicking\n }\"\n>\n <div class=\"the-table-row-controls-wrapper\" *ngIf=\"!readonly\">\n <div>\n <div\n class=\"the-table-corner-controls\"\n [ngClass]=\"{ active: isSelectedAllCell, dangerous: tableStore.isSelectedTable && tableStore.dangerousCells.length > 0 }\"\n >\n <button type=\"button\" class=\"the-table-corner-button\" (mousedown)=\"onSelectTable($event)\"></button>\n <div class=\"the-table-corner-controls-insert-row-marker\">\n <the-table-insert-mark type=\"row\" [at]=\"0\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n <div class=\"the-table-corner-controls-insert-column-marker\">\n <the-table-insert-mark type=\"column\" [at]=\"0\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n </div>\n <div class=\"the-table-row-controls\">\n <div class=\"the-table-row-controls-inner\">\n <div\n class=\"the-table-row-controls-button-wrap\"\n *ngFor=\"let control of rowControls; let i = index; trackBy: trackByFnRowCotrols\"\n [ngClass]=\"{\n active: tableStore.selectedRowsIndex.includes(control.rowIndex),\n dangerous: tableStore.dangerousRowsIndex.includes(control.rowIndex) && tableStore.dangerousCells.length > 0\n }\"\n >\n <button\n (mousedown)=\"onRowMouseDown($event, control.rowIndex)\"\n type=\"button\"\n [ngStyle]=\"{ height: control.height + 1 + 'px' }\"\n class=\"the-table-row-controls-button the-table-controls-button\"\n ></button>\n <the-table-insert-mark type=\"row\" [at]=\"control.rowIndex + 1\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"the-table-wrapper\" #tableWrapper>\n <table class=\"the-table\" #theTable [ngClass]=\"{ 'the-table-with-controls': isInTable }\">\n <colgroup *ngIf=\"columns\">\n <col *ngFor=\"let col of columns\" [ngStyle]=\"{ width: col.width + 'px' }\" />\n </colgroup>\n <thead>\n <tr class=\"the-table-col-controls-wrapper\">\n <th\n class=\"the-table-col-controls\"\n (mousedown)=\"onColMouseDown($event, i)\"\n *ngFor=\"let control of colControls; let i = index; trackBy: trackByFnColCotrols\"\n >\n <the-table-insert-mark\n *ngIf=\"isInTable\"\n type=\"column\"\n [at]=\"i + 1\"\n [tableStore]=\"tableStore\"\n ></the-table-insert-mark>\n <div\n class=\"the-table-col-controls-inner\"\n [ngClass]=\"{\n active: tableStore.selectedColumnsIndex.includes(i),\n dangerous: tableStore.dangerousColumnsIndex.includes(i) && tableStore.dangerousCells.length > 0\n }\"\n ></div>\n </th>\n </tr>\n </thead>\n <tbody #tbody>\n <slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"> </slate-children>\n </tbody>\n </table>\n </div>\n</div>\n","import { Editor, Transforms, Range } from 'slate';\nimport { createCell } from '../utils/create-cell';\nimport { TablePosition } from '../utils';\nimport { TableOptions } from '../table.types';\n\n/**\n * Clear the content of the given node\n */\nexport function clearTableNode(opts: TableOptions, editor: Editor, isTopToBot?: boolean) {\n const { selection } = editor;\n const element = TablePosition.create(opts, editor, selection.focus.path);\n const rowIndex = element.getRowIndex();\n const colIndex = element.getColumnIndex();\n const removeRow = isTopToBot ? 0 : rowIndex + 1;\n for (let i = 0; i < element.getWidth(); i++) {\n const inColRange = Range.includes(selection, [...element.tableEntry[1], rowIndex, i]);\n if (inColRange && i !== colIndex) {\n Transforms.removeNodes(editor, { at: [...element.tableEntry[1], rowIndex, i] });\n Transforms.insertNodes(editor, createCell(opts), { at: [...element.tableEntry[1], rowIndex, i] });\n }\n }\n for (let i = 0; i < element.getHeight(); i++) {\n const inRowRange = Range.includes(selection, [...element.tableEntry[1], i]);\n if (inRowRange && i !== rowIndex) {\n Transforms.removeNodes(editor, { at: [...element.tableEntry[1], removeRow] });\n }\n }\n}\n","import { Editor } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport * as TheQueries from '../../../queries';\n\nexport function calculateAnchorPositionInCell(editor: Editor) {\n let isFirstLine = false;\n let isLastLine = false;\n const anchorBlock = TheQueries.anchorBlock(editor);\n const anchorBlockPath = TheQueries.findPath(editor, anchorBlock);\n const anchorBlockDom = AngularEditor.toDOMNode(editor, anchorBlock);\n const valueRangeRect = anchorBlockDom.getBoundingClientRect();\n const anchorBlockHeight = window.getComputedStyle(anchorBlockDom).lineHeight;\n const nativeSelection = window.getSelection();\n const nativeRange = nativeSelection && nativeSelection.getRangeAt(0);\n const nativeRangeRect = nativeRange && nativeRange.getBoundingClientRect();\n if (valueRangeRect && nativeRangeRect && anchorBlockHeight) {\n const lineHeight = parseInt(anchorBlockHeight, 10);\n isFirstLine = nativeRangeRect.top - valueRangeRect.top < lineHeight;\n isLastLine = valueRangeRect.bottom - nativeRangeRect.bottom < lineHeight;\n }\n return {\n isFirstLine,\n isLastLine,\n anchorBlockPath\n };\n}\n","import { Component, HostBinding, OnInit } from '@angular/core';\nimport { TableRowElement } from '../../../../custom-types';\nimport { TheBaseElementComponent } from '../../../../interfaces/view-base';\n\n@Component({\n selector: 'tr[theTableRow]',\n template: '<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>'\n})\nexport class TheTableRowComponent extends TheBaseElementComponent<TableRowElement> implements OnInit {\n @HostBinding('style.backgroundColor') backgroundColor: string;\n @HostBinding('style.height') height: string;\n\n onContextChange() {\n super.onContextChange();\n if (this.initialized) {\n this.useBackground();\n }\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.useBackground();\n }\n\n useBackground() {\n if (this.element.header && !this.backgroundColor) {\n this.backgroundColor = '#F3F3F3';\n }\n if (!this.element.header && this.backgroundColor) {\n this.backgroundColor = null;\n }\n }\n\n useHeight() {\n if (this.element.height) {\n this.height = this.element.height + 'px';\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { getElementWidth, coercePixelsFromCssValue, getColsTotalWidth, getElementHeight, getRowsTotalHeight } from '../../utils/dom';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\n\n@Injectable()\nexport class ColumnResizingStore {\n constructor() {\n this.resizeCols = [];\n this.resizeRows = [];\n }\n private direction: 'left' | 'right' | 'top' | 'bottom';\n private resizeCols: { colElement: HTMLTableColElement; baseWidth: number }[];\n private resizeRows: { rowElement: HTMLTableRowElement; baseHeight: number }[];\n private tableCols: { cols: HTMLTableColElement[]; baseWidth: number };\n private tableRows: { rows: HTMLTableRowElement[]; baseHeight: number };\n\n storeResizingCol(colElement: HTMLTableColElement) {\n if (this.resizeCols.some(cache => cache.colElement === colElement)) {\n return;\n }\n this.resizeCols.push({ colElement, baseWidth: getElementWidth(colElement) });\n }\n\n storeResizingRow(rowElement: HTMLTableRowElement) {\n if (this.resizeRows.some(cache => cache.rowElement === rowElement)) {\n return;\n }\n this.resizeRows.push({ rowElement, baseHeight: getElementHeight(rowElement) });\n }\n\n storeTableWidth(cols: HTMLTableColElement[]) {\n if (!this.tableCols) {\n this.tableCols = { cols, baseWidth: getColsTotalWidth(cols) };\n }\n }\n\n storeTableHeight(rows: HTMLTableRowElement[]) {\n if (!this.tableRows) {\n this.tableRows = { rows, baseHeight: getRowsTotalHeight(rows) };\n }\n }\n\n cleanResizing() {\n this.tableCols = null;\n this.tableRows = null;\n this.resizeCols = [];\n this.resizeRows = [];\n this.direction = null;\n }\n\n restoreLeftCols(deltaX: number) {\n let index = this.resizeCols.length - 1;\n while (index >= 0 && deltaX > 0) {\n const currentWidth = coercePixelsFromCssValue(this.resizeCols[index].colElement.style.width);\n if (this.resizeCols[index].baseWidth > currentWidth) {\n if (this.resizeCols[index].baseWidth > currentWidth + deltaX) {\n this.resizeCols[index].colElement.style.width = coerceCssPixelValue(currentWidth + deltaX);\n deltaX = 0;\n } else {\n deltaX -= this.resizeCols[index].baseWidth - currentWidth;\n this.resizeCols[index].colElement.style.width = coerceCssPixelValue(this.resizeCols[index].baseWidth);\n this.popCol();\n }\n }\n index--;\n }\n return deltaX;\n }\n\n restoreTopRows(deltaY: number) {\n let index = this.resizeRows.length - 1;\n while (index >= 0 && deltaY > 0) {\n const currentHeight = coercePixelsFromCssValue(this.resizeRows[index].rowElement.style.height);\n if (this.resizeRows[index].baseHeight > currentHeight) {\n if (this.resizeRows[index].baseHeight > currentHeight + deltaY) {\n this.resizeRows[index].rowElement.style.height = coerceCssPixelValue(currentHeight + deltaY);\n deltaY = 0;\n } else {\n deltaY -= this.resizeRows[index].baseHeight - currentHeight;\n this.resizeRows[index].rowElement.style.height = coerceCssPixelValue(this.resizeRows[index].baseHeight);\n this.popRow();\n }\n }\n index--;\n }\n return deltaY;\n }\n\n restoreBottomRows(deltaY: number) {\n let index = this.resizeRows.length - 1;\n while (index >= 0 && deltaY < 0) {\n const currentHeight = coercePixelsFromCssValue(this.resizeRows[index].rowElement.style.height);\n if (this.resizeRows[index].baseHeight > currentHeight) {\n if (this.resizeRows[index].baseHeight > currentHeight + Math.abs(deltaY)) {\n this.resizeRows[index].rowElement.style.height = coerceCssPixelValue(currentHeight + Math.abs(deltaY));\n deltaY = 0;\n } else {\n deltaY += this.resizeRows[index].baseHeight - currentHeight;\n this.resizeRows[index].rowElement.style.height = coerceCssPixelValue(this.resizeRows[index].baseHeight);\n this.popRow();\n }\n }\n index--;\n }\n return deltaY;\n }\n\n restoreRightCols(deltaX: number) {\n let index = this.resizeCols.length - 1;\n while (index >= 0 && deltaX < 0) {\n const currentWidth = coercePixelsFromCssValue(this.resizeCols[index].colElement.style.width);\n if (this.resizeCols[index].baseWidth > currentWidth) {\n if (this.resizeCols[index].baseWidth > currentWidth + Math.abs(deltaX)) {\n this.resizeCols[index].colElement.style.width = coerceCssPixelValue(currentWidth + Math.abs(deltaX));\n deltaX = 0;\n } else {\n deltaX += this.resizeCols[index].baseWidth - currentWidth;\n this.resizeCols[index].colElement.style.width = coerceCssPixelValue(this.resizeCols[index].baseWidth);\n this.popCol();\n }\n }\n index--;\n }\n return deltaX;\n }\n\n getScrollWidth(deltaX: number) {\n if (this.tableCols) {\n return getColsTotalWidth(this.tableCols.cols) - this.tableCols.baseWidth - Math.abs(deltaX);\n }\n }\n\n getAddTableHeight(deltaY: number) {\n if (this.tableRows) {\n return getRowsTotalHeight(this.tableRows.rows) - this.tableRows.baseHeight - Math.abs(deltaY);\n }\n }\n\n isRestoring(deltaValue, isXAxis = true) {\n return !this.isResizing(deltaValue, isXAxis);\n }\n\n isResizing(deltaValue, isXAxis = true) {\n return this.direction === this.getDirection(deltaValue, isXAxis);\n }\n\n initDirection(deltaValue: number, isXAxis = true) {\n if (this.resizeCols.length > 0) {\n return;\n }\n if (this.resizeRows.length > 0) {\n return;\n }\n this.direction = this.getDirection(deltaValue, isXAxis);\n }\n\n private getDirection(deltaValue, isXAxis = true) {\n return isXAxis ? (deltaValue > 0 ? 'right' : 'left') : deltaValue > 0 ? 'bottom' : 'top';\n }\n\n private popCol() {\n this.resizeCols.pop();\n }\n\n private popRow() {\n this.resizeRows.pop();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { ElementRef } from '@angular/core';\nimport { OverlayRef } from '@angular/cdk/overlay';\n\n/** Tracks state of resize events in progress. */\nexport class ResizeRef {\n direction: 'X' | 'Y';\n constructor(\n readonly origin: ElementRef,\n readonly overlayRef: OverlayRef,\n readonly minWidthPx: number,\n readonly maxWidthPx: number,\n readonly minHeightPx: number,\n readonly maxHeightPx: number,\n readonly updateSizeAndOffset: () => void\n ) {}\n\n setDirection(direction: 'X' | 'Y') {\n this.direction = direction;\n }\n}\n","import {\n Component,\n OnDestroy,\n ElementRef,\n AfterViewInit,\n ChangeDetectionStrategy,\n ViewContainerRef,\n ChangeDetectorRef,\n NgZone,\n Inject\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { fromEvent, ReplaySubject } from 'rxjs';\nimport { takeUntil, mapTo, map, filter, startWith, pairwise, distinctUntilChanged } from 'rxjs/operators';\nimport { ResizeRef } from './resize-ref';\nimport { TableCellEventDispatcher } from './event-dispatcher';\nimport { ColumnResizeNotifierSource } from './column-resize-notifier';\n\n@Component({\n host: { class: 'the-table-resize-overlay-thumb' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: ''\n})\nexport class TheColumnResizeOverlayHandleComponent implements AfterViewInit, OnDestroy {\n protected readonly destroyed = new ReplaySubject<void>();\n\n constructor(\n public elementRef: ElementRef,\n public viewContainerRef: ViewContainerRef,\n public cdr: ChangeDetectorRef,\n public ngZone: NgZone,\n public resizeRef: ResizeRef,\n public eventDispatcher: TableCellEventDispatcher,\n @Inject(DOCUMENT) public document: any,\n public resizeNotifier: ColumnResizeNotifierSource\n ) {}\n\n ngAfterViewInit() {\n this._listenForMouseEvents();\n }\n\n private _listenForMouseEvents() {\n this.ngZone.runOutsideAngular(() => {\n const takeUntilDestroyed = takeUntil<MouseEvent>(this.destroyed);\n fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mouseenter')\n .pipe(takeUntilDestroyed, mapTo(this.resizeRef.origin.nativeElement))\n .subscribe(cell => {\n this.eventDispatcher.tableCellHovered.next({ cell });\n this.resizeRef.updateSizeAndOffset();\n });\n\n fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mousedown')\n .pipe(takeUntilDestroyed)\n .subscribe(mousedownEvent => {\n mousedownEvent.preventDefault();\n this._dragStarted(mousedownEvent);\n });\n });\n }\n\n private _dragStarted(mousedownEvent: MouseEvent) {\n if (mousedownEvent.button !== 0) {\n return;\n }\n const mouseup = fromEvent<MouseEvent>(this.document, 'mouseup');\n const mousemove = fromEvent<MouseEvent>(this.document, 'mousemove');\n const escape = fromEvent<KeyboardEvent>(this.document, 'keyup').pipe(filter((event: KeyboardEvent) => event.key === 'Escape'));\n\n const startX = mousedownEvent.clientX;\n const startY = mousedownEvent.clientY;\n\n const initialWidthSize = this._getOriginWidth();\n const initialHeightSize = this._getOriginHeight();\n const isXAxis = this._isXAxis();\n let overlayOffset = this._getOverlayOffset();\n let originOffset = this._getOriginOffset();\n let size = isXAxis ? initialWidthSize : initialHeightSize;\n this.updateResizeActive(true);\n this._notifyResizeStarted();\n\n mouseup.pipe(takeUntil(escape), takeUntil(this.destroyed)).subscribe(({ clientX, clientY }) => {\n this._notifyResizeEnded(size, isXAxis ? clientX !== startX : clientY !== startY);\n });\n\n escape.pipe(takeUntil(mouseup), takeUntil(this.destroyed)).subscribe(() => {\n this._notifyResizeEnded(size);\n });\n\n mousemove\n .pipe(\n map(({ clientX, clientY }) => {\n return {\n clientX,\n clientY\n };\n }),\n startWith({\n clientX: startX,\n clientY: startY\n }),\n distinctUntilChanged(),\n pairwise(),\n takeUntil(mouseup),\n takeUntil(escape),\n takeUntil(this.destroyed)\n )\n .subscribe(([prev, curr]) => {\n let deltaSize = isXAxis ? curr.clientX - prev.clientX : curr.clientY - prev.clientY;\n this.resizeNotifier.triggerResize.next({\n tableCell: this.resizeRef.origin.nativeElement,\n deltaSize,\n previousSize: size\n });\n });\n }\n\n protected updateResizeActive(active: boolean): void {\n this.eventDispatcher.overlayHandleActiveForCell.next(active ? { cell: this.resizeRef.origin.nativeElement! } : null);\n }\n\n private _isXAxis(): boolean {\n return this.resizeRef.direction === 'X';\n }\n\n private _getOriginHeight(): number {\n return this.resizeRef.origin.nativeElement!.offsetHeight;\n }\n\n private _getOriginWidth(): number {\n return this.resizeRef.origin.nativeElement!.offsetWidth;\n }\n\n private _getOriginOffset(): number {\n return this.resizeRef.origin.nativeElement!.offsetLeft;\n }\n\n private _getOverlayOffset(): number {\n return parseInt(this.resizeRef.overlayRef.overlayElement.style.left!, 10);\n }\n\n private _isLtr(): boolean {\n return true;\n }\n\n private _notifyResizeEnded(size: number, completedSuccessfully = false): void {\n this.updateResizeActive(false);\n\n this.ngZone.run(() => {\n const sizeMessage = { tableCell: this.resizeRef.origin.nativeElement };\n if (completedSuccessfully) {\n this.resizeNotifier.resizeCompleted.next(sizeMessage);\n } else {\n this.resizeNotifier.resizeCanceled.next(sizeMessage);\n }\n });\n }\n\n private _notifyResizeStarted(): void {\n this.ngZone.run(() => {\n const sizeMessage = { tableCell: this.resizeRef.origin.nativeElement };\n this.resizeNotifier.resizeStarted.next(sizeMessage);\n });\n }\n\n ngOnDestroy() {\n this.destroyed.next();\n this.destroyed.complete();\n }\n}\n","import { Editor } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { TableElement } from '../../../custom-types';\nimport { BASE_CELL_HEIGHT } from '../table.types';\n\n/**\n * 计算每一行的基础高度(不包含隐藏或者跨行的单元格)\n * @param editor\n * @param table\n * @returns\n */\nexport function getBaseHeightForRows(editor: Editor, table: TableElement) {\n const baseHeightForRows = table.children.map((row, index) => {\n const baseCells = row.children.filter(cell => !cell.hidden && (!cell.rowspan || cell.rowspan <= 1));\n if (baseCells.length > 0) {\n const cellDom = AngularEditor.toDOMNode(editor, baseCells[0]);\n return cellDom.offsetHeight;\n } else {\n return BASE_CELL_HEIGHT;\n }\n });\n return baseHeightForRows;\n}\n","import {\n Component,\n OnInit,\n ElementRef,\n OnDestroy,\n ChangeDetectorRef,\n NgZone,\n HostBinding,\n Renderer2,\n ViewContainerRef,\n AfterViewInit,\n Injector,\n ViewChild\n} from '@angular/core';\nimport { filter, map, take, takeUntil } from 'rxjs/operators';\nimport { Editor } from 'slate';\nimport { ELEMENT_TO_COMPONENT } from 'slate-angular';\nimport { SLA_TABLE_CELL_SELECTOR } from '../../../../constants/selector';\nimport { TheTableComponent } from '../table.component';\nimport { TablePosition } from '../../utils/table-position';\nimport { fromEvent, merge, Subject } from 'rxjs';\nimport { ColumnResizingStore } from '../../../../components/column-resize/resizing.store';\nimport { TableCellEventDispatcher } from '../../../../components/column-resize/event-dispatcher';\nimport { ColumnResizeNotifierSource, ColumnSizeAction } from '../../../../components/column-resize/column-resize-notifier';\nimport { ConnectedPosition, Overlay, OverlayRef, ScrollDispatcher } from '@angular/cdk/overlay';\nimport { ComponentPortal, PortalInjector } from '@angular/cdk/portal';\nimport { TheColumnResizeOverlayHandleComponent } from '../../../../components/column-resize/overlay-handle.component';\nimport { ResizeRef } from '../../../../components/column-resize/resize-ref';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { coercePixelsFromCssValue, getElementHeight, getElementWidth, useElementStyle } from '../../../../utils/dom';\nimport { TheBaseElementComponent } from '../../../../interfaces/view-base';\nimport { BASE_FILL_HEIGHT, TableOptions } from '../../table.types';\nimport { TheEditor } from '../../../../interfaces/editor';\nimport { TableCellElement } from '../../../../custom-types';\nimport { getBaseHeightForRows } from '../../utils/get-base-height';\n\nconst OVERLAY_ACTIVE_CLASS = 'the-resizable-overlay-thumb-active';\nconst OVERLAY_INIT_SIZE = 16;\nexport const POSITION_MAP: { [key: string]: ConnectedPosition } = {\n top: {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'center'\n },\n bottom: {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'center'\n },\n right: {\n originX: 'end',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'top'\n },\n left: {\n originX: 'start',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'top'\n }\n};\n\n@Component({\n selector: 'td[theTd]',\n templateUrl: './td.component.html',\n providers: [ColumnResizingStore]\n})\nexport class TheTdComponent extends TheBaseElementComponent<TableCellElement, Editor> implements OnInit, AfterViewInit, OnDestroy {\n destroy$: Subject<any> = new Subject();\n public tablePosition: TablePosition;\n public tableComponent: TheTableComponent;\n protected overlayRef?: OverlayRef;\n public hoverdDirection: 'left' | 'right' | 'top' | 'bottom';\n public tableOptions: TableOptions = new TableOptions();\n public cellInnerMinHeight: number = null;\n\n get tableStore() {\n return this.tableComponent.tableStore;\n }\n\n get tableService() {\n return this.tableComponent.tableService;\n }\n\n get eventDispatcher() {\n return this.tableComponent.eventDispatcher;\n }\n\n get resizeNotifier() {\n return this.tableComponent.resizeNotifier;\n }\n\n get theTableWrapperWidth() {\n return this.tableComponent.theTableWrapperWidth;\n }\n\n get tableElement(): HTMLElement {\n return this.tableComponent.theTableElement.nativeElement;\n }\n\n get scrollableElementTop() {\n const cdkscrollable: HTMLElement = this.elementRef.nativeElement.closest('[cdkscrollable]');\n if (cdkscrollable) {\n return cdkscrollable.getBoundingClientRect().top;\n }\n return -window.scrollY;\n }\n\n get scrollableElementLeft() {\n return this.tableComponent.tableWrapper.nativeElement.scrollLeft;\n }\n\n get isXAxisHover() {\n return ['left', 'right'].includes(this.hoverdDirection);\n }\n\n public dotWrapperHovered: boolean;\n\n public resizeRef: ResizeRef;\n\n @HostBinding('style.backgroundColor') backgroundColor: string;\n\n @HostBinding('attr.colspan') colspan: number;\n\n @HostBinding('attr.rowspan') rowspan: number;\n\n @HostBinding('style.display') display: string;\n\n @ViewChild('cellInner', { static: true })\n cellInner: ElementRef;\n\n get cellInnerNativeElement(): HTMLElement {\n return this.cellInner.nativeElement;\n }\n\n onContextChange() {\n super.onContextChange();\n if (this.initialized) {\n this.useState();\n }\n }\n\n constructor(\n public elementRef: ElementRef,\n public cdr: ChangeDetectorRef,\n private renderer: Renderer2,\n private viewContainerRef: ViewContainerRef,\n private ngZone: NgZone,\n public injector: Injector,\n public overlay: Overlay,\n public resizingStore: ColumnResizingStore,\n public scrollDispatcher: ScrollDispatcher\n ) {\n super(elementRef, cdr);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.useBackground();\n this.useSpan();\n this.useDisplay();\n this.useFocus();\n useElementStyle(this.elementRef.nativeElement, this.element);\n }\n\n ngAfterViewInit() {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.useTablePosition();\n this.getInjectionService();\n this.subscribeSelectedCellsChange();\n this.subscribeDangerousCellsChange();\n this.subscribeTableChange();\n this.listenCellSelectEvents();\n this.listenForCellHoverEvents();\n this.listenForResizeEvents();\n // const height = this.calculateCellInnerMinHeight();\n // this.useMinHeight(height);\n });\n }\n\n getInjectionService() {\n this.tableComponent = ELEMENT_TO_COMPONENT.get(this.tablePosition.table) as TheTableComponent;\n }\n\n subscribeSelectedCellsChange() {\n this.tableStore\n .selectedCellsChange()\n .pipe(takeUntil(this.destroy$))\n .subscribe(x => {\n if (x.length === 0) {\n this.renderer.removeClass(this.elementRef.nativeElement, 'selected-cell');\n } else {\n const isSelectedCell = x.some(\n ({ row, col }) => row === this.tablePosition.getRowIndex() && col === this.tablePosition.getColumnIndex()\n );\n if (isSelectedCell) {\n this.renderer.addClass(this.elementRef.nativeElement, 'selected-cell');\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'selected-cell');\n }\n }\n this.cdr.detectChanges();\n });\n }\n\n subscribeDangerousCellsChange() {\n this.tableStore\n .dangerousCellsChange()\n .pipe(takeUntil(this.destroy$))\n .subscribe(x => {\n if (x.length === 0) {\n this.renderer.removeClass(this.elementRef.nativeElement, 'dangerous-cell');\n } else {\n const isSelectedCell = x.some(\n ({ row, col }) => row === this.tablePosition.getRowIndex() && col === this.tablePosition.getColumnIndex()\n );\n if (isSelectedCell) {\n this.renderer.addClass(this.elementRef.nativeElement, 'dangerous-cell');\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'dangerous-cell');\n }\n }\n this.cdr.detectChanges();\n });\n }\n\n subscribeTableChange() {\n this.tableStore\n .tableChange()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.useTablePosition();\n // const height = this.calculateCellInnerMinHeight();\n // this.useMinHeight(height);\n });\n }\n\n useState() {\n this.useBackground();\n this.useSpan();\n this.useDisplay();\n this.useFocus();\n useElementStyle(this.elementRef.nativeElement, this.element);\n }\n\n useTablePosition() {\n const opts = new TableOptions();\n const path = TheEditor.findPath(this.editor, this.element);\n // must be path of cell's children\n this.tablePosition = TablePosition.create(opts, this.editor, path.concat(0));\n }\n\n useBackground() {\n if (this.element.backgroundColor !== this.backgroundColor) {\n this.backgroundColor = this.element.backgroundColor as string;\n }\n }\n\n useSpan() {\n this.colspan = undefined;\n this.rowspan = undefined;\n if (this.element.colspan) {\n this.colspan = this.element.colspan;\n }\n if (this.element.rowspan) {\n this.rowspan = this.element.rowspan;\n }\n }\n\n calculateCellInnerMinHeight() {\n if (this.element.colspan) {\n const rowIndex = this.tablePosition.getRowIndex();\n if (this.calculateCombinedRows().length > 0) {\n let height = 0;\n const heights = getBaseHeightForRows(this.editor, this.tableComponent.element);\n for (let index = rowIndex; index < this.element.rowspan + rowIndex; index++) {\n height += heights[index];\n }\n height = height - BASE_FILL_HEIGHT;\n return height;\n }\n }\n return undefined;\n }\n\n calculateCombinedRows() {\n const rowIndex = this.tablePosition.getRowIndex();\n const combinedRows: number[] = [];\n const table = this.tablePosition.table;\n table.children.forEach((row, _rowIndex) => {\n if (_rowIndex > rowIndex && _rowIndex <= rowIndex + this.element.rowspan) {\n const isCombined = row.children.every(cell => cell.hidden || cell.rowspan > 1);\n if (isCombined) {\n combinedRows.push(_rowIndex);\n }\n }\n });\n return combinedRows;\n }\n\n useDisplay() {\n this.display = this.element.hidden ? 'none' : '';\n }\n\n useFocus() {\n if (this.isCollapsed) {\n this.renderer.addClass(this.elementRef.nativeElement, 'focused-cell');\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'focused-cell');\n }\n }\n\n useMinHeight(minHeight: number) {\n if (this.cellInnerMinHeight === minHeight) {\n return;\n }\n this.cellInnerMinHeight = minHeight;\n // if (this.cellInnerMinHeight) {\n // this.cellInnerNativeElement.style.minHeight = `${this.cellInnerMinHeight}px`;\n // } else {\n // this.cellInnerNativeElement.style.removeProperty('min-height');\n // }\n }\n\n //#region cell-select\n listenCellSelectEvents() {\n this.ngZone.runOutsideAngular(() => {\n const element = this.elementRef.nativeElement!;\n fromEvent<MouseEvent>(element, 'mousedown')\n .pipe(\n takeUntil(this.destroy$),\n filter((e: MouseEvent) => e.button !== 2),\n map(event => {\n const cell = (event.target as HTMLElement).closest(SLA_TABLE_CELL_SELECTOR);\n return cell;\n }),\n filter(cell => !!cell)\n )\n .subscribe((cell: HTMLTableCellElement) => {\n this.tableStore.selectCellStart(cell, this.editor);\n if (this.overlayRef) {\n this.overlayRef.detach();\n }\n this.listenCellMouseEvents();\n });\n });\n }\n\n listenCellMouseEvents() {\n const mouseoverObservable = fromEvent<MouseEvent>(document, 'mouseover')\n .pipe(\n takeUntil(this.destroy$),\n map(event => {\n event.preventDefault();\n const cell = (event.target as HTMLElement).closest(SLA_TABLE_CELL_SELECTOR);\n return cell;\n }),\n filter((cell: HTMLTableCellElement) => !!cell)\n )\n .subscribe((cell: HTMLTableCellElement) => {\n this.tableStore.selectCellOngoing(cell, this.editor);\n });\n fromEvent<MouseEvent>(document, 'mouseup')\n .pipe(take(1))\n .subscribe(() => {\n this.tableStore.selectCellEnd(this.editor);\n if (this.tableStore.isCellSelecting) {\n this.ngZone.run(() => {\n this.tableComponent.tableService.openToolbar(this.tableStore.focusCellElement);\n });\n }\n mouseoverObservable.unsubscribe();\n });\n }\n\n //#region resizable\n private listenForCellHoverEvents() {\n const element = this.elementRef.nativeElement!;\n this.eventDispatcher\n .resizeOverlayVisibleForTableCell(element)\n .pipe(takeUntil(this.destroy$))\n .subscribe(hoveredCellInfo => {\n if (hoveredCellInfo && hoveredCellInfo.position) {\n this.hoverdDirection = hoveredCellInfo.position;\n }\n // first column should not have left resize handle\n if (this.isXAxisHover && this.hoverdDirection === 'left' && this.tablePosition.getColumnIndex() === 0) {\n return;\n }\n if (!this.isXAxisHover && this.hoverdDirection === 'bottom' && this.tablePosition.getRowIndex() === 0) {\n return;\n }\n if (hoveredCellInfo) {\n if (!this.overlayRef) {\n this.overlayRef = this._createOverlayForHandle();\n this._showHandleOverlay();\n } else {\n this.resizeRef.setDirection(this.isXAxisHover ? 'X' : 'Y');\n this.updateOverlayHandleSizeAndOffset();\n }\n } else if (this.overlayRef) {\n this.overlayRef.detach();\n this.overlayRef = null;\n }\n });\n }\n\n private listenForResizeEvents() {\n const takeUntilDestroyed = takeUntil<ColumnSizeAction>(this.destroy$);\n\n merge(this.resizeNotifier.resizeCanceled, this.resizeNotifier.triggerResize)\n .pipe(\n takeUntilDestroyed,\n filter(columnSize => columnSize.tableCell === this.elementRef.nativeElement)\n )\n .subscribe(({ deltaSize, previousSize, completeImmediately }) => {\n this.elementRef.nativeElement!.classList.add(OVERLAY_ACTIVE_CLASS);\n this.applySize(deltaSize, previousSize);\n if (completeImmediately) {\n this._completeResizeOperation();\n }\n });\n\n merge(this.resizeNotifier.resizeCanceled, this.resizeNotifier.resizeCompleted)\n .pipe(takeUntilDestroyed)\n .subscribe(columnSize => {\n this._cleanUpAfterResize(columnSize);\n this.resizingStore.cleanResizing();\n });\n }\n\n private _completeResizeOperation(): void {\n this.ngZone.run(() => {\n this.resizeNotifier.resizeCompleted.next({\n tableCell: this.elementRef.nativeElement\n });\n });\n }\n\n private _cleanUpAfterResize(columnSize: ColumnSizeAction): void {\n this.elementRef.nativeElement!.classList.remove(OVERLAY_ACTIVE_CLASS);\n }\n\n private _createHandlePortal(): ComponentPortal<TheColumnResizeOverlayHandleComponent> {\n const customTokens = new WeakMap();\n this.resizeRef = new ResizeRef(\n this.elementRef,\n this.overlayRef!,\n this.tableOptions.minWidthPx,\n this.tableOptions.maxWidthPx,\n this.tableOptions.minHeightPx,\n this.tableOptions.maxHeightPx,\n () => {\n this.updateOverlayHandleSizeAndOffset();\n }\n );\n this.resizeRef.setDirection(this.isXAxisHover ? 'X' : 'Y');\n customTokens.set(ResizeRef, this.resizeRef);\n customTokens.set(TableCellEventDispatcher, this.eventDispatcher);\n customTokens.set(ColumnResizeNotifierSource, this.resizeNotifier);\n const injector = new PortalInjector(this.injector, customTokens);\n return new ComponentPortal(TheColumnResizeOverlayHandleComponent, this.viewContainerRef, injector);\n }\n\n private _showHandleOverlay(): void {\n this.overlayRef!.attach(this._createHandlePortal()).changeDetectorRef.markForCheck();\n this.updateOverlayHandleSizeAndOffset();\n }\n\n private updateOverlayHandleSizeAndOffset() {\n this.overlayRef?.removePanelClass(['the-column-resize-handle-panel', 'the-row-resize-handle-panel']);\n this.isXAxisHover ? this.updateOverlayHandleColumnSize() : this.updateOverlayHandleRowSize();\n this.overlayRef?.updatePositionStrategy(this.createPositionStrategy());\n }\n\n private updateOverlayHandleColumnSize() {\n let height = 0;\n const tableElementTop = this.tableElement.getBoundingClientRect().top;\n if (tableElementTop < this.scrollableElementTop) {\n height = this.tableElement.offsetHeight - (this.scrollableElementTop - tableElementTop);\n } else {\n height = this.tableElement.offsetHeight;\n }\n this.overlayRef!.addPanelClass('the-column-resize-handle-panel');\n this.overlayRef!.updateSize({ height, width: OVERLAY_INIT_SIZE });\n }\n\n private updateOverlayHandleRowSize() {\n const width = this.tableComponent.tableWrapper.nativeElement.offsetWidth + 11;\n this.overlayRef!.addPanelClass('the-row-resize-handle-panel');\n this.overlayRef!.updateSize({ width, height: OVERLAY_INIT_SIZE });\n }\n\n private applySize(deltaSize: number, previousSize?: number): void {\n // update col width and table width\n if (this.isXAxisHover) {\n this.applyColumnSize(deltaSize);\n } else {\n this.applyRowSize(deltaSize);\n }\n this.tableComponent.useRowControls();\n this.updateOverlayHandleSizeAndOffset();\n }\n\n private _createOverlayForHandle(): OverlayRef {\n // Use of overlays allows us to properly capture click events spanning parts\n // of two table cells and is also useful for displaying a resize thumb\n // over both cells and extending it down the table as needed.\n const overlayOption = this.isXAxisHover\n ? {\n width: OVERLAY_INIT_SIZE + 'px',\n panelClass: 'the-column-resize-handle-panel'\n }\n : {\n height: OVERLAY_INIT_SIZE + 'px',\n panelClass: 'the-row-resize-handle-panel'\n };\n return this.overlay.create({\n // Always position the overlay based on left-indexed coordinates.\n disposeOnNavigation: true,\n positionStrategy: this.createPositionStrategy(),\n ...overlayOption\n });\n }\n\n private createPositionStrategy() {\n let offsetY = this.calculateOverlayHandleOffsetY();\n let offsetX = this.calculateOverlayHandleOffsetX();\n const position: ConnectedPosition = this.isXAxisHover\n ? { ...POSITION_MAP[this.hoverdDirection], offsetY }\n : { ...POSITION_MAP[this.hoverdDirection], offsetX };\n return this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef.nativeElement)\n .withFlexibleDimensions(false)\n .withGrowAfterOpen(false)\n .withPush(false)\n .withPositions([position]);\n }\n\n private calculateOverlayHandleOffsetY() {\n const tableElementTop = this.tableElement.getBoundingClientRect().top;\n if (tableElementTop < this.scrollableElementTop) {\n return this.scrollableElementTop - this.elementRef.nativeElement.getBoundingClientRect().top;\n } else {\n return tableElementTop - this.elementRef.nativeElement.getBoundingClientRect().top;\n }\n }\n\n private calculateOverlayHandleOffsetX() {\n const cellElementLeft = this.elementRef.nativeElement.getBoundingClientRect().left;\n const tableElementLeft = this.tableElement.getBoundingClientRect().left;\n return tableElementLeft - cellElementLeft + this.scrollableElementLeft;\n }\n\n applyColumnSize(deltaX: number): void {\n const cols = [...this.tableElement.querySelector('colgroup').children] as HTMLTableColElement[];\n this.resizingStore.storeTableWidth(cols);\n this.resizingStore.initDirection(deltaX);\n let cellIndex = this.elementRef.nativeElement.cellIndex;\n if (this.hoverdDirection === 'left') {\n cellIndex = cellIndex - 1;\n }\n const colspan = (this.elementRef.nativeElement as HTMLElement).getAttribute('colspan') || 1;\n cellIndex = cellIndex + (colspan as number) / 1 - 1;\n if (deltaX > 0) {\n this.applyRightCols(cols, deltaX, cellIndex + 1);\n if (this.resizingStore.isRestoring(deltaX)) {\n deltaX = this.resizingStore.restoreLeftCols(deltaX);\n }\n if (deltaX > 0) {\n cols[cellIndex].style.width = coerceCssPixelValue(coercePixelsFromCssValue(cols[cellIndex].style.width) + deltaX);\n }\n } else {\n const nextCol = cols[cellIndex + 1];\n if (nextCol) {\n let leftDeltaX = this.resizingStore.getScrollWidth(deltaX);\n const _delta = this.applyLeftCols(cols, deltaX, cellIndex);\n if (_delta === deltaX) {\n // can not resize\n return;\n }\n deltaX = deltaX - _delta;\n if (this.resizingStore.isRestoring(deltaX)) {\n if (leftDeltaX < 0) {\n leftDeltaX = this.resizingStore.restoreRightCols(leftDeltaX);\n }\n if (leftDeltaX < 0) {\n nextCol.style.width = coerceCssPixelValue(getElementWidth(nextCol) + Math.abs(leftDeltaX));\n }\n } else {\n nextCol.style.width = coerceCssPixelValue(getElementWidth(nextCol) + Math.abs(deltaX));\n }\n } else {\n const scrollWidth = getElementWidth(this.tableElement) - this.theTableWrapperWidth;\n if (scrollWidth > 0) {\n if (scrollWidth > Math.abs(deltaX)) {\n this.applyLeftCols(cols, deltaX, cellIndex);\n } else {\n this.applyLeftCols(cols, -scrollWidth, cellIndex);\n }\n }\n }\n }\n }\n\n applyLeftCols(cols: HTMLTableColElement[], deltaX: number, colIndex: number): number {\n while (deltaX < 0 && cols[colIndex]) {\n const currentWidth = getElementWidth(cols[colIndex]);\n if (currentWidth > this.tableOptions.minWidthPx) {\n if (this.resizingStore.isResizing(deltaX)) {\n this.resizingStore.storeResizingCol(cols[colIndex]);\n }\n if (currentWidth > this.tableOptions.minWidthPx + Math.abs(deltaX)) {\n cols[colIndex].style.width = coerceCssPixelValue(currentWidth - Math.abs(deltaX));\n deltaX = 0;\n } else {\n deltaX += currentWidth - this.tableOptions.minWidthPx;\n cols[colIndex].style.width = coerceCssPixelValue(this.tableOptions.minWidthPx);\n }\n }\n colIndex--;\n }\n return deltaX;\n }\n\n applyRightCols(cols: HTMLTableColElement[], deltaX: number, colIndex: number) {\n while (deltaX > 0 && cols[colIndex]) {\n const currentWidth = getElementWidth(cols[colIndex]);\n if (currentWidth > this.tableOptions.minWidthPx) {\n if (this.resizingStore.isResizing(deltaX)) {\n this.resizingStore.storeResizingCol(cols[colIndex]);\n }\n if (currentWidth > deltaX + this.tableOptions.minWidthPx) {\n cols[colIndex].style.width = coerceCssPixelValue(currentWidth - deltaX);\n deltaX = 0;\n } else {\n deltaX -= currentWidth - this.tableOptions.minWidthPx;\n cols[colIndex].style.width = coerceCssPixelValue(this.tableOptions.minWidthPx);\n }\n }\n colIndex++;\n }\n return deltaX;\n }\n\n applyRowSize(deltaY: number): void {\n const rows = [...this.tableElement.querySelector('tbody').children] as HTMLTableRowElement[];\n this.resizingStore.storeTableHeight(rows);\n this.resizingStore.initDirection(deltaY, this.isXAxisHover);\n let rowIndex = this.elementRef.nativeElement.parentElement.rowIndex - 1; // subtract thead's tr\n\n if (this.hoverdDirection === 'bottom') {\n rowIndex = rowIndex - 1;\n } else {\n const cellRowpsan = (this.elementRef.nativeElement as HTMLTableCellElement).rowSpan;\n rowIndex = rowIndex + cellRowpsan - 1;\n }\n if (deltaY > 0) {\n this.applyBottomRows(rows, deltaY, rowIndex + 1);\n if (this.resizingStore.isRestoring(deltaY, this.isXAxisHover)) {\n deltaY = this.resizingStore.restoreTopRows(deltaY);\n }\n if (deltaY > 0) {\n let initHeight = getElementHeight(rows[rowIndex]);\n rows[rowIndex].style.height = coerceCssPixelValue(initHeight + deltaY);\n }\n } else {\n let addDeltaY = this.resizingStore.getAddTableHeight(deltaY);\n const _delta = this.applyTopRows(rows, deltaY, rowIndex);\n if (_delta === deltaY) {\n // can not resize\n return;\n }\n deltaY = deltaY - _delta;\n if (this.resizingStore.isRestoring(deltaY, this.isXAxisHover)) {\n if (addDeltaY < 0) {\n deltaY = this.resizingStore.restoreBottomRows(deltaY);\n }\n }\n }\n }\n\n applyTopRows(rows: HTMLTableRowElement[], deltaY: number, rowIndex: number): number {\n while (deltaY < 0 && rows[rowIndex]) {\n const rowOffsetHeight = getElementHeight(rows[rowIndex]);\n const rowStyleHeight = coercePixelsFromCssValue(rows[rowIndex].style.height);\n if (rowOffsetHeight > this.tableOptions.minHeightPx && rowOffsetHeight === rowStyleHeight) {\n if (this.resizingStore.isResizing(deltaY, this.isXAxisHover)) {\n this.resizingStore.storeResizingRow(rows[rowIndex]);\n }\n if (rowOffsetHeight > this.tableOptions.minHeightPx + Math.abs(deltaY)) {\n rows[rowIndex].style.height = coerceCssPixelValue(rowOffsetHeight - Math.abs(deltaY));\n deltaY = 0;\n } else {\n deltaY += rowOffsetHeight - this.tableOptions.minHeightPx;\n rows[rowIndex].style.height = coerceCssPixelValue(this.tableOptions.minHeightPx);\n }\n }\n rowIndex--;\n }\n return deltaY;\n }\n\n applyBottomRows(rows: HTMLTableRowElement[], deltaY: number, rowIndex: number): number {\n while (rows[rowIndex] && deltaY > 0) {\n const rowOffsetHeight = getElementHeight(rows[rowIndex]);\n const rowStyleHeight = coercePixelsFromCssValue(rows[rowIndex].style.height);\n if (rowOffsetHeight > this.tableOptions.minHeightPx && rowOffsetHeight === rowStyleHeight) {\n if (this.resizingStore.isResizing(deltaY, this.isXAxisHover)) {\n this.resizingStore.storeResizingRow(rows[rowIndex]);\n }\n if (rowOffsetHeight > deltaY + this.tableOptions.minHeightPx) {\n rows[rowIndex].style.height = coerceCssPixelValue(rowOffsetHeight - deltaY);\n deltaY = 0;\n } else {\n deltaY -= rowOffsetHeight - this.tableOptions.minHeightPx;\n rows[rowIndex].style.height = coerceCssPixelValue(this.tableOptions.minHeightPx);\n }\n }\n rowIndex++;\n }\n return deltaY;\n }\n\n //#region\n\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this.overlayRef) {\n this.overlayRef.detach();\n }\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<div #cellInner>\n <slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n</div>\n","import { Transforms, Point, Node, Range, Editor, NodeEntry, Element } from 'slate';\nimport { AngularEditor, ELEMENT_TO_COMPONENT, hotkeys, getPlainText } from 'slate-angular';\nimport { TableOptions } from './table.types';\nimport { isRangeInTable, isSelectionInTable, TablePosition } from './utils';\nimport { TheBlockElement, TheEditor } from '../../interfaces';\nimport { ElementKinds } from '../../constants/node-types';\nimport { TableCellElement, TableElement } from '../../custom-types';\nimport { TheTableComponent } from './components/table.component';\nimport { TableEditor } from './table.editor';\nimport { clearTableNode } from './transforms/clear-table-node';\nimport { isVirtualKey } from './utils/is-virtual-key';\nimport { insertColumnAtRow } from './transforms/insert-column';\nimport { calculateAnchorPositionInCell } from './utils/calc-anchor-position';\nimport { CLIPBOARD_FORMAT_KEY, ELEMENT_UNIQUE_ID } from '../../constants/default';\nimport { calcOriginSpan } from './utils/calc-span';\nimport { resetTableCell } from './utils/split-cell';\nimport { removeColumns } from './utils/remove-columns';\nimport { addColumns } from './utils/add-columns';\nimport { getSelectCellNode } from './utils/get-select-cell-node';\nimport { TheTableRowComponent } from './components/row/row.component';\nimport { TheTdComponent } from './components/td/td.component';\nimport { extractFragment } from '../../utils/fragment';\nimport * as TheQueries from '../../queries';\n\nexport const withTable = (editor: Editor) => {\n const {\n deleteBackward,\n deleteForward,\n onKeydown,\n setFragmentData,\n insertData,\n normalizeNode,\n isBlockCard,\n renderElement,\n deleteCutData,\n isContainer\n } = editor;\n\n editor.deleteBackward = unit => {\n const opts = new TableOptions();\n if (!isSelectionInTable(opts, editor)) {\n deleteBackward(unit);\n return;\n }\n const { selection } = editor;\n\n const [, startBlockPath] = Editor.above<Element>(editor, {\n match: n => Editor.isBlock(editor, n)\n });\n const startPosition = TablePosition.create(opts, editor, selection.anchor.path);\n if (\n startBlockPath.length <= startPosition.cellEntry[1].length + 1 &&\n startBlockPath.pop() === 0 &&\n selection.anchor.offset === 0 &&\n TheQueries.isStart(editor, selection.anchor, startBlockPath) &&\n !Editor.isVoid(editor, TheQueries.anchorBlock(editor))\n ) {\n return;\n }\n deleteBackward(unit);\n };\n\n editor.deleteForward = unit => {\n const opts = new TableOptions();\n const afterPoint = Editor.after(editor, editor.selection);\n if (afterPoint && isRangeInTable(opts, editor, { anchor: afterPoint, focus: afterPoint })) {\n const beforePosition = TablePosition.create(opts, editor, editor.selection.anchor.path);\n const afterPosition = TablePosition.create(opts, editor, afterPoint.path);\n if (beforePosition.cell && beforePosition.cell !== afterPosition.cell) {\n return;\n }\n }\n deleteForward(unit);\n };\n\n editor.onKeydown = (event: KeyboardEvent) => {\n const opts = new TableOptions();\n const isMoveUp = hotkeys.isMoveUp(event);\n const isMoveDown = hotkeys.isMoveDown(event);\n const isMoveBackward = hotkeys.isMoveBackward(event);\n const isMoveForward = hotkeys.isMoveForward(event);\n const { selection } = editor;\n if (!selection || !selection.anchor || !selection.focus) {\n onKeydown(event);\n return;\n }\n const startPosition = TablePosition.create(opts, editor, selection.anchor.path);\n const endPosition = TablePosition.create(opts, editor, selection.focus.path);\n const isCollapsed = Range.isCollapsed(selection);\n if (startPosition && endPosition && endPosition.isInTable()) {\n // for keyboard up and down key in the table\n if (isMoveUp || isMoveDown) {\n const cellPath = endPosition.cellEntry[1];\n const startPath = Editor.start(editor, cellPath).path;\n const endPath = Editor.end(editor, cellPath).path;\n const { isFirstLine, isLastLine } = calculateAnchorPositionInCell(editor);\n startPath.pop();\n endPath.pop();\n\n if ((TheQueries.anchorBlockEntry(editor)[1].toString() !== startPath.toString() || !isFirstLine) && isMoveUp) {\n onKeydown(event);\n return;\n }\n\n if ((TheQueries.anchorBlockEntry(editor)[1].toString() !== endPath.toString() || !isLastLine) && isMoveDown) {\n onKeydown(event);\n return;\n }\n\n event.preventDefault();\n let at: Point;\n if (isMoveUp) {\n const aboveRow = startPosition.table.children[startPosition.getRowIndex() - 1];\n const aboveCell = aboveRow && aboveRow.children[startPosition.getColumnIndex()];\n if (aboveCell) {\n if (aboveCell.hidden) {\n const originSpan = calcOriginSpan(\n endPosition.table,\n startPosition.getRowIndex() - 1,\n startPosition.getColumnIndex()\n );\n if (originSpan) {\n at = Editor.start(editor, TheEditor.findPath(editor, originSpan));\n }\n } else {\n at = Editor.start(editor, TheEditor.findPath(editor, aboveCell));\n }\n } else {\n const previousNodeEntry = Editor.previous(editor, { at: startPosition.tableEntry[1] });\n const beforePoint = Editor.before(editor, startPosition.tableEntry[1]);\n Editor.next(editor, { at: startPosition.tableEntry[1] });\n\n if (previousNodeEntry) {\n at = Editor.end(editor, previousNodeEntry[1]);\n }\n\n if (!previousNodeEntry && beforePoint) {\n at = Editor.end(editor, beforePoint.path);\n }\n\n if (!previousNodeEntry && !beforePoint) {\n AngularEditor.moveBlockCard(editor, startPosition.tableEntry[0], { direction: 'left' });\n return;\n }\n }\n Transforms.select(editor, at);\n } else {\n let belowRowIndex = startPosition.getRowIndex() + 1;\n if (startPosition.cell.rowspan > 1) {\n belowRowIndex = startPosition.getRowIndex() + startPosition.cell.rowspan;\n }\n const belowRow = startPosition.table.children[belowRowIndex];\n const belowCell = belowRow && belowRow.children[startPosition.getColumnIndex()];\n if (belowCell) {\n if (belowCell.hidden) {\n const originSpan = calcOriginSpan(endPosition.table, belowRowIndex, startPosition.getColumnIndex());\n if (originSpan) {\n at = Editor.start(editor, TheEditor.findPath(editor, originSpan));\n }\n } else {\n at = Editor.start(editor, TheEditor.findPath(editor, belowCell));\n }\n } else {\n const nextNodeEntry = Editor.next(editor, { at: startPosition.tableEntry[1] });\n const movePath = nextNodeEntry ? nextNodeEntry[1] : Editor.after(editor, startPosition.tableEntry[1]).path;\n at = Editor.start(editor, movePath);\n }\n Transforms.select(editor, at);\n }\n return;\n }\n\n if (isMoveBackward) {\n const beforePoint = Editor.before(editor, editor.selection);\n const beforePosition = beforePoint && TablePosition.create(opts, editor, beforePoint.path);\n if (beforePosition && beforePosition.cell && beforePosition.cell.hidden) {\n const at = Editor.end(editor, TheEditor.findPath(editor, beforePosition.findPrevious()));\n Transforms.select(editor, at);\n event.preventDefault();\n }\n }\n\n if (isMoveForward) {\n const afterPoint = Editor.after(editor, editor.selection);\n const afterPosition = afterPoint && TablePosition.create(opts, editor, afterPoint.path);\n if (afterPosition.cell && afterPosition.cell.hidden) {\n const at = Editor.start(editor, TheEditor.findPath(editor, afterPosition.findNext()));\n Transforms.select(editor, at);\n event.preventDefault();\n }\n }\n\n // Prevent deleting cells in the table\n if (!isCollapsed && !startPosition.isInTable() && !isVirtualKey(event)) {\n event.preventDefault();\n let tableOutPath: Point;\n Editor.withoutNormalizing(editor, () => {\n if (Range.isForward(selection)) {\n tableOutPath = Editor.end(editor, [selection.focus.path[0] - 1]);\n clearTableNode(opts, editor, true);\n } else {\n tableOutPath = Editor.start(editor, [selection.focus.path[0] + 1]);\n clearTableNode(opts, editor);\n }\n const tableOutRange = Editor.range(editor, selection.anchor, tableOutPath);\n Transforms.delete(editor, { at: tableOutRange });\n });\n // new range\n const cellRange = Editor.range(editor, editor.selection.focus.path.slice(0, 3));\n const focusRange = Range.intersection(editor.selection, cellRange);\n Transforms.select(editor, focusRange);\n Editor.deleteFragment(editor);\n return;\n }\n }\n onKeydown(event);\n return;\n };\n\n editor.setFragmentData = unit => {\n const opts = new TableOptions();\n if (!isSelectionInTable(opts, editor)) {\n setFragmentData(unit);\n return;\n }\n const { selection } = editor;\n const element = TablePosition.create(opts, editor, selection.anchor.path);\n const tableComponent = ELEMENT_TO_COMPONENT.get(element.table) as TheTableComponent;\n const cells = tableComponent.tableStore.selectedCells;\n const tableContent = {};\n let contents: DocumentFragment;\n let cellNode: TableCellElement;\n let fragment:\n | TheBlockElement[]\n | {\n type: ElementKinds;\n children: {\n type: ElementKinds;\n children: TheBlockElement[];\n }[];\n };\n if (cells.length > 0) {\n const selectNodes = getSelectCellNode(editor, cells);\n const selectedColumnsIndex = tableComponent.tableStore.selectedColumnsIndex || [];\n const selectedRowsIndex = tableComponent.tableStore.selectedRowsIndex || [];\n for (const cell of cells) {\n const { row, col } = cell;\n const cellPath = [...element.tableEntry[1], row, col];\n cellNode = Node.get(editor, cellPath) as TableCellElement;\n const cellRange = Editor.range(editor, cellPath);\n const domRange = AngularEditor.toDOMRange(editor, cellRange);\n if (!contents) {\n contents = domRange.cloneContents();\n } else {\n contents.append(domRange.cloneContents());\n }\n\n if (\n (selectedColumnsIndex.length === 1 && cellNode.colspan > 1) ||\n (selectedRowsIndex.length === 1 && cellNode.rowspan > 1)\n ) {\n cellNode = {\n ...cellNode,\n colspan: selectedColumnsIndex.length === 1 ? null : cellNode.colspan,\n rowspan: selectedRowsIndex.length === 1 ? null : cellNode.rowspan\n };\n }\n\n if (cellNode.hidden) {\n const origin = calcOriginSpan(element.table, row, col);\n const selectedOrigin = origin && selectNodes.filter(item => (item.node as Element).key === (origin as Element).key);\n if (!selectedOrigin || !selectedOrigin.length) {\n cellNode = {\n ...cellNode,\n hidden: null\n };\n }\n }\n\n if (!tableContent[row]) {\n tableContent[row] = [];\n }\n tableContent[row].push(cellNode);\n }\n const tableFragment = [\n {\n type: ElementKinds.table,\n children: Object.values(tableContent).map((item: Node) => {\n return {\n type: ElementKinds.tableRow,\n children: item\n };\n })\n }\n ];\n fragment = tableFragment as unknown as TheBlockElement[];\n const stringObj = JSON.stringify(fragment);\n const encoded = window.btoa(encodeURIComponent(stringObj));\n unit.setData(`application/${CLIPBOARD_FORMAT_KEY}`, encoded);\n const div = document.createElement('div');\n div.appendChild(contents);\n div.setAttribute('hidden', 'true');\n document.body.appendChild(div);\n unit.setData('text/html', div.innerHTML);\n unit.setData('text/plain', getPlainText(div));\n document.body.removeChild(div);\n return;\n }\n setFragmentData(unit);\n };\n\n editor.insertData = data => {\n const fragment = extractFragment(data, ELEMENT_UNIQUE_ID);\n if (fragment) {\n const opts = new TableOptions();\n const { selection } = editor;\n if (\n isSelectionInTable(opts, editor) &&\n fragment.length === 1 &&\n Element.isElement(fragment[0]) &&\n fragment[0].type === ElementKinds.table\n ) {\n const tablePosition = TablePosition.create(opts, editor, selection.anchor.path);\n const clipboardTable = fragment[0].children as Node[];\n const clipboardRow = (clipboardTable[0] as Element).children;\n const selectRowIndex = tablePosition.getRowIndex();\n const selectColIndex = tablePosition.getColumnIndex();\n const lastRowIndex = selectRowIndex + clipboardTable.length - 1;\n const lastColIndex = selectColIndex + clipboardRow.length - 1;\n\n for (let i = selectRowIndex; i <= lastRowIndex; i++) {\n for (let j = selectColIndex; j <= lastColIndex; j++) {\n const row = tablePosition.table.children[i];\n if (row && row.children[j]) {\n const originCell = calcOriginSpan(tablePosition.table, i, j);\n if (originCell && (originCell.colspan || originCell.rowspan)) {\n const path = TheEditor.findPath(editor, originCell).slice(-2);\n resetTableCell(editor, tablePosition.table, originCell, path[0], path[1]);\n }\n }\n }\n }\n\n Editor.withoutNormalizing(editor, () => {\n if (lastColIndex > tablePosition.getWidth() - 1) {\n const addColCount = lastColIndex - (tablePosition.getWidth() - 1);\n TableEditor.insertColumn(editor, addColCount, tablePosition.getWidth());\n }\n if (lastRowIndex > tablePosition.getHeight() - 1) {\n const addRowCount = lastRowIndex - (tablePosition.getHeight() - 1);\n TableEditor.insertRow(editor, addRowCount, tablePosition.getHeight());\n }\n clipboardTable.forEach((row: TableElement, i: number) => {\n row.children.forEach((col: Node, j: number) => {\n const at = [...tablePosition.tableEntry[1], selectRowIndex + i, selectColIndex + j];\n Transforms.removeNodes(editor, { at });\n Transforms.insertNodes(editor, col, { at });\n });\n });\n });\n const target = Editor.start(editor, [...tablePosition.tableEntry[1], selectRowIndex, selectColIndex]);\n Transforms.select(editor, target);\n return;\n }\n }\n insertData(data);\n };\n\n editor.normalizeNode = (entry: NodeEntry<Node>) => {\n if (Element.isElement(entry[0]) && entry[0].type === ElementKinds.table) {\n const table = entry[0] as TableElement;\n const maxWidth = Math.max(...table.children.map(row => row.children.length));\n const invalidRows = table.children.filter(row => row.children.length < maxWidth);\n if (invalidRows.length > 0) {\n const opts = new TableOptions();\n Editor.withoutNormalizing(editor, () => {\n table.children.map((row, rowIndex) => {\n row.children.map((cell, cellIndex) => {\n if (cell.hidden || cell.colspan || cell.rowspan) {\n Transforms.setNodes(\n editor,\n { hidden: null, colspan: null, rowspan: null },\n { at: [...entry[1], rowIndex, cellIndex] }\n );\n }\n });\n });\n invalidRows.forEach(row => {\n const count = maxWidth - row.children.length;\n insertColumnAtRow(\n opts,\n editor,\n count,\n entry as NodeEntry<TableElement>,\n table.children.indexOf(row),\n row.children.length\n );\n });\n });\n }\n if (table.columns && table.columns.length !== maxWidth) {\n const columns = table.columns.length > maxWidth ? removeColumns(table, maxWidth) : addColumns(table, maxWidth);\n Transforms.setNodes(editor, { columns }, { at: entry[1] });\n }\n }\n normalizeNode(entry);\n };\n\n editor.isBlockCard = (element: Element) => {\n if (element && element.type === ElementKinds.table) {\n return true;\n }\n return isBlockCard(element);\n };\n\n editor.renderElement = (element: Element) => {\n if (element.type === ElementKinds.table) {\n return TheTableComponent;\n }\n if (element.type === ElementKinds.tableRow) {\n return TheTableRowComponent;\n }\n if (element.type === ElementKinds.tableCell) {\n return TheTdComponent;\n }\n return renderElement(element);\n };\n\n editor.deleteCutData = () => {\n const opts = new TableOptions();\n if (!isSelectionInTable(opts, editor)) {\n deleteCutData();\n return;\n }\n const { selection } = editor;\n const element = TablePosition.create(opts, editor, selection.anchor.path);\n const tableComponent = ELEMENT_TO_COMPONENT.get(element.table) as TheTableComponent;\n const cells = tableComponent.tableStore.selectedCells;\n if (cells.length > 0) {\n Editor.withoutNormalizing(editor, () => {\n if (tableComponent.tableStore.isSelectedTable) {\n TableEditor.removeTable(editor);\n } else {\n tableComponent.tableStore.clearSelectedCellsContent();\n }\n tableComponent.tableService.closeToolbar();\n });\n return;\n }\n deleteCutData();\n };\n\n editor.isContainer = (element: Element) => {\n return element.type === ElementKinds.tableCell ? true : isContainer(element);\n };\n\n return editor;\n};\n","import { Transforms, Element, Text, Editor } from 'slate';\nimport { createEmptyParagraph } from '../../utils/create-empty-paragraph';\nimport { ElementKinds } from '../../constants';\nimport { TransformEditor } from '../common/transforms.plugin';\nimport * as TheQueries from '../../queries';\nimport { CustomElementKinds } from '../../custom-types';\n\nexport const withInsertParagraphNodes =\n (types: CustomElementKinds[] = []) =>\n <T extends Editor & TransformEditor>(editor: T) => {\n const { normalizeNode } = editor;\n editor.normalizeNode = ([currentNode, currentPath]) => {\n if (Text.isText(currentNode) && currentPath.length) {\n const [node] = Editor.parent(editor, currentPath);\n const containerBlocks = [...types, ...TheQueries.getContainerBlocks(editor)];\n if (Element.isElement(node) && containerBlocks.includes(node.type)) {\n const paragraph = createEmptyParagraph();\n (paragraph.children[0] as Text).text = currentNode.text;\n Transforms.insertNodes(editor, paragraph, { at: currentPath });\n return;\n }\n }\n return normalizeNode([currentNode, currentPath]);\n };\n\n return editor;\n };\n","import { TheiaConverter } from '@atinc/selene';\nimport { CLIPBOARD_FORMAT_KEY } from '../../constants/default';\nimport { Editor } from 'slate';\nimport * as TheTransforms from '../../transforms';\n\nexport const withDeserializeHMTL = (editor: Editor) => {\n const { insertData } = editor;\n\n editor.insertData = (data: DataTransfer) => {\n const html = data.getData(`text/html`);\n const slateFragment = data.getData(`application/${CLIPBOARD_FORMAT_KEY}`);\n\n if (html && !slateFragment) {\n const htmlDom = new DOMParser().parseFromString(html, 'text/html');\n const fragment = TheiaConverter.convertToTheia(Array.from(htmlDom.body.children));\n TheTransforms.insertTheElements(editor, fragment);\n return;\n }\n\n insertData(data);\n };\n return editor;\n};\n","import { VerticalAlignment } from '../../constants';\nimport { TheEditor } from '../../interfaces';\nimport { TableEditor } from '../table/table.editor';\n\nexport const VerticalAlignEditor = {\n isVerticalActive(editor: TheEditor, alignment: VerticalAlignment) {\n const tableCellAlign = TableEditor.isVerticalAlignActive(editor, alignment);\n if (tableCellAlign !== null) {\n return tableCellAlign;\n }\n return false;\n },\n setVerticalAlign(editor: TheEditor, alignment: VerticalAlignment) {\n if (TableEditor.setVerticalAlign(editor, alignment)) {\n return;\n }\n }\n};\n","import { Component, ElementRef, Input, OnInit, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys';\nimport { Editor } from 'slate';\nimport { TheToolbarBaseItemComponent } from '../../components/toolbar-base-item/toolbar-base-item.component';\nimport { CustomEditor } from '../../custom-types';\nimport { DefaultToolbarItem, ToolbarItem } from '../../interfaces';\n\n@Component({\n selector: 'the-toolbar-vertical-align-item',\n templateUrl: './toolbar-item.component.html',\n host: {\n class: 'the-toolbar-dropdown-container verticalAlign',\n '[class.hide]': '!active'\n }\n})\nexport class TheVerticalToolbarItemComponent extends TheToolbarBaseItemComponent implements OnInit {\n isHide = true;\n active: boolean | string = false;\n activeMenu: ToolbarItem;\n dropdownPopoverRef: ThyPopoverRef<any>;\n\n @Input() item: DefaultToolbarItem;\n\n @Input() menus: DefaultToolbarItem[];\n\n @Input() editor: CustomEditor;\n\n @Input() toolbarItem: ToolbarItem;\n\n @ViewChild('VerticalAlignItems', { read: TemplateRef, static: true })\n template: TemplateRef<any>;\n\n get isOpened() {\n return this.dropdownPopoverRef && this.dropdownPopoverRef.getOverlayRef() && this.dropdownPopoverRef.getOverlayRef().hasAttached();\n }\n\n constructor(public elementRef: ElementRef, private thyPopover: ThyPopover, private viewContainerRef: ViewContainerRef) {\n super();\n }\n\n ngOnInit(): void {}\n\n public statusChange(editor: Editor) {\n this.active = this.toolbarItem?.active ? this.toolbarItem?.active(editor) : false;\n this.activeMenu = this.menusActive(editor);\n\n if (!this.active) {\n this.close();\n }\n }\n\n menusActive(editor: Editor) {\n return this.menus.find(i => {\n if (this.editor?.selection && i?.active) {\n return i?.active(editor);\n }\n });\n }\n\n execute(event: MouseEvent) {\n super.execute(event);\n\n if (!this.item?.execute || this.editor?.disabled) {\n return;\n }\n this.openPopover();\n }\n\n itemMousedown(event: MouseEvent, item: ToolbarItem) {\n event.preventDefault();\n event.stopPropagation();\n\n this.close();\n\n if (item?.execute) {\n item?.execute(this.editor);\n }\n }\n\n openPopover() {\n this.dropdownPopoverRef = this.thyPopover.open(this.template, {\n origin: this.elementRef,\n panelClass: ['the-toolbar-dropdown-popover', this.toolbarItem?.key],\n placement: 'bottomLeft',\n offset: 10,\n viewContainerRef: this.viewContainerRef,\n insideClosable: false,\n backdropClosable: false,\n hasBackdrop: false\n });\n }\n\n close() {\n if (this.dropdownPopoverRef) {\n this.dropdownPopoverRef.close();\n }\n }\n}\n","<a\n thyIconNavLink\n class=\"icon-mode link-with-down\"\n [thyTooltip]=\"toolbarItem?.name\"\n [thyIconNavLinkActive]=\"isOpened\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"execute($event)\"\n>\n <thy-icon [thyIconName]=\"activeMenu?.icon\"></thy-icon>\n <thy-icon class=\"caret-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n\n<ng-template #VerticalAlignItems>\n <thy-action-menu class=\"dropdown\">\n <ng-container *ngFor=\"let menu of toolbarItem?.includes\">\n <a\n thyActionMenuItem\n href=\"javascript:;\"\n [thyActionMenuItemActive]=\"menu.key === activeMenu?.key\"\n [ngStyle]=\"menu?.styles\"\n (mousedown)=\"itemMousedown($event, menu)\"\n >\n <span *ngIf=\"menu.icon\" thyActionMenuItemIcon>\n <thy-icon [thyIconName]=\"menu?.icon\"></thy-icon>\n </span>\n <span thyActionMenuItemName>{{ menu.name }}</span>\n </a>\n </ng-container>\n </thy-action-menu>\n</ng-template>\n","import { DropdownMode } from '../../constants';\nimport { ToolbarActionTypes, VerticalAlignment } from '../../constants/node-types';\nimport { ToolbarItem, ToolbarItemType } from '../../interfaces';\nimport { TableEditor } from '../table/table.editor';\nimport { VerticalAlignEditor } from './vertical-align.editor';\nimport { TheVerticalToolbarItemComponent } from './toolbar-item.component';\n\nexport const VerticalAlignOptions: ToolbarItem[] = [\n {\n key: ToolbarActionTypes.verticalAlign,\n name: '垂直对齐',\n type: ToolbarItemType.toolDropdown,\n dropdownMode: DropdownMode.icon,\n iconComponent: TheVerticalToolbarItemComponent,\n includes: [ToolbarActionTypes.verticalAlignTop, ToolbarActionTypes.verticalAlignMiddle, ToolbarActionTypes.verticalAlignBottom],\n active: editor => TableEditor.isActive(editor)\n },\n {\n key: ToolbarActionTypes.verticalAlignTop,\n icon: 'align-top',\n name: '顶部对齐',\n execute: editor => VerticalAlignEditor.setVerticalAlign(editor, VerticalAlignment.top),\n active: editor => VerticalAlignEditor.isVerticalActive(editor, VerticalAlignment.top)\n },\n {\n key: ToolbarActionTypes.verticalAlignMiddle,\n icon: 'align-middle',\n name: '垂直居中',\n execute: editor => VerticalAlignEditor.setVerticalAlign(editor, VerticalAlignment.middle),\n active: editor => VerticalAlignEditor.isVerticalActive(editor, VerticalAlignment.middle)\n },\n {\n key: ToolbarActionTypes.verticalAlignBottom,\n icon: 'align-bottom',\n name: '底部对齐',\n execute: editor => VerticalAlignEditor.setVerticalAlign(editor, VerticalAlignment.bottom),\n active: editor => VerticalAlignEditor.isVerticalActive(editor, VerticalAlignment.bottom)\n }\n];\n","import { Editor, Element, Text } from 'slate';\nimport { AngularEditor, ViewType } from 'slate-angular';\nimport { TheEditor, ThePlugin, ToolbarItem } from '../interfaces';\nimport { ElementKinds, ELEMENT_UNIQUE_ID, HEADING_TYPES } from '../constants';\nimport { idCreator } from '../utils/id-creator';\nimport { autoFormatRules } from '../constants/auto-format-rules';\nimport { withTheHistory } from './common/history.plugin';\nimport { withDeserializeMd } from './deserializers/deserialize-md.plugin';\nimport { withAutoInsertData } from './common/auto-insert-data.';\nimport { withRemoveEmpty } from './common/remove-empty.plugin';\nimport { withResetType } from './common/reset-type.plugin';\nimport { withImage } from './image/image.plugin';\nimport { withIndent } from './indent/indent.plugin';\nimport { withList } from './list/list.plugin';\nimport { withTodoItem } from './todo-item/todo-item.plugin';\nimport { withHr } from './hr/hr.plugin';\nimport { withAlign } from './align/align.plugin';\nimport { withHeading } from './heading/heading.plugin';\nimport { withMark } from './mark/mark.plugin';\nimport { withNodeID } from './node-id/node-id.plugin';\nimport { withAutoFormat } from './autoformat/autoformat.plugin';\nimport { withTransforms } from './common/transforms.plugin';\nimport { withTrailingNode } from './normalizers/trailing-node.plugin';\nimport { withBlockCard } from './common/block-card.plugin';\nimport { withMoveSelection } from './common/move-selection.plugin';\nimport { withGetFragment } from './common/get-fragment.plugin';\nimport { TodoItemOptions } from './todo-item/options';\nimport { MarkOptions } from './mark/options';\nimport { ListOptions } from './list/options';\nimport { ImageOptions } from './image/options';\nimport { HrOptions } from './hr/options';\nimport { HeadingOptions } from './heading/options';\nimport { BlockquoteOptions } from './blockquote/options';\nimport { AlignOptions } from './align/options';\nimport { withBlockquote } from './blockquote/blockquote.plugin';\nimport * as Types from '../types';\nimport { HistoryEditor } from 'slate-history';\nimport { ColorOptions } from './color/options';\nimport { withRemoveVoid } from './common/remove-void.plugin';\nimport { CodeOptions } from './code/options';\nimport { withCode } from './code/code.plugin';\nimport { LinkOptions } from './link/options';\nimport { withLink } from './link/link.plugin';\nimport { TableOptions } from './table/options';\nimport { withTable } from './table/table.plugin';\nimport { withInsertParagraphNodes } from './normalizers/insert-paragraph-nodes';\nimport { withDeserializeHMTL } from './deserializers/deserialize-html.plugin';\nimport { VerticalAlignOptions } from './vertical-align/options';\nimport * as TheTransforms from '../transforms';\n\nconst internalPlugins: ((editor: Editor) => Editor)[] = [\n withTheHistory,\n withAutoInsertData(),\n withRemoveEmpty,\n withRemoveVoid,\n withBlockCard, // should in the front of list、resettype、todo、deserialize-html\n withResetType,\n withImage,\n withIndent([ElementKinds.checkItem, ElementKinds.numberedList, ElementKinds.bulletedList, ElementKinds.paragraph, ...HEADING_TYPES]), // should in the front of list\n withList({ validLiChildrenTypes: [ElementKinds.image] }),\n withLink,\n withTable,\n withTodoItem,\n withHr,\n withAlign,\n withCode,\n withHeading,\n withMark(),\n withBlockquote,\n withNodeID({ idKey: ELEMENT_UNIQUE_ID, idCreator }),\n withAutoFormat({ rules: autoFormatRules }),\n withTransforms(),\n withTrailingNode({ type: ElementKinds.paragraph, level: 0 }),\n withMoveSelection,\n withInsertParagraphNodes(),\n withGetFragment(),\n withDeserializeHMTL,\n withDeserializeMd()\n];\n\nconst internalToolbarItems: ToolbarItem[] = [\n ...AlignOptions,\n ...MarkOptions,\n ...ColorOptions,\n ...HeadingOptions,\n ...TodoItemOptions,\n ...ListOptions,\n ...ImageOptions,\n ...HrOptions,\n ...BlockquoteOptions,\n ...CodeOptions,\n ...LinkOptions,\n ...TableOptions,\n ...VerticalAlignOptions\n];\n\nexport const toolbarCompose = (toolbarItems: ToolbarItem[] = []) => {\n return [...internalToolbarItems, ...toolbarItems];\n};\n\nexport const withTheEditor = <T extends AngularEditor & HistoryEditor>(plugins: ThePlugin[], editor: T) => {\n const e = editor as T & TheEditor;\n\n e.renderElement = (element: Element): ViewType => null;\n e.renderLeaf = (text: Text): ViewType => null;\n e.insertElement = (element: Element) => TheTransforms.insertElementNext(e, element);\n e.isContainer = (value: Element) => false;\n e.extraElementOptions = [];\n e.disabled = false;\n\n const pluginList = [...internalPlugins, ...plugins];\n\n pluginList.reduce((prevEditor, nextEditor) => nextEditor(prevEditor), e);\n\n return e;\n};\n","import isHotkey from 'is-hotkey';\nimport { Editor } from 'slate';\nimport { MarkTypes } from '../constants/node-types';\nimport { MarkEditor } from '../plugins/mark/mark.editor';\n\nconst HOTKEYS = {\n 'mod+b': MarkTypes.bold,\n 'mod+i': MarkTypes.italic,\n 'mod+u': MarkTypes.underline,\n 'mod+e': MarkTypes.codeLine\n};\nexport const markShortcuts = (editor: Editor, event: KeyboardEvent) => {\n for (const hotkey in HOTKEYS) {\n if (isHotkey(hotkey, event)) {\n event.preventDefault();\n const mark = HOTKEYS[hotkey];\n MarkEditor.toggleMark(editor, mark);\n }\n }\n};\n","import { Editor } from 'slate';\nimport { markShortcuts } from './mark';\n\nexport const shortcuts = (editor: Editor, event: KeyboardEvent) => {\n markShortcuts(editor, event);\n};\n","import { Injectable } from '@angular/core';\nimport { DefaultBlockToolbarDefinition, DefaultGlobalToolbarDefinition, DefaultInlineToolbarDefinition } from '../constants';\nimport { ToolbarKey, ToolbarItem, ToolbarDefinition, ToolbarEntity, ToolbarInitOption } from '../interfaces';\n\n@Injectable()\nexport class TheToolbarService {\n initialize(\n toolbarItems: ToolbarItem[],\n global: string[] = DefaultGlobalToolbarDefinition,\n inline: string[] = DefaultInlineToolbarDefinition,\n block: string[] = DefaultBlockToolbarDefinition\n ): ToolbarInitOption {\n const toolbarDefinition = {\n global,\n block,\n inline\n };\n\n const toolbarOperations: Map<string, ToolbarItem> = new Map<string, ToolbarItem>();\n toolbarItems.forEach(i => toolbarOperations.set(i.key, i));\n\n const toolbarEntity = this.nextToolbarEntity(toolbarDefinition, toolbarOperations);\n\n return {\n toolbarDefinition,\n toolbarOperations,\n toolbarEntity\n };\n }\n\n nextToolbarEntity(toolbarDefinition: ToolbarDefinition, toolbarItems: Map<string, ToolbarItem>): ToolbarEntity {\n const entity: ToolbarEntity = {};\n for (const defKey in toolbarDefinition) {\n entity[defKey] = this.getToolbarItemByKeys(toolbarDefinition[defKey], toolbarItems);\n }\n return entity;\n }\n\n getToolbarItemByKeys(keys: ToolbarKey[], toolbarItems: Map<string, ToolbarItem>): ToolbarItem[] {\n return keys.map(key => {\n if (key === `split`) {\n return { key: `split` };\n }\n const item = toolbarItems.get(key);\n if (!item) {\n throw new Error(`Read a non-existent toolbar key`);\n }\n if (item.includes) {\n return { ...item, includes: this.getToolbarItemByKeys(item.includes as ToolbarKey[], toolbarItems) };\n }\n return item;\n });\n }\n}\n","import { Editor, Transforms } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { HistoryEditor } from 'slate-history';\n\nexport const autoFocus = (editor: Editor, isFocus: boolean) => {\n setTimeout(() => {\n if (editor && isFocus) {\n HistoryEditor.withoutMerging(editor, () => {\n AngularEditor.focus(editor);\n Transforms.select(editor, Editor.start(editor, [0]));\n });\n }\n });\n};\n","import { Editor } from 'slate';\nimport { AngularEditor } from 'slate-angular';\n\nexport const getEditableElementHeight = (editor: Editor) => {\n const editable = AngularEditor.toDOMNode(editor, editor);\n return editable.clientHeight;\n};\n","import { Editor } from 'slate';\nimport { getEditableElementHeight } from './get-editable-element-height';\n\nlet previousHeight = 0;\n\n/**\n * reset the sliding distance when the viewport position of the sliding\n * container coincides with the viewport position of the focus element\n */\nexport const autoScrollViewHandle = (editor: Editor, scrollContainer: string) => {\n const currentHeight = getEditableElementHeight(editor);\n const currentNodeElement = window.getSelection().focusNode.parentElement;\n const scrollContainerElement = currentNodeElement.closest(scrollContainer);\n\n // the added sliding distance is the height of the\n // current editing area minus the height of the last editing area\n const scrollHeight = currentHeight - previousHeight;\n\n if (scrollContainerElement && previousHeight !== 0 && scrollHeight > 0) {\n const focusBlockRect = currentNodeElement.getBoundingClientRect();\n const scrollContainerRect = scrollContainerElement.getBoundingClientRect();\n const bottom = scrollContainerRect.bottom - focusBlockRect.bottom;\n if (bottom < 30) {\n scrollContainerElement.scrollTop = scrollContainerElement.scrollTop + scrollHeight;\n }\n }\n previousHeight = currentHeight;\n};\n","import { Component, Input } from '@angular/core';\nimport { Editor, Transforms } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport * as TheQueries from '../../queries';\nimport { DefaultToolbarItem } from '../../interfaces';\nimport { CustomEditor } from '../../custom-types';\nimport { TheToolbarBaseItemComponent } from '../toolbar-base-item/toolbar-base-item.component';\n\n@Component({\n selector: 'the-toolbar-item',\n template: `\n <a\n thyIconNavLink\n [thyIconNavLinkIcon]=\"item.icon\"\n [thyTooltip]=\"item.name\"\n thyTooltipPlacement=\"top\"\n [thyIconNavLinkActive]=\"active\"\n (mousedown)=\"execute($event)\"\n ></a>\n `,\n host: {\n class: 'the-toolbar-item'\n }\n})\nexport class TheToolbarItemComponent extends TheToolbarBaseItemComponent {\n @Input() item: DefaultToolbarItem;\n\n @Input() editor: CustomEditor;\n\n active: string | boolean = false;\n\n constructor() {\n super();\n }\n\n public statusChange(editor: Editor) {\n this.active = this.item?.active ? this.item?.active(editor) : false;\n }\n\n execute(event: MouseEvent) {\n super.execute(event);\n\n if (!this.item?.execute || this.editor?.disabled) {\n return;\n }\n\n this.item?.execute(this.editor);\n }\n}\n","import {\n Component,\n Input,\n OnInit,\n ViewChild,\n ViewContainerRef,\n ComponentFactoryResolver,\n OnChanges,\n SimpleChanges,\n ComponentRef,\n ElementRef,\n OnDestroy,\n NgZone,\n Inject,\n TemplateRef\n} from '@angular/core';\nimport { Editor } from 'slate';\nimport { ComponentType } from 'slate-angular';\nimport { ToolbarAlignment, ToolbarItem, ToolbarItemsComposeReturn, ToolbarItemType } from '../../interfaces/toolbar';\nimport { TheToolbarGroupToken, ToolbarMoreGroup } from '../../constants/toolbar';\nimport { ElementKinds, ToolbarActionTypes } from '../../constants/node-types';\nimport { TheToolbarItemComponent } from '../toolbar-item/toolbar-item.component';\nimport { NavSplitLineComponent } from '../nav-split-line/nav-split-line.component';\nimport { TheToolbarDropdownComponent } from '../toolbar-dropdown/toolbar-dropdown.component';\nimport type { TheToolbarGroupComponent } from '../toolbar-group/toolbar-group.component';\nimport { getToolbarClass } from '../../utils';\n\n@Component({\n selector: 'the-toolbar',\n templateUrl: 'toolbar.component.html',\n host: {\n class: 'the-toolbar-container'\n }\n})\nexport class TheToolbarComponent implements OnInit, OnChanges, OnDestroy {\n @Input() editor: Editor;\n\n @Input() toolbarItems: ToolbarItem[] = [];\n\n @Input() align: ToolbarAlignment;\n\n @Input() isMore = true;\n\n @Input() afterTemplate: TemplateRef<any>;\n\n @ViewChild('toolbarContainer', { read: ViewContainerRef, static: true }) toolbarContainer: ViewContainerRef;\n\n components: Map<string, ComponentRef<any>> = new Map<string, ComponentRef<any>>();\n moreGroupMenu = ToolbarMoreGroup;\n resizeObserver;\n elementWidth = 0;\n\n constructor(\n private cfr: ComponentFactoryResolver,\n private elementRef: ElementRef,\n private ngZone: NgZone,\n @Inject(TheToolbarGroupToken) private toolbarGroupComponent: ComponentType<TheToolbarGroupComponent>\n ) {}\n\n ngOnInit(): void {\n this.setToolbarClass();\n this.renderToolbarView();\n this.statusChange(this.editor);\n\n if (this.isMore) {\n this.resizeElement();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const toolbarItems = changes.toolbarItems;\n if (toolbarItems && !toolbarItems.firstChange) {\n this.renderToolbarView();\n }\n }\n\n ngOnDestroy(): void {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n\n public setToolbarClass() {\n if (this.editor) {\n const toolbarClass = getToolbarClass(this.editor);\n this.elementRef.nativeElement.classList.add(toolbarClass);\n }\n }\n\n private resizeElement() {\n const editableElement = this.elementRef.nativeElement;\n // @ts-ignore\n this.resizeObserver = new ResizeObserver(entries => {\n for (let entry of entries) {\n const { width } = entry.contentRect;\n if (this.isMore && this.elementWidth !== width) {\n this.elementWidth = width;\n this.renderToolbarView();\n }\n }\n });\n this.resizeObserver.observe(editableElement);\n }\n\n public statusChange(editor: Editor) {\n const toolbarItems = [...this.toolbarItems, this.moreGroupMenu];\n for (const item of toolbarItems) {\n if (item.key !== ToolbarActionTypes.split) {\n const itemComponent = this.components.get(item.key);\n if (itemComponent) {\n itemComponent.instance.statusChange(editor);\n }\n }\n }\n }\n\n public renderToolbarView(): void {\n this.components.clear();\n this.toolbarContainer.clear();\n const toolbarItems = this.toolbarItemsCompose();\n const { items, group } = toolbarItems;\n\n this.ngZone.run(() => {\n for (const item of items) {\n if (item.key === ToolbarActionTypes.split) {\n this.createToolbarSplit();\n continue;\n }\n this.createToolbarItem(item);\n }\n this.createMoreGroup(group);\n });\n }\n\n /**\n * calculation display toolbar and more grouped toolbars\n *\n *\t┌──────────────────────────────────────── GoolbarToolbarView ───────────────────────────────────┐\n *\t| ┌─────────────────────────────────────── #children ─────────────────────────────────────────┐ |\n *\t| | ┌─────── #itemsView ────────┐ ┌──────────────────────┐ ┌── #groupedItemsDropdown ───┐ | |\n *\t| | | #ungroupedItems | | ToolbarSeparatorView | | #groupedItems | | |\n *\t| | └──────────────────────────-┘ └──────────────────────┘ └────────────────────────────┘ | |\n *\t| | \\---------- only when toolbar items overflow --------/ | |\n *\t| └───────────────────────────────────────────────────────────────────────────────────────────┘ |\n *\t└───────────────────────────────────────────────────────────────────────────────────────────────┘\n * split width: 6px\n * item width: default item: 35px; dropdown item: 50px\n * set aside 50px\n */\n private toolbarItemsCompose(): ToolbarItemsComposeReturn {\n let elementWidth = this.isMore ? this.elementWidth : null;\n const maxItemWidth = 50;\n const defaultItemWidth = 35;\n const splitWidth = 6;\n // special type\n const headingWidth = 70;\n const items: ToolbarItem[] = [];\n const group: ToolbarItem[] = [];\n\n for (const item of this.toolbarItems) {\n if (!this.isMore) {\n items.push(item);\n continue;\n }\n\n // not enough free space\n const allowRender = elementWidth && elementWidth > maxItemWidth;\n if (allowRender && item.key === ToolbarActionTypes.split) {\n items.push(item);\n elementWidth -= splitWidth;\n continue;\n }\n\n if (allowRender) {\n items.push(item);\n } else {\n group.push(item);\n }\n\n if (item.key === ElementKinds.headingList) {\n elementWidth -= headingWidth;\n continue;\n }\n const isCustomComponent = item?.type === ToolbarItemType.toolDropdown || !!item?.iconComponent;\n elementWidth -= isCustomComponent ? maxItemWidth : defaultItemWidth;\n }\n\n return {\n items: this.pureToolbarItems(items),\n group\n };\n }\n\n /**\n * externally designated more group\n */\n private toolbarItemsAndMoreCompose() {\n const items = [];\n const group = [];\n\n for (const item of this.toolbarItems) {\n if (item.key === ToolbarActionTypes.split) {\n items.push(item);\n continue;\n }\n items.push(item);\n }\n\n return {\n items: this.pureToolbarItems(items),\n group\n };\n }\n\n /**\n * filter adjacent repeated dividers\n * @param {ToolbarItem[]} items\n * @returns\n * @memberof TheToolbarComponent\n */\n pureToolbarItems(items: ToolbarItem[]) {\n if (!Array.isArray(items)) {\n return [];\n }\n return items.filter((a, i) => {\n if (i > 0 && items[i - 1].key !== ToolbarActionTypes.split) {\n return true;\n }\n return a.key !== ToolbarActionTypes.split;\n });\n }\n\n private createToolbarItem(item: ToolbarItem) {\n const { iconComponent, type, dropdownMode, ...args } = item;\n const viewComponent = this.viewComponentType(type);\n const factory = this.cfr.resolveComponentFactory(iconComponent ? iconComponent : viewComponent);\n const compRef = this.toolbarContainer.createComponent(factory);\n compRef.instance.editor = this.editor;\n compRef.instance.toolbarItem = item;\n compRef.instance.menus = args.includes;\n compRef.instance.item = args?.includes && args.includes.length > 0 ? args.includes[0] : args;\n compRef.instance.mode = dropdownMode;\n this.components.set(item.key, compRef);\n }\n\n private createToolbarSplit() {\n const navSplitLineFactory = this.cfr.resolveComponentFactory(NavSplitLineComponent);\n this.toolbarContainer.createComponent(navSplitLineFactory);\n }\n\n private createMoreGroup(group: ToolbarItem[]) {\n if (group.length > 0) {\n const moreGroupFactory = this.cfr.resolveComponentFactory(this.toolbarGroupComponent);\n const compRef = this.toolbarContainer.createComponent(moreGroupFactory);\n compRef.instance.editor = this.editor;\n compRef.instance.menus = group;\n compRef.instance.item = this.moreGroupMenu;\n this.components.set(this.moreGroupMenu.key, compRef);\n }\n }\n\n private viewComponentType(type: ToolbarItemType) {\n if (type === ToolbarItemType.default) {\n return TheToolbarItemComponent;\n }\n if (type === ToolbarItemType.toolDropdown) {\n return TheToolbarDropdownComponent;\n }\n return TheToolbarItemComponent;\n }\n}\n","<thy-icon-nav [style.justifyContent]=\"align\">\n <ng-container #toolbarContainer></ng-container>\n <ng-content></ng-content>\n <ng-template *ngIf=\"afterTemplate\" [ngTemplateOutlet]=\"afterTemplate\"></ng-template>\n</thy-icon-nav>\n","import { Component, ElementRef, Input, HostListener, Renderer2 } from '@angular/core';\nimport { Range, Editor, Node, Text, Element, Descendant } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport * as TheQueries from '../../queries';\nimport { ElementKinds } from '../../constants/node-types';\n\n@Component({\n selector: 'div[thePlaceholder]',\n template: `{{ placeholder }}`,\n host: {\n class: 'the-placeholder',\n '[class.hide]': 'isHide'\n }\n})\nexport class ThePlaceholderComponent {\n @Input() editor: Editor;\n\n @Input() autoFocus: boolean;\n\n @Input() placeholder: string;\n\n isHide = true;\n\n get selection() {\n return this.editor.selection;\n }\n\n @HostListener('document:compositionstart')\n handleCompositionStart() {\n this.hide();\n }\n\n @HostListener('document:compositionend', ['$event'])\n handleCompositionEnd(event) {\n if (!event.data) {\n this.checkStatus();\n }\n }\n\n constructor(private renderer: Renderer2, private elementRef: ElementRef) {}\n\n public checkStatus(value?: Descendant[]) {\n const { editor } = this;\n const children = value ? value : editor.children;\n\n // empty content and no selection processing\n if (this.autoFocus && !this.selection && TheQueries.isEmptyContent(children)) {\n this.updatePosition(30, 51);\n this.isHide = false;\n return;\n }\n\n if (AngularEditor.isFocused(editor) && this.selection && Range.isCollapsed(this.selection)) {\n const block = Node.ancestor(editor, [this.selection.anchor.path[0]]);\n const textIndent = 'textIndent';\n const align = 'align';\n const hasTextIndent = block[textIndent];\n const hasAlign = block[align];\n\n if (\n Node.string(block) === '' &&\n Element.isElement(block) &&\n block.type === ElementKinds.paragraph &&\n block.children.length === 1 &&\n Text.isText(block.children[0]) &&\n !Editor.isVoid(editor, block) &&\n !hasTextIndent &&\n !hasAlign\n ) {\n const rootNode: HTMLElement = AngularEditor.toDOMNode(this.editor, block);\n this.updatePosition(rootNode.offsetLeft, rootNode.offsetTop);\n return;\n }\n }\n this.hide();\n }\n\n private updatePosition(left: number, top?: number) {\n this.isHide = false;\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', `${top}px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', `${left}px`);\n }\n\n private hide() {\n this.isHide = true;\n }\n}\n","import { Component, ChangeDetectionStrategy, ViewChild, TemplateRef } from '@angular/core';\nimport { Element } from 'slate';\nimport { ElementKinds } from '../../constants';\n\n@Component({\n selector: 'the-template,[theTemplate]',\n templateUrl: 'template.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TheTemplateComponent {\n @ViewChild('paragraph', { read: TemplateRef, static: true })\n paragraphTemplate: TemplateRef<any>;\n\n @ViewChild('headingOne', { read: TemplateRef, static: true })\n headingOneTemplate: TemplateRef<any>;\n\n @ViewChild('headingTwo', { read: TemplateRef, static: true })\n headingTwoTemplate: TemplateRef<any>;\n\n @ViewChild('headingThree', { read: TemplateRef, static: true })\n headingThreeTemplate: TemplateRef<any>;\n\n @ViewChild('headingFour', { read: TemplateRef, static: true })\n headingFourTemplate: TemplateRef<any>;\n\n @ViewChild('headingFive', { read: TemplateRef, static: true })\n headingFiveTemplate: TemplateRef<any>;\n\n @ViewChild('headingSix', { read: TemplateRef, static: true })\n headingSixTemplate: TemplateRef<any>;\n\n public renderElement = (element: Element) => {\n if (element.type === ElementKinds.default) {\n return this.paragraphTemplate;\n }\n if (element.type === ElementKinds.heading_1) {\n return this.headingOneTemplate;\n }\n if (element.type === ElementKinds.heading_2) {\n return this.headingTwoTemplate;\n }\n if (element.type === ElementKinds.heading_3) {\n return this.headingThreeTemplate;\n }\n if (element.type === ElementKinds.heading_4) {\n return this.headingFourTemplate;\n }\n if (element.type === ElementKinds.heading_5) {\n return this.headingFiveTemplate;\n }\n if (element.type === ElementKinds.heading_6) {\n return this.headingSixTemplate;\n }\n return null;\n };\n}\n","<ng-template #paragraph let-context=\"context\" let-viewContext=\"viewContext\">\n <div theDefaultElement [context]=\"context\" [viewContext]=\"viewContext\" [ngStyle]=\"context.element | elementStyle\"></div>\n</ng-template>\n<ng-template #headingOne let-context=\"context\" let-viewContext=\"viewContext\">\n <h1\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h1>\n</ng-template>\n<ng-template #headingTwo let-context=\"context\" let-viewContext=\"viewContext\">\n <h2\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h2>\n</ng-template>\n<ng-template #headingThree let-context=\"context\" let-viewContext=\"viewContext\">\n <h3\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h3>\n</ng-template>\n<ng-template #headingFour let-context=\"context\" let-viewContext=\"viewContext\">\n <h4\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h4>\n</ng-template>\n<ng-template #headingFive let-context=\"context\" let-viewContext=\"viewContext\">\n <h5\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h5>\n</ng-template>\n<ng-template #headingSix let-context=\"context\" let-viewContext=\"viewContext\">\n <h6\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h6>\n</ng-template>\n","import {\n OnInit,\n OnDestroy,\n Component,\n Input,\n ViewContainerRef,\n ViewChild,\n ElementRef,\n forwardRef,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n NgZone\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { mixinUnsubscribe, MixinBase } from 'ngx-tethys/core';\nimport isHotkey from 'is-hotkey';\nimport { Editor, Text, Transforms, createEditor, Element, Descendant, Range, Path, NodeEntry } from 'slate';\nimport { withHistory } from 'slate-history';\nimport { AngularEditor, SlateError, withAngular, DOMElement } from 'slate-angular';\nimport { ThePlugin, TheOptions, ToolbarItem, DomEventDataInfo, TheEditor, TheDataMode } from './interfaces';\nimport { ElementKinds, MarkTypes } from './constants';\nimport { withTheEditor, toolbarCompose } from './plugins/index';\nimport { TheTemplateComponent } from './components/template/template.component';\nimport { shortcuts } from './shortcuts';\nimport { TheToolbarComponent } from './components/toolbar/toolbar.component';\nimport { TheToolbarService } from './services/toolbar.service';\nimport { TheContextService } from './services/context.service';\nimport { TheTextComponent } from './components/text/text.component';\nimport { CLIPBOARD_FORMAT_KEY, DEFAULT_SCROLL_CONTAINER } from './constants/default';\nimport { ThePlaceholderComponent } from './components/placeholder/placeholder.component';\nimport { TheColorSelectService } from './services/color-select.service';\nimport * as TheTransforms from './transforms';\nimport * as TheQueries from './queries';\nimport { autoFocus } from './utils/auto-focus';\nimport { autoScrollViewHandle } from './utils/auto-scroll-view';\nimport { _ } from './utils/lodash';\nimport { dataDeserialize, dataSerializing } from './utils/data-transform';\nimport { setEditorUUID } from './utils/editor-uuid';\nimport { idCreator } from './utils/id-creator';\n\n@Component({\n selector: 'the-editor, theEditor',\n templateUrl: 'editor.component.html',\n providers: [\n TheToolbarService,\n TheContextService,\n TheColorSelectService,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TheEditorComponent),\n multi: true\n }\n ],\n host: {\n class: 'the-editor',\n '[class.the-editor-readonly]': 'theOptions?.readonly'\n }\n})\nexport class TheEditorComponent extends mixinUnsubscribe(MixinBase) implements OnInit, OnChanges, OnDestroy {\n @Input() theOptions: TheOptions;\n\n @Input() thePlugins: ThePlugin[] = [];\n\n @Input() theGlobalToolbar?: TheToolbarComponent;\n\n @Input() theDecorate: (editor: TheEditor, nodeEntry: NodeEntry) => Range[];\n\n @Input() theOnError?: (error: SlateError) => void;\n\n @Output() theOnSave: EventEmitter<Descendant[]> = new EventEmitter<Descendant[]>();\n\n @Output() theOnDOMEvent: EventEmitter<{ nativeEvent: Event; data?: DomEventDataInfo }> = new EventEmitter();\n\n @Output() theEditorCreated: EventEmitter<Editor> = new EventEmitter();\n\n @ViewChild('templateInstance', { static: true })\n templateInstance: TheTemplateComponent;\n\n @ViewChild('globalToolbar')\n globalToolbarInstance: TheToolbarComponent;\n\n @ViewChild('placeholder')\n placeholderInstance: ThePlaceholderComponent;\n\n _plugins: ThePlugin[] = [];\n\n globalToolbarItems: ToolbarItem[] = [];\n\n editor: TheEditor;\n\n editorValue: Descendant[];\n\n decorate: (nodeEntry: NodeEntry) => Range[];\n\n get theGlobalToolbarInstance(): TheToolbarComponent {\n return this.theGlobalToolbar ? this.theGlobalToolbar : this.globalToolbarInstance;\n }\n\n get maxHeight() {\n return this.theOptions?.maxHeight ? `${this.theOptions?.maxHeight}px` : null;\n }\n\n autoScrollView = _.debounce(function (editor: Editor, scrollContainer: string) {\n return autoScrollViewHandle(editor, scrollContainer);\n }, 80);\n\n elementToHtml: WeakMap<Element, string> = new WeakMap();\n\n private onChangeCallback: (_: any) => void = () => {};\n\n private onTouchedCallback: () => void = () => {};\n\n constructor(\n private toolbarService: TheToolbarService,\n private theContextService: TheContextService,\n private viewContainerRef: ViewContainerRef,\n private elementRef: ElementRef,\n private ngZone: NgZone\n ) {\n super();\n }\n\n ngOnInit() {\n this.initialize();\n this.onErrorHandler();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const options = changes.theOptions;\n\n if (options) {\n this.initializeOptions();\n }\n if (changes['theDecorate']) {\n this.generateDecorate();\n }\n if (this.editor?.selection && (options?.currentValue?.readonly || options?.currentValue?.disabled)) {\n Transforms.deselect(this.editor);\n }\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n\n initialize() {\n this.editor = withTheEditor<TheEditor>(this.thePlugins, withHistory(withAngular(createEditor(), CLIPBOARD_FORMAT_KEY)));\n this.generateDecorate();\n this.editor.disabled = this.theOptions?.disabled;\n this.editor.extraElementOptions = this.theOptions?.extraElementOptions;\n setEditorUUID(this.editor, idCreator());\n this.theContextService.initialize({ nativeElement: this.elementRef.nativeElement, viewContainerRef: this.viewContainerRef });\n this.toolbarCalculate();\n setTimeout(() => {\n this.theEditorCreated.emit(this.editor);\n this.applyAutoFocus();\n });\n }\n\n initializeOptions() {\n if (!this.theOptions) {\n this.theOptions = {\n readonly: false,\n mode: TheDataMode.html\n };\n }\n if (!this.theOptions.mode) {\n this.theOptions = {\n ...this.theOptions,\n mode: TheDataMode.html\n };\n }\n }\n\n applyAutoFocus() {\n if (this.theOptions?.autoFocus && !this.theOptions?.readonly && !this.theOptions?.disabled) {\n autoFocus(this.editor, this.theOptions?.autoFocus);\n }\n }\n\n toolbarCalculate() {\n const toolbar = this?.theOptions?.toolbar;\n const toolbarItems = toolbarCompose(toolbar?.toolbarItems);\n const toolbarOption = this.toolbarService.initialize(toolbarItems, toolbar?.global, toolbar?.block, toolbar?.inline);\n this.globalToolbarItems = toolbarOption.toolbarEntity.global;\n\n if (this.theGlobalToolbar) {\n this.theGlobalToolbarInstance.editor = this.editor;\n this.theGlobalToolbarInstance.toolbarItems = toolbarOption.toolbarEntity.global;\n this.theGlobalToolbarInstance.align = toolbar?.align;\n this.theGlobalToolbarInstance.setToolbarClass();\n this.theGlobalToolbarInstance.renderToolbarView();\n }\n }\n\n writeValue(value: string | Descendant[]) {\n const data = dataDeserialize(this.theOptions?.mode, value);\n // data-deserialize\n this.editorValue = data;\n this.placeholderInstance?.checkStatus(data);\n }\n\n registerOnChange(fn: any) {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouchedCallback = fn;\n }\n\n valueChange(value: Descendant[]) {\n this.theGlobalToolbarInstance?.statusChange(this.editor);\n this.placeholderInstance?.checkStatus();\n // auto scroll view\n const scrollContainer = this.theOptions?.scrollContainer;\n const maxHeight = this.theOptions?.maxHeight;\n if (!this.theOptions?.readonly && (scrollContainer || maxHeight)) {\n const container = maxHeight ? DEFAULT_SCROLL_CONTAINER : scrollContainer;\n this.autoScrollView(this.editor, container);\n }\n\n if (this.editorValue === value) {\n return;\n }\n this.editorValue = value;\n\n // serializing\n let newValue = this.serializingValue(value);\n this.onChangeCallback(newValue);\n }\n\n serializingValue(value: Descendant[]): string | Descendant[] {\n if (this.theOptions?.mode === TheDataMode.html) {\n let htmlValue = '';\n value.forEach((element: Element) => {\n let elementHtml = this.elementToHtml.get(element);\n if (elementHtml === undefined) {\n // serializing\n elementHtml = dataSerializing(this.theOptions?.mode, [element]) as string;\n htmlValue += elementHtml;\n this.elementToHtml.set(element, elementHtml);\n return;\n }\n htmlValue += elementHtml;\n });\n return htmlValue;\n }\n return value;\n }\n\n onErrorHandler() {\n this.editor.onError = (errorData: SlateError) => {\n if (this.theOnError) {\n this.theOnError(errorData);\n return;\n }\n if (errorData.nativeError) {\n console.error(errorData.nativeError);\n }\n };\n }\n\n renderElement = (element: Element) => {\n const template = this.templateInstance.renderElement(element);\n const component = this.editor.renderElement(element);\n return component ? component : template;\n };\n\n renderLeaf = (text: Text) => {\n const leaf = this.editor.renderLeaf(text);\n return leaf ? leaf : null;\n };\n\n renderText = (text: Text) => {\n if (text.text.length === 0) {\n return;\n }\n for (const key in MarkTypes) {\n if (text[MarkTypes[key]]) {\n return TheTextComponent;\n }\n }\n };\n\n generateDecorate() {\n this.decorate = (nodeEntry: NodeEntry) => {\n const decorations = [];\n\n if (this.theDecorate) {\n decorations.push(...this.theDecorate(this.editor, nodeEntry));\n }\n\n return decorations;\n };\n }\n\n onKeyDown = (event: KeyboardEvent) => {\n shortcuts(this.editor, event);\n this.theOnDOMEvent.emit({\n nativeEvent: event,\n data: {\n key: event.key\n }\n });\n if (isHotkey('mod+s', event)) {\n this.ngZone.run(() => {\n this.theOnSave.emit(this.editorValue);\n });\n event.preventDefault();\n return;\n }\n if (isHotkey('mod+a', event)) {\n this.handleSelectAll();\n }\n AngularEditor.onKeydown(this.editor, event);\n };\n\n mousedown(event: MouseEvent) {\n const editableElement = AngularEditor.toDOMNode(this.editor, this.editor);\n if (event.target === editableElement) {\n const rectEditable = editableElement.getBoundingClientRect();\n const centerX = rectEditable.x + rectEditable.width / 2;\n const relativeElement = document.elementFromPoint(centerX, event.y);\n const relativeBlockCardElement: DOMElement = relativeElement.closest('.slate-block-card');\n if (relativeBlockCardElement) {\n const blockCardEntry = AngularEditor.toSlateCardEntry(this.editor, relativeBlockCardElement.firstElementChild);\n if (blockCardEntry && blockCardEntry[1]) {\n const rootNodePath = blockCardEntry[1].slice(0, 1);\n const rootNode = TheQueries.getNode(this.editor, rootNodePath);\n if (this.editor.isBlockCard(rootNode)) {\n event.preventDefault();\n AngularEditor.moveBlockCard(this.editor, rootNode, { direction: event.x < centerX ? 'left' : 'right' });\n }\n }\n }\n }\n }\n\n handleSelectAll() {\n let node;\n if (!this.editor.selection) {\n TheTransforms.setEndSelection(this.editor);\n }\n const [start, end] = Range.edges(this.editor.selection);\n const selectionRange = Editor.range(this.editor, start, end);\n const containerBlocks = TheQueries.getContainerBlocks(this.editor);\n for (let i = 0; i < containerBlocks.length; i++) {\n [node] = TheQueries.getNodesByType(this.editor, containerBlocks[i]);\n if (node) {\n const [, path] = node;\n const isStartParent = Path.equals(path, start.path.slice(0, path.length));\n const isEndParent = Path.equals(path, end.path.slice(0, path.length));\n if (isStartParent && isEndParent) {\n const nodeRange = Editor.range(this.editor, path);\n if (!Range.equals(nodeRange, selectionRange)) {\n Transforms.select(this.editor, nodeRange);\n break;\n }\n node = null;\n }\n }\n }\n if (!node) {\n Transforms.select(this.editor, []);\n }\n event.preventDefault();\n return;\n }\n\n onClick = (event: MouseEvent) => {\n AngularEditor.onClick(this.editor, event);\n this.theOnDOMEvent.emit({\n nativeEvent: event\n });\n };\n\n onSlaPaste = (event: ClipboardEvent) => {\n this.theOnDOMEvent.emit({\n data: {\n ...this.getTextAndJSON(event.clipboardData)\n },\n nativeEvent: event\n });\n };\n\n onSlaBeforeInput = (\n event: Event & {\n inputType: string;\n data: string | null;\n dataTransfer: DataTransfer | null;\n }\n ) => {\n let data = {\n inputType: event.inputType,\n text: (event.data || event.dataTransfer) as string\n };\n if (event.inputType === 'insertFromPaste') {\n data = {\n ...data,\n ...this.getTextAndJSON((event.data || event.dataTransfer) as DataTransfer)\n };\n }\n this.theOnDOMEvent.emit({\n data,\n nativeEvent: event\n });\n };\n\n onSlaBlur = (event: FocusEvent) => {\n this.theOnDOMEvent.emit({\n nativeEvent: event\n });\n };\n\n onSlaFocus = (event: Event) => {\n this.theOnDOMEvent.emit({\n nativeEvent: event\n });\n };\n\n onSlaCut = (event: ClipboardEvent) => {\n this.theOnDOMEvent.emit({\n nativeEvent: event\n });\n };\n\n onSlaCopy = (event: ClipboardEvent) => {};\n\n onSlaCompositionStart = (event: CompositionEvent) => {};\n\n onSlaCompositionEnd = (event: CompositionEvent) => {};\n\n onSlaDragStart = (event: DragEvent) => {};\n\n onSlaDragOver = (event: DragEvent) => {};\n\n trackBy = (element: Element) => {\n return element.key;\n };\n\n getTextAndJSON(data: DataTransfer) {\n const fragment = data.getData(`application/${CLIPBOARD_FORMAT_KEY}`);\n let json = [];\n if (fragment) {\n json = JSON.parse(decodeURIComponent(window.atob(fragment)));\n }\n const text = data.getData('text/plain');\n return {\n json,\n text\n };\n }\n}\n","<the-toolbar\n *ngIf=\"!theOptions?.readonly && !theGlobalToolbar\"\n [ngClass]=\"{\n 'the-toolbar-disabled': theOptions?.disabled\n }\"\n #globalToolbar\n [editor]=\"editor\"\n [toolbarItems]=\"globalToolbarItems\"\n [align]=\"theOptions?.toolbar?.align\"\n></the-toolbar>\n\n<div\n class=\"the-editable-container\"\n [ngClass]=\"{\n 'the-editor-disabled': theOptions?.disabled\n }\"\n [ngStyle]=\"{ 'max-height': maxHeight }\"\n>\n <slate-editable\n class=\"the-editor-typo\"\n [editor]=\"editor\"\n [ngModel]=\"editorValue\"\n (ngModelChange)=\"valueChange($event)\"\n [decorate]=\"decorate\"\n [renderElement]=\"renderElement\"\n [renderText]=\"renderText\"\n [renderLeaf]=\"renderLeaf\"\n [readonly]=\"theOptions?.readonly || theOptions?.disabled\"\n [keydown]=\"onKeyDown\"\n [click]=\"onClick\"\n [paste]=\"onSlaPaste\"\n [beforeInput]=\"onSlaBeforeInput\"\n [blur]=\"onSlaBlur\"\n [focus]=\"onSlaFocus\"\n [copy]=\"onSlaCopy\"\n [cut]=\"onSlaCut\"\n [isStrictDecorate]=\"false\"\n [compositionStart]=\"onSlaCompositionStart\"\n [compositionEnd]=\"onSlaCompositionEnd\"\n [dragStart]=\"onSlaDragStart\"\n [dragOver]=\"onSlaDragOver\"\n [trackBy]=\"trackBy\"\n (mousedown)=\"mousedown($event)\"\n ></slate-editable>\n <div\n *ngIf=\"theOptions?.placeholder\"\n #placeholder\n thePlaceholder\n [editor]=\"editor\"\n [autoFocus]=\"theOptions?.placeholder?.autoFocus\"\n [placeholder]=\"theOptions?.placeholder\"\n ></div>\n <the-template #templateInstance></the-template>\n</div>\n","import { NgModule } from '@angular/core';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { TheColumnResizeOverlayHandleComponent } from './overlay-handle.component';\nimport { TheColumnResizeDirective } from './column-resize.directive';\n\nconst ENTRY_COMMON_COMPONENTS = [TheColumnResizeOverlayHandleComponent];\nconst DIRECTIVES = [TheColumnResizeDirective];\n\n@NgModule({\n declarations: ENTRY_COMMON_COMPONENTS,\n exports: ENTRY_COMMON_COMPONENTS,\n entryComponents: ENTRY_COMMON_COMPONENTS\n})\nexport class TheColumnResizeCommonModule {}\n\n@NgModule({\n imports: [OverlayModule, TheColumnResizeCommonModule],\n declarations: DIRECTIVES,\n exports: DIRECTIVES\n})\nexport class TheColumnSizeModule {}\n","import { Component, OnInit, ElementRef, Input, ViewChild, TemplateRef, ViewContainerRef, OnDestroy, HostListener } from '@angular/core';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys/popover';\nimport { Editor } from 'slate';\nimport { DefaultToolbarItem } from '../../interfaces';\n\n@Component({\n selector: 'the-toolbar-group',\n templateUrl: './toolbar-group.component.html',\n host: {\n class: 'the-toolbar-group'\n }\n})\nexport class TheToolbarGroupComponent implements OnInit, OnDestroy {\n private _item: DefaultToolbarItem;\n\n @Input() menus: DefaultToolbarItem[];\n\n @Input()\n set item(i: DefaultToolbarItem) {\n this._item = i;\n this.activeMenu = i;\n }\n\n get item() {\n return this._item;\n }\n\n get isOpened() {\n return this.groupPopoverRef && this.groupPopoverRef.getOverlayRef() && this.groupPopoverRef.getOverlayRef().hasAttached();\n }\n\n editor: Editor;\n active = false;\n activeMenu: DefaultToolbarItem;\n groupPopoverRef: ThyPopoverRef<any>;\n\n @ViewChild('groupTemplate', { read: TemplateRef, static: true })\n groupTemplate: TemplateRef<any>;\n\n @HostListener('mousedown', ['$event'])\n mousedownHandler(event) {\n event.preventDefault();\n this.toggleGroupMenus(event);\n }\n\n @HostListener('click', ['$event'])\n clickHandle(event) {\n event.stopPropagation();\n }\n\n constructor(public elementRef: ElementRef, private thyPopover: ThyPopover, private viewContainerRef: ViewContainerRef) {}\n\n ngOnInit() {}\n\n ngOnDestroy(): void {\n this.colseGroup();\n }\n\n toggleGroupMenus(event: MouseEvent) {\n if (this.editor?.disabled) {\n return;\n }\n if (this.isOpened) {\n this.colseGroup();\n } else {\n this.openGroup(event);\n }\n }\n\n public statusChange(editor: Editor) {\n const activeItem = this.menusActive(editor);\n this.activeMenu = activeItem ? activeItem : null;\n this.activeChange();\n this.colseGroup();\n }\n\n menusActive(editor: Editor) {\n return this.menus.find(i => {\n if (this.editor?.selection && i?.active) {\n return i?.active(editor);\n }\n });\n }\n\n activeChange() {\n const activeItem = this.menusActive(this.editor);\n if (this.isOpened && !activeItem) {\n this.active = false;\n return;\n }\n this.active = activeItem ? true : false;\n }\n\n openGroup(event: MouseEvent) {\n this.active = true;\n this.groupPopoverRef = this.thyPopover.open(this.groupTemplate, {\n panelClass: 'the-toolbar-group-container',\n offset: 10,\n placement: 'bottomRight',\n origin: event.currentTarget as HTMLElement,\n viewContainerRef: this.viewContainerRef,\n hasBackdrop: false,\n outsideClosable: true\n });\n this.groupPopoverRef.afterClosed().subscribe(() => {\n this.activeChange();\n });\n }\n\n colseGroup() {\n if (this.isOpened) {\n this.groupPopoverRef.close();\n }\n }\n}\n","<a thyIconNavLink [thyIconNavLinkIcon]=\"item.icon\" [thyTooltip]=\"item?.name\" thyTooltipPlacement=\"top\" [thyIconNavLinkActive]=\"active\"></a>\n\n<ng-template #groupTemplate>\n <the-toolbar class=\"group\" [editor]=\"editor\" [toolbarItems]=\"menus\" [isMore]=\"false\"></the-toolbar>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { SlateModule } from 'slate-angular';\nimport { TheTextComponent } from './components/text/text.component';\nimport { TheDefaultElementComponent } from './components/element/element.component';\nimport { TheEditorComponent } from './editor.component';\nimport { TheImageComponent } from './plugins/image/image.component';\nimport { TheToolbarComponent } from './components/toolbar/toolbar.component';\nimport { TheToolbarDropdownComponent } from './components/toolbar-dropdown/toolbar-dropdown.component';\nimport { TheToolbarItemComponent } from './components/toolbar-item/toolbar-item.component';\nimport { NavSplitLineComponent } from './components/nav-split-line/nav-split-line.component';\nimport { TheTemplateComponent } from './components/template/template.component';\nimport { TheHrComponent } from './plugins/hr/hr.component';\nimport { TheBlockquoteComponent } from './plugins/blockquote/blockquote.component';\nimport { TheTodoItemComponent } from './plugins/todo-item/todo-item.component';\nimport { TheListItemComponent } from './plugins/list/components/list-item.component';\nimport { TheBulletedListComponent } from './plugins/list/components/bulleted-list.component';\nimport { TheNumberedListComponent } from './plugins/list/components/numbered-list.component';\nimport { ElementStylePipe, ElementClassPipe } from './pipes';\n\nimport { ThyNavModule } from 'ngx-tethys/nav';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyProgressModule } from 'ngx-tethys/progress';\nimport { ThyFormModule } from 'ngx-tethys/form';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\nimport { ThyAutocompleteModule } from 'ngx-tethys/autocomplete';\nimport { ThyAvatarModule } from 'ngx-tethys/avatar';\nimport { ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyListModule } from 'ngx-tethys/list';\nimport { ThyActionMenuModule } from 'ngx-tethys/action-menu';\nimport { ThyInputModule } from 'ngx-tethys/input';\nimport { ThySelectModule } from 'ngx-tethys/select';\nimport { ThyButtonModule } from 'ngx-tethys/button';\nimport { ThyNotifyModule } from 'ngx-tethys/notify';\nimport { ThyAlertModule } from 'ngx-tethys/alert';\nimport { ThePlaceholderComponent } from './components/placeholder/placeholder.component';\nimport { TheColorSelectComponent } from './components/color-select/color-select.component';\nimport { TheColorToolbarItemComponent } from './plugins/color/toolbar-item.component';\nimport { TheCodeComponent } from './plugins/code/code.component';\nimport { CodemirrorModule } from 'ng-codemirror';\nimport { TheLinkComponent, TheReadonlyLinkComponent } from './plugins/link/link.component';\nimport { TheLinkEditComponent } from './plugins/link/edit/link-edit.component';\nimport { TheLinkHoverComponent } from './plugins/link/hover/link-hover.component';\nimport { TheTableToolbarComponent } from './plugins/table/components/toolbar/table-toolbar.component';\nimport { TheTableComponent } from './plugins/table/components/table.component';\nimport { TheTableRowComponent } from './plugins/table/components/row/row.component';\nimport { TheTdComponent } from './plugins/table/components/td/td.component';\nimport { TheContextMenuComponent } from './components/contextmenu/contextmenu.component';\nimport { TheColumnSizeModule } from './components/column-resize/column-resize.module';\nimport { TheInsertMarkComponent } from './plugins/table/components/insert-mark/insert-mark.component';\nimport { TheToolbarGroupComponent } from './components/toolbar-group/toolbar-group.component';\nimport { TheToolbarGroupToken } from './constants/toolbar';\nimport { TheTableSelectComponent } from './components/table-select/table-select.component';\nimport { TheTableToolbarItemComponent } from './plugins/table/toolbar-item.component';\nimport { TheConversionHintComponent } from './components/conversion-hint/conversion-hint.component';\nimport { TheVerticalToolbarItemComponent } from './plugins/vertical-align/toolbar-item.component';\n\nconst TETHYS = [\n ThyIconModule,\n ThyAvatarModule,\n ThyNavModule,\n ThyFormModule,\n ThySharedModule,\n ThyListModule,\n ThyTooltipModule,\n ThyProgressModule,\n ThyAutocompleteModule,\n ThyActionMenuModule,\n ThyInputModule,\n ThySelectModule,\n ThyButtonModule,\n ThyNotifyModule,\n ThyAlertModule\n];\n\nexport const COMPONENTS = [\n TheToolbarComponent,\n TheToolbarDropdownComponent,\n TheToolbarGroupComponent,\n TheToolbarItemComponent,\n NavSplitLineComponent,\n TheTextComponent,\n TheDefaultElementComponent,\n ThePlaceholderComponent,\n TheColorSelectComponent,\n TheColorToolbarItemComponent,\n TheContextMenuComponent,\n TheInsertMarkComponent,\n TheTableSelectComponent,\n TheTableToolbarItemComponent,\n TheConversionHintComponent,\n TheVerticalToolbarItemComponent\n];\n\nexport const PLUGIN_COMPONENTS = [\n TheImageComponent,\n TheTemplateComponent,\n TheHrComponent,\n TheBlockquoteComponent,\n TheTodoItemComponent,\n TheListItemComponent,\n TheBulletedListComponent,\n TheNumberedListComponent,\n TheCodeComponent,\n TheLinkComponent,\n TheReadonlyLinkComponent,\n TheLinkEditComponent,\n TheLinkHoverComponent,\n TheTableToolbarComponent,\n TheTableComponent,\n TheTableRowComponent,\n TheTdComponent\n];\n\nconst PIPES = [ElementStylePipe, ElementClassPipe];\n\n@NgModule({\n declarations: [TheEditorComponent, ...PIPES, ...COMPONENTS, ...PLUGIN_COMPONENTS],\n imports: [CommonModule, SlateModule, FormsModule, ...TETHYS, CodemirrorModule, TheColumnSizeModule],\n exports: [TheEditorComponent, TheToolbarComponent, TheToolbarDropdownComponent, TheToolbarItemComponent, TheDefaultElementComponent],\n entryComponents: [...COMPONENTS, ...PLUGIN_COMPONENTS],\n providers: [\n {\n provide: TheToolbarGroupToken,\n useValue: TheToolbarGroupComponent\n }\n ]\n})\nexport class TheEditorModule {}\n","/*\n * Public API Surface of editor\n */\nexport * from './editor.module';\nexport * from './interfaces';\nexport * from './constants';\nexport * from './plugins';\nexport * from './plugins/public-api';\nexport * from './custom-types';\nexport * from './plugins/image/image.component';\nexport * from './services/toolbar.service';\nexport * from './editor.component';\nexport * from './components/toolbar/toolbar.component';\nexport * from './components/toolbar-dropdown/toolbar-dropdown.component';\nexport * from './components/toolbar-group/toolbar-group.component';\nexport * from './components/toolbar-item/toolbar-item.component';\nexport * from './components/element/element.component';\nexport * as TheQueries from './queries/index';\nexport * as TheTransforms from './transforms/index';\nexport * from './utils/index';\nexport * from './services/context.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["TheMode","ElementKinds","Alignment","VerticalAlignment","MarkTypes","ToolbarActionTypes","InjectionToken","DropdownMode","ErrorCodes","BaseTextComponent","Component","BaseElementComponent","ChangeDetectionStrategy","AngularEditor","TheDataMode","ToolbarItemType","ToolbarAlignment","Element","Editor","getLastChild","Range","Node","NODE_TO_PARENT","NODE_TO_INDEX","Span","Path","Text","_lodash","Point","Transforms","TheQueries.anchorBlockEntry","TheQueries.isEmptyParagraph","TheQueries.findPath","isHotkey","TheQueries.isNodeTypeIn","TheQueries.getNode","TheQueries.isNodeType","TheQueries.isAncestor","TheQueries.getAboveByType","TheQueries.getNodesByType","isEmptyParagraph","TheQueries.anchorBlock","TheTransforms.unwrapNodesByType","TheQueries.isParagraph","TheQueries.isBlockActive","TheTransforms.closeConversionHint","Input","HostListener","TheiaConverter","ThyPopover","ViewContainerRef","ChangeDetectorRef","Overlay","marked","TheTransforms.insertTheElements","TheQueries.isAcrossBlocks","TheTransforms.splitNode","anchorBlock","anchorBlockEntry","TheQueries.isAncestorEmpty","HistoryEditor","IS_SAFARI","hotkeys","fromEvent","Injectable","map","ThyUploadStatus","Inject","ViewChild","TheQueries.isCollapsed","TheQueries.getParent","TheQueries.isStart","TheQueries.isRangeAtRoot","TheQueries.isBlockTextEmptyAfterSelection","TheQueries.getLastChildPath","TheTransforms.moveChildren","TheQueries.findDescendant","TheQueries.isFirstChild","Pipe","HostBinding","TheQueries.isBlockAboveEmpty","TheTransforms.onKeyDownResetBlockType","getPlainText","TheQueries.getPreviousPath","TheTransforms.setNode","TheQueries.getAnchorBlockEntry","TheQueries.isDescendant","TheTransforms.mergeDeepToNodes","TheQueries.getPointBefore","TheQueries.getText","TheQueries.getRangeFromBlockStart","TheQueries.someNode","TheQueries.getRangeBefore","TheQueries.getBlockAbove","TheQueries.getLastNode","hasBlockCard","isCardLeft","TheTransforms.insertParagraph","TheQueries.isEmptyParagraphByPath","TheQueries.getBlockCardAbove","FAKE_RIGHT_BLOCK_CARD_OFFSET","timer","TheQueries.getContainerBlocks","TheQueries.getSelectionNodesByType","TableOptions","TheTransforms.insertElement","ELEMENT_TO_COMPONENT","TheTransforms.setMarks","TheTransforms.handleContinualDeleteBackward","TheTransforms.handleContinualInsertBreak","Directive","TheQueries.getAbove","take","delay","TheTransforms.deleteElement","CodeMirrorComponent","SlateNode","isUrl","Subject","combineLatest","startWith","distinctUntilChanged","skip","share","Observable","BehaviorSubject","merge","filter","ReplaySubject","throttleTime","takeUntil","mapTo","debounceTime","index","ElementRef","coerceCssPixelValue","pairwise","DOCUMENT","PortalInjector","ComponentPortal","TemplateRef","TheTransforms.insertElementNext","TheQueries.isEmptyContent","EventEmitter","withHistory","withAngular","createEditor","TheTransforms.setEndSelection","mixinUnsubscribe","MixinBase","NG_VALUE_ACCESSOR","forwardRef","Output","NgModule","OverlayModule","ThyIconModule","ThyAvatarModule","ThyNavModule","ThyFormModule","ThySharedModule","ThyListModule","ThyTooltipModule","ThyProgressModule","ThyAutocompleteModule","ThyActionMenuModule","ThyInputModule","ThySelectModule","ThyButtonModule","ThyNotifyModule","ThyAlertModule","CommonModule","SlateModule","FormsModule","CodemirrorModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"worktile-theia.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","../../../packages/src/constants/default.ts","../../../packages/src/constants/node-types.ts","../../../packages/src/constants/toolbar.ts","../../../packages/src/constants/error.ts","../../../packages/src/constants/code.ts","../../../packages/src/components/text/text.component.ts","../../../packages/src/interfaces/view-base.ts","../../../packages/src/components/element/element.component.ts","../../../packages/src/interfaces/editor.ts","../../../packages/src/interfaces/toolbar.ts","../../../packages/src/interfaces/image.ts","../../../packages/src/interfaces/valid-children-types.ts","../../../packages/src/utils/id-creator.ts","../../../packages/src/queries/is-ancestor.ts","../../../packages/src/queries/get-last-node.ts","../../../packages/src/queries/is-collapsed.ts","../../../packages/src/queries/get-anchor-block-entry.ts","../../../packages/src/queries/is-empty-paragraph.ts","../../../packages/src/queries/is-paragraph.ts","../../../packages/src/queries/is-block-active.ts","../../../packages/src/queries/get-above-by-type.ts","../../../packages/src/queries/is-include-types.ts","../../../packages/src/queries/get-block-card-cursor.ts","../../../packages/src/queries/is-block-card-cursor.ts","../../../packages/src/queries/anchor-block-entry.ts","../../../packages/src/transforms/un-hang-range.ts","../../../packages/src/queries/get-nodes.ts","../../../packages/src/queries/get-nodes-by-type.ts","../../../packages/src/queries/anchor-block.ts","../../../packages/src/queries/get-block-above.ts","../../../packages/src/queries/is-ancestor-empty.ts","../../../packages/src/queries/is-block-above-empty.ts","../../../packages/src/queries/is-node-type-in.ts","../../../packages/src/queries/is-first-child.ts","../../../packages/src/queries/get-previous-path.ts","../../../packages/src/queries/get-node.ts","../../../packages/src/queries/get-parent.ts","../../../packages/src/queries/find-path.ts","../../../packages/src/utils/cast-array.ts","../../../packages/src/utils/match.ts","../../../packages/src/queries/find-node.ts","../../../packages/src/queries/find-descendant.ts","../../../packages/src/queries/get-last-child-path.ts","../../../packages/src/queries/is-point-at-root.ts","../../../packages/src/queries/is-range-at-root.ts","../../../packages/src/queries/get-next-sibling-nodes.ts","../../../packages/src/queries/is-block-text-empty-after-selection.ts","../../../packages/src/queries/get-above.ts","../../../packages/src/queries/is-start.ts","../../../packages/src/queries/is-range-across-blocks.ts","../../../packages/src/queries/some-node.ts","../../../packages/src/queries/get-children.ts","../../../packages/src/queries/is-descendant.ts","../../../packages/src/queries/is-node-type.ts","../../../packages/src/queries/anchor-inline-entry.ts","../../../packages/src/queries/anchor-inline.ts","../../../packages/src/utils/lodash.ts","../../../packages/src/queries/get-point-before.ts","../../../packages/src/queries/get-selection-nodes-by-type.ts","../../../packages/src/utils/fragment.ts","../../../packages/src/queries/is-across-blocks.ts","../../../packages/src/queries/get-text.ts","../../../packages/src/queries/get-point-from-location.ts","../../../packages/src/queries/get-rang-from-block-start.ts","../../../packages/src/queries/get-range-before.ts","../../../packages/src/queries/is-empty-content.ts","../../../packages/src/queries/get-block-card-above.ts","../../../packages/src/queries/get-plain-text.ts","../../../packages/src/queries/is-empty-paragraph-by-path.ts","../../../packages/src/queries/get-selection-marks.ts","../../../packages/src/queries/is-container-type.ts","../../../packages/src/queries/get-container-blocks.ts","../../../packages/src/transforms/set-marks.ts","../../../packages/src/transforms/clear-marks.ts","../../../packages/src/transforms/insert-element.ts","../../../packages/src/transforms/insert-element-next.ts","../../../packages/src/transforms/set-node.ts","../../../packages/src/transforms/unwrap-nodes-by-type.ts","../../../packages/src/transforms/on-keydown-reset-block-type.ts","../../../packages/src/transforms/move-children.ts","../../../packages/src/utils/create-empty-paragraph.ts","../../../packages/src/transforms/insert-paragraph.ts","../../../packages/src/transforms/apply-deep-to-nodes.ts","../../../packages/src/transforms/merge-deep-to-nodes.ts","../../../packages/src/transforms/un-wrap.ts","../../../packages/src/transforms/split-node.ts","../../../packages/src/transforms/delete-element.ts","../../../packages/src/transforms/set-end-selection.ts","../../../packages/src/transforms/insert-elements.ts","../../../packages/src/utils/weak-maps.ts","../../../packages/src/transforms/close-conversion-hint.ts","../../../packages/src/transforms/handle-continual-delete-backward.ts","../../../packages/src/transforms/handle-continual-insert-break.ts","../../../packages/src/plugins/list/queries/is-node-type-list.ts","../../../packages/src/plugins/list/list.editor.ts","../../../packages/src/plugins/todo-item/todo-item.editor.ts","../../../packages/src/plugins/blockquote/blockquote.editor.ts","../../../packages/src/constants/auto-format-rules.ts","../../../packages/src/plugins/common/history.plugin.ts","../../../packages/src/components/conversion-hint/conversion-hint.component.ts","../../../packages/src/components/conversion-hint/conversion-hint.component.html","../../../packages/src/utils/data-transform.ts","../../../packages/src/utils/editor-uuid.ts","../../../packages/src/utils/get-toolbar-class.ts","../../../packages/src/plugins/deserializers/deserialize-md.plugin.ts","../../../packages/src/plugins/common/auto-insert-data..ts","../../../packages/src/plugins/common/remove-empty.plugin.ts","../../../packages/src/plugins/common/reset-type.plugin.ts","../../../packages/src/services/context.service.ts","../../../packages/src/plugins/image/image.component.ts","../../../packages/src/plugins/image/image.component.html","../../../packages/src/plugins/image/image.editor.ts","../../../packages/src/plugins/image/image.plugin.ts","../../../packages/src/plugins/indent/on-keydown-indent.ts","../../../packages/src/plugins/indent/indent.plugin.ts","../../../packages/src/plugins/list/queries/is-list.ts","../../../packages/src/plugins/list/queries/is-in-list.ts","../../../packages/src/plugins/list/queries/is-list-nested.ts","../../../packages/src/plugins/list/queries/get-list-types.ts","../../../packages/src/plugins/list/queries/get-start-list-item.ts","../../../packages/src/plugins/list/queries/has-list-in-list-item.ts","../../../packages/src/plugins/list/queries/is-single-list-item.ts","../../../packages/src/plugins/list/queries/get-list-item-entry.ts","../../../packages/src/plugins/list/queries/is-selection-at-list-item-start.ts","../../../packages/src/plugins/list/transforms/insert-list-data.ts","../../../packages/src/plugins/list/transforms/move-list-item-up.ts","../../../packages/src/plugins/list/transforms/insert-list-item.ts","../../../packages/src/plugins/list/transforms/unwrap-list.ts","../../../packages/src/plugins/list/queries/get-list-item-sublist.ts","../../../packages/src/plugins/list/transforms/move-list-item-sublist-items-to-list-item-sublist.ts","../../../packages/src/plugins/list/normalizers/normalize-list-item.ts","../../../packages/src/plugins/list/normalizers/normalize-no.ts","../../../packages/src/plugins/list/normalizers/get-list-normalizer.ts","../../../packages/src/plugins/list/transforms/move-list-item-sublist-items-to-list.ts","../../../packages/src/plugins/list/transforms/move-list-item-down.ts","../../../packages/src/plugins/list/on-key-down-list.ts","../../../packages/src/pipes.ts","../../../packages/src/plugins/list/components/numbered-list.component.ts","../../../packages/src/plugins/list/components/bulleted-list.component.ts","../../../packages/src/plugins/list/components/list-item.component.ts","../../../packages/src/plugins/list/queries/is-selection-in-same-list-item.ts","../../../packages/src/plugins/list/list.plugin.ts","../../../packages/src/utils/dom.ts","../../../packages/src/plugins/todo-item/todo-item.component.ts","../../../packages/src/plugins/todo-item/todo-item.plugin.ts","../../../packages/src/plugins/hr/hr.component.ts","../../../packages/src/plugins/hr/hr.plugin.ts","../../../packages/src/plugins/align/align.plugin.ts","../../../packages/src/plugins/heading/heading.plugin.ts","../../../packages/src/plugins/mark/mark.plugin.ts","../../../packages/src/plugins/node-id/node-id.plugin.ts","../../../packages/src/plugins/autoformat/transforms/auto-format-block.ts","../../../packages/src/plugins/autoformat/transforms/auto-format-inline.ts","../../../packages/src/plugins/autoformat/autoformat.plugin.ts","../../../packages/src/plugins/common/transforms.plugin.ts","../../../packages/src/plugins/normalizers/trailing-node.plugin.ts","../../../packages/src/plugins/common/block-card.plugin.ts","../../../packages/src/plugins/common/move-selection.plugin.ts","../../../packages/src/plugins/common/get-fragment.plugin.ts","../../../packages/src/plugins/todo-item/options.ts","../../../packages/src/plugins/table/table.types.ts","../../../packages/src/plugins/table/utils/create-cell.ts","../../../packages/src/plugins/table/utils/create-row.ts","../../../packages/src/plugins/table/utils/create-table.ts","../../../packages/src/plugins/table/utils/table-position.ts","../../../packages/src/plugins/table/utils/is-range-in-table.ts","../../../packages/src/plugins/table/utils/is-selection-in-table.ts","../../../packages/src/plugins/table/utils/calc-span.ts","../../../packages/src/plugins/table/utils/add-columns.ts","../../../packages/src/plugins/table/transforms/insert-column.ts","../../../packages/src/plugins/table/transforms/insert-row.ts","../../../packages/src/plugins/table/transforms/insert-table.ts","../../../packages/src/plugins/table/transforms/clear-cell.ts","../../../packages/src/plugins/table/utils/remove-columns.ts","../../../packages/src/plugins/table/transforms/remove-column.ts","../../../packages/src/plugins/table/transforms/remove-row.ts","../../../packages/src/plugins/table/utils/next-path.ts","../../../packages/src/plugins/table/transforms/remove-table.ts","../../../packages/src/plugins/table/table.editor.ts","../../../packages/src/plugins/mark/mark.editor.ts","../../../packages/src/plugins/mark/options.ts","../../../packages/src/plugins/list/options.ts","../../../packages/src/plugins/image/options.ts","../../../packages/src/plugins/hr/hr.editor.ts","../../../packages/src/plugins/hr/options.ts","../../../packages/src/plugins/heading/heading.editor.ts","../../../packages/src/plugins/heading/options.ts","../../../packages/src/plugins/blockquote/options.ts","../../../packages/src/plugins/align/align.editor.ts","../../../packages/src/plugins/align/options.ts","../../../packages/src/plugins/blockquote/blockquote.component.ts","../../../packages/src/plugins/blockquote/blockquote.plugin.ts","../../../packages/src/constants/color-select.ts","../../../packages/src/components/color-select/color-select.component.ts","../../../packages/src/components/color-select/color-select.component.html","../../../packages/src/services/color-select.service.ts","../../../packages/src/plugins/color/color.editor.ts","../../../packages/src/components/toolbar-base-item/toolbar-base-item.component.ts","../../../packages/src/plugins/color/toolbar-item.component.ts","../../../packages/src/plugins/color/options.ts","../../../packages/src/plugins/common/remove-void.plugin.ts","../../../packages/src/plugins/code/code.editor.ts","../../../packages/src/plugins/code/options.ts","../../../packages/src/components/toolbar-dropdown/toolbar-dropdown.component.ts","../../../packages/src/components/toolbar-dropdown/toolbar-dropdown.component.html","../../../packages/src/plugins/code/code.component.ts","../../../packages/src/plugins/code/code.component.html","../../../packages/src/plugins/code/code.plugin.ts","../../../packages/src/plugins/link/link.types.ts","../../../packages/src/plugins/link/link.editor.ts","../../../packages/src/plugins/link/options.ts","../../../packages/src/plugins/link/hover/link-hover.component.ts","../../../packages/src/plugins/link/hover/link-hover.component.html","../../../packages/src/plugins/link/edit/link-edit.component.ts","../../../packages/src/plugins/link/edit/link-edit.component.html","../../../packages/src/plugins/link/link.component.ts","../../../packages/src/plugins/normalizers/remove-empty-nodes.ts","../../../packages/src/plugins/link/link.plugin.ts","../../../packages/src/components/table-select/table-select.component.ts","../../../packages/src/components/table-select/table-select.component.html","../../../packages/src/plugins/table/toolbar-item.component.ts","../../../packages/src/plugins/table/options.ts","../../../packages/src/components/column-resize/column-resize-notifier.ts","../../../packages/src/components/column-resize/event-dispatcher.ts","../../../packages/src/plugins/table/utils/get-select-cell-node.ts","../../../packages/src/plugins/table/utils/merge-cell.ts","../../../packages/src/plugins/table/table.store.ts","../../../packages/src/plugins/table/utils/split-cell.ts","../../../packages/src/plugins/table/utils/set-menu-cell-invisibility.ts","../../../packages/src/components/nav-split-line/nav-split-line.component.ts","../../../packages/src/plugins/table/components/toolbar/table-toolbar.component.ts","../../../packages/src/plugins/table/components/toolbar/table-toolbar.component.html","../../../packages/src/plugins/table/utils/is-virtual-key.ts","../../../packages/src/components/contextmenu/contextmenu.component.ts","../../../packages/src/components/contextmenu/contextmenu.component.html","../../../packages/src/services/table-contextmenu.service.ts","../../../packages/src/plugins/table/table.service.ts","../../../packages/src/constants/selector.ts","../../../packages/src/plugins/table/components/insert-mark/insert-mark.component.ts","../../../packages/src/plugins/table/components/insert-mark/insert-mark.component.html","../../../packages/src/components/column-resize/selectors.ts","../../../packages/src/components/column-resize/column-resize.directive.ts","../../../packages/src/plugins/table/components/table.component.ts","../../../packages/src/plugins/table/components/table.component.html","../../../packages/src/plugins/table/transforms/clear-table-node.ts","../../../packages/src/plugins/table/utils/calc-anchor-position.ts","../../../packages/src/plugins/table/components/row/row.component.ts","../../../packages/src/components/column-resize/resizing.store.ts","../../../packages/src/components/column-resize/resize-ref.ts","../../../packages/src/components/column-resize/overlay-handle.component.ts","../../../packages/src/plugins/table/utils/get-base-height.ts","../../../packages/src/plugins/table/components/td/td.component.ts","../../../packages/src/plugins/table/components/td/td.component.html","../../../packages/src/plugins/table/table.plugin.ts","../../../packages/src/plugins/normalizers/insert-paragraph-nodes.ts","../../../packages/src/plugins/deserializers/deserialize-html.plugin.ts","../../../packages/src/plugins/vertical-align/vertical-align.editor.ts","../../../packages/src/plugins/vertical-align/toolbar-item.component.ts","../../../packages/src/plugins/vertical-align/toolbar-item.component.html","../../../packages/src/plugins/vertical-align/options.ts","../../../packages/src/plugins/paint-format/paint-format.editor.ts","../../../packages/src/plugins/paint-format/options.ts","../../../packages/src/utils/is-clean-empty-paragraph.ts","../../../packages/src/components/toolbar-item/toolbar-item.component.ts","../../../packages/src/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.ts","../../../packages/src/plugins/quick-insert/components/quick-toolbar/quick-toolbar.component.html","../../../packages/src/plugins/quick-insert/quick-insert.editor.ts","../../../packages/src/plugins/quick-insert/quick-insert.plugint.ts","../../../packages/src/plugins/index.ts","../../../packages/src/shortcuts/mark.ts","../../../packages/src/shortcuts/index.ts","../../../packages/src/services/toolbar.service.ts","../../../packages/src/utils/auto-focus.ts","../../../packages/src/utils/get-editable-element-height.ts","../../../packages/src/utils/auto-scroll-view.ts","../../../packages/src/components/toolbar/toolbar.component.ts","../../../packages/src/components/toolbar/toolbar.component.html","../../../packages/src/components/inline-toolbar/inline-toolbar.component.ts","../../../packages/src/plugins/quick-insert/components/quick-insert.component.ts","../../../packages/src/plugins/quick-insert/components/quick-insert.component.html","../../../packages/src/plugins/placeholder/placeholder.component.ts","../../../packages/src/components/template/template.component.ts","../../../packages/src/components/template/template.component.html","../../../packages/src/editor.component.ts","../../../packages/src/editor.component.html","../../../packages/src/components/column-resize/column-resize.module.ts","../../../packages/src/components/toolbar-group/toolbar-group.component.ts","../../../packages/src/components/toolbar-group/toolbar-group.component.html","../../../packages/src/editor.module.ts","../../../packages/src/public-api.ts","../../../packages/src/worktile-theia.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export const PICTURE_ACCEPTED_UPLOAD_MIME = ['image/png', 'image/jpeg', 'image/gif', 'image/bmp'];\nexport const PICTURE_ACCEPTED_UPLOAD_SIZE = 20;\nexport const A_TAG_REL_ATTR = 'noopener noreferrer nofollow external ugc';\nexport const LINK_DEFAULT_TEXT = '链接';\nexport const TAB_SPACE = ' ';\nexport const ZERO_WIDTH_CHAR = '\\u200B';\nexport const CLIPBOARD_FORMAT_KEY = 'x-theia-fragment';\nexport const DEFAULT_SCROLL_CONTAINER = '.the-editable-container';\nexport const BLOCK_INSERT_ORIGIN = 'block-insert';\nexport const ELEMENT_UNIQUE_ID = 'key';\n\nexport enum TheMode {\n fullMode = 'full',\n liteMode = 'lite'\n}\n","import { CustomElementKinds } from '../custom-types';\n\nexport enum ElementKinds {\n image = 'image',\n paragraph = 'paragraph',\n headingList = 'heading-list',\n heading_1 = 'heading-one',\n heading_2 = 'heading-two',\n heading_3 = 'heading-three',\n heading_4 = 'heading-four',\n heading_5 = 'heading-five',\n heading_6 = 'heading-six',\n numberedList = 'numbered-list',\n bulletedList = 'bulleted-list',\n listItem = 'list-item',\n checkItem = 'check-item',\n table = 'table',\n tableRow = 'table-row',\n tableCell = 'table-cell',\n tableContent = 'paragraph',\n code = 'code',\n blockquote = 'block-quote',\n hr = 'hr',\n link = 'link',\n default = 'paragraph'\n}\n\nexport enum Alignment {\n left = 'left',\n center = 'center',\n right = 'right'\n}\n\nexport enum VerticalAlignment {\n top = 'top',\n middle = 'middle',\n bottom = 'bottom'\n}\n\nexport enum MarkTypes {\n bold = 'bold',\n italic = 'italic',\n underline = 'underlined',\n strike = 'strike',\n color = 'color',\n backgroundColor = 'background-color',\n codeLine = 'code-line'\n}\n\nexport enum ToolbarActionTypes {\n split = 'split',\n undo = 'undo',\n redo = 'redo',\n paintformat = 'paintformat',\n clean = 'clean',\n alignType = 'align-type',\n alignLeft = 'align-left',\n alignCenter = 'align-center',\n alignRight = 'align-right',\n verticalAlign = 'vertical-align',\n verticalAlignTop = 'vertical-align-top',\n verticalAlignMiddle = 'vertical-align-middle',\n verticalAlignBottom = 'vertical-align-bottom',\n headingList = 'heading-list',\n tableRemove = 'table-remove',\n tableDeleteRows = 'table-delete-rows',\n tableDeleteColumns = 'table-delete-columns'\n}\n\nexport const MarkProps: Array<MarkTypes> = [\n MarkTypes.backgroundColor,\n MarkTypes.bold,\n MarkTypes.codeLine,\n MarkTypes.color,\n MarkTypes.italic,\n MarkTypes.strike,\n MarkTypes.underline\n];\n\nexport const THE_INLINE_TOOLBAR_TYPES: Array<ElementKinds> = [ElementKinds.default, ElementKinds.listItem, ElementKinds.checkItem];\n\nexport const STANDARD_HEADING_TYPES: CustomElementKinds[] = [\n ElementKinds.heading_1,\n ElementKinds.heading_2,\n ElementKinds.heading_3,\n ElementKinds.heading_4\n];\n\nexport const HEADING_TYPES: CustomElementKinds[] = [...STANDARD_HEADING_TYPES, ElementKinds.heading_5, ElementKinds.heading_6];\n\nexport const ALIGN_BLOCK_TYPES: CustomElementKinds[] = [ElementKinds.default, ElementKinds.listItem, ElementKinds.image, ...HEADING_TYPES];\n\nexport const CONTAINER_BLOCKS: CustomElementKinds[] = [ElementKinds.blockquote, ElementKinds.tableCell];\n\nexport const LIST_BLOCK_TYPES: CustomElementKinds[] = [ElementKinds.numberedList, ElementKinds.bulletedList];\n\nexport const VOID_BLOCK_TYPES: CustomElementKinds[] = [ElementKinds.image, ElementKinds.hr];\n\nexport const BLOCK_DELETEBACKWARD_TYPES: CustomElementKinds[] = [ElementKinds.tableCell];\n","import { ComponentType } from 'slate-angular';\nimport { InjectionToken } from '@angular/core';\nimport { ElementKinds, MarkTypes } from './node-types';\nimport { ToolbarItem, ToolbarKey } from '../interfaces';\nimport { ToolbarActionTypes, STANDARD_HEADING_TYPES } from '../constants/node-types';\nimport type { TheToolbarGroupComponent } from '../components/toolbar-group/toolbar-group.component';\n\nexport const TheToolbarGroupToken = new InjectionToken<ComponentType<TheToolbarGroupComponent>>('the-toolbar-group-token');\n\nexport const QUICK_TOOLBAR_HOTKEY = '/';\n\nexport enum DropdownMode {\n icon = 'icon-mode',\n text = 'text-mode'\n}\n\nexport enum ToolbarItemMode {\n horizontal,\n vertical\n}\n\nexport const DefaultGlobalToolbarDefinition: ToolbarKey[] = [\n ElementKinds.headingList,\n ToolbarActionTypes.split,\n MarkTypes.bold,\n MarkTypes.italic,\n MarkTypes.underline,\n MarkTypes.strike,\n MarkTypes.codeLine,\n MarkTypes.color,\n MarkTypes.backgroundColor,\n ToolbarActionTypes.split,\n ToolbarActionTypes.alignType,\n ToolbarActionTypes.verticalAlign,\n ToolbarActionTypes.split,\n ElementKinds.numberedList,\n ElementKinds.bulletedList,\n ElementKinds.checkItem,\n ToolbarActionTypes.split,\n ElementKinds.link,\n ElementKinds.image,\n ElementKinds.table,\n ElementKinds.blockquote,\n ElementKinds.code\n];\n\nexport const DefaultInlineToolbarDefinition: ToolbarKey[] = [\n ToolbarActionTypes.clean,\n ToolbarActionTypes.split,\n MarkTypes.bold,\n MarkTypes.italic,\n MarkTypes.underline,\n MarkTypes.strike,\n MarkTypes.codeLine,\n MarkTypes.color,\n MarkTypes.backgroundColor,\n ToolbarActionTypes.split,\n ToolbarActionTypes.alignType,\n ToolbarActionTypes.split,\n ElementKinds.link\n];\n\nexport const DefaultQuickToolbarDefinition: ToolbarKey[] = [\n ...STANDARD_HEADING_TYPES,\n ToolbarActionTypes.split,\n ElementKinds.numberedList,\n ElementKinds.bulletedList,\n ElementKinds.checkItem,\n ToolbarActionTypes.split,\n ElementKinds.link,\n ElementKinds.image,\n ElementKinds.table,\n ElementKinds.blockquote,\n ElementKinds.hr,\n ElementKinds.code\n];\n\nexport const ToolbarMoreGroup: ToolbarItem = {\n key: 'more',\n icon: 'more'\n};\n","export enum ErrorCodes {\n UNKNOW_ERROR = 1000,\n IMAGE_ERR_MIME_FORMAT = 1001,\n IMAGE_ERR_SIZE_LIMIT = 1002\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const DEFAULT_LANGUAGE = {\n showName: 'JavaScript',\n value: 'javascript'\n};\n\nexport const CODE_MODES = [\n {\n showName: 'Plain Text',\n value: ''\n },\n {\n showName: 'C-like',\n value: 'clike'\n },\n DEFAULT_LANGUAGE,\n {\n showName: 'CSS',\n value: 'css'\n },\n {\n showName: 'Dart',\n value: 'dart'\n },\n {\n showName: 'Django',\n value: 'django'\n },\n {\n showName: 'Dockerfile',\n value: 'dockerfile'\n },\n {\n showName: 'Go',\n value: 'go'\n },\n {\n showName: 'Markdown',\n value: 'markdown'\n },\n {\n showName: 'Nginx',\n value: 'nginx'\n },\n {\n showName: 'PHP',\n value: 'php'\n },\n {\n showName: 'Python',\n value: 'python'\n },\n {\n showName: 'Shell',\n value: 'shell'\n },\n {\n showName: 'SQL',\n value: 'sql'\n },\n {\n showName: 'Swift',\n value: 'swift'\n },\n {\n showName: 'HTML',\n value: 'htmlmixed'\n }\n];\n\nexport const CodeMode = {\n default: 'default',\n print: 'print'\n};\nexport type CodeMode = 'default' | 'print';\n\nexport class TheCodeMode {\n mode: CodeMode;\n}\n\nexport const THE_CODE_MODE_TOKEN = new InjectionToken<TheCodeMode>('the-code-mode');\n\nexport const THE_CODE_MODE_PROVIDER = {\n provide: THE_CODE_MODE_TOKEN,\n useValue: {\n mode: CodeMode.default\n }\n};\n\nexport const CODEMIRROR_PADDING_TOP = 10;\n","import { ChangeDetectorRef, Component, ElementRef, Renderer2 } from '@angular/core';\nimport { BaseTextComponent } from 'slate-angular';\nimport { MarkTypes } from '../../constants';\n\n@Component({\n selector: 'span[theText]',\n template: `<slate-leaves [context]=\"context\" [viewContext]=\"viewContext\"></slate-leaves>`,\n host: {\n 'data-slate-node': 'text'\n }\n})\nexport class TheTextComponent extends BaseTextComponent {\n constructor(public elementRef: ElementRef, public renderer2: Renderer2, cdr: ChangeDetectorRef) {\n super(elementRef, cdr);\n }\n\n excludes = ['color', 'background-color', 'text'];\n attributes = [];\n\n applyTextMark() {\n this.attributes.forEach(attr => {\n this.renderer2.removeAttribute(this.elementRef.nativeElement, attr);\n });\n this.attributes = [];\n for (const key in this.text) {\n if (Object.prototype.hasOwnProperty.call(this.text, key) && !this.excludes.includes(key) && !!this.text[key]) {\n const attr = `the-${key}`;\n this.renderer2.setAttribute(this.elementRef.nativeElement, attr, 'true');\n this.attributes.push(attr);\n }\n }\n\n if (this.text[MarkTypes.color]) {\n this.renderer2.setStyle(this.elementRef.nativeElement, 'color', this.text[MarkTypes.color]);\n } else {\n this.renderer2.removeStyle(this.elementRef.nativeElement, 'color');\n }\n if (this.text[MarkTypes.backgroundColor]) {\n this.renderer2.setStyle(this.elementRef.nativeElement, 'background-color', this.text[MarkTypes.backgroundColor]);\n } else {\n this.renderer2.removeStyle(this.elementRef.nativeElement, 'background-color');\n }\n }\n\n onContextChange() {\n super.onContextChange();\n this.applyTextMark();\n }\n}\n","import { Component, OnInit } from '@angular/core';\nimport { AngularEditor, BaseElementComponent } from 'slate-angular';\nimport { Editor, Element } from 'slate';\n\n@Component({\n selector: 'TheBaseElementComponent',\n template: ''\n})\nexport class TheBaseElementComponent<T extends Element = Element, K extends AngularEditor = Editor>\n extends BaseElementComponent<T, K>\n implements OnInit\n{\n ngOnInit() {\n this.context.attributes['data-slate-key'] = this.context.element.key as string;\n super.ngOnInit();\n const blockClass = this.editor.isInline(this.element) ? 'slate-inline-block' : 'slate-block';\n this.nativeElement.classList.add(`slate-element-${this.element.type}`, blockClass);\n }\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { TheBaseElementComponent } from '../../interfaces/view-base';\n\n@Component({\n selector: '[theDefaultElement]',\n template: '<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TheDefaultElementComponent extends TheBaseElementComponent {}\n","import { ElementOptionsInfo } from './valid-children-types';\nimport { Ancestor, Range, Path, Point, Node, Span, NodeEntry, Editor, Element, Text } from 'slate';\nimport { AngularEditor, ViewType } from 'slate-angular';\nimport { HistoryEditor } from 'slate-history';\n// import * as TheQueries from '../queries';\n// import * as TheTransforms from '../transforms';\nimport { Predicate } from '../utils/match';\nimport { ToolbarOption } from './toolbar';\n\nexport interface TheEditor extends AngularEditor, HistoryEditor {\n renderElement: (element: Element) => ViewType;\n renderLeaf: (text: Text) => ViewType;\n insertElement: (element: Element) => void;\n isContainer: (element: Element) => boolean;\n extraElementOptions: ElementOptionsInfo[];\n disabled: boolean;\n [key: string]: any;\n}\n\nexport const TheEditor = {\n ...AngularEditor\n};\n\nexport interface ThePlugin {\n (editor: Editor): Editor;\n}\n\nexport enum TheDataMode {\n json = 'json',\n html = 'html'\n}\n\nexport interface TheOptions {\n readonly?: boolean;\n mode?: TheDataMode;\n disabled?: boolean;\n autoFocus?: boolean;\n placeholder?: string;\n scrollContainer?: string;\n maxHeight?: number;\n toolbar?: ToolbarOption;\n disablePlugins?: string[];\n extraElementOptions?: ElementOptionsInfo[];\n}\n\nexport type NodeMatch<T = Node> = Predicate<T>;\n\nexport interface MatchOptions<T = Node> {\n match?: NodeMatch<T>;\n block?: boolean;\n}\n\nexport interface EditorAboveOptions<T = Ancestor> extends MatchOptions<T> {\n at?: Range | Path | Point;\n mode?: 'highest' | 'lowest';\n voids?: boolean;\n}\n\nexport interface EditorNodesOptions {\n at?: Range | Path | Point | Span;\n match?: (node: Node) => boolean;\n mode?: 'highest' | 'lowest' | 'all';\n universal?: boolean;\n reverse?: boolean;\n voids?: boolean;\n}\n\nexport interface WrapOptions {\n at?: Path | Point | Range;\n match?: (node: Node) => boolean;\n mode?: 'highest' | 'lowest' | 'all';\n split?: boolean;\n voids?: boolean;\n}\n\nexport interface EditorParentOptions {\n depth?: number | undefined;\n edge?: 'start' | 'end' | undefined;\n}\n\nexport interface QueryOptions {\n // Condition on the node to be valid.\n filter?: (entry: NodeEntry<Node>) => boolean;\n // List of types that are valid. If empty or undefined - allow all.\n allow?: string[];\n // List of types that are invalid.\n exclude?: string[];\n}\n\nexport interface DomEventDataInfo {\n inputType?: string;\n key?: string;\n text?: string;\n json?: Node[];\n}\n","import { ComponentType } from '@angular/cdk/portal';\nimport { Editor } from 'slate';\nimport { ElementKinds, MarkTypes, DropdownMode } from '../constants';\n\nexport type ToolbarKey = MarkTypes | ElementKinds | string;\n\nexport enum ToolbarItemType {\n default = 'default',\n toolDropdown = 'tool-dropdown'\n}\n\nexport enum ToolbarAlignment {\n left = 'start',\n center = 'center',\n right = 'end'\n}\n\nexport type ToolbarDefinition = {\n global?: string[];\n inline?: string[];\n quick?: string[];\n};\n\ninterface ToolbarItemBase {\n key: ToolbarKey;\n execute?: (editor: Editor) => void;\n active?: (editor: Editor) => boolean | string;\n disable?: (editor: Editor) => boolean | string;\n transformToolbar?: (editor: Editor) => ToolbarDefinition | void;\n styles?: { [key: string]: string };\n includes?: (ToolbarKey | ToolbarItem)[];\n}\n\nexport interface CustomizeToolbarItem extends ToolbarItemBase {\n iconComponent?: ComponentType<any>;\n quickItemComponent?: ComponentType<any>;\n type?: ToolbarItemType;\n dropdownMode?: DropdownMode;\n}\n\nexport interface DefaultToolbarItem extends ToolbarItemBase {\n icon?: string;\n name?: string;\n type?: ToolbarItemType;\n}\n\nexport type ToolbarItem = CustomizeToolbarItem & DefaultToolbarItem;\n\nexport type ToolbarEntity = {\n global?: ToolbarItem[];\n inline?: ToolbarItem[];\n quick?: ToolbarItem[];\n};\n\nexport interface ToolbarInitOption {\n toolbarDefinition: ToolbarDefinition;\n toolbarEntity: ToolbarEntity;\n toolbarOperations: Map<string, ToolbarItem>;\n}\n\nexport interface ToolbarOption extends ToolbarDefinition {\n align?: ToolbarAlignment;\n toolbarItems?: ToolbarItem[];\n}\n\nexport interface ToolbarItemsComposeReturn {\n items: ToolbarItem[];\n group: ToolbarItem[];\n}\n","import { Observable } from 'rxjs';\nimport { UploadFileEntity, FileUploadingItem } from './upload';\nimport { InjectionToken } from '@angular/core';\nimport { SafeUrl } from '@angular/platform-browser';\nimport { Alignment } from '../constants';\n\nexport interface ImageEntry {\n file?: File;\n name?: string;\n width?: number;\n height?: number;\n thumbUrl?: SafeUrl | string;\n originUrl?: SafeUrl | string;\n align?: Alignment;\n}\n\nexport interface TheImageUploaderService {\n uploadFileHandle: (files: any) => Observable<UploadFileEntity[]>;\n getUploadingItems$: () => Observable<FileUploadingItem[]>;\n}\n\nexport const THE_UPLOAD_SERVICE_TOKEN = new InjectionToken<TheImageUploaderService>('THE_UPLOAD_SERVICE_TOKEN');\n","import { ElementKinds, HEADING_TYPES } from '../constants/node-types';\nimport { CustomElementKinds } from '../custom-types';\n\nexport interface ElementOptionsInfo {\n type: CustomElementKinds;\n inValidChildrenTypes: CustomElementKinds[];\n isIndivisible?: boolean;\n}\nexport const inValidTypes: CustomElementKinds[] = [\n ElementKinds.table,\n ElementKinds.tableCell,\n ElementKinds.blockquote,\n ElementKinds.hr,\n ElementKinds.code\n];\n\nexport const DefaultElementOptions: ElementOptionsInfo[] = [\n {\n type: ElementKinds.bulletedList,\n inValidChildrenTypes: [...inValidTypes, ...HEADING_TYPES]\n },\n {\n type: ElementKinds.numberedList,\n inValidChildrenTypes: [...inValidTypes, ...HEADING_TYPES]\n },\n {\n type: ElementKinds.listItem,\n inValidChildrenTypes: [...inValidTypes, ...HEADING_TYPES]\n },\n {\n type: ElementKinds.blockquote,\n inValidChildrenTypes: inValidTypes\n },\n {\n type: ElementKinds.table,\n inValidChildrenTypes: [ElementKinds.table]\n },\n {\n type: ElementKinds.tableCell,\n inValidChildrenTypes: [ElementKinds.table, ElementKinds.tableCell]\n }\n];\n","export function idCreator(length = 5) {\n // remove numeral\n const $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz'; /****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/\n const maxPosition = $chars.length;\n let key = '';\n for (let i = 0; i < length; i++) {\n key += $chars.charAt(Math.floor(Math.random() * maxPosition));\n }\n return key;\n}\n","import { Ancestor, Editor, Element, Node } from 'slate';\n\nexport const isAncestor = (node: Node): node is Ancestor => Element.isElement(node) || Editor.isEditor(node);\n","import { Editor, Node, NodeEntry } from 'slate';\nimport { isAncestor } from './is-ancestor';\n\nconst getLastChild = (node: Node, level: number): Node => {\n if (!(level + 1) || !isAncestor(node)) {\n return node;\n }\n\n const { children } = node;\n const lastNode = children[children.length - 1];\n\n return getLastChild(lastNode, level - 1);\n};\n\nexport const getLastNode = (editor: Editor, level: number): NodeEntry => {\n const { children } = editor;\n const lastNode = children[children.length - 1];\n const [, lastPath] = Editor.last(editor, []);\n\n return [getLastChild(lastNode, level - 1), lastPath.slice(0, level + 1)];\n};\n","import { Range } from 'slate';\n\n/**\n * See {@link Range.isCollapsed}.\n * Return false if `range` is not defined.\n */\nexport const isCollapsed = (range?: Range | null) => !!range && Range.isCollapsed(range);\n","import { Editor, NodeEntry, Path, Point, Element } from 'slate';\n\nexport const getAnchorBlockEntry = (editor: Editor, at?: Path | Point): NodeEntry<Element> => {\n return Editor.above<Element>(editor, {\n match: n => Editor.isBlock(editor, n),\n at\n });\n};\n","import { Editor, Path, Point } from 'slate';\nimport { ElementKinds } from '../constants/node-types';\nimport { getAnchorBlockEntry } from './get-anchor-block-entry';\n\nexport const isEmptyParagraph = (editor: Editor, at?: Path | Point) => {\n const [block] = getAnchorBlockEntry(editor, at);\n return Editor.isEmpty(editor, block) && block.type === ElementKinds.paragraph;\n};\n","import { Editor, Element } from 'slate';\nimport { ElementKinds } from '../constants/node-types';\n\nexport const isParagraph = (editor: Editor) => {\n const [match] = Editor.nodes(editor, {\n match: n => Element.isElement(n) && n.type === ElementKinds.paragraph\n });\n return !!match;\n};\n","import { Editor, Element } from 'slate';\nimport { CustomElementKinds } from '../custom-types';\n\nexport const isBlockActive = (editor: Editor, format: CustomElementKinds) => {\n const [match] = Editor.nodes(editor, {\n match: n => Element.isElement(n) && n.type === format\n });\n return !!match;\n};\n","import { Editor, Element } from 'slate';\nimport { EditorAboveOptions } from '../interfaces';\n\n/**\n * Get the block above a location (default: selection) by type.\n */\nexport const getAboveByType = (editor: Editor, types: string[] | string, options: Omit<EditorAboveOptions, 'match'> = {}) => {\n if (!Array.isArray(types)) {\n types = [types];\n }\n\n return Editor.above(editor, {\n match: n => Element.isElement(n) && types.includes(n.type),\n ...options\n });\n};\n","import { Editor, Element } from 'slate';\nimport { CustomElementKinds } from '../custom-types';\nimport { getAboveByType } from './get-above-by-type';\n\nexport const isIncludeTypes = (editor: Editor, types: CustomElementKinds[]) => {\n const parentType = [];\n types.map((item: string) => {\n const entry = getAboveByType(editor, item);\n if (entry) {\n parentType.push((entry[0] as Element).type);\n }\n });\n return parentType.length > 0;\n};\n","import { Editor } from 'slate';\n\nexport const getBlockCardCenterCursor = (editor: Editor) => {\n return Editor.start(editor, editor.selection.anchor.path);\n};\n","import { Editor } from 'slate';\n\nexport const isBlockCardCursor = (editor: Editor) => {\n return editor.selection.anchor.offset < 0;\n};\n","import { Editor, NodeEntry, Path, Point, Element } from 'slate';\nimport { getBlockCardCenterCursor } from './get-block-card-cursor';\nimport { isBlockCardCursor } from './is-block-card-cursor';\n\nexport const anchorBlockEntry = (editor: Editor, at?: Path | Point): NodeEntry<Element> | undefined => {\n if (!at && isBlockCardCursor(editor)) {\n at = getBlockCardCenterCursor(editor);\n }\n\n return Editor.above<Element>(editor, {\n match: n => Editor.isBlock(editor, n),\n at\n });\n};\n","import { Editor, Path, Point, Range, Span } from 'slate';\n\nexport interface UnhangRangeOptions {\n at?: Range | Path | Point | Span;\n voids?: boolean;\n unhang?: boolean;\n}\n\n/**\n * Return {@link Editor.unhangRange} if `unhang` is true and if `at` (default: selection) is a range.\n */\nexport const unhangRange = (editor: Editor, options: UnhangRangeOptions = {}) => {\n const { at = editor.selection, voids, unhang = true } = options;\n\n if (Range.isRange(at) && unhang) {\n options.at = Editor.unhangRange(editor, at, { voids });\n }\n};\n","import { Editor } from 'slate';\nimport { EditorNodesOptions } from '../interfaces';\nimport { unhangRange, UnhangRangeOptions } from '../transforms/un-hang-range';\n\nexport const getNodes = (editor: Editor, options: EditorNodesOptions & UnhangRangeOptions = {}) => {\n unhangRange(editor, options);\n\n return Editor.nodes(editor, options);\n};\n","import { Editor, Element } from 'slate';\nimport { EditorNodesOptions } from '../interfaces';\nimport { getNodes } from './get-nodes';\n\n/**\n * Get the nodes with a type included in `types` at a location (default: selection).\n */\nexport const getNodesByType = (editor: Editor, types: string[] | string, options: Omit<EditorNodesOptions, 'match'> = {}) => {\n if (!Array.isArray(types)) {\n types = [types];\n }\n\n return getNodes(editor, {\n match: n => Element.isElement(n) && types.includes(n.type as string),\n ...options\n });\n};\n","import { Editor, Element } from 'slate';\nimport { anchorBlockEntry } from './anchor-block-entry';\n\nexport const anchorBlock = (editor: Editor): Element => {\n const entry = anchorBlockEntry(editor, editor.selection.anchor);\n return entry ? entry[0] : null;\n};\n","import { Ancestor, Editor, NodeEntry } from 'slate';\nimport { EditorAboveOptions } from '../interfaces';\n\n/**\n * Get the block above a location (default: selection).\n * If not found, return the editor entry.\n */\nexport const getBlockAbove = (editor: Editor, options: Omit<EditorAboveOptions, 'match'> = {}): NodeEntry<Ancestor> =>\n Editor.above(editor, {\n match: n => Editor.isBlock(editor, n),\n ...options\n }) || [editor, []];\n","import { Ancestor, Editor, Node } from 'slate';\n\n/**\n * Is an ancestor empty (empty text and no inline children).\n */\nexport const isAncestorEmpty = (editor: Editor, node: Ancestor) =>\n !Node.string(node) && !node.children.some(n => Editor.isInline(editor, n));\n","import { Editor } from 'slate';\nimport { getBlockAbove } from './get-block-above';\nimport { isAncestorEmpty } from './is-ancestor-empty';\n\n/**\n * Is the block above the selection empty.\n */\nexport const isBlockAboveEmpty = (editor: Editor) => {\n const blockEntry = getBlockAbove(editor);\n const [block] = blockEntry;\n return isAncestorEmpty(editor, block);\n};\n","import { Editor } from 'slate';\nimport { EditorNodesOptions } from '../interfaces';\nimport { getNodesByType } from './get-nodes-by-type';\n\n/**\n * Is there a node with a type included in `types` at a location (default: selection).\n */\nexport const isNodeTypeIn = (editor: Editor, types: string[] | string, options: Omit<EditorNodesOptions, 'match'> = {}) => {\n const [match] = getNodesByType(editor, types, options);\n return !!match;\n};\n","import { Path } from 'slate';\n\n/**\n * Is it the first child of the parent\n */\nexport const isFirstChild = (path: Path) => path[path.length - 1] === 0;\n","import { Path } from 'slate';\n\nexport const getPreviousPath = (path: Path): Path | undefined => {\n if (path.length === 0) return;\n\n const last = path[path.length - 1];\n\n if (last <= 0) return;\n\n return path.slice(0, -1).concat(last - 1);\n};\n","import { Editor, Node, Path } from 'slate';\n\nexport const getNode = (editor: Editor, path: Path) => {\n try {\n return Node.get(editor, path);\n } catch (err) {\n return null;\n }\n};\n","import { Ancestor, Editor, Location, NodeEntry } from 'slate';\nimport { EditorParentOptions } from '../interfaces';\n\n/**\n * See {@link Editor.parent}.\n * Returns undefined if there is no parent.\n */\nexport const getParent = (editor: Editor, at: Location, options?: EditorParentOptions): NodeEntry<Ancestor> | undefined => {\n try {\n return Editor.parent(editor, at, options);\n } catch (error) {}\n};\n","import { AngularEditor, NODE_TO_INDEX, NODE_TO_PARENT } from 'slate-angular';\nimport { Editor, Node, Path } from 'slate';\n\n/**\n * Find the path of Slate node.\n */\nexport const findPath = (editor: AngularEditor, node: Node): Path => {\n const path: Path = [];\n let child = node;\n\n while (true) {\n const parent = NODE_TO_PARENT.get(child);\n\n if (parent == null) {\n if (Editor.isEditor(child)) {\n return path;\n } else {\n break;\n }\n }\n\n const i = NODE_TO_INDEX.get(child);\n\n if (i == null) {\n break;\n }\n\n path.unshift(i);\n child = parent;\n }\n throw new Error(`Unable to find the path for Slate node: ${JSON.stringify(node)}`);\n};\n","export function castArray(data?: any) {\n if (!data) {\n return [];\n }\n return Array.isArray(data) ? data : [data];\n}\n","import { Editor } from 'slate';\nimport { castArray } from './cast-array';\n\nexport type PredicateObj<T> = Partial<Record<keyof T, any | any[]>>;\nexport type PredicateFn<T> = (obj: T) => boolean;\nexport type Predicate<T> = PredicateObj<T> | PredicateFn<T>;\n\n/**\n * Match the object with a predicate object or function.\n * If predicate is:\n * - object: every predicate key/value should be in obj.\n * - function: it should return true.\n */\nexport const match = <T>(obj: T, predicate?: Predicate<T>): boolean => {\n if (!predicate) return true;\n\n if (typeof predicate === 'object') {\n return Object.entries(predicate).every(([key, value]) => {\n const values = castArray(value);\n\n return values.includes(obj[key]);\n });\n }\n\n return predicate(obj);\n};\n\nexport const matchPredicate =\n <T>(predicate?: Predicate<T>) =>\n (obj: T) =>\n match(obj, predicate);\n\n/**\n * Extended query options for slate queries:\n * - `match` can be an object predicate where one of the values should include the node value.\n * Example: { type: ['1', '2'] } will match the nodes having one of these 2 types.\n */\nexport const getQueryOptions = <T>(editor: Editor, options: any) => {\n return {\n ...options,\n match: (n: T) => match<T>(n, options.match) && (!options?.block || Editor.isBlock(editor, n))\n };\n};\n","/**\n * Iterate through all of the nodes in the editor and return the first match. If\n * no match is found, return undefined.\n */\nimport { Editor, Location, Node, NodeEntry, Path, Range, Span } from 'slate';\nimport { MatchOptions } from '../interfaces';\nimport { match } from '../utils/match';\n\nexport type FindNodeOptions<T extends Node = Node> = {\n at?: Location | Span;\n reverse?: boolean;\n voids?: boolean;\n} & MatchOptions<T>;\n\n/**\n * Find node matching the condition.\n */\nexport const findNode = <T extends Node = Node>(editor: Editor, options: FindNodeOptions<T>): NodeEntry<T> | undefined => {\n // Slate throws when things aren't found so we wrap in a try catch and return undefined on throw.\n try {\n const { match: _match = () => true, at = editor.selection || [], reverse = false, voids = false } = options;\n\n let from;\n let to;\n if (Span.isSpan(at)) {\n [from, to] = at;\n } else if (Range.isRange(at)) {\n const first = Editor.path(editor, at, { edge: 'start' });\n const last = Editor.path(editor, at, { edge: 'end' });\n from = reverse ? last : first;\n to = reverse ? first : last;\n }\n\n let root: NodeEntry = [editor, []];\n if (Path.isPath(at)) {\n root = Editor.node(editor, at);\n }\n\n const nodeEntries = Node.nodes(root[0], {\n reverse,\n from,\n to,\n pass: ([n]) => (voids ? false : Editor.isVoid(editor, n))\n });\n\n for (const [node, path] of nodeEntries) {\n if (match<Node>(node, _match)) {\n return [node as any, path];\n }\n }\n } catch (error) {\n return undefined;\n }\n};\n","/**\n * Iterate through all of the nodes in the editor and return the first match. If\n * no match is found, return undefined.\n */\nimport { Editor, Node, NodeEntry, Path, Range, Span } from 'slate';\nimport { match } from '../utils/match';\nimport { FindNodeOptions } from './find-node';\n\n/**\n * Get the first descendant node matching the condition.\n */\nexport const findDescendant = <T extends Node = Node>(editor: Editor, options: FindNodeOptions<T>): NodeEntry<T> | undefined => {\n // Slate throws when things aren't found so we wrap in a try catch and return undefined on throw.\n try {\n const { match: _match, at = editor.selection, reverse = false, voids = false } = options;\n\n if (!at) return;\n\n let from;\n let to;\n if (Span.isSpan(at)) {\n [from, to] = at;\n } else if (Range.isRange(at)) {\n const first = Editor.path(editor, at, { edge: 'start' });\n const last = Editor.path(editor, at, { edge: 'end' });\n from = reverse ? last : first;\n to = reverse ? first : last;\n }\n\n let root: NodeEntry = [editor, []];\n if (Path.isPath(at)) {\n root = Editor.node(editor, at);\n }\n\n const nodeEntries = Node.descendants(root[0], {\n reverse,\n from,\n to,\n pass: ([n]) => (voids ? false : Editor.isVoid(editor, n))\n });\n\n for (const [node, path] of nodeEntries) {\n if (match<Node>(node, _match)) {\n return [node as any, (at as Path).concat(path)];\n }\n }\n } catch (error) {\n return undefined;\n }\n};\n","import { Ancestor, Descendant, NodeEntry, Path } from 'slate';\n\n/**\n * Get the last child of a node\n */\nexport const getLastChild = (nodeEntry: NodeEntry<Ancestor>): NodeEntry<Descendant> => {\n const [node, path] = nodeEntry;\n\n return [node.children[node.children.length - 1], path.concat([node.children.length - 1])];\n};\n\nexport const getLastChildPath = (nodeEntry: NodeEntry<Ancestor>): Path => getLastChild(nodeEntry)[1];\n","import { Point } from 'slate';\n\nexport const isPointAtRoot = (point: Point) => point.path.length === 2;\n","import { Range } from 'slate';\nimport { isPointAtRoot } from './is-point-at-root';\n\nexport const isRangeAtRoot = (range: Range) => isPointAtRoot(range.anchor) || isPointAtRoot(range.focus);\n","import { Ancestor, Descendant, NodeEntry, Path } from 'slate';\n\n/**\n * Get the next sibling nodes after a path.\n * @param ancestorEntry Ancestor of the sibling nodes\n * @param path Path of the reference node\n */\nexport const getNextSiblingNodes = (ancestorEntry: NodeEntry<Ancestor>, path: Path) => {\n const [ancestor, ancestorPath] = ancestorEntry;\n\n const leafIndex = path[ancestorPath.length];\n\n const siblings: Descendant[] = [];\n\n if (leafIndex + 1 < ancestor.children.length) {\n for (let i = leafIndex + 1; i < ancestor.children.length; i++) {\n siblings.push(ancestor.children[i]);\n }\n }\n\n return siblings;\n};\n","import { Editor, Text } from 'slate';\nimport { getBlockAbove } from './get-block-above';\nimport { getNextSiblingNodes } from './get-next-sibling-nodes';\n\n/**\n * Is there empty text after the selection.\n * If there is no leaf after the selected leaf, return {@link Editor.isEnd}.\n * Else, check if the next leaves are empty.\n */\nexport const isBlockTextEmptyAfterSelection = (editor: Editor) => {\n if (!editor.selection) {\n return false;\n }\n\n const blockAbove = getBlockAbove(editor);\n\n const cursor = editor.selection.focus;\n\n if (!Editor.isEnd(editor, cursor, Editor.parent(editor, editor.selection)[1])) {\n return false;\n }\n\n const siblingNodes = getNextSiblingNodes(blockAbove, cursor.path);\n\n if (siblingNodes.length) {\n for (const siblingNode of siblingNodes) {\n if ((siblingNode as Text).text) {\n return false;\n }\n }\n } else {\n return Editor.isEnd(editor, cursor, blockAbove[1]);\n }\n\n return true;\n};\n","import { Ancestor, Editor } from 'slate';\nimport { EditorAboveOptions } from '../interfaces';\nimport { getQueryOptions } from '../utils/match';\n\n/**\n * Get node above a location (default: selection).\n */\nexport const getAbove = <T = Ancestor>(editor: Editor, options: EditorAboveOptions<T> = {}) => {\n return Editor.above(editor, getQueryOptions(editor, options));\n};\n","import { Editor, Location, Point } from 'slate';\n\n/**\n * {@link Editor.isStart}. If point is null, return false.\n */\nexport const isStart = (editor: Editor, point: Point | null | undefined, at: Location): boolean =>\n !!point && Editor.isStart(editor, point, at);\n","import { Editor, Path, Range } from 'slate';\nimport { EditorAboveOptions } from '../interfaces';\nimport { getBlockAbove } from './get-block-above';\n\n/**\n * Is the range (default: selection) across blocks.\n */\nexport const isRangeAcrossBlocks = (\n editor: Editor,\n { at, ...options }: Omit<EditorAboveOptions, 'at' | 'match'> & { at?: Range | null } = {}\n) => {\n if (!at) at = editor.selection;\n if (!at) return false;\n\n const [start, end] = Range.edges(at);\n const startBlock = getBlockAbove(editor, {\n at: start,\n ...options\n });\n const endBlock = Editor.above(editor, {\n at: end,\n ...options\n });\n\n return startBlock && endBlock && !Path.equals(startBlock[1], endBlock[1]);\n};\n","import { Editor, Node } from 'slate';\nimport { findNode, FindNodeOptions } from './find-node';\n\n/**\n * Iterate through all of the nodes in the editor and break early for the first truthy match. Otherwise\n * returns false.\n */\nexport const someNode = <T extends Node = Node>(editor: Editor, options: FindNodeOptions<T>) => {\n return !!findNode<T>(editor, options);\n};\n","import { Node, NodeEntry, Path, Element } from 'slate';\n\n/**\n * Get children node entries of a node entry.\n * TODO: try Node.children\n */\nexport const getChildren = (nodeEntry: NodeEntry) => {\n const [node, path] = nodeEntry;\n\n const children = (Element.isElement(node) && (node.children as Node[])) || [];\n\n return children.map((child, index) => {\n const childPath = path.concat([index]) as Path;\n return [child, childPath] as NodeEntry;\n });\n};\n","import { Descendant, Element, Text } from 'slate';\n\nexport const isDescendant = (node: any): node is Descendant => Element.isElement(node) || Text.isText(node);\n","import { Node, NodeEntry, Element } from 'slate';\nimport { QueryOptions } from '../interfaces';\n\n/**\n * Is the node entry filling a condition.\n */\nexport const isNodeType = (entry?: NodeEntry<Node>, { filter = () => true, allow = [], exclude = [] }: QueryOptions = {}) => {\n let filterAllow: typeof filter = () => true;\n if (allow.length) {\n filterAllow = ([n]) => allow.includes((n as Element).type as string);\n }\n\n let filterExclude: typeof filter = () => true;\n if (exclude.length) {\n filterExclude = ([n]) => !exclude.includes((n as Element).type as string);\n }\n\n return !!entry && filter(entry) && filterAllow(entry) && filterExclude(entry);\n};\n","import { Editor, Element } from 'slate';\n\nexport const anchorInlineEntry = (editor: Editor) => {\n const match = Editor.above<Element>(editor, {\n match: n => Editor.isInline(editor, n)\n });\n if (match) {\n return match;\n }\n};\n","import { Editor } from 'slate';\nimport { anchorInlineEntry } from './anchor-inline-entry';\n\nexport const anchorInline = (editor: Editor) => {\n return anchorInlineEntry(editor)[0];\n};\n","import * as _lodash from 'lodash';\nexport const _ = _lodash;\n","import { Editor, Location, Path, Point } from 'slate';\nimport { castArray } from '../utils/cast-array';\nimport { _ } from '../utils/lodash';\n\nexport interface BeforeOptions {\n distance?: number | undefined;\n unit?: 'character' | 'word' | 'line' | 'block' | 'offset' | undefined;\n}\n\nexport interface PointBeforeOptions extends BeforeOptions {\n /**\n * Lookup before the location for `matchString`.\n */\n matchString?: string | string[];\n\n /**\n * Lookup before the location until this predicate is true\n */\n match?: (value: { beforeString: string; beforePoint: Point; at: Location }) => boolean;\n\n /**\n * If true, get the point after the matching point.\n * If false, get the matching point.\n */\n afterMatch?: boolean;\n\n /**\n * If true, lookup until the start of the editor value.\n * If false, lookup until the first invalid character.\n */\n skipInvalid?: boolean;\n\n /**\n * Allow lookup across multiple node paths.\n */\n multiPaths?: boolean;\n}\n\n/**\n * {@link Editor.before} with additional options.\n * TODO: support for sequence of any characters.\n */\nexport const getPointBefore = (editor: Editor, at: Location, options?: PointBeforeOptions) => {\n if (!options || (!options.match && !options.matchString)) {\n return Editor.before(editor, at, options);\n }\n\n let beforeAt = at;\n let previousBeforePoint = Editor.point(editor, at, { edge: 'end' });\n\n const stackLength = (options.matchString ? options.matchString.length : 0) + 1;\n const stack = Array(stackLength);\n\n const unitOffset = !options.unit || options.unit === 'offset';\n\n let count = 0;\n while (true) {\n const beforePoint = Editor.before(editor, beforeAt, options);\n\n // not found\n if (!beforePoint) {\n return;\n }\n\n // different path\n if (!options.multiPaths && !Path.equals(beforePoint.path, previousBeforePoint.path)) {\n return;\n }\n\n const beforeString = Editor.string(editor, {\n anchor: beforePoint,\n focus: previousBeforePoint\n });\n\n const matchString: string[] = castArray(options.matchString);\n\n let beforeStringToMatch = beforeString;\n\n if (unitOffset && stackLength) {\n stack.unshift({\n point: beforePoint,\n text: beforeString\n });\n stack.pop();\n\n beforeStringToMatch = _.map(stack.slice(0, -1), 'text').join('');\n }\n\n if (\n matchString.includes(beforeStringToMatch) ||\n (options.match ? options.match({ beforeString: beforeStringToMatch, beforePoint, at }) : '')\n ) {\n if (options.afterMatch) {\n if (stackLength && unitOffset) {\n return stack[stack.length - 1] ? stack[stack.length - 1].point : '';\n }\n return previousBeforePoint;\n }\n return beforePoint;\n }\n\n previousBeforePoint = beforePoint;\n beforeAt = beforePoint;\n\n count += 1;\n\n if (!options.skipInvalid) {\n if (!matchString || count > matchString.length) {\n return;\n }\n }\n }\n};\n","import { Node, Descendant, NodeEntry, Editor, Element } from 'slate';\nimport { CustomElementKinds } from '../custom-types';\nimport { getAboveByType } from './get-above-by-type';\n\nexport const getSelectionNodesByType = (editor: Editor, fragmentData: Descendant[], types: CustomElementKinds[] = []): Node => {\n try {\n const { selection } = editor;\n const nodes = Editor.node(editor, selection);\n const nodeType = (nodes[0] as Element).type;\n if (types.length > 0) {\n if (types.includes(nodeType)) {\n return Node.get(fragmentData[0], new Array(nodes[1].length - 1).fill(0));\n } else {\n let parentNode: NodeEntry;\n for (let i = 0; i < types.length; i++) {\n parentNode = getAboveByType(editor, types[i], { mode: 'lowest' });\n if (parentNode) {\n break;\n }\n }\n if (parentNode) {\n return Node.get(fragmentData[0], new Array(parentNode[1].length - 1).fill(0));\n }\n }\n }\n } catch (err) {\n return null;\n }\n};\n","import { Editor, Element, Text, Node } from 'slate';\nimport { CLIPBOARD_FORMAT_KEY, ELEMENT_UNIQUE_ID } from '../constants/default';\n\nexport const getStartBlock = (editor: Editor, fragment: Element) => {\n const firstChild = fragment.children && fragment.children[0];\n if (firstChild && !Editor.isInline(editor, firstChild) && !Text.isText(firstChild) && Element.isElement(firstChild)) {\n return getStartBlock(editor, firstChild);\n }\n return fragment;\n};\n\nexport const getEndBlock = (editor: Editor, fragment: Element) => {\n const lastChild = fragment.children && fragment.children[fragment.children.length - 1];\n if (lastChild && !Editor.isInline(editor, lastChild) && !Text.isText(lastChild) && Element.isElement(lastChild)) {\n return getEndBlock(editor, lastChild);\n }\n return fragment;\n};\n\nexport const extractFragment = (data: DataTransfer, deleteKey = ELEMENT_UNIQUE_ID) => {\n const fragment = data.getData(`application/${CLIPBOARD_FORMAT_KEY}`);\n if (fragment) {\n const decoded = decodeURIComponent(window.atob(fragment));\n const nodes = JSON.parse(decoded) as Element[];\n // delete key to avoid duplicate keys\n if (deleteKey) {\n deleteElementKey(nodes, deleteKey);\n }\n return nodes;\n }\n return null;\n}\n\nexport function deleteElementKey(nodes: Node[], key: string) {\n nodes.forEach((node) => {\n if (node[key]) {\n delete node[key];\n }\n if (Element.isElement(node) && node.children) {\n deleteElementKey(node.children, key);\n }\n });\n return nodes;\n}\n","import { Editor, Element } from 'slate';\nimport { getStartBlock, getEndBlock } from '../utils/fragment';\n\nexport const isAcrossBlocks = (editor: Editor, fragment: Element[]) => {\n const startBlock = getStartBlock(editor, fragment[0]);\n const endBlock = getEndBlock(editor, fragment[fragment.length - 1]);\n return startBlock && endBlock && startBlock !== endBlock;\n};\n","import { Editor, Location } from 'slate';\n\n/**\n * See {@link Editor.string}.\n * If `at` is not defined, return an empty string.\n */\nexport const getText = (editor: Editor, at?: Location | null) => {\n return at && Editor.string(editor, at);\n};\n","import { Editor, Location, Path, Point, Range } from 'slate';\n\nexport const getPointFromLocation = (\n editor: Editor,\n {\n at = editor.selection,\n focus\n }: {\n at?: Location | null;\n focus?: boolean;\n } = {}\n) => {\n let point: Point | undefined;\n if (Range.isRange(at)) {\n point = !focus ? at.anchor : at.focus;\n }\n if (Point.isPoint(at)) {\n point = at;\n }\n if (Path.isPath(at)) {\n point = { path: at, offset: 0 };\n }\n\n return point;\n};\n","import { Editor } from 'slate';\nimport { EditorAboveOptions } from '../interfaces';\nimport { getBlockAbove } from './get-block-above';\nimport { getPointFromLocation } from './get-point-from-location';\n\n/**\n * Get the range from the start of the block above a location (default: selection) to the location.\n */\nexport const getRangeFromBlockStart = (editor: Editor, options: Omit<EditorAboveOptions, 'match'> = {}) => {\n const [, path] = getBlockAbove(editor, options);\n\n const start = Editor.start(editor, path);\n\n const focus = getPointFromLocation(editor, options);\n\n if (!focus) {\n return false;\n }\n\n return { anchor: start, focus };\n};\n","import { Editor, Location, Range } from 'slate';\nimport { getPointBefore, PointBeforeOptions } from './get-point-before';\n\nexport type RangeBeforeOptions = PointBeforeOptions;\n\n/**\n * Get range from {@link getPointBefore} to the end point of `at`.\n */\nexport const getRangeBefore = (editor: Editor, at: Location, options?: RangeBeforeOptions): Range | undefined => {\n const anchor = getPointBefore(editor, at, options);\n if (!anchor) {\n return;\n }\n\n const focus = Editor.point(editor, at, { edge: 'end' });\n\n return {\n anchor,\n focus\n };\n};\n","import { Descendant, Node, Element } from 'slate';\nimport { ElementKinds } from '../constants/node-types';\n\nexport const isEmptyContent = (children: Descendant[]) => {\n if (!children || children.length < 1) {\n return true;\n }\n if (children && children.length === 1) {\n const firstNode = children[0] as Element;\n if (firstNode.type === ElementKinds.default && !Node.string(firstNode)) {\n return true;\n }\n }\n return false;\n};\n","import { Ancestor, Editor, NodeEntry } from 'slate';\nimport { EditorAboveOptions } from '../interfaces/editor';\n\n/**\n * Get the block above a location (default: selection).\n * If not found, return the editor entry.\n */\nexport const getBlockCardAbove = (editor: Editor, options: Omit<EditorAboveOptions, 'match'> = {}): NodeEntry<Ancestor> =>\n Editor.above(editor, {\n match: n => editor.isBlockCard(n),\n ...options\n });\n","import { Editor, Node } from 'slate';\n\n/**\n * get plain text\n * can specify node text interval, the default is \\n\n */\nexport const getPlainText = (editor: Editor, format = '\\n') => {\n let text = '';\n if (editor && editor?.children) {\n for (let i = 0; i < editor?.children.length; i++) {\n const node = editor?.children[i];\n text += `${i === 0 ? '' : format}${Node.string(node)}`;\n }\n }\n return text;\n};\n","import { Editor, Node, Path, Element } from 'slate';\nimport { ElementKinds } from '../constants/node-types';\n\nexport const isEmptyParagraphByPath = (editor: Editor, at: Path) => {\n const block = Node.get(editor, at) as Element;\n return Editor.isEmpty(editor, block) && block.type === ElementKinds.paragraph;\n};\n","import { Editor, NodeEntry, Text } from 'slate';\nimport { MarkTypes, MarkProps } from '../constants';\n\nexport const getSelectionMarks = (editor: Editor): { [key in MarkTypes]?: any } => {\n const matchs = Editor.nodes(editor, { match: Text.isText });\n const marks = {};\n for (const match of matchs) {\n const [node] = match as NodeEntry<Text>;\n const { text, ...rest } = node;\n Object.assign(marks, rest);\n }\n for (const key in marks) {\n if (!MarkProps.includes(key as MarkTypes)) {\n delete marks[key];\n }\n }\n return marks;\n};\n","import { Element, Editor } from 'slate';\n\nexport const isContainer = (editor: Editor, value: Element) => Element.isElement(value) && editor.isContainer(value);\n","import { CONTAINER_BLOCKS } from '../constants/node-types';\nimport { Editor, Element } from 'slate';\nimport { isContainer } from './is-container-type';\n\nexport const getContainerBlocks = (editor: Editor) => {\n const containerNode = Editor.above<Element>(editor, {\n match: (node: Element) => {\n return Element.isElement(node) && isContainer(editor, node) && !CONTAINER_BLOCKS.includes(node.type);\n }\n });\n return !containerNode ? CONTAINER_BLOCKS : [...CONTAINER_BLOCKS, containerNode[0].type];\n};\n","import { Editor, Path, Point, Range, Text, Transforms } from 'slate';\nimport { MarkTypes } from '../constants';\n\nexport const setMarks = (editor: Editor, marks: { [key in MarkTypes]?: any }, at?: Path | Point | Range) => {\n Transforms.setNodes(editor, marks, {\n at,\n match: Text.isText,\n split: true\n });\n};\n","import { Editor, Range } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { MarkProps, MarkTypes } from '../constants/node-types';\nimport { setMarks } from './set-marks';\n\nexport const clearMarks = (editor: Editor) => {\n const { selection } = editor;\n if (!selection) {\n return;\n }\n\n if (Range.isCollapsed(selection)) {\n const marks = Editor.marks(editor);\n for (const key in marks) {\n Editor.removeMark(editor, key);\n }\n } else {\n const unsetMarks: { [key in MarkTypes]?: null | string } = {};\n MarkProps.forEach(key => {\n unsetMarks[key] = null;\n });\n setMarks(editor, unsetMarks);\n }\n};\n","import { Editor, Element } from 'slate';\nimport { TheEditor } from '../interfaces';\n\nexport const insertElement = (editor: TheEditor, element: Element) => editor.insertElement(element);\n","import { Editor, Range, Path, Transforms, Element } from 'slate';\nimport * as TheQueries from '../queries';\n\nexport const insertElementNext = (editor: Editor, node: Element) => {\n if (Range.isExpanded(editor.selection)) {\n Editor.deleteFragment(editor);\n }\n\n const anchorBlockPath = TheQueries.anchorBlockEntry(editor)[1];\n const isEmpty = TheQueries.isEmptyParagraph(editor);\n const nextPath = Path.next([anchorBlockPath[0]]);\n\n Transforms.insertNodes(editor, node, { at: nextPath });\n\n if (isEmpty && anchorBlockPath.length === 1) {\n Transforms.delete(editor, { at: anchorBlockPath });\n Transforms.select(editor, Editor.start(editor, anchorBlockPath));\n } else {\n Transforms.select(editor, Editor.start(editor, nextPath));\n }\n};\n","import { Editor, Transforms, Element } from 'slate';\nimport * as TheQueries from '../queries';\n\nexport const setNode = (editor: Editor, props: Partial<Element>, origin: Element) => {\n Transforms.setNodes(editor, props, { at: TheQueries.findPath(editor, origin) });\n};\n","import { Editor, Transforms, Element } from 'slate';\nimport { WrapOptions } from '../interfaces';\n\n/**\n * Unwrap nodes by type\n */\nexport const unwrapNodesByType = (editor: Editor, types: string[] | string, options: Omit<WrapOptions, 'match'> = {}) => {\n if (!Array.isArray(types)) {\n types = [types];\n }\n Transforms.unwrapNodes(editor, {\n match: n => Element.isElement(n) && types.includes(n.type as string),\n ...options\n });\n};\n","import isHotkey from 'is-hotkey';\nimport { Editor, Transforms, Element } from 'slate';\nimport { ResetBlockTypePluginOptions } from '../interfaces/reset-block-type-plugin-options';\nimport * as TheQueries from '../queries';\nimport { isCollapsed } from '../queries/is-collapsed';\n\nexport const onKeyDownResetBlockType =\n ({ rules }: ResetBlockTypePluginOptions) =>\n (event: KeyboardEvent | null, editor: Editor) => {\n let reset: boolean | undefined;\n\n if (editor.selection && isCollapsed(editor.selection)) {\n rules.forEach(({ types, defaultType, hotkey, predicate, onReset }) => {\n if (!event || (hotkey && isHotkey(hotkey, event))) {\n if (predicate(editor) && TheQueries.isNodeTypeIn(editor, types)) {\n if (event !== null) {\n event.preventDefault();\n }\n Transforms.setNodes(editor, { type: defaultType } as Element);\n\n onReset(editor);\n\n reset = true;\n }\n }\n });\n }\n\n return reset;\n };\n","import { Editor, Node, NodeEntry, Path, Transforms } from 'slate';\nimport * as TheQueries from '../queries';\n\nexport interface MoveChildrenOptions {\n /**\n * Parent node of the children to move.\n */\n at: NodeEntry | Path;\n\n /**\n * Path where to move the children.\n */\n to: Path;\n\n /**\n * Start index of the children to move.\n * Example: 1 means children[0] will not be moved.\n */\n start?: number;\n\n /**\n * Condition for the child to be moved\n */\n match?(entry: NodeEntry): boolean;\n}\n\n/**\n * 将节点的子级移动到路径。 返回移动的子级数。\n */\nexport const moveChildren = (editor: Editor, { at, to, match, start = 0 }: MoveChildrenOptions) => {\n let moved = 0;\n const parentPath = Path.isPath(at) ? at : at[1];\n const parentNode = Path.isPath(at) ? Node.get(editor, parentPath) : at[0];\n\n if (!Editor.isBlock(editor, parentNode)) return moved;\n\n for (let i = parentNode.children.length - 1; i >= start; i--) {\n const childPath = [...parentPath, i];\n const childNode = TheQueries.getNode(editor, childPath);\n\n if (!match || (childNode && match([childNode, childPath]))) {\n Transforms.moveNodes(editor, { at: childPath, to });\n moved++;\n }\n }\n\n return moved;\n};\n","import { Element } from 'slate';\nimport { ElementKinds } from '../constants/node-types';\nimport { idCreator } from './id-creator';\n\nexport const createEmptyParagraph: () => Element = () => {\n return {\n type: ElementKinds.paragraph,\n key: idCreator(),\n children: [\n {\n text: ''\n }\n ]\n };\n};\n","import { Editor, Location, Transforms } from 'slate';\nimport { createEmptyParagraph } from '../utils/create-empty-paragraph';\n\nexport const insertParagraph = (editor: Editor, at: Location) => {\n Transforms.insertNodes(editor, createEmptyParagraph(), { at });\n};\n","import { Descendant, Node, NodeEntry } from 'slate';\nimport { QueryOptions } from '../interfaces';\nimport * as TheQueries from '../queries';\n\nexport interface ApplyDeepToNodesOptions {\n // The destination node object.\n node: Node;\n // The source object. Can be a factory.\n source: Record<string, any> | (() => Record<string, any>);\n // Function to call on each node following the query.\n apply: (node: Node, source: Record<string, any> | (() => Record<string, any>)) => void;\n // Query to filter the nodes.\n query?: QueryOptions;\n}\n\n/**\n * Recursively apply an operation to children nodes with a query.\n */\nexport const applyDeepToNodes = ({ node, source, apply, query }: ApplyDeepToNodesOptions) => {\n const entry: NodeEntry<Node> = [node, []];\n\n if (TheQueries.isNodeType(entry, query)) {\n if (source instanceof Function) {\n apply(node, source());\n } else {\n apply(node, source);\n }\n }\n\n if (!TheQueries.isAncestor(node)) {\n return;\n }\n\n node.children.forEach((child: Descendant) => {\n applyDeepToNodes({ node: child, source, apply, query });\n });\n};\n","import { _ } from '../utils/lodash';\nimport { applyDeepToNodes, ApplyDeepToNodesOptions } from './apply-deep-to-nodes';\n\n/**\n * Recursively merge a source object to children nodes with a query.\n */\nexport const mergeDeepToNodes = (options: Omit<ApplyDeepToNodesOptions, 'apply'>) => {\n applyDeepToNodes({ ...options, apply: _.defaults });\n};\n","import { Editor, Transforms, Element } from 'slate';\nimport { CustomElementKinds } from '../custom-types';\nimport { ElementKinds } from '../constants/node-types';\n\nexport const unWrap = (editor: Editor, kind: CustomElementKinds) => {\n Editor.withoutNormalizing(editor, () => {\n Transforms.setNodes(editor, { type: ElementKinds.paragraph });\n Transforms.unwrapNodes(editor, {\n match: n => Element.isElement(n) && n.type === kind,\n split: true\n });\n });\n};\n","import { Transforms, Path, Editor, Element, NodeEntry } from 'slate';\nimport { CustomElementKinds } from '../custom-types';\nimport * as TheQueries from '../queries';\n\nexport const splitNode = (editor: Editor, indivisibleTypes: CustomElementKinds[]): Path => {\n const { selection } = editor;\n const indivisibleType = indivisibleTypes && indivisibleTypes.find(item => TheQueries.getAboveByType(editor, item, { mode: 'highest' }));\n let splitPath: Path;\n if (!indivisibleType) {\n Transforms.splitNodes(editor, {\n always: true,\n mode: 'highest'\n });\n splitPath = [selection.anchor.path[0]];\n } else {\n Transforms.splitNodes(editor, {\n always: true,\n mode: 'highest',\n match: (data: Element) => {\n if (data.type && !indivisibleTypes.includes(data.type)) {\n const [node] = TheQueries.getNodesByType(editor, data.type, { at: selection });\n const parentNode = Editor.parent(editor, node[1]) as NodeEntry<Element>;\n if (indivisibleTypes.includes(parentNode[0].type)) {\n splitPath = node[1];\n return true;\n }\n }\n }\n });\n }\n return splitPath;\n};\n","import { Editor, Element, Transforms, Path } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { createEmptyParagraph } from '../utils/create-empty-paragraph';\nimport * as TheQueries from '../queries';\n\nexport const deleteElement = (editor: Editor, element: Element) => {\n const at = TheQueries.findPath(editor, element);\n Transforms.insertNodes(editor, createEmptyParagraph(), { at });\n AngularEditor.focus(editor);\n Transforms.select(editor, at);\n Transforms.removeNodes(editor, { at: Path.next(at) });\n};\n","import { Editor, Transforms } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { getLastNode } from '../queries/get-last-node';\n\nexport const setEndSelection = (editor: Editor) => {\n const lastNode = getLastNode(editor, 1);\n const end = Editor.end(editor, lastNode[1]);\n Transforms.select(editor, end);\n AngularEditor.focus(editor);\n};\n","import { Editor, Element, Range, Path, Transforms } from 'slate';\nimport * as TheQueries from '../queries';\n\nexport const insertTheElements = (editor: Editor, nodes: Element[]) => {\n if (Range.isExpanded(editor.selection)) {\n Editor.deleteFragment(editor);\n }\n const isEmptyParagraph = TheQueries.isEmptyParagraph(editor, editor.selection.anchor);\n const parentPath = Path.parent(editor.selection.anchor.path);\n Editor.withoutNormalizing(editor, () => {\n Transforms.insertNodes(editor, nodes);\n if (parentPath.length && isEmptyParagraph) {\n Transforms.delete(editor, { at: parentPath });\n const lastPath = parentPath.pop();\n Transforms.select(editor, Editor.end(editor, [...parentPath, lastPath + nodes.length - 1]));\n } else {\n const lastPath = parentPath.pop();\n Transforms.select(editor, Editor.end(editor, [...parentPath, lastPath + nodes.length]));\n }\n });\n};\n","import { ThyPopoverRef } from 'ngx-tethys/popover';\nimport { Editor } from 'slate';\n\nexport const THE_EDITOR_UUID = new WeakMap<Editor, string>();\n\nexport const THE_EDITOR_CONVERSION_HINT_REF: WeakMap<Editor, ThyPopoverRef<any>> = new WeakMap();\n\nexport const THE_EDITOR_QUICK_TOOLBAR_REF: WeakMap<Editor, ThyPopoverRef<any>> = new WeakMap();\n","import { Editor } from 'slate';\nimport { THE_EDITOR_CONVERSION_HINT_REF } from '../utils/weak-maps';\n\nexport const closeConversionHint = (editor: Editor) => {\n const hintRef = THE_EDITOR_CONVERSION_HINT_REF.get(editor);\n if (hintRef) {\n hintRef.close();\n }\n};\n","import { CustomElementKinds } from '../custom-types';\nimport { Editor, Element, NodeEntry } from 'slate';\nimport * as TheQueries from '../queries';\nimport { unWrap } from './un-wrap';\nimport { BlockElementKinds } from '../interfaces/element';\n\nexport function handleContinualDeleteBackward(editor: Editor, aboveResult: NodeEntry<Element>, type: CustomElementKinds) {\n const highestBlock = aboveResult[0];\n const lowestBlock = TheQueries.anchorBlock(editor);\n const wrapBlockType = highestBlock.type as BlockElementKinds;\n if (lowestBlock && Editor.isStart(editor, editor.selection.anchor, aboveResult[1])) {\n if (wrapBlockType === type) {\n if (highestBlock.children[0] === lowestBlock) {\n unWrap(editor, wrapBlockType);\n return true;\n }\n }\n }\n return false;\n}\n","import { CustomElementKinds } from '../custom-types';\nimport { Editor, Element } from 'slate';\nimport { unWrap } from './un-wrap';\n\nexport function handleContinualInsertBreak(editor: Editor, lowestBlock: Element, type: CustomElementKinds) {\n const isEmpty = Editor.isEmpty(editor, lowestBlock);\n const isEnd = Editor.isEnd(editor, editor.selection.anchor, editor.selection.focus.path);\n const aboveResult = Editor.above<Element>(editor, {\n match: n => Editor.isBlock(editor, n) && n.type === type\n });\n\n if (isEnd) {\n editor.marks = {};\n }\n\n if (aboveResult && aboveResult[0] && isEnd && isEmpty) {\n const wrapBlock = aboveResult[0];\n if (wrapBlock.type === type) {\n if (wrapBlock.children[wrapBlock.children.length - 1] === lowestBlock) {\n unWrap(editor, wrapBlock.type);\n return true;\n }\n }\n }\n return false;\n}\n","import { Element, Node } from 'slate';\nimport { ElementKinds } from '../../../constants/node-types';\n\nexport const isNodeTypeList = (n: Node): n is Element => {\n return [ElementKinds.bulletedList, ElementKinds.numberedList].includes((n as Element).type);\n};\n","import { Transforms, Node, Editor, Path, Element } from 'slate';\nimport { ElementKinds, LIST_BLOCK_TYPES } from '../../constants/node-types';\nimport * as TheQueries from '../../queries';\nimport * as TheTransforms from '../../transforms';\nimport { isNodeTypeList } from './queries/is-node-type-list';\n\nexport const ListEditor = {\n isList(editor: Editor, element: Element, type: ElementKinds.bulletedList | ElementKinds.numberedList) {\n return Editor.isBlock(editor, element) && element.type === type;\n },\n toggleList(editor: Editor, type: ElementKinds.bulletedList | ElementKinds.numberedList, startIndex?: number) {\n if (!editor.selection) {\n return;\n }\n if (!startIndex) {\n startIndex = 1;\n }\n const types = [ElementKinds.bulletedList, ElementKinds.numberedList];\n\n Editor.withoutNormalizing(editor, () => {\n const [...listItems] = Editor.nodes(editor, {\n match: node => Element.isElement(node) && node.type === ElementKinds.listItem,\n mode: 'lowest'\n });\n const firstListItemPath = listItems.length && listItems[0][1];\n const activeListPath = listItems.length && Path.parent(firstListItemPath);\n const activeListNode = listItems.length && (Node.get(editor, activeListPath) as Element);\n\n // 同级且类型相同:unwrap\n const isLowestActive =\n listItems.length &&\n listItems.every(\n ([, path]) =>\n activeListNode.type === type && (Path.isSibling(firstListItemPath, path) || Path.equals(firstListItemPath, path))\n );\n if (isLowestActive) {\n const upListItem = Path.parent(activeListPath);\n Transforms.unwrapNodes(editor, {\n at: editor.selection,\n match: node => node === activeListNode,\n split: true,\n mode: 'lowest'\n });\n if (upListItem && (Node.get(editor, upListItem) as Element).type === ElementKinds.listItem) {\n Transforms.moveNodes(editor, {\n at: editor.selection,\n to: Path.next(upListItem),\n match: node => Element.isElement(node) && node.type === ElementKinds.listItem\n });\n } else {\n Transforms.unwrapNodes(editor, {\n match: node => Element.isElement(node) && node.type === ElementKinds.listItem\n });\n }\n return;\n }\n\n // 跨级、同级且类型不同\n if (activeListNode && types.includes(activeListNode.type)) {\n Transforms.setNodes(\n editor,\n { type },\n { match: node => Element.isElement(node) && node.type !== type && types.includes(node.type) }\n );\n return;\n }\n\n // wrap\n this.buildListItem(editor);\n // Todo: types\n Transforms.wrapNodes(editor, { type, children: [], start: startIndex } as any, {\n at: editor.selection,\n match: node => Element.isElement(node) && node.type === ElementKinds.listItem\n });\n });\n },\n unwrapList(editor: Editor) {\n Editor.withoutNormalizing(editor, () => {\n TheTransforms.unwrapNodesByType(editor, [ElementKinds.bulletedList, ElementKinds.numberedList], { split: true, mode: 'all' });\n TheTransforms.unwrapNodesByType(editor, [ElementKinds.listItem], { split: true, mode: 'all' });\n });\n },\n wrapList(editor: Editor, type: ElementKinds.bulletedList | ElementKinds.numberedList) {\n Editor.withoutNormalizing(editor, () => {\n const listItem: Element = {\n type: ElementKinds.listItem,\n children: []\n };\n const list = {\n type,\n children: []\n };\n Transforms.wrapNodes(editor, list, { split: true });\n Transforms.wrapNodes(editor, listItem, { split: true });\n });\n },\n isActive(editor: Editor, type: ElementKinds.bulletedList | ElementKinds.numberedList) {\n const [match] = TheQueries.getNodesByType(editor, type);\n return !!match;\n },\n getActiveList(editor: Editor) {\n const [match] = TheQueries.getNodesByType(editor, LIST_BLOCK_TYPES);\n return match;\n },\n buildListItem(editor: Editor) {\n const nodes = Editor.nodes(editor, {\n match: node => Editor.isBlock(editor, node),\n mode: 'lowest'\n });\n for (const [node, path] of nodes) {\n if (!Editor.isVoid(editor, node) && Element.isElement(node) && node.type !== ElementKinds.paragraph) {\n Transforms.setNodes(\n editor,\n { type: ElementKinds.paragraph, checked: undefined } as any, // todo remove checked\n { at: path }\n );\n }\n if ((Node.parent(editor, path) as Element).type !== ElementKinds.listItem) {\n Transforms.wrapNodes(\n editor,\n { type: ElementKinds.listItem, children: [] },\n {\n at: path,\n split: true\n }\n );\n }\n }\n },\n buildInsertDataChildren(node: Element) {\n const { children } = node;\n const listItem = children[0];\n if (isNodeTypeList(node) && Element.isElement(listItem) && (listItem.children[0] as Element).type === ElementKinds.paragraph) {\n return node;\n }\n\n return this.buildInsertDataChildren(listItem);\n }\n};\n","import { Editor, Transforms } from 'slate';\nimport { ElementKinds } from '../../constants/node-types';\nimport * as TheQueries from '../../queries';\nimport { ListEditor } from '../list/list.editor';\n\nexport const TodoItemEditor = {\n isActive(editor: Editor) {\n const [match] = TheQueries.getNodesByType(editor, ElementKinds.checkItem);\n return !!match;\n },\n insertTodoItem(editor: Editor) {\n if (!editor.selection) {\n return;\n }\n const isActive = this.isActive(editor);\n const isNumberedList = ListEditor.isActive(editor, ElementKinds.numberedList);\n const isBulletedList = ListEditor.isActive(editor, ElementKinds.bulletedList);\n\n if (isActive) {\n Transforms.setNodes(editor, {\n type: ElementKinds.paragraph\n });\n } else {\n if (isNumberedList || isBulletedList) {\n ListEditor.unwrapList(editor);\n }\n Transforms.setNodes(editor, {\n type: ElementKinds.checkItem\n });\n }\n }\n};\n","import { Editor, Transforms, Element, Node } from 'slate';\nimport { ElementKinds } from '../../constants/node-types';\nimport * as TheQueries from '../../queries';\n\nexport const BlockquoteEditor = {\n toggleBlockquote(editor: Editor) {\n if (!TheQueries.isParagraph(editor)) {\n Transforms.insertNodes(editor, {\n type: ElementKinds.paragraph,\n mode: 'text',\n children: [\n {\n text: ''\n }\n ]\n } as Node);\n }\n const isActive = TheQueries.isBlockActive(editor, ElementKinds.blockquote);\n if (!isActive) {\n Transforms.wrapNodes(\n editor,\n { type: ElementKinds.blockquote, children: [] },\n {\n mode: 'lowest'\n }\n );\n } else {\n Transforms.unwrapNodes(editor, { match: n => Element.isElement(n) && n.type === ElementKinds.blockquote });\n }\n }\n};\n","import { Editor } from 'slate';\nimport { AutoFormatRule } from '../interfaces/auto-format';\nimport { MarkTypes, ElementKinds } from './node-types';\nimport * as TheQueries from '../queries';\nimport { ListEditor } from '../plugins/list/list.editor';\nimport { TodoItemEditor } from '../plugins/todo-item/todo-item.editor';\nimport { BlockquoteEditor } from '../plugins/blockquote/blockquote.editor';\n\nexport const autoFormatRules: AutoFormatRule[] = [\n {\n type: ElementKinds.heading_1,\n markup: '#'\n },\n {\n type: ElementKinds.heading_2,\n markup: '##'\n },\n {\n type: ElementKinds.heading_3,\n markup: '###'\n },\n {\n type: ElementKinds.heading_4,\n markup: '####'\n },\n {\n type: ElementKinds.heading_5,\n markup: '#####'\n },\n {\n type: ElementKinds.heading_6,\n markup: '######'\n },\n {\n type: ElementKinds.blockquote,\n markup: ['>'],\n format: (editor: Editor) => {\n BlockquoteEditor.toggleBlockquote(editor);\n }\n },\n {\n type: MarkTypes.bold,\n between: ['**', '**'],\n mode: 'inline',\n insertTrigger: true\n },\n {\n type: MarkTypes.bold,\n between: ['__', '__'],\n mode: 'inline',\n insertTrigger: true\n },\n {\n type: MarkTypes.italic,\n between: ['*', '*'],\n mode: 'inline',\n insertTrigger: true\n },\n {\n type: MarkTypes.italic,\n between: ['_', '_'],\n mode: 'inline',\n insertTrigger: true\n },\n {\n type: MarkTypes.codeLine,\n between: ['`', '`'],\n mode: 'inline',\n insertTrigger: true\n },\n {\n type: MarkTypes.strike,\n between: ['~~', '~~'],\n mode: 'inline',\n insertTrigger: true\n },\n {\n type: ElementKinds.code,\n markup: '```',\n insertTrigger: true\n },\n {\n type: ElementKinds.listItem,\n markup: [],\n match: (editor: Editor) => {\n return TheQueries.isParagraph(editor) ? ['*', '-', '+'] : [];\n },\n format: (editor: Editor) => {\n ListEditor.toggleList(editor, ElementKinds.bulletedList);\n }\n },\n {\n type: ElementKinds.listItem,\n markup: [],\n match: (editor: Editor, textFromBlockStart: string) => {\n return TheQueries.isParagraph(editor) && /^-?\\d+(\\.|\\))$/.test(textFromBlockStart) ? [textFromBlockStart] : [];\n },\n format: (editor: Editor, markup?: string[]) => {\n let startIndex = 1;\n if (markup) {\n startIndex = markup[0].split('.')[0] as unknown as number;\n if (startIndex === 0) {\n startIndex = 1;\n }\n }\n ListEditor.toggleList(editor, ElementKinds.numberedList, startIndex);\n }\n },\n {\n type: ElementKinds.checkItem,\n markup: [],\n match: (editor: Editor) => {\n return TheQueries.isParagraph(editor) ? ['[]'] : [];\n },\n format: (editor: Editor) => {\n TodoItemEditor.insertTodoItem(editor);\n }\n },\n {\n type: ElementKinds.hr,\n markup: '---',\n insertTrigger: true\n }\n];\n","import { Editor } from 'slate';\n\nexport const UNDOING = new WeakMap<Editor, boolean | undefined>();\nexport const REDOING = new WeakMap<Editor, boolean | undefined>();\n\nexport const withTheHistory = (editor: Editor): Editor => {\n const { undo, redo } = editor;\n\n editor.undo = () => {\n UNDOING.set(editor, true);\n undo();\n UNDOING.set(editor, false);\n };\n editor.redo = () => {\n REDOING.set(editor, true);\n redo();\n REDOING.set(editor, false);\n };\n\n return editor;\n};\n\nexport const TheHistoryEditor = {\n isUndoing(editor: Editor): boolean | undefined {\n return UNDOING.get(editor);\n },\n isRedoing(editor: Editor): boolean | undefined {\n return REDOING.get(editor);\n }\n};\n","import { ChangeDetectionStrategy, Component, HostListener, Input, OnDestroy, OnInit } from '@angular/core';\nimport { Editor } from 'slate';\nimport * as TheTransforms from '../../transforms';\n\n@Component({\n selector: 'the-conversion-hint',\n templateUrl: 'conversion-hint.component.html',\n host: {\n class: 'the-conversion-hint'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TheConversionHintComponent implements OnInit, OnDestroy {\n @Input() editor: Editor;\n\n @Input() conversion: () => void;\n\n duration = 10000;\n pauseOnHover = true;\n closeTimer: any;\n\n @HostListener('mouseenter') mouseenter() {\n if (this.pauseOnHover) {\n this.clearCloseTimer();\n }\n }\n\n @HostListener('mouseleave') mouseleave() {\n if (this.pauseOnHover) {\n this.creatCloseTimer();\n }\n }\n\n ngOnInit() {\n this.creatCloseTimer();\n }\n\n ngOnDestroy() {\n this.clearCloseTimer();\n }\n\n creatCloseTimer() {\n this.closeTimer = setInterval(() => {\n clearInterval(this.closeTimer);\n TheTransforms.closeConversionHint(this.editor);\n }, this.duration);\n }\n\n clearCloseTimer() {\n clearInterval(this.closeTimer);\n }\n}\n","<ng-container>\n <thy-alert\n thyType=\"primary-weak\"\n thyIcon=\"info-circle-fill\"\n thyCloseable=\"true\"\n thyMessage=\"检测到粘贴内容符合Markdown语法\"\n >\n <ng-template #operation>\n <a href=\"javascript:;\" thyAlertActionItem (click)=\"conversion()\">\n 立即转换\n </a>\n </ng-template>\n </thy-alert>\n</ng-container>\n","import { Descendant } from 'slate';\nimport { TheiaConverter } from '@atinc/selene';\nimport { ElementKinds } from '../constants';\nimport { TheDataMode } from '../interfaces';\nimport { createEmptyParagraph } from './create-empty-paragraph';\n\nexport function plainToTheia(text: string): Descendant[] {\n if (typeof text !== 'string') {\n return text;\n }\n return text.split('\\n').map(i => {\n return {\n type: ElementKinds.paragraph,\n children: [\n {\n text: i\n }\n ]\n };\n });\n}\n\nexport function htmlToTheia(value: string): Descendant[] {\n if (typeof value === 'string') {\n const htmlDom = new DOMParser().parseFromString(value, 'text/html');\n return TheiaConverter.convertToTheia(Array.from(htmlDom.body.children));\n }\n return value;\n}\n\nexport function dataDeserialize(mode: TheDataMode, value: Descendant[] | string): Descendant[] {\n if (!value) {\n return [createEmptyParagraph()];\n }\n if (mode === TheDataMode.html) {\n if (typeof value !== 'string') {\n return value;\n }\n if (/<[^>]+>/.test(value)) {\n return htmlToTheia(value);\n }\n return plainToTheia(value);\n }\n return (value as Descendant[]) || [createEmptyParagraph()];\n}\n\nexport function dataSerializing(mode: TheDataMode, value: Descendant[]): string | Descendant[] {\n if (mode === TheDataMode.html) {\n return TheiaConverter.convertToHtml(value as any);\n }\n return value;\n}\n","import { Editor } from 'slate';\nimport { THE_EDITOR_UUID } from './weak-maps';\n\nexport const getEditorUUID = (editor: Editor) => {\n return THE_EDITOR_UUID.get(editor);\n};\n\nexport const setEditorUUID = (editor: Editor, uuid: string) => {\n THE_EDITOR_UUID.set(editor, uuid);\n};\n","import { Editor } from 'slate';\nimport { getEditorUUID } from './editor-uuid';\n\nexport const getToolbarClass = (editor: Editor) => {\n const uuid = getEditorUUID(editor);\n return `the-toolbar-${uuid}`;\n};\n","import { ChangeDetectorRef, ViewContainerRef } from '@angular/core';\nimport { Editor, Element, Node, Text, Transforms } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport marked from 'marked';\nimport { TheiaConverter } from '@atinc/selene';\nimport { ThyPopover } from 'ngx-tethys/popover';\nimport { CLIPBOARD_FORMAT_KEY, ElementKinds } from '../../constants';\nimport * as TheTransforms from '../../transforms';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { TheConversionHintComponent } from '../../components/conversion-hint/conversion-hint.component';\nimport { THE_EDITOR_CONVERSION_HINT_REF, getToolbarClass } from '../../utils';\n\nexport const withDeserializeMd = (options?: Record<string, any>) => (editor: Editor) => {\n const { insertData, onKeydown } = editor;\n\n editor.onKeydown = (event: KeyboardEvent) => {\n TheTransforms.closeConversionHint(editor);\n onKeydown(event);\n };\n\n editor.insertData = (data: DataTransfer) => {\n const popover = editor.injector.get(ThyPopover);\n const viewContainerRef = editor.injector.get(ViewContainerRef);\n const cdr = editor.injector.get(ChangeDetectorRef);\n\n const plainFragment = data.getData('text/plain');\n const slateFragment = data.getData(`application/${CLIPBOARD_FORMAT_KEY}`);\n const oldRange = editor.selection;\n TheTransforms.closeConversionHint(editor);\n\n if (plainFragment && isMarkdownStynx(plainFragment) && !slateFragment) {\n setTimeout(() => {\n const overlay = editor.injector.get(Overlay);\n const bodyElement = document.body;\n const toolbarClass = getToolbarClass(editor);\n const toolbarElement = document.querySelector(`.${toolbarClass}`) as HTMLElement;\n const origin = toolbarElement ? toolbarElement : bodyElement;\n const placement = toolbarElement ? 'top' : 'topRight';\n\n const hintPopverRef = popover.open(TheConversionHintComponent, {\n initialState: {\n editor,\n conversion: () => {\n try {\n const html = marked(plainFragment, { gfm: true });\n const htmlDom = new DOMParser().parseFromString(html, 'text/html');\n const fragment = TheiaConverter.convertToTheia(Array.from(htmlDom.body.children));\n\n if (!isUnformatted(fragment)) {\n TheTransforms.closeConversionHint(editor);\n\n editor.undo();\n\n setTimeout(() => {\n Transforms.select(editor, oldRange);\n TheTransforms.insertTheElements(editor, fragment);\n AngularEditor.focus(editor);\n });\n return;\n }\n } catch (error) {}\n }\n },\n origin,\n viewContainerRef,\n placement,\n offset: -100,\n hasBackdrop: false,\n backdropClosable: false,\n closeOnNavigation: false,\n scrollStrategy: overlay.scrollStrategies.reposition()\n });\n THE_EDITOR_CONVERSION_HINT_REF.set(editor, hintPopverRef);\n cdr.markForCheck();\n });\n }\n\n insertData(data);\n };\n return editor;\n};\n\nconst isUnformatted = (elements: Element[]) => {\n return elements.every(\n element =>\n element.type === ElementKinds.default &&\n element.children.every((node: Node) => {\n return Text.isText(node) && Object.keys(node).length === 1;\n })\n );\n};\n\nconst isMarkdownStynx = content => {\n // https://github.com/Chalarangelo/parse-md-js/blob/master/parsemd.js\n const codeBlockRegex = /((\\n\\t)(.*))+/g;\n const inlineCodeRegex = /(`)(.*?)\\1/g;\n const imageRegex = /!\\[([^\\[]+)\\]\\(([^\\)]+)\\)/g;\n const linkRegex = /\\[([^\\[]+)\\]\\(([^\\)]+)\\)/g;\n const headingRegex = /(#+\\s*)(.*)/g;\n const boldItalicsRegex = /(\\*{1,2})(\\S+)\\1/g;\n const strikethroughRegex = /(\\~\\~)(.*?)\\1/g;\n const blockquoteRegex = /\\n(>|\\>)(.*)/g;\n const horizontalRuleRegex = /\\n((\\-{3,})|(={3,}))/g;\n const unorderedListRegex = /(\\n\\s*(\\-|\\+)\\s.*)+/g;\n const orderedListRegex = /(\\n\\s*([0-9]+\\.)\\s.*)+/g;\n const paragraphRegex = /\\n+(?!<pre>)(?!<h)(?!<ul>)(?!<blockquote)(?!<hr)(?!\\t)([^\\n]+)\\n/g;\n // from marked\n const table =\n /^\\s*([^\\s].*\\|.*)\\s{0,3}(?:\\|\\s*)?(:?-+:?\\s*(?:\\|\\s*:?-+:?\\s*)*)\\|?(?:\\s*((?:(?!|hr|heading|blockquote|code|fences|list|html).*(?:|$))*)*|$)/g;\n const regexps = [\n inlineCodeRegex,\n imageRegex,\n linkRegex,\n headingRegex,\n boldItalicsRegex,\n strikethroughRegex,\n blockquoteRegex,\n horizontalRuleRegex,\n unorderedListRegex,\n orderedListRegex,\n table\n ];\n return regexps.some(regexp => regexp.test(content));\n};\n","import { Editor, Path, Transforms } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport * as TheQueries from '../../queries';\nimport { DefaultElementOptions, ElementOptionsInfo } from '../../interfaces';\nimport * as TheTransforms from '../../transforms';\nimport { extractFragment } from '../../utils/fragment';\n\nexport const withAutoInsertData = (validChildren?: ElementOptionsInfo[]) => (editor: Editor) => {\n const { insertData } = editor;\n let allElementOptions = DefaultElementOptions;\n if (validChildren?.length) {\n const validInfo = mergeElementOptions(validChildren);\n allElementOptions = Object.values(validInfo);\n }\n\n editor.insertData = (data: DataTransfer) => {\n if (editor.extraElementOptions?.length) {\n const extraInfo = mergeElementOptions(editor.extraElementOptions);\n allElementOptions = Object.values(extraInfo);\n }\n const indivisibleTypes = allElementOptions.filter(item => item.isIndivisible).map(item => item.type);\n const fragment = extractFragment(data);\n if (fragment) {\n if (TheQueries.isAcrossBlocks(editor, fragment) || Editor.isVoid(editor, fragment[0])) {\n const { selection } = editor;\n const [start] = Editor.edges(editor, selection);\n // query whether there is a node to be verified\n const tryVerifyNode = allElementOptions.find(item =>\n TheQueries.getAboveByType(editor, item.type, { at: start, mode: 'lowest' })\n );\n if (tryVerifyNode) {\n // is exist invalid element type in fragment\n const invalidIndex = fragment.findIndex(item => tryVerifyNode.inValidChildrenTypes.includes(item.type));\n if (invalidIndex > -1) {\n const validFragmentData = fragment.slice(0, invalidIndex);\n const invalidFragmentData = fragment.slice(invalidIndex, fragment.length);\n Editor.withoutNormalizing(editor, () => {\n if (validFragmentData.length > 0) {\n validFragmentData.forEach(item => {\n Transforms.insertNodes(editor, item);\n });\n }\n // split node\n const path = TheTransforms.splitNode(editor, indivisibleTypes);\n Transforms.insertNodes(editor, invalidFragmentData, {\n at: Path.next(path)\n });\n });\n return;\n }\n }\n Editor.withoutNormalizing(editor, () => {\n const isEmptyParagraph = TheQueries.isEmptyParagraph(editor, editor.selection.anchor);\n const emptyPath = Path.parent(editor.selection.anchor.path);\n Transforms.insertNodes(editor, fragment);\n if (isEmptyParagraph) {\n Transforms.delete(editor, { at: emptyPath });\n const lastPath = emptyPath.pop();\n Transforms.select(editor, [...emptyPath, lastPath + fragment.length - 1]);\n } else {\n const lastPath = emptyPath.pop();\n Transforms.select(editor, [...emptyPath, lastPath + fragment.length]);\n }\n AngularEditor.focus(editor);\n Transforms.collapse(editor, { edge: 'end' });\n });\n return;\n }\n }\n insertData(data);\n };\n\n return editor;\n};\n\nconst mergeElementOptions = (elementOptions: ElementOptionsInfo[]) => {\n elementOptions = elementOptions.filter(item => item.inValidChildrenTypes.length > 0);\n const combinationData = [...DefaultElementOptions, ...elementOptions];\n const dataInfo = {};\n combinationData.forEach(item => {\n const { type, inValidChildrenTypes, isIndivisible } = item;\n if (!dataInfo[type]) {\n dataInfo[type] = {\n type,\n inValidChildrenTypes,\n isIndivisible\n };\n }\n dataInfo[type].inValidChildrenTypes = Array.from(new Set([...inValidChildrenTypes, ...dataInfo[type].inValidChildrenTypes]));\n });\n return dataInfo;\n};\n","import { Path, Node, Editor, Transforms, Element } from 'slate';\nimport { HistoryEditor } from 'slate-history';\nimport { HEADING_TYPES } from '../../constants';\nimport * as TheQueries from '../../queries';\n\nexport const withRemoveEmpty = (editor: Editor): Editor => {\n const { deleteBackward, deleteForward } = editor;\n\n editor.deleteBackward = unit => {\n const { selection } = editor;\n const anchorBlock = TheQueries.anchorBlock(editor);\n\n if (!anchorBlock) {\n deleteBackward(unit);\n return;\n }\n\n // delete empty paragraphs or empty headings, the default operation is to delete before the void node\n const parentPath = Path.parent(editor.selection.anchor.path);\n const isEmptyHeading = HEADING_TYPES.includes(anchorBlock.type) && Editor.isEmpty(editor, anchorBlock);\n const isEmptyParagraph = TheQueries.isEmptyParagraph(editor, editor.selection.anchor);\n if (\n (isEmptyParagraph || isEmptyHeading) &&\n parentPath[parentPath.length - 1] > 0 &&\n Editor.isVoid(editor, Node.get(editor, Path.previous(parentPath)))\n ) {\n Transforms.delete(editor, { at: editor.selection.anchor.path.slice(0, editor.selection.anchor.path.length - 1) });\n return;\n }\n // just remove inline node when before inline node text length is 1, default action is remove current the block above inline node\n if (selection.anchor.path[selection.anchor.path.length - 1] > 0 && selection.anchor.offset === 0) {\n const beforePoint = Editor.before(editor, editor.selection);\n const inlineEntry = Editor.above<Element>(editor, {\n at: beforePoint,\n match: n => Editor.isInline(editor, n) && !Editor.isVoid(editor, n)\n });\n if (inlineEntry && Editor.string(editor, inlineEntry[1]).length === 1) {\n Transforms.removeNodes(editor, { at: inlineEntry[1] });\n return;\n }\n }\n deleteBackward(unit);\n };\n\n editor.deleteForward = unit => {\n const anchorBlockEntry = TheQueries.anchorBlockEntry(editor);\n if (\n anchorBlockEntry &&\n TheQueries.isAncestorEmpty(editor, anchorBlockEntry[0]) &&\n TheQueries.getNode(editor, Path.next(anchorBlockEntry[1]))\n ) {\n const pathRef = Editor.pathRef(editor, Path.parent(editor.selection.anchor.path));\n HistoryEditor.withoutMerging(editor, () => {\n Transforms.move(editor);\n });\n Transforms.delete(editor, { at: pathRef.unref() });\n return;\n }\n deleteForward(unit);\n };\n\n return editor;\n};\n","import { Editor, Range } from 'slate';\nimport { hotkeys, IS_SAFARI } from 'slate-angular';\nimport { BLOCK_DELETEBACKWARD_TYPES } from '../../constants';\nimport * as TheQueries from '../../queries';\n\nexport const withResetType = (editor: Editor): Editor => {\n const { onKeydown } = editor;\n\n editor.onKeydown = (event: KeyboardEvent) => {\n const { selection } = editor;\n\n if (IS_SAFARI && selection && Range.isCollapsed(selection) && hotkeys.isDeleteBackward(event)) {\n const blockEntry = TheQueries.getAboveByType(editor, BLOCK_DELETEBACKWARD_TYPES);\n if (blockEntry && blockEntry[0]) {\n const isStart = Editor.isStart(editor, selection.anchor, blockEntry[1]);\n if (isStart) {\n event.preventDefault();\n Editor.deleteBackward(editor);\n return;\n }\n }\n if (Editor.isStart(editor, selection.anchor, [0])) {\n event.preventDefault();\n Editor.deleteBackward(editor);\n return;\n }\n }\n onKeydown(event);\n };\n\n return editor;\n};\n","import { Injectable, NgZone, ViewContainerRef } from '@angular/core';\nimport { fromEvent, Observable } from 'rxjs';\nimport { MarkTypes } from '../constants/node-types';\n\nexport interface TheContextOptions {\n width?: number;\n nativeElement: HTMLElement;\n viewContainerRef: ViewContainerRef;\n}\n\ninterface PaintFormatStatus {\n isActive: boolean;\n marks: { [key in MarkTypes]?: any };\n}\n\n@Injectable()\nexport class TheContextService {\n private options: TheContextOptions;\n\n fileList: { url: string; file: File }[] = [];\n\n public paintFormatStatus: PaintFormatStatus = {\n isActive: false,\n marks: {}\n };\n\n public onMouseUp$: Observable<MouseEvent>;\n\n public onMouseMove$: Observable<MouseEvent>;\n\n public onMouseDown$: Observable<MouseEvent>;\n\n constructor(private ngZone: NgZone) {\n this.ngZone.runOutsideAngular(() => {\n this.onMouseUp$ = fromEvent<MouseEvent>(window, `mouseup`);\n this.onMouseMove$ = fromEvent<MouseEvent>(window, `mousemove`);\n this.onMouseDown$ = fromEvent<MouseEvent>(window, `mousedown`);\n });\n }\n\n public initialize(options: TheContextOptions) {\n this.options = options;\n }\n\n public getOptions() {\n if (!this.options.width) {\n this.options.width = (this.options.nativeElement.querySelector('.slate-editable-container').firstElementChild as HTMLElement).offsetWidth;\n }\n return this.options;\n }\n\n setUploadFileList(file: { url: string; file: File }) {\n this.fileList.push(file);\n }\n\n removeUploadImage(file: File) {\n this.fileList.splice(\n this.fileList.findIndex(item => item.file === file),\n 1\n );\n }\n}\n","import { Component, OnInit, ElementRef, ViewChild, OnDestroy, Inject, AfterViewInit, ChangeDetectorRef } from '@angular/core';\nimport { AngularEditor, BeforeContextChange, SlateElementContext } from 'slate-angular';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { ImageEntry, THE_UPLOAD_SERVICE_TOKEN, TheImageUploaderService } from '../../interfaces/image';\nimport { Alignment, ElementKinds } from '../../constants/node-types';\nimport { HistoryEditor } from 'slate-history';\nimport { Transforms, Editor } from 'slate';\nimport { Subscription } from 'rxjs/internal/Subscription';\nimport { map } from 'rxjs/operators';\nimport { ThyUploadStatus } from 'ngx-tethys/uploader';\nimport { TheContextService } from '../../services/context.service';\nimport { TheBaseElementComponent } from '../../interfaces';\nimport { ImageElement } from '../../custom-types';\n\ndeclare const $: any;\n\n@Component({\n selector: 'the-image, [theImage]',\n templateUrl: './image.component.html'\n})\nexport class TheImageComponent\n extends TheBaseElementComponent<ImageElement, Editor>\n implements OnInit, OnDestroy, AfterViewInit, BeforeContextChange<SlateElementContext>\n{\n imageEntry: ImageEntry = {};\n\n uploading = false;\n\n percentage = 0;\n\n file: File;\n\n private uploadingSubscription: Subscription;\n\n private mouseMoveSubscription: Subscription;\n\n private mouseUpSubscription: Subscription;\n\n private dragable = false;\n\n @ViewChild('imageContent')\n imageContent: ElementRef;\n\n @ViewChild('img', { static: false })\n img: ElementRef;\n\n constructor(\n public elementRef: ElementRef,\n public sanitizer: DomSanitizer,\n @Inject(THE_UPLOAD_SERVICE_TOKEN)\n private imageUploaderService: TheImageUploaderService,\n public cdr: ChangeDetectorRef,\n private theContextService: TheContextService\n ) {\n super(elementRef, cdr);\n }\n\n beforeContextChange = (value: SlateElementContext<ImageElement>) => {\n if (value.element !== this.element && value.element.thumbUrl) {\n this.imageEntry = {\n name: value.element.name,\n width: value.element.width,\n height: value.element.height,\n thumbUrl: value.element.thumbUrl,\n originUrl: value.element.originUrl,\n align: value.element.align || Alignment.center\n };\n }\n };\n\n ngOnInit() {\n this.file = this.theContextService.fileList.find(item => item.url === this.element.url)?.file;\n if (this.file && this.file instanceof File) {\n this.uploadImage(this.file);\n }\n super.ngOnInit();\n }\n\n ngOnDestroy() {\n this.uploadingSubscription.unsubscribe();\n this.mouseUpSubscription.unsubscribe();\n super.ngOnDestroy();\n }\n\n ngAfterViewInit() {\n this.mouseUpSubscription = this.theContextService.onMouseUp$.subscribe(e => this.endDrag(e));\n this.uploadingSubscription = this.imageUploaderService\n .getUploadingItems$()\n .pipe(map(fileUploadingItem => this.file && fileUploadingItem.find(item => item.file === this.file)))\n .subscribe(uploadingItem => {\n if (!uploadingItem || !uploadingItem.result) {\n return;\n }\n this.percentage = uploadingItem.result.uploadFile.progress.percentage;\n if (uploadingItem.result.status === ThyUploadStatus.done) {\n this.uploading = false;\n this.uploadingSubscription.unsubscribe();\n }\n this.cdr.detectChanges();\n });\n }\n\n async uploadImage(file: File) {\n const { width, height } = await this.resolveImageSize(file, this.theContextService.getOptions().width);\n this.imageEntry = {\n height,\n width,\n thumbUrl: this.sanitizer.bypassSecurityTrustResourceUrl(URL.createObjectURL(file))\n };\n this.uploading = true;\n const [uploadFileEntity] = await this.imageUploaderService.uploadFileHandle([file]).toPromise();\n const path = AngularEditor.findPath(this.editor, this.element);\n const { thumbUrl, originUrl } = uploadFileEntity;\n const imageInfo: ImageEntry = {\n name: file.name,\n width: this.imageEntry.width,\n height: this.imageEntry.height,\n thumbUrl,\n originUrl,\n align: this.imageEntry.align || Alignment.center\n };\n HistoryEditor.withoutSaving(this.editor, () =>\n Transforms.setNodes(\n this.editor,\n {\n type: ElementKinds.image,\n url: null,\n ...imageInfo\n },\n { at: path }\n )\n );\n }\n\n private resolveImageSize(imageFile: File, maxSize: number): Promise<{ height: number; width: number }> {\n const image = new Image();\n return new Promise(resolve => {\n image.onload = () => {\n const imageHeight = image.height;\n const imageWidth = image.width;\n const ratio = imageWidth > maxSize ? imageWidth / maxSize : false;\n const height = ratio ? imageHeight / ratio : imageHeight;\n const width = ratio ? imageWidth / ratio : imageWidth;\n resolve({ height, width });\n };\n image.src = URL.createObjectURL(imageFile);\n });\n }\n\n startDrag(event: MouseEvent, axis: string) {\n event.preventDefault();\n this.dragable = true;\n const imgElement = this.img.nativeElement as HTMLImageElement;\n const options = {\n axis,\n printerPositionX: event.pageX,\n printerPositionY: event.pageY,\n internalWidth: this.imageEntry.width | imgElement.width,\n internalHeight: this.imageEntry.height | imgElement.height,\n maxWidth: this.theContextService.getOptions().width\n };\n this.mouseMoveSubscription = this.theContextService.onMouseMove$.subscribe(e => this.mouseMoveHandle(e, options));\n }\n\n mouseMoveHandle(\n event: MouseEvent,\n options: {\n axis: string;\n printerPositionX: number;\n printerPositionY: number;\n internalWidth: number;\n internalHeight: number;\n maxWidth: number;\n }\n ) {\n if (this.dragable) {\n const { axis, printerPositionX, printerPositionY, internalWidth, internalHeight, maxWidth } = options;\n const isReversal = axis.includes('-');\n let offsetX = event.pageX - printerPositionX;\n let offsetY = event.pageY - printerPositionY;\n if (isReversal) {\n offsetX = -offsetX;\n offsetY = -offsetY;\n }\n if (this.element.align === 'center') {\n offsetX = offsetX * 2;\n }\n let { width, height } = this.element;\n if (axis.includes('x')) {\n width = offsetX + internalWidth;\n if (width >= maxWidth) {\n width = maxWidth;\n }\n if (width <= 100) {\n width = 100;\n }\n if (axis.includes('l')) {\n const ratio = internalWidth / width;\n height = internalHeight / ratio;\n }\n } else if (axis.includes('y')) {\n height = offsetY + internalHeight;\n if (height >= 1000) {\n height = 1000;\n }\n if (height <= 100) {\n height = 100;\n }\n if (axis.includes('l')) {\n const ratio = internalHeight / height;\n width = internalWidth / ratio;\n }\n }\n\n this.imageContent.nativeElement.style.width = width + 'px';\n this.imageContent.nativeElement.style.height = height + 'px';\n this.imageEntry.width = width;\n this.imageEntry.height = height;\n }\n }\n\n endDrag(event: MouseEvent) {\n if (this.dragable) {\n this.dragable = false;\n this.mouseMoveSubscription.unsubscribe();\n Transforms.setNodes(\n this.editor,\n {\n type: ElementKinds.image,\n ...this.imageEntry\n },\n { at: this.selection }\n );\n }\n }\n\n cancelUpload(event) {\n Transforms.removeNodes(this.editor, { at: this.selection });\n }\n\n preview($event: Event) {\n if (this.readonly || this.isCollapsed) {\n $.fancybox.open([{ src: this.imageEntry.originUrl }]);\n }\n $event.stopPropagation();\n }\n}\n","<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n<div class=\"image-container\" contenteditable=\"false\" [style.textAlign]=\"imageEntry.align || 'center'\">\n <div\n #imageContent\n *ngIf=\"imageEntry.thumbUrl\"\n class=\"image-content\"\n [class.pointer]=\"!selection\"\n [ngStyle]=\"{ width: imageEntry.width + 'px', height: imageEntry.height + 'px' }\"\n >\n <img #img class=\"main-image\" [src]=\"imageEntry.thumbUrl\" [alt]=\"imageEntry.name\" />\n <div *ngIf=\"selection\" class=\"image-profile\" [class.outline]=\"selection\">\n <span *ngIf=\"isCollapsed\" (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left top\"></span>\n <span *ngIf=\"isCollapsed\" (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right top\"></span>\n <span *ngIf=\"isCollapsed\" (mousedown)=\"startDrag($event, 'xl')\" class=\"image-pointer right bottom\"></span>\n <span *ngIf=\"isCollapsed\" (mousedown)=\"startDrag($event, '-xl')\" class=\"image-pointer left bottom\"></span>\n </div>\n <div *ngIf=\"uploading\" class=\"uploading\">\n <div class=\"uploading-percentage\">\n <thy-progress thyType=\"primary\" [thyValue]=\"percentage\" thySize=\"sm\"></thy-progress>\n <thy-icon (click)=\"cancelUpload($event)\" thyIconName=\"close-circle-bold-fill\" thyIconLegging=\"true\"></thy-icon>\n </div>\n </div>\n <div *ngIf=\"!uploading\" class=\"layer\" (mousedown)=\"preview($event)\" [class.readonly]=\"readonly\"></div>\n </div>\n <div *ngIf=\"!imageEntry.thumbUrl\" class=\"image-loading\" contenteditable=\"false\">\n <thy-icon thyIconName=\"image\"></thy-icon>\n </div>\n</div>\n","import { Editor, Transforms, Element } from 'slate';\nimport { TheContextService } from '../../services/context.service';\nimport { ElementKinds, ErrorCodes, PICTURE_ACCEPTED_UPLOAD_MIME, PICTURE_ACCEPTED_UPLOAD_SIZE } from '../../constants';\nimport * as TheQueries from '../../queries';\n\nexport const ImageEditor = {\n openUpload(editor: Editor) {\n const inputFile = document.createElement('input');\n inputFile.setAttribute('type', 'file');\n inputFile.setAttribute('accept', 'image/*');\n inputFile.onchange = (event: Event) => {\n ImageEditor.insertImages(editor, (event.target as any).files);\n };\n inputFile.click();\n },\n insertImages(editor: Editor, imageFiles: FileList | File[]) {\n const contextService = editor.injector.get(TheContextService);\n const imageNodes: Element[] = [];\n const text = { text: '' };\n for (const image of imageFiles) {\n const verify = ImageEditor.verifyImage(editor, image);\n if (verify) {\n const url = URL.createObjectURL(image);\n contextService.setUploadFileList({\n url,\n file: image\n });\n imageNodes.push({ type: ElementKinds.image, url, children: [text] });\n }\n }\n if (imageNodes.length > 0) {\n const at = editor.selection;\n Transforms.insertNodes(editor, imageNodes, { at });\n if (TheQueries.isCollapsed(editor.selection) && TheQueries.isEmptyParagraph(editor)) {\n Transforms.removeNodes(editor, { at });\n Transforms.select(editor, at);\n }\n }\n },\n verifyImage(editor: Editor, image: File) {\n if (!PICTURE_ACCEPTED_UPLOAD_MIME.includes(image.type)) {\n editor.onError({\n code: ErrorCodes.IMAGE_ERR_MIME_FORMAT\n });\n return false;\n }\n if (image.size / 1000000 >= PICTURE_ACCEPTED_UPLOAD_SIZE) {\n editor.onError({\n code: ErrorCodes.IMAGE_ERR_SIZE_LIMIT\n });\n return false;\n }\n return true;\n },\n isImageActive(editor: Editor): boolean {\n const [match] = Editor.nodes(editor, {\n match: n => Element.isElement(n) && n.type === ElementKinds.image,\n universal: true\n });\n return !!match;\n }\n};\n","import { Editor, Element } from 'slate';\nimport { ElementKinds } from '../../constants/node-types';\nimport { TheImageComponent } from './image.component';\nimport { ImageEditor } from './image.editor';\n\nexport const withImage = (editor: Editor): Editor => {\n const { insertData, isVoid, renderElement, isBlockCard } = editor;\n\n editor.isVoid = (element: Element) => {\n return element.type === ElementKinds.image || isVoid(element);\n };\n\n editor.insertData = (data: DataTransfer) => {\n if (data.files.length) {\n const imageFiles: File[] = [];\n for (const file of data.files as FileList) {\n if (['image/png', 'image/jpeg', 'image/gif', 'image/bmp'].includes(file.type)) {\n imageFiles.push(file);\n }\n }\n if (imageFiles.length) {\n return ImageEditor.insertImages(editor, imageFiles);\n }\n }\n insertData(data);\n };\n\n editor.renderElement = (element: Element) => {\n if (element.type === ElementKinds.image) {\n return TheImageComponent;\n }\n return renderElement(element);\n };\n\n editor.isBlockCard = (element: Element) => {\n if (element && element.type === ElementKinds.image) {\n return true;\n }\n return isBlockCard(element);\n };\n\n return editor;\n};\n","import { Transforms, Range, Editor, Element } from 'slate';\nimport { CustomElementKinds } from '../../custom-types';\nimport { ElementKinds } from '../../constants';\nimport { TAB_SPACE } from '../../constants/default';\n\nexport const onKeydownIndent = (editor: Editor, event: KeyboardEvent, kinds: CustomElementKinds[]) => {\n const { selection } = editor;\n if (event.key === 'Tab') {\n event.preventDefault();\n const isExpanded = Range.isExpanded(selection);\n const nodes = Array.from(\n Editor.nodes<Element>(editor, {\n mode: 'highest',\n match: indentNodeMatch(kinds)\n })\n );\n const startBlock = nodes[0];\n if (startBlock && (isExpanded || Editor.isStart(editor, selection.anchor, [startBlock[1][0]]))) {\n if (!editor.isVoid(startBlock[0])) {\n if (event.shiftKey) {\n return cancelTextIntent(editor, startBlock[0], kinds);\n }\n let { textIndent } = startBlock[0];\n textIndent = textIndent ? textIndent : 0;\n textIndent += 2;\n if (textIndent < 50) {\n Transforms.setNodes(\n editor,\n { textIndent },\n {\n mode: 'highest',\n match: indentNodeMatch(kinds)\n }\n );\n return true;\n }\n }\n } else {\n editor.insertText(TAB_SPACE);\n return true;\n }\n }\n if (selection && Range.isCollapsed(selection) && event.key === 'Backspace') {\n const nodes = Array.from(\n Editor.nodes<Element>(editor, {\n mode: 'highest',\n match: indentNodeMatch(kinds)\n })\n );\n const startBlock = nodes[0];\n if (startBlock && Editor.isStart(editor, selection.anchor, [startBlock[1][0]])) {\n return cancelTextIntent(editor, startBlock[0], kinds);\n }\n }\n return false;\n};\n\nconst indentNodeMatch = (kinds: CustomElementKinds[]) => node => Element.isElement(node) && kinds.includes(node.type);\n\nfunction cancelTextIntent(editor: Editor, anchorBlock: Element, kinds: CustomElementKinds[]) {\n let { textIndent } = anchorBlock;\n if (textIndent > 2) {\n // prevent deleteBackward function\n event.preventDefault();\n textIndent -= 2;\n Transforms.setNodes(\n editor,\n { textIndent },\n {\n mode: 'highest',\n match: indentNodeMatch(kinds)\n }\n );\n return true;\n }\n if (textIndent === 2) {\n // prevent deleteBackward function\n event.preventDefault();\n Transforms.setNodes(\n editor,\n { textIndent: null },\n {\n mode: 'highest',\n match: node => Element.isElement(node) && kinds.includes(node.type)\n }\n );\n return true;\n }\n return false;\n}\n","import { Editor } from 'slate';\nimport { CustomElementKinds } from '../../custom-types';\nimport { onKeydownIndent } from './on-keydown-indent';\n\nexport const withIndent =\n (kinds: CustomElementKinds[]) =>\n <T extends Editor>(editor: T): T => {\n const { onKeydown } = editor;\n\n editor.onKeydown = (event: KeyboardEvent) => {\n const isContinue = !onKeydownIndent(editor, event, kinds);\n if (isContinue) {\n onKeydown(event);\n }\n };\n\n return editor;\n };\n","import { Element } from 'slate';\nimport { LIST_BLOCK_TYPES } from '../../../constants/node-types';\n\nexport const isList = (n: Element) => {\n return [...LIST_BLOCK_TYPES].includes(n.type);\n};\n","import { Editor, Path, Point, Range } from 'slate';\nimport * as TheQueries from '../../../queries';\nimport { ElementKinds } from '../../../constants';\n\nexport const isInList = (editor: Editor, at: Path | Range | Point | null = editor.selection) => {\n return TheQueries.isNodeTypeIn(editor, [ElementKinds.numberedList, ElementKinds.bulletedList], { at });\n};\n","import { Editor, Path, Element } from 'slate';\nimport { ElementKinds } from '../../../constants';\n\n/**\n * Is the list nested, i.e. its parent is a list item.\n */\nexport const isListNested = (editor: Editor, listPath: Path, options?: any) => {\n const [listParentNode] = Editor.parent(editor, listPath);\n return (listParentNode as Element).type === ElementKinds.listItem;\n};\n","import { ElementKinds } from '../../../constants';\n\nexport const getListTypes = () => {\n return [ElementKinds.bulletedList, ElementKinds.numberedList];\n};\n","import { Element } from 'slate';\nimport { ElementKinds } from '../../../constants';\nimport { getListTypes } from './get-list-types';\n\n/**\n * 获取 List 中 ListItems,过滤掉空列表嵌套\n * @param node \n * @param initialValue \n * @returns \n */\nexport const getStartListItem = (node: Element[], initialValue?: Element[]) => {\n if (!initialValue) {\n initialValue = [];\n }\n if (node) {\n return node.reduce((result: Element[], current: Element) => {\n if ((current.type === ElementKinds.listItem && !getListTypes().includes(current.children[0].type))) {\n result.push(current);\n } else {\n if (current.children) {\n getStartListItem(current.children as Element[], result);\n }\n }\n return result;\n }, initialValue);\n }\n};\n","import { Ancestor, Element, Node } from 'slate';\nimport { ElementKinds } from '../../../constants';\nimport { match } from '../../../utils/match';\nimport { getListTypes } from './get-list-types';\n\n/**\n *\n */\nexport const hasListInListItem = (listItemNode: Ancestor | Element) => {\n const sublist = (listItemNode.children as Node[]).find(n => match(n, { type: getListTypes() })) as Element | undefined;\n return listItemNode.children.length > 1 && sublist;\n};\n\n/**\n * p + ul/ol structure\n * @param listItemNode\n */\nexport const hasStableListInListItem = (listItemNode: Ancestor | Element) => {\n const sublist = (listItemNode.children as Node[]).find(n => match(n, { type: getListTypes() })) as Element | undefined;\n return listItemNode.children.length === 2 && sublist;\n};\n\n/**\n * li + p structure\n * @param listItemNode\n */\nexport const hasStableListItem = (listItemNode: Ancestor | Element) => {\n const type = (listItemNode.children[0] as Element).type;\n return listItemNode.children.length === 1 && type === ElementKinds.paragraph;\n};\n","import { Node, Element } from 'slate';\nimport { hasListInListItem } from './has-list-in-list-item';\nimport { isNodeTypeList } from './is-node-type-list';\n\n/**\n * list 中 是否是单个listItem,且listItem没有子列表\n */\nexport const isSingleListItem = (list: Node) => {\n return isNodeTypeList(list) && (list.children as Node[]).length === 1 && !hasListInListItem(list.children[0] as Element);\n};\n","import { Editor, Location, Element } from 'slate';\nimport * as TheQueries from '../../../queries';\nimport { ElementKinds } from '../../../constants';\nimport { ListItemElement } from '../../../custom-types';\nimport { isList } from './is-list';\n\n/**\n * 如果at(默认= selection)位于ul> li> p中,则返回li和ul节点条目。\n */\nexport const getListItemEntry = (editor: Editor, { at = editor.selection }: { at?: Location | null } = {}) => {\n if (at && TheQueries.isNodeTypeIn(editor, ElementKinds.listItem, { at })) {\n const selectionParent = TheQueries.getParent(editor, at);\n if (!selectionParent) return;\n const [, paragraphPath] = selectionParent;\n\n const listItem = TheQueries.getAboveByType(editor, ElementKinds.listItem, { at }) || TheQueries.getParent(editor, paragraphPath);\n\n if (!listItem) return;\n const [listItemNode, listItemPath] = listItem;\n\n if ((listItemNode as ListItemElement).type !== ElementKinds.listItem) return;\n\n const list = TheQueries.getParent(editor, listItemPath);\n if (!list || !isList(list[0] as Element)) return;\n\n return {\n list,\n listItem\n };\n }\n};\n","import { Editor } from 'slate';\nimport * as TheQueries from '../../../queries';\nimport { ElementKinds } from '../../../constants';\n\n/**\n * Is the selection focus at the start of its parent block.\n */\nexport const isSelectionAtListItemStart = (editor: Editor) => {\n const listItemEntry = TheQueries.getAboveByType(editor, [ElementKinds.listItem]);\n if (listItemEntry) {\n return TheQueries.isStart(editor, editor.selection.focus, listItemEntry[1]);\n }\n return false;\n};\n","import { NodeEntry, Ancestor, Node, Path, Transforms, Editor, Element } from 'slate';\nimport * as TheQueries from '../../../queries';\nimport { hasListInListItem } from '../queries/has-list-in-list-item';\nimport { getListItemEntry } from '../queries/get-list-item-entry';\n\nexport interface InsertListDataOptions {\n /**\n * 要粘贴的list数据\n */\n fromList: Element;\n\n /**\n * 粘贴list数据至此\n */\n toListItemEntry: NodeEntry<Ancestor>;\n}\n\nexport const insertListData = (editor: Editor, { fromList, toListItemEntry }: InsertListDataOptions) => {\n const { children } = fromList;\n const [toListItem, toListItemPath] = toListItemEntry;\n const nextListItemPath = Path.next(toListItemPath);\n const toListItemIsEmptyParagraph = TheQueries.isEmptyParagraph(editor, editor.selection.anchor);\n const hasSubList = hasListInListItem(toListItem as Element);\n\n let selectPath = [...toListItemPath];\n const liIndex = selectPath.pop();\n selectPath = [...selectPath, liIndex + children.length];\n\n Editor.withoutNormalizing(editor, () => {\n if (toListItemIsEmptyParagraph && hasSubList) {\n Transforms.insertNodes(editor, children, { at: nextListItemPath });\n } else {\n const insertListItemPath = toListItemIsEmptyParagraph ? toListItemPath : nextListItemPath;\n // 如果粘贴目标listItem为空,则先删除listItem\n if (toListItemIsEmptyParagraph) {\n Transforms.removeNodes(editor, { at: insertListItemPath });\n selectPath = Path.previous(selectPath);\n }\n Transforms.insertNodes(editor, children, { at: insertListItemPath });\n }\n\n /**\n * 粘贴目标lisItem有子列表\n */\n if (hasSubList) {\n const paragraphPath = toListItemPath.concat([0]);\n const nextSubListPath = Path.next(paragraphPath);\n\n // 判断粘贴数据是否是多级\n if (hasListInListItem(fromList.children[0] as Element)) {\n // 设置粘贴后正确选区\n Transforms.select(editor, Editor.end(editor, nextListItemPath));\n\n // 获取当前选区所在listItem entry\n const currentListItemEntry = getListItemEntry(editor, {});\n // 获取粘贴目标listItem中的子列表\n const { children: subListChildren } = Node.get(editor, nextSubListPath) as Element;\n\n /**\n * 复制子列表数据\n * 之所以是复制,而不是移动,因为无法单纯一次性移动子列表的所有listItem(不包含subList本身)到目标位置,\n * 需要循环移动才可以\n **/\n Transforms.insertNodes(editor, subListChildren as Node[], {\n at: Path.next(currentListItemEntry.listItem[1])\n });\n // 删除已被复制后无用的listItem/listItem subList\n Transforms.delete(editor, {\n at: toListItemIsEmptyParagraph ? toListItemPath : nextSubListPath\n });\n return;\n }\n\n Transforms.select(editor, Editor.end(editor, selectPath));\n\n // 粘贴数据不是多级\n const currentListItemEntry = getListItemEntry(editor, {});\n Transforms.moveNodes(editor, {\n at: nextSubListPath,\n to: currentListItemEntry.listItem[1].concat(1)\n });\n\n if (toListItemIsEmptyParagraph) {\n Transforms.delete(editor, { at: toListItemPath });\n }\n return;\n }\n });\n\n // 粘贴目标listItem没有子列表, 设置选区\n Transforms.select(editor, Editor.end(editor, selectPath));\n return;\n};\n","import { Ancestor, Editor, NodeEntry, Path, Transforms, Element } from 'slate';\nimport * as TheQueries from '../../../queries';\nimport { ElementKinds } from '../../../constants';\nimport { ListItemElement } from '../../../custom-types';\n\nexport interface MoveListItemUpOptions {\n list: NodeEntry<Ancestor>;\n listItem: NodeEntry<Ancestor>;\n}\n\n/**\n * 将列表项移到其父项旁边。\n * 父项应为列表项。\n */\nexport const moveListItemUp = (editor: Editor, { list, listItem }: MoveListItemUpOptions, options?: any) => {\n const [listNode, listPath] = list;\n const [, listItemPath] = listItem;\n\n const listParentEntry = TheQueries.getParent(editor, listPath);\n if (!listParentEntry) return;\n const [listParentNode, listParentPath] = listParentEntry;\n\n if ((listParentNode as Element).type !== ElementKinds.listItem) {\n return;\n }\n\n Editor.withoutNormalizing(editor, () => {\n const newListItemPath = Path.next(listParentPath);\n\n // 将 item 上移一层\n Transforms.moveNodes(editor, {\n at: listItemPath,\n to: newListItemPath\n });\n\n /**\n * 将下一个兄弟节点移动到新列表\n */\n const listItemIdx = listItemPath[listItemPath.length - 1];\n const siblingPath = [...listItemPath];\n const newListPath = newListItemPath.concat(1);\n let siblingFound = false;\n let newSiblingIdx = 0;\n\n listNode.children.forEach((n, idx) => {\n if (listItemIdx < idx) {\n if (!siblingFound) {\n siblingFound = true;\n\n Transforms.insertNodes(\n editor,\n {\n type: (listNode as ListItemElement).type,\n children: []\n },\n { at: newListPath }\n );\n }\n\n siblingPath[siblingPath.length - 1] = listItemIdx;\n const newSiblingsPath = newListPath.concat(newSiblingIdx);\n newSiblingIdx++;\n Transforms.moveNodes(editor, {\n at: siblingPath,\n to: newSiblingsPath\n });\n }\n });\n\n // 处理listItem下方有段落的情况\n const listIndex = listParentNode.children.findIndex(item => item.key === (listNode as Element).key);\n const behindNode = listParentNode.children.slice(listIndex + 1);\n if (behindNode.length > 0) {\n const nextPath = Path.next(newListItemPath);\n Transforms.insertNodes(\n editor,\n {\n type: ElementKinds.listItem,\n children: []\n },\n { at: nextPath }\n );\n const moveStartPath = TheQueries.findPath(editor, behindNode[0]);\n const moveEndPath = TheQueries.findPath(editor, behindNode[behindNode.length - 1]);\n const moveRange = Editor.range(editor, moveStartPath, moveEndPath);\n Transforms.moveNodes(editor, {\n at: moveRange,\n to: nextPath.concat(0),\n match: node => behindNode.includes(node as any)\n });\n }\n\n // 删除子列表(如果它是第一个列表项)\n if (!listItemIdx) {\n Transforms.removeNodes(editor, {\n at: listPath\n });\n }\n });\n return true;\n};\n","import { Editor, Path, Range, Transforms, Element } from 'slate';\nimport { ElementKinds } from '../../../constants';\nimport * as TheQueries from '../../../queries';\n\n/**\n * Insert list item if selection in li>p.\n */\nexport const insertListItem = (editor: Editor) => {\n if (editor.selection && !TheQueries.isRangeAtRoot(editor.selection)) {\n const paragraphEntry = TheQueries.getAboveByType(editor, ElementKinds.paragraph);\n if (!paragraphEntry) {\n return;\n }\n const [, paragraphPath] = paragraphEntry;\n\n const [listItemNode, listItemPath] = Editor.parent(editor, paragraphPath);\n if (Element.isElement(listItemNode) && listItemNode.type !== ElementKinds.listItem) {\n return;\n }\n\n if (!Range.isCollapsed(editor.selection)) {\n Transforms.delete(editor);\n }\n\n const isEnd = TheQueries.isBlockTextEmptyAfterSelection(editor);\n const nextNodePath = Path.next(paragraphPath);\n const nextListItemPath = Path.next(listItemPath);\n const nextEnd = Editor.end(editor, listItemPath);\n\n /**\n * If not end, split nodes, wrap a list item on the new paragraph and move it to the next list item\n */\n if (!isEnd) {\n Editor.withoutNormalizing(editor, () => {\n Transforms.splitNodes(editor, { at: editor.selection, always: true });\n Transforms.wrapNodes(\n editor,\n {\n type: ElementKinds.listItem,\n children: []\n },\n { at: nextNodePath }\n );\n Transforms.moveNodes(editor, {\n at: nextNodePath,\n to: nextListItemPath\n });\n });\n } else {\n /**\n * If end, insert a list item after and select it\n */\n Editor.withoutNormalizing(editor, () => {\n Transforms.insertNodes(\n editor,\n {\n type: ElementKinds.listItem,\n children: [{ type: ElementKinds.paragraph, children: [{ text: '' }] }]\n },\n { at: nextListItemPath }\n );\n Transforms.select(editor, nextListItemPath);\n });\n }\n\n /**\n * If there is a list in the list item, move it to the next list item\n */\n if (TheQueries.getNode(editor, nextNodePath)) {\n Transforms.moveNodes(editor, {\n at: Editor.range(editor, nextNodePath, nextEnd),\n to: nextListItemPath.concat(1),\n match: node => {\n // TODO: types\n return listItemNode.children.includes(node as any);\n }\n });\n }\n\n return true;\n }\n};\n","import { Editor } from 'slate';\nimport * as TheTransforms from '../../../transforms';\nimport { ElementKinds } from '../../../constants/node-types';\n\nexport const unwrapList = (editor: Editor) => {\n Editor.withoutNormalizing(editor, () => {\n TheTransforms.unwrapNodesByType(editor, ElementKinds.listItem);\n TheTransforms.unwrapNodesByType(editor, [ElementKinds.bulletedList, ElementKinds.numberedList], { split: true });\n });\n};\n","import { Ancestor, NodeEntry } from 'slate';\nimport { hasListInListItem } from './has-list-in-list-item';\n\n/**\n * 获取 listItem 内的列表(如果存在).\n * 它采用以下结构:ul> li > span + ul\n */\nexport const getListItemSublist = (listItem: NodeEntry<Ancestor>, options?: any): NodeEntry<Ancestor> | undefined => {\n const [listItemNode, listItemPath] = listItem;\n\n if (hasListInListItem(listItemNode)) {\n return [listItemNode.children[1] as Ancestor, listItemPath.concat([1])];\n }\n};\n","import { Ancestor, Editor, NodeEntry, Path, Transforms, Element } from 'slate';\nimport { moveChildren } from '../../../transforms/move-children';\nimport { getListItemSublist } from '../queries/get-list-item-sublist';\nimport * as TheQueries from '../../../queries';\n\nexport interface MoveListItemSublistItemsToListItemSublistOptions {\n /**\n * The list item to merge.\n */\n fromListItem: NodeEntry<Ancestor>;\n\n /**\n * The list item where to merge.\n */\n toListItem: NodeEntry<Ancestor>;\n\n /**\n * Move to the start of the list instead of the end.\n */\n start?: boolean;\n}\n\n/**\n * Move fromListItem sublist list items to the end of `toListItem` sublist.\n * If there is no `toListItem` sublist, insert one.\n */\nexport const moveListItemSublistItemsToListItemSublist = (\n editor: Editor,\n { fromListItem, toListItem, start }: MoveListItemSublistItemsToListItemSublistOptions,\n options?: any\n) => {\n const [, fromListItemPath] = fromListItem;\n const [toListItemNode, toListItemPath] = toListItem;\n\n const fromListItemSublist = getListItemSublist(fromListItem, options);\n if (!fromListItemSublist) return 0;\n const [, fromListItemSublistPath] = fromListItemSublist;\n\n const toListItemSublist = getListItemSublist(toListItem, options);\n\n let to: Path;\n\n if (!toListItemSublist) {\n const fromList = TheQueries.getParent(editor, fromListItemPath);\n if (!fromList) return 0;\n const [fromListNode] = fromList;\n\n const fromListType = (fromListNode as Element).type;\n const toListItemSublistPath = toListItemPath.concat([toListItemNode.children.length]);\n Transforms.insertNodes(editor, { type: fromListType, children: [] } as Element, { at: toListItemSublistPath });\n\n to = toListItemSublistPath.concat([0]);\n } else if (start) {\n const [, toListItemSublistPath] = toListItemSublist;\n to = toListItemSublistPath.concat([0]);\n } else {\n to = Path.next(TheQueries.getLastChildPath(toListItemSublist));\n }\n\n const moved = moveChildren(editor, {\n at: Path.previous(fromListItemSublistPath),\n to\n });\n\n // Remove the empty list\n Transforms.delete(editor, { at: fromListItemPath });\n\n return moved;\n};\n","import { Editor, Node, NodeEntry, Path, Element } from 'slate';\nimport { ListItemElement } from '../../../custom-types';\nimport { ElementKinds } from '../../../constants';\nimport { insertParagraph } from '../../../transforms/insert-paragraph';\n\nexport const normalizeListItem = (editor: Editor, { nodeEntry }: { nodeEntry: NodeEntry<ListItemElement> }) => {\n const [listItemNode, listItemPath] = nodeEntry;\n const firstChildPath: Path = listItemPath.concat([0]);\n const firstChild = (listItemNode.children as Node[])?.[0];\n\n if (!firstChild) {\n insertParagraph(editor, firstChildPath);\n return true;\n }\n\n // Ensure that all lists have a <p> tag as a first element\n if (Element.isElement(firstChild) && (firstChild.type === ElementKinds.bulletedList || firstChild.type === ElementKinds.numberedList)) {\n insertParagraph(editor, firstChildPath);\n return true;\n }\n};\n","import { Editor, Transforms, Path, Node, NodeEntry, Element } from 'slate';\nimport * as TheQueries from '../../../queries';\nimport * as TheTransforms from '../../../transforms';\n\n// 列表续号\nexport const normalizeNo = (editor: Editor, nodeEntry: NodeEntry) => {\n const [listNode, listPath] = nodeEntry;\n let moved = false;\n Editor.withoutNormalizing(editor, () => {\n /**\n * 获取nextList判断是否为同类型list\n * 如果为同类型list,则把nextList children移动到当前list的尾部, 并删除nextList\n */\n const nextPath = Path.next(listPath);\n const nextNode = TheQueries.getNode(editor, nextPath) as Node;\n if (nextNode && Element.isElement(nextNode) && Element.isElement(listNode) && nextNode.type === listNode.type) {\n TheTransforms.moveChildren(editor, {\n at: [nextNode, nextPath],\n to: listPath.concat((listNode.children as Node[]).length)\n });\n Transforms.removeNodes(editor, { at: nextPath });\n moved = true;\n }\n\n if (listPath[listPath.length - 1] !== 0) {\n /**\n * 获取prevList判断是否为同类型list\n * 如果为同类型list,则把当前list children移动到prevList的尾部, 并删除当前List\n */\n const currentListNode = TheQueries.getNode(editor, listPath);\n const prevPath = Path.previous(listPath);\n const prevNode = TheQueries.getNode(editor, prevPath) as Node;\n if (prevNode && Element.isElement(prevNode) && Element.isElement(currentListNode) && prevNode.type === currentListNode.type) {\n TheTransforms.moveChildren(editor, {\n at: [currentListNode, listPath],\n to: prevPath.concat((prevNode.children as Node[]).length)\n });\n Transforms.removeNodes(editor, { at: listPath });\n moved = true;\n }\n }\n });\n return moved;\n};\n","import { Descendant, Editor, NodeEntry, Transforms, Element } from 'slate';\nimport { ElementKinds } from '../../../constants';\nimport { match } from '../../../utils/match';\nimport { getListTypes } from '../queries/get-list-types';\nimport { normalizeListItem } from './normalize-list-item';\nimport { ListNormalizerOptions } from '../types';\nimport { normalizeNo } from './normalize-no';\nimport { isList } from '../queries/is-list';\nimport { TheHistoryEditor } from '../../common/history.plugin';\n\n/**\n * Normalize list node to force the ul>li>p+ul structure.\n */\nexport const getListNormalizer = (editor: Editor, { validLiChildrenTypes }: ListNormalizerOptions) => {\n const { normalizeNode } = editor;\n\n return ([node, path]: NodeEntry) => {\n // 不是选区, 执行续号检测操作\n if (isList(node as Element) && !TheHistoryEditor.isUndoing(editor)) {\n const moved = normalizeNo(editor, [node, path]);\n if (moved) {\n return;\n }\n }\n\n if (match(node, { type: getListTypes() })) {\n if (Element.isElement(node) && !(node.children as Descendant[]).length) {\n return Transforms.removeNodes(editor, { at: path });\n }\n }\n\n // normalize list item\n // 1. list-item at least one child\n // 2. list-item first child is not list\n if (Element.isElement(node) && node.type === ElementKinds.listItem) {\n if (normalizeListItem(editor, { nodeEntry: [node, path] })) {\n // Tree changed - kick off another normalization\n return;\n }\n }\n\n normalizeNode([node, path]);\n };\n};\n","import { Ancestor, Editor, NodeEntry, Path, Transforms } from 'slate';\nimport { getListTypes } from '../queries/get-list-types';\nimport { moveChildren } from '../../../transforms/move-children';\nimport * as TheQueries from '../../../queries';\n\nexport interface MergeListItemIntoListOptions {\n /**\n * 该节点的子列表的列表项将被移动。\n */\n fromListItem: NodeEntry<Ancestor>;\n\n /**\n * 列表项将被移动到该列表中。\n */\n toList: NodeEntry<Ancestor>;\n\n /**\n * 具体位置\n */\n location?: number;\n}\n\n/**\n * 将 fromListItem 子列表的列表项移到 toList\n */\nexport const moveListItemSublistItemsToList = (editor: Editor, { fromListItem, toList, location }: MergeListItemIntoListOptions) => {\n const fromListItemSublist = TheQueries.findDescendant(editor, {\n at: fromListItem[1],\n match: {\n type: getListTypes()\n }\n });\n if (!fromListItemSublist) return 0;\n\n const [, fromListItemSublistPath] = fromListItemSublist;\n const lastChildPath = TheQueries.getLastChildPath(toList);\n let moved: number;\n Editor.withoutNormalizing(editor, () => {\n moved = moveChildren(editor, {\n at: fromListItemSublistPath,\n to: location ? toList[1].concat(location) : Path.next(lastChildPath)\n });\n\n // 删除空白列表\n Transforms.delete(editor, { at: fromListItemSublistPath });\n });\n\n return moved;\n};\n","import { Ancestor, Editor, NodeEntry, Path, Transforms, Element, Node } from 'slate';\nimport { getListItemEntry } from '../queries/get-list-item-entry';\nimport { hasListInListItem } from '../queries/has-list-in-list-item';\nimport { moveListItemSublistItemsToList } from './move-list-item-sublist-items-to-list';\nimport { isNodeTypeList } from '../queries/is-node-type-list';\n\nexport interface MoveListItemDownOptions {\n list: NodeEntry<Ancestor>;\n listItem: NodeEntry<Ancestor>;\n}\n\nexport const moveListItemDown = (editor: Editor, { list, listItem }: MoveListItemDownOptions) => {\n const [listNode] = list;\n const [, listItemPath] = listItem;\n\n Editor.withoutNormalizing(editor, () => {\n // 以前的兄弟是新父级\n const previousSiblingItem = Editor.node(editor, Path.previous(listItemPath)) as NodeEntry<Ancestor>;\n\n if (previousSiblingItem) {\n const [previousNode, previousPath] = previousSiblingItem;\n const lastChildIndexOfPreviousNode = previousNode.children.length - 1;\n const lastChildOfPreviousNode = previousNode.children[lastChildIndexOfPreviousNode] as Element;\n\n const newPath = previousPath.concat(\n isNodeTypeList(lastChildOfPreviousNode)\n ? [lastChildIndexOfPreviousNode, lastChildOfPreviousNode.children.length]\n : [previousNode.children.length]\n );\n\n if (!isNodeTypeList(lastChildOfPreviousNode)) {\n // 创建新子列表\n const type = (listNode as Element).type;\n Transforms.wrapNodes(editor, { type, children: [] } as Element, {\n at: listItemPath\n });\n }\n // 将当前listItem移动到子列表\n Transforms.moveNodes(editor, {\n at: listItemPath,\n to: newPath\n });\n\n const currentListItemEntry = getListItemEntry(editor, {});\n if (hasListInListItem(currentListItemEntry.listItem[0])) {\n moveListItemSublistItemsToList(editor, {\n fromListItem: currentListItemEntry.listItem,\n toList: currentListItemEntry.list\n });\n }\n }\n });\n};\n","import { Editor } from 'slate';\nimport { moveListItemUp } from './transforms/move-list-item-up';\nimport { moveListItemDown } from './transforms/move-list-item-down';\nimport { getListItemEntry } from './queries/get-list-item-entry';\nimport * as TheQueries from '../../queries';\n\nexport function onKeyDownList(e: KeyboardEvent, editor: Editor) {\n let moved: boolean | undefined = false;\n if (e.key === 'Tab') {\n const res = getListItemEntry(editor, {});\n if (!res) {\n return false;\n }\n const { list, listItem } = res;\n const [, listItemPath] = listItem;\n\n e.preventDefault();\n\n // move up with shift+tab\n const shiftTab = e.shiftKey;\n if (shiftTab) {\n moved = moveListItemUp(editor, { list, listItem });\n if (moved) {\n e.preventDefault();\n return true;\n }\n }\n\n // move down with tab\n const tab = !e.shiftKey;\n if (tab && !TheQueries.isFirstChild(listItemPath)) {\n moveListItemDown(editor, { list, listItem });\n return true;\n }\n return false;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Element } from 'slate';\nimport { Alignment } from './constants/node-types';\n\n@Pipe({\n name: 'elementStyle'\n})\nexport class ElementStylePipe implements PipeTransform {\n transform(element: Element, align?: Alignment) {\n const style: { [key: string]: string } = {};\n if (element.align || align) {\n style.textAlign = (element.align as string) || align || Alignment.left;\n }\n if (element.textIndent) {\n style.textIndent = element.textIndent + 'em';\n }\n return style;\n }\n}\n\n@Pipe({\n name: 'elementClass'\n})\nexport class ElementClassPipe implements PipeTransform {\n transform(element: Element) {\n let classStr = '';\n const prefix = 'indent';\n if (element.textIndent) {\n classStr += `${prefix}-${element.textIndent}`;\n }\n return classStr;\n }\n}\n","import { Component, OnInit, ElementRef, OnDestroy, ChangeDetectorRef, HostBinding } from '@angular/core';\nimport { Editor } from 'slate';\nimport { ElementClassPipe } from '../../../pipes';\nimport { NumberedListElement } from '../../../custom-types';\nimport { TheBaseElementComponent } from '../../../interfaces';\n\n@Component({\n selector: 'ol[theOl]',\n template: `<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>`,\n providers: [ElementClassPipe]\n})\nexport class TheNumberedListComponent extends TheBaseElementComponent<NumberedListElement, Editor> implements OnInit, OnDestroy {\n @HostBinding('attr.start')\n get start() {\n return this.element.start;\n }\n\n @HostBinding('class')\n get class() {\n return this.elementClassPipe.transform(this.element);\n }\n\n constructor(public elementRef: ElementRef, public cdr: ChangeDetectorRef, private elementClassPipe: ElementClassPipe) {\n super(elementRef, cdr);\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnInit, ElementRef, OnDestroy, ChangeDetectorRef, HostBinding } from '@angular/core';\nimport { Editor } from 'slate';\nimport { ElementClassPipe } from '../../../pipes';\nimport { BulletedListElement } from '../../../custom-types';\nimport { TheBaseElementComponent } from '../../../interfaces';\n\n@Component({\n selector: 'ul[theUl]',\n template: `<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>`,\n providers: [ElementClassPipe]\n})\nexport class TheBulletedListComponent extends TheBaseElementComponent<BulletedListElement, Editor> implements OnInit, OnDestroy {\n @HostBinding('class')\n get class() {\n return this.elementClassPipe.transform(this.element);\n }\n\n constructor(public elementRef: ElementRef, public cdr: ChangeDetectorRef, private elementClassPipe: ElementClassPipe) {\n super(elementRef, cdr);\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","import { Component, OnInit, ElementRef, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { Editor, Element } from 'slate';\nimport { TheBaseElementComponent } from '../../../interfaces';\n\n@Component({\n selector: 'li[theLi]',\n template: `<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>`\n})\nexport class TheListItemComponent extends TheBaseElementComponent<Element, Editor> implements OnInit, OnDestroy {\n constructor(public elementRef: ElementRef, public cdr: ChangeDetectorRef) {\n super(elementRef, cdr);\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","import { Editor, Range, Path } from 'slate';\nimport { getAboveByType } from '../../../queries/get-above-by-type';\nimport { ElementKinds } from '../../../constants/node-types';\n\n/**\n * Is the selection in same li\n */\nexport const isSelectionInSameListItem = (\n editor: Editor\n) => {\n const { selection } = editor;\n\n if (!selection) {\n return false;\n }\n\n const [start, end] = Range.edges(selection);\n const startListItemEntry = getAboveByType(editor, ElementKinds.listItem, { at: start.path });\n const endListItemEntry = getAboveByType(editor, ElementKinds.listItem, { at: end.path });\n\n return startListItemEntry && endListItemEntry && Path.equals(startListItemEntry[1], endListItemEntry[1]);\n};","import { Transforms, Node, Editor, Path, Ancestor, Element } from 'slate';\nimport { AngularEditor, getPlainText } from 'slate-angular';\nimport { CLIPBOARD_FORMAT_KEY, ElementKinds } from '../../constants';\nimport * as TheQueries from '../../queries';\nimport * as TheTransforms from '../../transforms';\nimport { isList } from './queries/is-list';\nimport { isInList } from './queries/is-in-list';\nimport { isListNested } from './queries/is-list-nested';\nimport { getListTypes } from './queries/get-list-types';\nimport { getStartListItem } from './queries/get-start-list-item';\nimport { isSingleListItem } from './queries/is-single-list-item';\nimport { getListItemEntry } from './queries/get-list-item-entry';\nimport { hasListInListItem, hasStableListInListItem, hasStableListItem } from './queries/has-list-in-list-item';\nimport { isSelectionAtListItemStart } from './queries/is-selection-at-list-item-start';\nimport { insertListData } from './transforms/insert-list-data';\nimport { moveListItemUp } from './transforms/move-list-item-up';\nimport { insertListItem } from './transforms/insert-list-item';\nimport { unwrapList } from './transforms/unwrap-list';\nimport { moveListItemSublistItemsToListItemSublist } from './transforms/move-list-item-sublist-items-to-list-item-sublist';\nimport { getListNormalizer } from './normalizers/get-list-normalizer';\nimport { onKeyDownList } from './on-key-down-list';\nimport { WithListOptions } from './types';\nimport { TheNumberedListComponent } from './components/numbered-list.component';\nimport { TheBulletedListComponent } from './components/bulleted-list.component';\nimport { TheListItemComponent } from './components/list-item.component';\nimport { extractFragment } from '../../utils/fragment';\nimport { isSelectionInSameListItem } from './queries/is-selection-in-same-list-item';\n\nexport const withList =\n ({ validLiChildrenTypes }: WithListOptions = {}) =>\n (editor: Editor) => {\n const { insertBreak, deleteBackward, onKeydown, insertData, setFragmentData, renderElement } = editor;\n\n const resetBlockTypesListRule = {\n types: [ElementKinds.listItem],\n defaultType: ElementKinds.paragraph,\n onReset: (_editor: Editor) => unwrapList(_editor)\n };\n\n editor.insertBreak = () => {\n const node = TheQueries.anchorBlock(editor);\n\n if (!node) {\n insertBreak();\n return;\n }\n\n const isVoid = Editor.isVoid(editor, node);\n if (isVoid) {\n insertBreak();\n return;\n }\n const listEntry = getListItemEntry(editor, {});\n if (listEntry) {\n let moved: boolean | undefined;\n const { list, listItem } = listEntry;\n const [listItemNode, listItemPath] = listItem;\n const cursor = editor.selection.focus;\n const isStart = Editor.isStart(editor, cursor, listItemPath);\n\n // deprecated\n // 如果有子级\n if (hasListInListItem(listItemNode)) {\n /**\n * If selection is at the end of li,\n * insert below li where children will be moved.\n */\n if (Editor.isEnd(editor, cursor, listItemPath)) {\n return Transforms.insertNodes(\n editor,\n {\n type: ElementKinds.listItem,\n children: [{ type: ElementKinds.paragraph, children: [{ text: '' }] }]\n },\n { at: Path.next(listItemPath), select: true }\n );\n }\n\n /**\n * 如果选区是在listItem的开头,则在listItem上方插入\n */\n if (isStart) {\n return Transforms.insertNodes(\n editor,\n {\n type: ElementKinds.listItem,\n children: [{ type: ElementKinds.paragraph, children: [{ text: '' }] }]\n },\n { at: listItemPath }\n );\n }\n }\n\n // 如果选择的listItem为空则将其向上移动\n if (isStart && TheQueries.isBlockAboveEmpty(editor)) {\n moved = moveListItemUp(editor, { list, listItem });\n if (moved) return;\n }\n\n const didReset = TheTransforms.onKeyDownResetBlockType({\n rules: [\n {\n ...resetBlockTypesListRule,\n predicate: () => !moved && isStart && TheQueries.isBlockAboveEmpty(editor)\n }\n ]\n })(null, editor);\n if (didReset) {\n return;\n }\n\n /**\n * Add a new list item if selection is in a LIST_ITEM > p.type.\n */\n if (!moved) {\n const inserted = insertListItem(editor);\n if (inserted) {\n return;\n }\n }\n }\n\n insertBreak();\n };\n\n editor.setFragmentData = unit => {\n const { selection } = editor;\n const [start] = Editor.edges(editor, selection);\n if (isInList(editor, start)) {\n const fragmentData = editor.getFragment();\n const fragmentElement = fragmentData[0] as Element;\n if (getListTypes().includes(fragmentElement.type)) {\n const startNodes = getStartListItem([fragmentElement.children[0]] as Element[]);\n const children = startNodes.concat((fragmentElement.children as Element[]).slice(1));\n let fragmentNodes = [\n {\n ...fragmentElement,\n children\n }\n ] as Node[];\n if (isSelectionInSameListItem(editor)) {\n // 仅仅复制列表中的内容\n fragmentNodes = children[0].children;\n }\n const fragment = fragmentNodes.concat(fragmentData.slice(1));\n const domRange = AngularEditor.toDOMRange(editor, selection);\n const contents = domRange.cloneContents();\n const stringObj = JSON.stringify(fragment);\n const encoded = window.btoa(encodeURIComponent(stringObj));\n unit.setData(`application/${CLIPBOARD_FORMAT_KEY}`, encoded);\n const div = document.createElement('div');\n div.appendChild(contents);\n div.setAttribute('hidden', 'true');\n document.body.appendChild(div);\n unit.setData('text/html', div.innerHTML);\n unit.setData('text/plain', getPlainText(div));\n document.body.removeChild(div);\n return;\n }\n }\n setFragmentData(unit);\n };\n\n editor.deleteBackward = unit => {\n const res = getListItemEntry(editor, {});\n\n if (res && isSelectionAtListItemStart(editor)) {\n const { list, listItem } = res;\n const [, listPath] = list;\n const [listItemNode, listItemPath] = listItem;\n\n const previousListItemPath = TheQueries.getPreviousPath(listItemPath);\n\n if (previousListItemPath) {\n const beforePoint = Editor.before(editor, listItemPath);\n const parentPath = Path.parent(beforePoint.path);\n const parentNode = Node.get(editor, parentPath);\n if (Editor.isVoid(editor, parentNode)) {\n Editor.withoutNormalizing(editor, () => {\n TheTransforms.unwrapNodesByType(editor, [ElementKinds.bulletedList, ElementKinds.numberedList], {\n split: true\n });\n TheTransforms.unwrapNodesByType(editor, ElementKinds.listItem);\n });\n return;\n }\n }\n\n if (previousListItemPath && hasStableListInListItem(listItemNode)) {\n Editor.withoutNormalizing(editor, () => {\n deleteBackward(unit);\n const [previousListItemNode] = Editor.node(editor, previousListItemPath);\n moveListItemSublistItemsToListItemSublist(\n editor,\n {\n fromListItem: listItem,\n toListItem: [previousListItemNode as Ancestor, previousListItemPath],\n start: false\n },\n {}\n );\n });\n return;\n }\n\n // move listItem children to before listItem\n if (listItemNode.children.length > 1) {\n Editor.withoutNormalizing(editor, () => {\n const beforePathRef = Editor.pathRef(editor, listItemPath);\n const beforePoint = Editor.before(editor, listItemPath);\n const startPoint = Editor.start(editor, listItemPath);\n const endPoint = Editor.end(editor, listItemPath);\n const isInFirstChild = !isListNested(editor, listPath) && TheQueries.isFirstChild(listItemPath);\n const to = isInFirstChild ? listPath : Path.next(Path.parent(beforePoint.path));\n\n // TODO: types\n Transforms.moveNodes(editor, {\n at: Editor.range(editor, startPoint, endPoint),\n to,\n match: node => listItemNode.children.includes(node as any)\n });\n Transforms.delete(editor, { at: beforePathRef.unref() });\n\n if (!isInFirstChild) {\n deleteBackward(unit);\n }\n });\n return;\n }\n\n // deprecated\n if (!isListNested(editor, listPath) && TheQueries.isFirstChild(listItemPath)) {\n unwrapList(editor);\n return;\n }\n }\n\n deleteBackward(unit);\n };\n\n editor.insertData = (data: DataTransfer) => {\n const text = data.getData('text/plain');\n const fragment = extractFragment(data);\n const aboveEntry = Editor.above(editor, {\n match: n => Editor.isBlock(editor, n) && n.type === ElementKinds.listItem\n });\n if (fragment) {\n const res = getListItemEntry(editor, {});\n if (\n fragment.length === 1 &&\n isList(fragment[0] as Element) &&\n aboveEntry &&\n !isSingleListItem(fragment[0]) &&\n hasStableListItem(res.listItem[0])\n ) {\n insertListData(editor, { fromList: fragment[0] as Element, toListItemEntry: aboveEntry });\n return;\n }\n }\n\n insertData(data);\n };\n\n editor.onKeydown = (event: KeyboardEvent) => {\n const isContinue = !onKeyDownList(event, editor);\n if (isContinue) {\n onKeydown(event);\n }\n };\n\n editor.normalizeNode = getListNormalizer(editor, { validLiChildrenTypes: validLiChildrenTypes });\n\n editor.renderElement = (element: Element) => {\n if (element.type === ElementKinds.numberedList) {\n return TheNumberedListComponent;\n }\n if (element.type === ElementKinds.bulletedList) {\n return TheBulletedListComponent;\n }\n if (element.type === ElementKinds.listItem) {\n return TheListItemComponent;\n }\n return renderElement(element);\n };\n\n return editor;\n };\n","import { Element } from 'slate';\nimport { DOMElement } from 'slate-angular';\nimport { Alignment } from '../constants';\n\n/** Converts CSS pixel values to numbers, eg \"123px\" to 123. Returns NaN for non pixel values. */\nexport function coercePixelsFromCssValue(cssValue: string): number {\n const match = cssValue.match(/(\\d+)px/);\n if (match) {\n return Number(match[1]);\n }\n}\n\nexport function getElementWidth(element: HTMLElement) {\n // Optimization: Check style.width first as we probably set it already before reading\n // offsetWidth which triggers layout.\n return coercePixelsFromCssValue(element.style.width) || element.offsetWidth;\n}\n\nexport function getElementHeight(element: HTMLElement) {\n return Math.round(element.getBoundingClientRect().height);\n}\n\nexport function getColsTotalWidth(cols: HTMLTableColElement[]) {\n return cols.reduce((total, col) => {\n return total + getElementWidth(col);\n }, 0);\n}\n\nexport function getRowsTotalHeight(rows: HTMLTableRowElement[]) {\n return rows.reduce((total, row) => {\n return total + getElementHeight(row);\n }, 0);\n}\n\nexport function useElementStyle(el: HTMLElement, element: Element) {\n if (element.align) {\n el.style.textAlign = (element.align as string) || Alignment.left;\n }\n\n if (element.textIndent) {\n el.style.textIndent = element.textIndent + 'em';\n }\n\n if (element.verticalAlign) {\n el.style.verticalAlign = element.verticalAlign;\n }\n}\n\nexport function getElementClassByPrefix(el: DOMElement, prefix: string) {\n let matchClass = null;\n el.classList.forEach((value, key) => {\n if (value.includes(prefix)) {\n matchClass = value;\n }\n });\n return matchClass;\n}\n","import { Component, ElementRef, HostBinding, ChangeDetectorRef, OnInit } from '@angular/core';\nimport { Editor, Element } from 'slate';\nimport * as TheTransforms from '../../transforms';\nimport { TheBaseElementComponent } from '../../interfaces';\nimport { TodoItemElement } from '../../custom-types';\nimport { getElementClassByPrefix } from '../../utils/dom';\n\n@Component({\n selector: 'div[theTodoItem]',\n template: `\n <span contenteditable=\"false\" class=\"todo-item-status\">\n <input #checkbox type=\"checkbox\" [checked]=\"element.checked\" (click)=\"onCheck(checkbox.checked)\" />\n </span>\n <slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n `\n})\nexport class TheTodoItemComponent extends TheBaseElementComponent<TodoItemElement, Editor> implements OnInit {\n checked: boolean;\n\n @HostBinding('class.the-check-item') checkItemClass = true;\n\n constructor(public elementRef: ElementRef, public cdr: ChangeDetectorRef) {\n super(elementRef, cdr);\n }\n\n onContextChange() {\n super.onContextChange();\n if (this.initialized) {\n this.useIndentClass(this.elementRef.nativeElement, this.element);\n }\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.useIndentClass(this.elementRef.nativeElement, this.element);\n }\n\n onCheck(checked: boolean) {\n if (this.readonly) {\n return false;\n }\n TheTransforms.setNode(this.editor, { checked }, this.element);\n }\n\n useIndentClass(el: HTMLElement, element: Element) {\n const prefix = 'indent';\n if (element.textIndent) {\n const oldClass = getElementClassByPrefix(el, prefix);\n if (oldClass) {\n el.classList.remove(oldClass);\n }\n const newClassName = `${prefix}-${element.textIndent}`;\n el.classList.add(newClassName);\n } else {\n const oldClass = getElementClassByPrefix(el, prefix);\n if (oldClass) {\n el.classList.remove(oldClass);\n }\n }\n }\n}\n","import { Transforms, Range, Editor, Element, Descendant } from 'slate';\nimport { ElementKinds } from '../../constants';\nimport * as TheQueries from '../../queries';\nimport { TheTodoItemComponent } from './todo-item.component';\n\nexport const withTodoItem = (editor: Editor): Editor => {\n const { insertBreak, deleteBackward, renderElement } = editor;\n\n editor.insertBreak = () => {\n const { selection } = editor;\n\n if (selection && Range.isCollapsed(selection)) {\n const [match] = Editor.nodes(editor, {\n match: n => Element.isElement(n) && n.type === ElementKinds.checkItem\n });\n\n if (match) {\n const [, path] = match;\n const block = TheQueries.anchorBlock(editor);\n\n if (block && Editor.isStart(editor, selection.anchor, path) && Editor.isEmpty(editor, block)) {\n Transforms.setNodes(\n editor,\n {\n type: ElementKinds.default,\n checked: undefined\n } as Partial<Descendant>,\n {\n match: n => Element.isElement(n) && n.type === ElementKinds.checkItem\n }\n );\n return;\n }\n }\n }\n insertBreak();\n\n const anchorBlock = TheQueries.anchorBlock(editor);\n if (anchorBlock && anchorBlock.type === ElementKinds.checkItem) {\n Transforms.setNodes(editor, { checked: false });\n }\n };\n\n editor.deleteBackward = unit => {\n const { selection } = editor;\n\n if (selection && Range.isCollapsed(selection)) {\n const [match] = Editor.nodes(editor, {\n match: n => Element.isElement(n) && n.type === ElementKinds.checkItem\n });\n\n if (match) {\n const [, path] = match;\n\n if (Editor.isStart(editor, selection.anchor, path)) {\n Transforms.setNodes(editor, { type: ElementKinds.default, checked: undefined } as Partial<Descendant>, {\n match: n => Element.isElement(n) && n.type === ElementKinds.checkItem\n });\n return;\n }\n }\n }\n deleteBackward(unit);\n };\n\n editor.renderElement = (element: Element) => {\n if (element.type === ElementKinds.checkItem) {\n return TheTodoItemComponent;\n }\n return renderElement(element);\n };\n\n return editor;\n};\n","import { Component, ElementRef, ChangeDetectorRef, AfterViewInit } from '@angular/core';\nimport { Editor, Element } from 'slate';\nimport { TheBaseElementComponent } from '../../interfaces';\n\n@Component({\n selector: 'the-hr, [theHr]',\n template: `\n <div class=\"the-hr\" contenteditable=\"false\" [ngClass]=\"{ active: selection }\">\n <hr class=\"the-hr\" />\n <slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n </div>\n `\n})\nexport class TheHrComponent extends TheBaseElementComponent<Element, Editor> implements AfterViewInit {\n constructor(public elementRef: ElementRef, public cdr: ChangeDetectorRef) {\n super(elementRef, cdr);\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n const blockCardElement = this.nativeElement.closest('slate-block-card');\n if (blockCardElement) {\n blockCardElement.classList.add(`slate-block-card-${this.element.type}`);\n }\n });\n }\n}\n","import { Editor, Element } from 'slate';\nimport { ElementKinds } from '../../constants';\nimport { TheHrComponent } from './hr.component';\n\nexport const withHr = (editor: Editor): Editor => {\n const { isVoid, isBlockCard, renderElement } = editor;\n\n editor.isVoid = (element: Element) => {\n return element.type === ElementKinds.hr || isVoid(element);\n };\n\n editor.isBlockCard = (element: Element) => {\n if (element.type === ElementKinds.hr) {\n return true;\n }\n return isBlockCard(element);\n };\n\n editor.renderElement = (element: Element) => {\n if (element.type === ElementKinds.hr) {\n return TheHrComponent;\n }\n return renderElement(element);\n };\n\n return editor;\n};\n","import { Editor, Transforms } from 'slate';\nimport * as TheQueries from '../../queries';\nimport { Alignment } from '../../constants';\nimport { TheElement } from '../../custom-types';\n\nexport const withAlign = <T extends Editor>(editor: T): T => {\n const { deleteBackward } = editor;\n\n editor.deleteBackward = unit => {\n const { anchor } = editor.selection;\n const node = TheQueries.anchorBlock(editor) as TheElement;\n const isVoid = Editor.isVoid(editor, node);\n const alignTypes = [Alignment.center, Alignment.right];\n const startLine = Editor.start(editor, anchor.path);\n const startLineRange = { anchor, focus: startLine };\n const beforeText = Editor.string(editor, startLineRange);\n\n if (!isVoid && node && node.align && alignTypes.includes(node.align) && beforeText === '') {\n const align = alignTypes.indexOf(node.align) ? Alignment.center : undefined;\n return Transforms.setNodes(editor, { align });\n }\n deleteBackward(unit);\n };\n\n return editor;\n};\n","import { Editor, Transforms, Range } from 'slate';\nimport { ElementKinds } from '../../constants';\nimport * as TheQueries from '../../queries';\n\nexport const withHeading = (editor: Editor): Editor => {\n const { insertBreak } = editor;\n\n editor.insertBreak = () => {\n const { selection } = editor;\n const anchorBlock = TheQueries.getAnchorBlockEntry(editor);\n if (anchorBlock && Range.isCollapsed(selection) && anchorBlock[0].type.startsWith('heading')) {\n if (Editor.isStart(editor, selection.anchor, anchorBlock[1])) {\n insertBreak();\n Transforms.setNodes(\n editor,\n { type: ElementKinds.paragraph },\n {\n at: selection\n }\n );\n return;\n }\n if (Editor.isEnd(editor, selection.focus, anchorBlock[1])) {\n insertBreak();\n Transforms.setNodes(editor, { type: ElementKinds.paragraph });\n return;\n }\n }\n insertBreak();\n };\n\n return editor;\n};\n","import { Editor, Range, Text, Transforms } from 'slate';\nimport { ZERO_WIDTH_CHAR } from '../../constants';\nimport { MarkEditor } from './mark.editor';\n\nexport const withMark =\n () =>\n <T extends Editor>(editor: T) => {\n const e = editor as T & MarkEditor;\n\n e.removeMark = (key: string, shouldChange = true) => {\n const { selection } = e;\n if (selection) {\n if (Range.isExpanded(selection)) {\n Transforms.unsetNodes(e, key, {\n match: Text.isText,\n split: true\n });\n } else {\n const marks = { ...(Editor.marks(e) || {}) };\n delete marks[key];\n editor.marks = marks;\n const text = Editor.string(e, selection.anchor.path);\n if (text === ZERO_WIDTH_CHAR) {\n Transforms.unsetNodes(e, key, { at: selection.anchor.path });\n }\n if (text !== ZERO_WIDTH_CHAR && text !== '') {\n e.insertText(ZERO_WIDTH_CHAR);\n }\n if (shouldChange) {\n editor.onChange();\n }\n }\n }\n };\n\n e.addMark = (key: string, value: any) => {\n const { selection } = editor;\n\n if (selection) {\n if (Range.isExpanded(selection)) {\n Transforms.setNodes(e, { [key]: value }, { match: Text.isText, split: true });\n } else {\n const marks = {\n ...(Editor.marks(e) || {}),\n [key]: value\n };\n editor.marks = marks;\n const text = Editor.string(e, selection.anchor.path);\n if (text === ZERO_WIDTH_CHAR) {\n Transforms.setNodes(e, { [key]: value }, { at: selection.anchor.path });\n }\n if (text !== ZERO_WIDTH_CHAR && text !== '') {\n e.insertText(ZERO_WIDTH_CHAR);\n }\n }\n }\n };\n\n return e;\n };\n","import { NodeEntry, Element, Node, Editor, Operation, Descendant } from 'slate';\nimport * as TheQueries from '../../queries';\nimport * as TheTransforms from '../../transforms';\nimport { QueryOptions } from '../../interfaces';\nimport { _ } from '../../utils/lodash';\nimport { deleteElementKey } from '../../utils/fragment';\n\nexport interface WithNodeIDProps extends QueryOptions {\n // Key used for the id. Default is `id`.\n idKey?: string;\n // ID factory, e.g. `uuid`\n idCreator?: () => void;\n // Filter `Text` nodes.\n filterText?: boolean;\n}\n\nexport const withNodeID =\n ({ idKey = 'id', idCreator = () => Date.now(), filterText = true, filter = () => true }: WithNodeIDProps = {}) =>\n <T extends Editor>(e: T) => {\n const editor = e as T & { removedIDs: Set<any> };\n\n const { apply, getFragment } = editor;\n\n const idPropsCreator = () => ({ [idKey]: idCreator() });\n\n editor.removedIDs = new Set();\n\n editor.apply = (operation: Operation) => {\n if (operation.type === 'insert_node') {\n const newFilter = (entry: NodeEntry<Node>) => {\n const [_node] = entry;\n return filter(entry) && filterText ? Element.isElement(_node) : TheQueries.isDescendant(_node);\n };\n\n // fix can not find path by orign node\n let node = operation.node;\n if (!Object.isExtensible(node)) {\n node = _.cloneDeep(node);\n }\n\n // it will not overwrite ids once it's set as it's read-only\n TheTransforms.mergeDeepToNodes({\n node,\n source: idPropsCreator,\n query: {\n filter: newFilter,\n }\n });\n\n return apply({\n ...operation,\n node\n });\n }\n\n if (operation.type === 'split_node' && (!filterText || (operation.properties as Element).type)) {\n let id = operation.properties[idKey];\n if (editor.removedIDs.has(id)) {\n editor.removedIDs.delete(id);\n } else {\n id = idCreator();\n }\n\n return apply({\n ...operation,\n properties: {\n ...operation.properties,\n [idKey]: id\n }\n });\n }\n\n if (operation.type === 'merge_node' && (!filterText || (operation.properties as Element).type)) {\n editor.removedIDs.add((operation.properties as Element)[idKey]);\n }\n\n return apply(operation);\n };\n\n editor.getFragment = () => {\n const fragment = _.cloneDeep(getFragment());\n return deleteElementKey(fragment, idKey) as Descendant[];\n }\n\n return editor;\n };\n","import { Editor, Location, Transforms, Node } from 'slate';\n\nexport const autoFormatBlock = (\n editor: Editor,\n type: string,\n at: Location,\n {\n preFormat,\n format\n }: {\n preFormat?: (editor: Editor) => void;\n format?: (editor: Editor, markups?: string[]) => void;\n },\n markups?: string[]\n) => {\n Transforms.delete(editor, { at });\n\n if (preFormat) {\n preFormat(editor);\n }\n\n if (!format) {\n Transforms.setNodes(editor, { type } as Node, { match: n => Editor.isBlock(editor, n) });\n } else {\n format(editor, markups);\n }\n};\n","import { Range, Transforms } from 'slate';\nimport * as TheQueries from '../../../queries';\nimport { MarkEditor } from '../../../plugins/mark/mark.editor';\n\nexport const autoFormatInline = (\n editor: MarkEditor,\n {\n type,\n between,\n markup,\n ignoreTrim\n }: {\n type: string;\n between?: string[];\n markup?: string;\n ignoreTrim?: boolean;\n }\n) => {\n const selection = editor.selection as Range;\n\n const startMarkup = between ? between[0] : markup;\n const endMarkup = between ? between[1] : '';\n\n let endMarkupPointBefore = selection.anchor;\n if (endMarkup) {\n endMarkupPointBefore = TheQueries.getPointBefore(editor, selection, {\n matchString: endMarkup\n });\n if (!endMarkupPointBefore) {\n return false;\n }\n }\n\n const startMarkupPointAfter = TheQueries.getPointBefore(editor, endMarkupPointBefore, {\n matchString: startMarkup,\n skipInvalid: true,\n afterMatch: true\n });\n\n if (!startMarkupPointAfter) {\n return false;\n }\n\n // found\n\n const markupRange: Range = {\n anchor: startMarkupPointAfter,\n focus: endMarkupPointBefore\n };\n\n if (!ignoreTrim) {\n const markupText = TheQueries.getText(editor, markupRange);\n if (markupText.trim() !== markupText) {\n return false;\n }\n }\n\n // delete end markup\n if (endMarkup) {\n endMarkupPointBefore = TheQueries.getPointBefore(editor, selection, {\n matchString: endMarkup\n });\n Transforms.delete(editor, {\n at: {\n anchor: endMarkupPointBefore,\n focus: selection.anchor\n }\n });\n }\n\n // add mark to the text between the markups\n Transforms.select(editor, markupRange);\n editor.addMark(type, true);\n Transforms.collapse(editor, { edge: 'end' });\n editor.removeMark(type, false);\n\n // delete start markup\n const startMarkupPointBefore = TheQueries.getPointBefore(editor, selection, {\n matchString: startMarkup,\n skipInvalid: true\n });\n Transforms.delete(editor, {\n at: {\n anchor: startMarkupPointBefore,\n focus: startMarkupPointAfter\n }\n });\n\n return true;\n};\n","import { Editor, Range } from 'slate';\nimport * as TheQueries from '../../queries';\nimport { castArray } from '../../utils/cast-array';\nimport { WithAutoFormatOptions } from '../../interfaces/auto-format';\nimport { autoFormatBlock } from './transforms/auto-format-block';\nimport { autoFormatInline } from './transforms/auto-format-inline';\n\nexport const withAutoFormat =\n ({ rules }: WithAutoFormatOptions) =>\n <T extends Editor>(editor: T) => {\n const { insertText } = editor;\n\n editor.insertText = text => {\n if (!TheQueries.isCollapsed(editor.selection)) {\n return insertText(text);\n }\n\n for (const { query, ...rule } of rules) {\n const {\n trigger = ' ',\n mode = 'block',\n type,\n markup,\n preFormat,\n format,\n match,\n between,\n ignoreTrim,\n insertTrigger,\n allowSameTypeAbove = false,\n triggerAtBlockStart = true\n } = rule;\n\n if (query && !query(editor, rule)) continue;\n\n const triggers: string[] = castArray(trigger);\n\n // Check trigger\n if (!triggers.includes(text)) continue;\n\n const valid = () => insertTrigger && insertText(text);\n\n if (mode === 'block') {\n let markups: string[] = castArray(markup);\n let markupRange: Range | undefined;\n\n if (triggerAtBlockStart) {\n markupRange = TheQueries.getRangeFromBlockStart(editor) as Range;\n\n // Don't autoformat if there is void nodes.\n const hasVoidNode = TheQueries.someNode(editor, {\n at: markupRange,\n match: n => Editor.isVoid(editor, n)\n });\n if (hasVoidNode) continue;\n\n const textFromBlockStart = TheQueries.getText(editor, markupRange);\n if (match) {\n markups = match(editor, textFromBlockStart);\n }\n if (!markups.includes(textFromBlockStart)) continue;\n } else {\n markupRange = TheQueries.getRangeBefore(editor, editor.selection as Range, {\n matchString: markup,\n skipInvalid: true\n });\n if (!markupRange) continue;\n\n const blockAbovePath = TheQueries.getBlockAbove(editor)?.[1];\n if (!blockAbovePath) continue;\n\n // If the markup is not at the start, insert break before autoformatting.\n if (!Editor.isStart(editor, markupRange.anchor, blockAbovePath)) {\n editor.insertBreak();\n }\n }\n\n if (!allowSameTypeAbove) {\n // Don't autoformat if already in a block of the same type.\n const isBelowSameBlockType = TheQueries.someNode(editor, { match: { type } });\n if (isBelowSameBlockType) continue;\n }\n\n // Start of the block\n autoFormatBlock(\n editor,\n type,\n markupRange,\n {\n preFormat,\n format\n },\n markups\n );\n return valid();\n }\n\n if (mode === 'inline') {\n if (\n autoFormatInline(editor, {\n type,\n between,\n ignoreTrim,\n markup: Array.isArray(markup) ? markup[0] : markup\n })\n ) {\n return valid();\n }\n }\n }\n\n insertText(text);\n };\n\n return editor;\n };\n","import { Editor, Transforms } from 'slate';\n\ntype Params = Parameters<typeof Transforms.insertNodes>;\n\nexport interface TransformEditor {\n insertNodes: (nodes: Params[1], options?: Params[2]) => void;\n}\n\nexport const withTransforms =\n () =>\n <T extends Editor>(editor: T) => {\n const e = editor as T & TransformEditor;\n\n e.insertNodes = (nodes, options) => {\n try {\n Transforms.insertNodes(editor, nodes, options);\n } catch (err) {}\n };\n\n return e;\n };\n","import { Editor, Path, Element, Node } from 'slate';\nimport { QueryOptions } from '../../interfaces';\nimport { ElementKinds } from '../../constants';\nimport { TransformEditor } from '../common/transforms.plugin';\nimport * as TheQueries from '../../queries';\nimport { CustomElementKinds } from '../../custom-types';\n\nexport interface WithTrailingNode extends QueryOptions {\n type?: CustomElementKinds;\n level?: number;\n}\n\nexport const withTrailingNode =\n ({ type = ElementKinds.paragraph, level = 1, ...query }: WithTrailingNode = {}) =>\n <T extends Editor & TransformEditor>(editor: T) => {\n const { normalizeNode } = editor;\n\n editor.normalizeNode = ([currentNode, currentPath]) => {\n if (!currentPath.length) {\n const entry = TheQueries.getLastNode(editor, level);\n const [lastNode, lastPath] = entry;\n\n if (Element.isElement(lastNode) && lastNode.type !== type && TheQueries.isNodeType(entry, query)) {\n editor.insertNodes(\n {\n type,\n children: [{ text: '' }]\n } as Node,\n { at: Path.next(lastPath) }\n );\n }\n }\n\n return normalizeNode([currentNode, currentPath]);\n };\n\n return editor;\n };\n","import { Editor, Node, Range, Path, Transforms } from 'slate';\nimport { HistoryEditor } from 'slate-history';\nimport { AngularEditor, hotkeys, hasBlockCard, isCardLeft, FAKE_RIGHT_BLOCK_CARD_OFFSET } from 'slate-angular';\nimport * as TheTransforms from '../../transforms';\nimport * as TheQueries from '../../queries';\nimport { createEmptyParagraph } from '../../utils/create-empty-paragraph';\nimport { insertParagraph } from '../../transforms/insert-paragraph';\n\nexport const withBlockCard = (editor: Editor): Editor => {\n const { insertBreak, deleteBackward, onKeydown, deleteForward, insertData, insertText } = editor;\n\n editor.insertBreak = () => {\n const domSelection = window.getSelection();\n const anchorNode = domSelection.anchorNode;\n if (domSelection && domSelection.isCollapsed && hasBlockCard(domSelection)) {\n const isLeftCursor = isCardLeft(anchorNode);\n const cardEntry = AngularEditor.toSlateCardEntry(editor, anchorNode);\n const cursorRootPath = cardEntry[1];\n TheTransforms.insertParagraph(editor, isLeftCursor ? cursorRootPath : Path.next(cursorRootPath));\n if (!isLeftCursor) {\n Transforms.select(editor, Path.next(cursorRootPath));\n }\n return;\n }\n insertBreak();\n };\n\n editor.deleteBackward = unit => {\n const domSelection = window.getSelection();\n const anchorNode = domSelection.anchorNode;\n if (domSelection && domSelection.isCollapsed && hasBlockCard(domSelection)) {\n const isLeftCursor = isCardLeft(anchorNode);\n const cardEntry = AngularEditor.toSlateCardEntry(editor, anchorNode);\n const cursorRootPath = cardEntry[1];\n if (isLeftCursor) {\n const previousPath = Path.hasPrevious(cursorRootPath) && Path.previous(cursorRootPath);\n if (!previousPath) {\n return;\n }\n if (previousPath && TheQueries.isEmptyParagraphByPath(editor, previousPath)) {\n Transforms.removeNodes(editor, {\n at: previousPath\n });\n return;\n }\n HistoryEditor.withoutMerging(editor, () => {\n Transforms.select(editor, Editor.end(editor, previousPath));\n });\n return;\n } else {\n TheTransforms.insertParagraph(editor, cursorRootPath);\n Transforms.select(editor, cursorRootPath);\n Transforms.removeNodes(editor, { at: Path.next(cursorRootPath) });\n return;\n }\n }\n\n const blockCard = TheQueries.getBlockCardAbove(editor);\n const beforePoint = Editor.before(editor, editor.selection.anchor);\n const beforeBlockCard = TheQueries.getBlockCardAbove(editor, { at: beforePoint });\n if (!blockCard && beforeBlockCard) {\n if (TheQueries.isBlockAboveEmpty(editor)) {\n const [node, path] = Editor.parent(editor, editor.selection.anchor.path);\n HistoryEditor.withoutMerging(editor, () => {\n const rightCursor = { path: beforeBlockCard[1], offset: FAKE_RIGHT_BLOCK_CARD_OFFSET };\n Transforms.select(editor, { anchor: rightCursor, focus: rightCursor });\n });\n Transforms.delete(editor, { at: path });\n return;\n } else {\n Transforms.delete(editor, { at: beforeBlockCard[1] });\n }\n return;\n }\n\n deleteBackward(unit);\n };\n\n editor.deleteForward = unit => {\n const domSelection = window.getSelection();\n const anchorNode = domSelection.anchorNode;\n if (domSelection && domSelection.isCollapsed && hasBlockCard(domSelection)) {\n const isLeftCursor = isCardLeft(anchorNode);\n const cardEntry = AngularEditor.toSlateCardEntry(editor, anchorNode);\n const cursorRootPath = cardEntry[1];\n if (isLeftCursor) {\n TheTransforms.insertParagraph(editor, cursorRootPath);\n Transforms.select(editor, cursorRootPath);\n Transforms.removeNodes(editor, { at: Path.next(cursorRootPath) });\n return;\n } else {\n const nextPath = Path.next(cursorRootPath);\n HistoryEditor.withoutMerging(editor, () => {\n Transforms.select(editor, Editor.start(editor, nextPath));\n });\n return;\n }\n }\n\n const blockCard = TheQueries.getBlockCardAbove(editor);\n const afterPoint = Editor.after(editor, editor.selection.anchor);\n const afterBlockCard = TheQueries.getBlockCardAbove(editor, { at: afterPoint });\n if (!blockCard && afterBlockCard) {\n if (TheQueries.isBlockAboveEmpty(editor)) {\n HistoryEditor.withoutMerging(editor, () => {\n const leftCursor = { path: afterBlockCard[1], offset: -1 };\n Transforms.select(editor, { anchor: leftCursor, focus: leftCursor });\n });\n Transforms.delete(editor, { at: Path.previous(afterBlockCard[1]) });\n return;\n }\n return;\n }\n\n deleteForward(unit);\n };\n\n editor.onKeydown = (event: KeyboardEvent) => {\n const domSelection = window.getSelection();\n const anchorNode = domSelection.anchorNode;\n const nativeEvent = event;\n const { selection } = editor;\n\n const isMoveBackward = hotkeys.isMoveBackward(nativeEvent);\n const isMoveForward = hotkeys.isMoveForward(nativeEvent);\n const isMoveUp = hotkeys.isMoveUp(nativeEvent);\n const isMoveDown = hotkeys.isMoveDown(nativeEvent);\n const isCollapsed = selection && Range.isCollapsed(selection);\n const anchorEntry = TheQueries.anchorBlockEntry(editor);\n\n // block card cursor\n if (anchorNode && hasBlockCard(domSelection)) {\n const isCardLeftCursor = isCardLeft(anchorNode);\n // ↓ + left-block-card 或者 → + right-block-card\n if ((isMoveDown && isCardLeftCursor) || (isMoveForward && !isCardLeftCursor)) {\n nativeEvent.preventDefault();\n const [, path] = AngularEditor.toSlateCardEntry(editor, anchorNode);\n const after = Editor.after(editor, path);\n if (after) {\n Transforms.select(editor, Editor.after(editor, path));\n }\n return;\n }\n // ↑ + right-block-card 或者 ← + left-block-card\n if ((isMoveUp && !isCardLeftCursor) || (isMoveBackward && isCardLeftCursor)) {\n nativeEvent.preventDefault();\n const [, path] = AngularEditor.toSlateCardEntry(editor, anchorNode);\n const before = Editor.before(editor, path);\n if (before) {\n Transforms.select(editor, before);\n }\n return;\n }\n\n // move to card center\n if ((isCardLeftCursor && isMoveForward) || (!isCardLeftCursor && isMoveBackward)) {\n nativeEvent.preventDefault();\n const [, path] = AngularEditor.toSlateCardEntry(editor, anchorNode);\n Transforms.select(editor, isCardLeftCursor ? Editor.start(editor, path) : Editor.end(editor, path));\n return;\n }\n }\n // block card center\n if (isCollapsed && (isMoveUp || isMoveDown) && anchorEntry) {\n const [block, path] = anchorEntry;\n if (editor.isBlockCard(block)) {\n event.preventDefault();\n Transforms.select(editor, isMoveUp ? Editor.before(editor, path) : Editor.after(editor, path));\n return;\n }\n }\n if (isCollapsed && (isMoveBackward || isMoveForward) && anchorEntry) {\n const [block] = anchorEntry;\n if (editor.isBlockCard(block)) {\n event.preventDefault();\n AngularEditor.moveBlockCard(editor, block, { direction: isMoveBackward ? 'left' : 'right' });\n return;\n }\n }\n // move to block card cursor\n if (isCollapsed && isMoveBackward && Editor.isStart(editor, selection.anchor, selection.anchor.path.slice(0, 1))) {\n const currentPath = selection.anchor.path.slice(0, 1);\n if (currentPath[0] > 0) {\n const previousNode = Node.get(editor, Path.previous(currentPath));\n if (previousNode && editor.isBlockCard(previousNode)) {\n event.preventDefault();\n AngularEditor.moveBlockCard(editor, previousNode, { direction: 'right' });\n return;\n }\n }\n }\n if (isCollapsed && isMoveForward && Editor.isEnd(editor, selection.anchor, selection.anchor.path.slice(0, 1))) {\n const currentPath = selection.anchor.path.slice(0, 1);\n if (currentPath[0] < editor.children.length - 1) {\n const previousNode = Node.get(editor, Path.next(currentPath));\n if (previousNode && editor.isBlockCard(previousNode)) {\n event.preventDefault();\n AngularEditor.moveBlockCard(editor, previousNode, { direction: 'left' });\n return;\n }\n }\n }\n\n onKeydown(event);\n };\n\n editor.insertData = (data: DataTransfer) => {\n const domSelection = window.getSelection();\n const anchorNode = domSelection.anchorNode;\n if (domSelection && domSelection.isCollapsed && hasBlockCard(domSelection)) {\n const isLeftCursor = isCardLeft(anchorNode);\n const cardEntry = AngularEditor.toSlateCardEntry(editor, anchorNode);\n const cursorRootPath = cardEntry[1];\n if (isLeftCursor) {\n Transforms.insertNodes(editor, createEmptyParagraph(), { at: cursorRootPath });\n Transforms.select(editor, cursorRootPath);\n } else {\n Transforms.insertNodes(editor, createEmptyParagraph(), { at: Path.next(cursorRootPath) });\n Transforms.select(editor, Path.next(cursorRootPath));\n }\n }\n insertData(data);\n };\n\n editor.insertText = (text: string) => {\n const domSelection = window.getSelection();\n const anchorNode = domSelection?.anchorNode;\n if (AngularEditor.isBlockCardLeftCursor(editor) || AngularEditor.isBlockCardRightCursor(editor)) {\n const isLeftCursor = isCardLeft(anchorNode);\n const cardEntry = AngularEditor.toSlateCardEntry(editor, anchorNode);\n const cursorRootPath = cardEntry[1];\n if (isLeftCursor) {\n insertParagraph(editor, cursorRootPath);\n Transforms.select(editor, cursorRootPath);\n } else {\n const nextPath = Path.next(cursorRootPath);\n insertParagraph(editor, nextPath);\n Transforms.select(editor, nextPath);\n }\n }\n insertText(text);\n };\n\n return editor;\n};\n","import { Editor, Transforms, Range } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport * as TheQueries from '../../queries';\nimport { timer } from 'rxjs';\n\nexport const withMoveSelection = (editor: Editor) => {\n const { onClick, deleteBackward } = editor;\n\n editor.onClick = (event: MouseEvent) => {\n const domSelection = window.getSelection();\n if (domSelection && !domSelection.isCollapsed && event.detail >= 2 && editor.selection) {\n const slateSelection = AngularEditor.toSlateRange(editor, domSelection);\n const isNextStart = slateSelection.focus.offset === 0;\n\n if (Range.isExpanded(slateSelection) && Range.isForward(slateSelection) && isNextStart) {\n const beforePoint = Editor.before(editor, slateSelection.focus);\n const changedRange = Editor.range(editor, slateSelection.anchor, beforePoint);\n\n // slate-angular throttle 80ms, so wait selectionchange complete\n timer(81).subscribe(() => {\n Transforms.select(editor, changedRange);\n });\n return;\n }\n }\n onClick(event);\n };\n\n editor.deleteBackward = unit => {\n const { selection } = editor;\n const inlineBlockEntry = Editor.above(editor, {\n match: n => Editor.isInline(editor, n)\n });\n // fix deleteBackward on the start of inline block\n // deleteBackward logic bug\n if (inlineBlockEntry && !Editor.isVoid(editor, inlineBlockEntry[0]) && selection.anchor.offset === 0) {\n const beforePoint = TheQueries.getPointBefore(editor, selection.focus);\n Transforms.select(editor, beforePoint);\n }\n deleteBackward(unit);\n };\n\n return editor;\n};\n","import { Editor, Node, Element } from 'slate';\nimport * as TheQueries from '../../queries';\nimport { CustomElementKinds } from '../../custom-types';\n\nexport const withGetFragment =\n (elementKinds: CustomElementKinds[] = []) =>\n <T extends Editor>(editor: T) => {\n const { getFragment } = editor;\n editor.getFragment = () => {\n const { selection } = editor;\n const containerBlocks = [...elementKinds, ...TheQueries.getContainerBlocks(editor)];\n if (selection && selection.anchor.path[0] === selection.focus.path[0]) {\n const fragmentData = getFragment();\n const nodes = TheQueries.getSelectionNodesByType(editor, fragmentData, containerBlocks);\n return nodes && Element.isElement(nodes) ? nodes.children : fragmentData;\n }\n return getFragment();\n };\n\n return editor;\n };\n","import { ElementKinds } from '../../constants/node-types';\nimport { ToolbarItem } from '../../interfaces';\nimport { TodoItemEditor } from './todo-item.editor';\n\nexport const TodoItemOptions: ToolbarItem[] = [\n {\n key: ElementKinds.checkItem,\n icon: 'list-check',\n name: '待办事项',\n execute: editor => TodoItemEditor.insertTodoItem(editor),\n active: editor => TodoItemEditor.isActive(editor)\n }\n];\n","import { InjectionToken } from '@angular/core';\nimport { ComponentType } from 'slate-angular';\nimport { ElementKinds } from '../../constants/node-types';\nimport type { TheTableComponent } from './components/table.component';\n\nexport const TheTableToken = new InjectionToken<ComponentType<TheTableComponent>>('the-Table-token');\n\nexport const BASE_CELL_HEIGHT = 41; // min height\nexport const BASE_FILL_HEIGHT = 2 * 8 + 1; // padding * 2 + border 1\nexport const BASE_CELL_INNER_HEIGHT = BASE_CELL_HEIGHT - BASE_FILL_HEIGHT; // 24\n\nexport interface TheTableColumn {\n width: number;\n}\n\nexport interface MenuEntity {\n icon: string;\n name: string;\n key: string;\n divider?: boolean;\n extendIcon?: string;\n invisibility?: boolean;\n backgroundColor?: string;\n actionHandle: (entity: MenuEntity) => void;\n activeHandle?: (event: MouseEvent) => void;\n deactiveHandle?: (event: MouseEvent) => void;\n}\n\nexport interface SelectedCell {\n row: number;\n col: number;\n}\n\nexport interface TableOptionsFormat {\n typeTable?: ElementKinds.table;\n typeRow?: ElementKinds.tableRow;\n typeCell?: ElementKinds.tableCell;\n typeContent?: ElementKinds.tableContent;\n exitBlockType?: string;\n defaultWidth?: number;\n minWidth?: number;\n maxWidth?: number;\n}\n\nexport class TableOptions {\n // The type of table blocks\n typeTable: ElementKinds.table = ElementKinds.table;\n // The type of row blocks\n typeRow: ElementKinds.tableRow = ElementKinds.tableRow;\n // The type of cell blocks\n typeCell: ElementKinds.tableCell = ElementKinds.tableCell;\n // The default type for blocks in cells\n typeContent: ElementKinds.tableContent = ElementKinds.tableContent;\n // The type of block inserted when exiting\n exitBlockType: ElementKinds.paragraph = ElementKinds.paragraph;\n\n defaultWidth = 200;\n\n minWidthPx = 41;\n\n maxWidthPx = 1000;\n\n minHeightPx = 41;\n\n maxHeightPx = 1000;\n\n constructor(options?: TableOptionsFormat) {\n if (!options) {\n return;\n }\n const { typeTable, typeRow, typeCell, typeContent } = options;\n this.typeTable = typeTable;\n this.typeRow = typeRow;\n this.typeCell = typeCell;\n this.typeContent = typeContent;\n }\n}\n","import { Text } from 'slate';\nimport { TableCellElement } from '../../../custom-types';\nimport { TableOptions } from '../table.types';\n\n/**\n * Create a new cell\n */\nexport function createCell(opts: TableOptions, nodes?: Text[]): TableCellElement {\n return {\n type: opts.typeCell,\n children: nodes || [createEmptyContent(opts)]\n };\n}\n\n/**\n * Create a new default content block\n */\nexport function createEmptyContent(opts: TableOptions) {\n return {\n type: opts.typeContent,\n children: [{ text: '' }]\n };\n}\n","import { Text } from 'slate';\nimport { TableRowElement } from '../../../custom-types';\nimport { TableOptions } from '../table.types';\nimport { createCell } from './create-cell';\n\n/**\n * Create a new row block\n */\nexport function createRow(opts: TableOptions, columns: number, getCellContent?: (column: number) => Text[]): TableRowElement {\n const cellNodes = new Array(columns).fill(1).map(i => createCell(opts, getCellContent ? getCellContent(i) : undefined));\n\n return {\n type: opts.typeRow,\n children: cellNodes\n };\n}\n","import { Node } from 'slate';\nimport { TableElement } from '../../../custom-types';\nimport { TableOptions } from '../table.types';\nimport { createRow } from './create-row';\n\n/**\n * Create a table\n */\nexport function createTable(\n opts: TableOptions,\n columns: number,\n rows: number,\n getCellContent?: (row: number, column: number) => Node[]\n): TableElement {\n const rowNodes = new Array(rows).fill(1).map(i => createRow(opts, columns, getCellContent ? getCellContent.bind(null, i) : undefined));\n\n rowNodes[0].header = true;\n return {\n type: opts.typeTable,\n children: rowNodes\n };\n}\n","import { Node, Path, NodeEntry, Element } from 'slate';\nimport { TableCellElement, TableElement } from '../../../custom-types';\nimport { SelectedCell, TableOptions } from '../table.types';\n\nexport class TablePosition {\n // TheElement container for the table\n tableEntry?: NodeEntry<TableElement>;\n\n // TheElement for current row\n rowEntry?: NodeEntry<Element>;\n\n // TheElement for current cell\n cellEntry?: NodeEntry<TableCellElement>;\n\n // Current content TheElement in the cell\n contentEntry?: NodeEntry<Element>;\n\n constructor(\n options = {\n tableEntry: null,\n rowEntry: null,\n cellEntry: null,\n contentEntry: null\n }\n ) {\n const { tableEntry, rowEntry, cellEntry, contentEntry } = options;\n this.tableEntry = tableEntry;\n this.rowEntry = rowEntry;\n this.cellEntry = cellEntry;\n this.contentEntry = contentEntry;\n }\n\n /**\n * Create a new instance of a TablePosition from a Slate document\n * and a node key.\n */\n static create(opts: TableOptions, containerNode: Node, path: Path): TablePosition {\n const ancestors = Array.from(Node.ancestors(containerNode, path));\n const tableEntry = ancestors.find(([p]) => Element.isElement(p) && p.type === opts.typeTable) || [];\n const rowEntry = ancestors.find(([p]) => Element.isElement(p) && p.type === opts.typeRow) || [];\n const cellEntry = ancestors.find(([p]) => Element.isElement(p) && p.type === opts.typeCell) || [];\n const contentEntry = ancestors.find(([p]) => Element.isElement(p) && p.type === opts.typeContent) || [];\n\n return new TablePosition({\n tableEntry,\n rowEntry,\n cellEntry,\n contentEntry\n });\n }\n\n get table(): TableElement {\n if (!this.tableEntry) {\n throw new Error('Not in a table');\n }\n return this.tableEntry[0];\n }\n\n get row(): Element {\n if (!this.rowEntry) {\n throw new Error('Not in a row');\n }\n return this.rowEntry[0];\n }\n\n get cell(): TableCellElement {\n if (!this.cellEntry) {\n throw new Error('Not in a cell');\n }\n return this.cellEntry[0];\n }\n\n /**\n * Check to see if this position is within a cell\n */\n isInCell(): boolean {\n return Boolean(this.cellEntry.length > 0);\n }\n\n /**\n * Check to see if this position is within a row\n */\n isInRow(): boolean {\n return Boolean(this.rowEntry.length > 0);\n }\n\n /**\n * Check to see if this position is within a table\n */\n isInTable(): boolean {\n return Boolean(this.tableEntry.length > 0);\n }\n\n /**\n * Check to see if this position is at the top of the cell.\n */\n isTopOfCell(): boolean {\n const { contentEntry, cellEntry } = this;\n\n if (!contentEntry || !cellEntry) {\n return false;\n }\n\n const { children } = cellEntry[0];\n const index = children.findIndex(content => content === contentEntry[0]);\n\n return index === 0;\n }\n\n /**\n * Check to see if this position is at the bottom of the cell.\n */\n isBottomOfCell(): boolean {\n const { contentEntry, cellEntry } = this;\n\n if (!contentEntry || !cellEntry) {\n return false;\n }\n\n const { children } = cellEntry[0];\n const index = children.findIndex(content => content === contentEntry[0]);\n\n return index === children.length - 1;\n }\n\n /**\n * Get count of columns\n */\n getWidth(): number {\n const { table } = this;\n const rows = table.children;\n const cells = rows[0].children as Node[];\n\n return cells.length;\n }\n\n /**\n * Get count of rows\n */\n getHeight(): number {\n const { table } = this;\n const rows = table.children;\n\n return rows.length;\n }\n\n /**\n * Get index of current row in the table.\n */\n getRowIndex(): number {\n const { table, row } = this;\n const rows = table.children;\n\n return rows.findIndex(x => x === row);\n }\n\n /**\n * Get index of current column in the row.\n */\n getColumnIndex(): number {\n const { row, cell } = this;\n const cells = row.children;\n\n return cells.findIndex(x => x === cell);\n }\n\n /**\n * find current above column in the table\n */\n findAbove() {\n const { table } = this;\n const rowIndex = this.getRowIndex();\n const columnIndex = this.getColumnIndex();\n let y = 0;\n let t = table.children[rowIndex].children[columnIndex];\n while (t) {\n y++;\n if (table.children[rowIndex - y] && table.children[rowIndex - y].children[columnIndex]) {\n t = table.children[rowIndex - y].children[columnIndex];\n return t;\n }\n return;\n }\n }\n\n findNext() {\n const { table } = this;\n let rowIndex = this.getRowIndex();\n let columnIndex = this.getColumnIndex();\n let nextCell = this.cell;\n while (nextCell && nextCell.hidden) {\n if (columnIndex + 1 < this.getWidth()) {\n columnIndex++;\n nextCell = this.table.children[rowIndex].children[columnIndex];\n } else {\n columnIndex = 0;\n rowIndex++;\n nextCell = this.table.children[rowIndex].children[columnIndex];\n }\n }\n return nextCell;\n }\n\n findPrevious() {\n const { table } = this;\n let rowIndex = this.getRowIndex();\n let columnIndex = this.getColumnIndex();\n let previousCell = this.cell;\n while (previousCell && previousCell.hidden) {\n if (columnIndex - 1 >= 0) {\n columnIndex--;\n previousCell = this.table.children[rowIndex].children[columnIndex];\n } else {\n columnIndex = this.getWidth() - 1;\n rowIndex--;\n previousCell = this.table.children[rowIndex].children[columnIndex];\n }\n }\n return previousCell;\n }\n\n /**\n * find current below column in the table\n */\n findBelow() {\n const { table } = this;\n const rowIndex = this.getRowIndex();\n const columnIndex = this.getColumnIndex();\n let y = 0;\n let t = table.children[rowIndex].children[columnIndex];\n while (t) {\n y++;\n if (table.children[rowIndex + y] && table.children[rowIndex + y].children[columnIndex]) {\n t = table.children[rowIndex + y].children[columnIndex];\n return t;\n }\n return;\n }\n }\n\n /**\n * True if on first cell of the table\n */\n isFirstCell(): boolean {\n return this.isFirstRow() && this.isFirstColumn();\n }\n\n /**\n * True if on last cell of the table\n */\n isLastCell(): boolean {\n return this.isLastRow() && this.isLastColumn();\n }\n\n /**\n * True if on first row\n */\n isFirstRow(): boolean {\n return this.getRowIndex() === 0;\n }\n\n /**\n * True if on last row\n */\n isLastRow(): boolean {\n return this.getRowIndex() === this.getHeight() - 1;\n }\n\n /**\n * True if on first column\n */\n isFirstColumn(): boolean {\n return this.getColumnIndex() === 0;\n }\n\n /**\n * True if on last column\n */\n isLastColumn(): boolean {\n return this.getColumnIndex() === this.getWidth() - 1;\n }\n\n /**\n * find cell data with col and row\n */\n\n findCellByPath(cell: SelectedCell): TableCellElement {\n return this.table.children[cell.row].children[cell.col] as TableCellElement;\n }\n}\n","import { Node, Range } from 'slate';\nimport { TableOptions } from '../table.types';\nimport { TablePosition } from './table-position';\n\n/**\n * True if the given range is inside one table\n */\nexport function isRangeInTable(opts: TableOptions, node: Node, range: Range): boolean {\n const { anchor, focus } = range;\n const startPosition = TablePosition.create(opts, node, anchor.path);\n const endPosition = TablePosition.create(opts, node, focus.path);\n\n // Only handle events in tables\n if (!startPosition.isInTable() || !endPosition.isInTable()) {\n return false;\n }\n\n // Inside the same table\n return startPosition.table === endPosition.table;\n}\n","import { Editor } from 'slate';\nimport { TableOptions } from '../table.types';\nimport { isRangeInTable } from './is-range-in-table';\n\n/**\n * Is the selection in a table\n */\nexport function isSelectionInTable(opts: TableOptions, editor: Editor): boolean {\n if (!editor.selection) {\n return false;\n }\n return isRangeInTable(opts, editor, editor.selection);\n}\n","import { TableCellElement, TableElement } from '../../../custom-types';\n\nexport interface CellRect {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport function calcSpanForRow(table: TableElement, targetIndex: number) {\n const rowspans = [];\n table.children\n .filter((row, rowIndex) => rowIndex < targetIndex)\n .forEach((row, rowIndex) => {\n row.children.forEach((cell: TableCellElement, columnIndex) => {\n if (cell.rowspan && cell.rowspan > 1) {\n const rect = {\n x: rowIndex,\n y: columnIndex,\n width: cell.colspan || 1,\n height: cell.rowspan || 1\n };\n rowspans.push(rect);\n }\n });\n });\n return table.children[0].children.map((cell, columnIndex) => {\n return rowspans.some(rowspan => isInside(rowspan, targetIndex, columnIndex));\n });\n}\n\nexport function calcSpanForColumn(table: TableElement, targetIndex: number) {\n const rowspans = [];\n table.children.forEach((row, rowIndex) => {\n row.children\n .filter((cell, columnIndex) => columnIndex < targetIndex)\n .forEach((cell: TableCellElement, columnIndex) => {\n if (cell.colspan && cell.colspan > 1) {\n const rect = {\n x: rowIndex,\n y: columnIndex,\n width: cell.colspan || 1,\n height: cell.rowspan || 1\n };\n rowspans.push(rect);\n }\n });\n });\n return table.children.map((cell, rowIndx) => {\n return rowspans.some(rowspan => isInside(rowspan, rowIndx, targetIndex));\n });\n}\n\nexport function calcOriginSpan(table: TableElement, targetRowIndex: number, targetColumnIndex: number) {\n for (let rowIndex = 0; rowIndex <= targetRowIndex; rowIndex++) {\n const row = table.children[rowIndex];\n const originCell = row.children\n .filter((cell, columnIndex) => columnIndex <= targetColumnIndex)\n .find((cell: TableCellElement, columnIndex) => {\n if (cell.rowspan > 1 || cell.colspan > 1) {\n const rect = {\n x: rowIndex,\n y: columnIndex,\n width: cell.colspan || 1,\n height: cell.rowspan || 1\n };\n return isInside(rect, targetRowIndex, targetColumnIndex);\n }\n });\n if (originCell) {\n return originCell;\n }\n }\n}\n\nexport function isInside(cellRect: CellRect, rowIndex: number, columnIndex: number): boolean {\n if (\n rowIndex >= cellRect.x &&\n rowIndex <= cellRect.x + cellRect.height - 1 &&\n columnIndex >= cellRect.y &&\n columnIndex <= cellRect.y + cellRect.width - 1\n ) {\n return true;\n }\n return false;\n}\n","import { TableElement } from '../../../custom-types';\nimport { TableOptions } from '../table.types';\n\nexport function addColumns(table: TableElement, columnsCount: number, insertIndex?: number) {\n if (table.columns.length < columnsCount) {\n if (!insertIndex && insertIndex !== 0) {\n insertIndex = table.columns.length;\n }\n const opts = new TableOptions();\n let columns = table.columns.slice(0, columnsCount).map(item => {\n return { width: item.width };\n });\n const preTotalWidth = table.columns.reduce((prevValue, column) => {\n return prevValue + column.width;\n }, 0);\n\n for (let i = 0; i < columnsCount - table.columns.length; i++) {\n columns.splice(insertIndex, 0, { width: opts.defaultWidth });\n }\n const currentTotalWidth = columns.reduce((prevValue, column) => {\n return prevValue + column.width;\n }, 0);\n\n const percentage = preTotalWidth / currentTotalWidth;\n return columns.map((column, index) => {\n const width = Math.round(column.width * percentage > opts.minWidthPx ? column.width * percentage : opts.minWidthPx);\n return { width };\n });\n }\n return table.columns;\n}\n","import { Transforms, Editor, NodeEntry } from 'slate';\nimport { TablePosition, createCell } from '../utils';\nimport { calcSpanForColumn } from '../utils/calc-span';\nimport { addColumns } from '../utils/add-columns';\nimport { TableOptions } from '../table.types';\nimport { TableCellElement, TableElement } from '../../../custom-types';\n\n/**\n * Insert a new column in current table\n */\nexport function insertColumn(\n opts: TableOptions,\n editor: Editor,\n count = 1,\n at?: number, // Column index\n getCell?: (column: number, row: number) => TableCellElement\n) {\n const { selection } = editor;\n const {\n anchor: { path }\n } = selection;\n\n const tablePosition = TablePosition.create(opts, editor, path);\n const { table, tableEntry } = tablePosition;\n\n const insertColumnIndex = typeof at === 'undefined' ? tablePosition.getColumnIndex() + 1 : at;\n\n // Insert the new cell\n\n Editor.withoutNormalizing(editor, () => {\n const colspan = calcSpanForColumn(table, insertColumnIndex);\n for (let i = 0; i < count; i++) {\n table.children.forEach((row, rowIndex) => {\n const isInside = colspan[rowIndex];\n const newCell = getCell ? getCell(insertColumnIndex, rowIndex) : createCell(opts);\n if (isInside) {\n newCell.hidden = true;\n const dirtyCell = row.children.find(\n (cell: TableCellElement, columnIndex: number) =>\n !cell.hidden &&\n columnIndex < insertColumnIndex &&\n cell.colspan &&\n cell.colspan + columnIndex > insertColumnIndex\n ) as TableCellElement;\n if (dirtyCell) {\n Transforms.setNodes(\n editor,\n { colspan: dirtyCell.colspan + 1 },\n {\n at: tablePosition.tableEntry[1].concat(rowIndex).concat(row.children.indexOf(dirtyCell))\n }\n );\n }\n }\n Transforms.insertNodes(editor, [newCell], {\n at: tablePosition.tableEntry[1].concat(rowIndex).concat(insertColumnIndex)\n });\n });\n }\n if (table.columns) {\n Transforms.setNodes(editor, { columns: addColumns(table, table.columns.length + 1, insertColumnIndex) }, { at: tableEntry[1] });\n }\n });\n}\n\n/**\n * Insert new column in the row\n */\nexport function insertColumnAtRow(\n opts: TableOptions,\n editor: Editor,\n count = 1,\n tableEntry: NodeEntry<TableElement>,\n rowIndex: number,\n columnIndex: number,\n getCell?: (column: number, row: number) => TableCellElement\n) {\n Editor.withoutNormalizing(editor, () => {\n for (let i = 0; i < count; i++) {\n const newCell = getCell ? getCell(columnIndex, rowIndex) : createCell(opts);\n Transforms.insertNodes(editor, [newCell], {\n at: tableEntry[1].concat([rowIndex, columnIndex])\n });\n }\n });\n}\n","import { Editor, Element, Transforms } from 'slate';\nimport { TableRowElement } from '../../../custom-types';\nimport { TableOptions } from '../table.types';\nimport { TablePosition, createRow } from '../utils';\nimport { calcSpanForRow } from '../utils/calc-span';\n\n/**\n * Insert a new row in current table\n */\nexport function insertRow(\n opts: TableOptions,\n editor: Editor,\n count = 1,\n at?: number // row index\n) {\n const tablePosition = TablePosition.create(opts, editor, editor.selection.anchor.path);\n const { table, row } = tablePosition;\n\n // Create a new row with the right count of cells\n const columns = (table.children[0].children as Element[]).length;\n const newRows: TableRowElement[] = [];\n\n const rowIndex = tablePosition.getRowIndex();\n const insertRowIndex = typeof at === 'undefined' ? rowIndex + 1 : at;\n\n for (let i = 0; i < count; i++) {\n const newRow = createRow(opts, columns);\n newRows.push(newRow);\n }\n\n if (newRows.length === 1) {\n const rowspan = calcSpanForRow(table, insertRowIndex);\n newRows[0].children.forEach((cell, columnIndex) => {\n const isInside = rowspan[columnIndex];\n if (isInside) {\n cell.hidden = true;\n const dirtyRow = table.children.find(\n (row: TableRowElement, rowIndex: number) =>\n !row.children[columnIndex].hidden &&\n rowIndex < insertRowIndex &&\n row.children[columnIndex].rowspan &&\n row.children[columnIndex].rowspan + rowIndex > insertRowIndex\n );\n if (dirtyRow) {\n Transforms.setNodes(\n editor,\n { rowspan: dirtyRow.children[columnIndex].rowspan + 1 },\n {\n at: tablePosition.tableEntry[1].concat(table.children.indexOf(dirtyRow)).concat(columnIndex)\n }\n );\n }\n }\n });\n }\n\n Transforms.insertNodes(editor, newRows, {\n at: tablePosition.tableEntry[1].concat(insertRowIndex)\n });\n}\n","import * as TheTransforms from '../../../transforms';\nimport { Editor, Node, Transforms } from 'slate';\nimport { TheEditor } from '../../../interfaces/editor';\nimport { TableOptions } from '../table.types';\nimport { createTable } from '../utils';\n\n/**\n * Insert a new table\n */\nexport function insertTable(\n opts: TableOptions,\n editor: Editor,\n columns: number = 3,\n rows: number = 3,\n getCellContent?: (column: number, row: number) => Node[]\n) {\n const { selection } = editor;\n if (!selection?.anchor) {\n return;\n }\n // Create the table node\n const table = createTable(opts, columns, rows, getCellContent);\n TheTransforms.insertElement(editor, table);\n}\n","import { Transforms, NodeEntry, Editor, Element } from 'slate';\nimport { TableOptions } from '../table.types';\nimport { createCell } from '../utils/create-cell';\n\n/**\n * Clear the content of the given cell\n */\nexport function clearCell(opts: TableOptions, editor: Editor, cellEntry: NodeEntry<Element>) {\n Transforms.removeNodes(editor, { at: cellEntry[1] });\n const cellNode = {\n ...cellEntry[0],\n ...createCell(opts)\n };\n Transforms.insertNodes(editor, { ...cellNode }, { at: cellEntry[1] });\n}\n","import { TableElement } from '../../../custom-types';\n\nexport function removeColumns(table: TableElement, columnsCount: number, index?: number) {\n if (table.columns.length > columnsCount) {\n let removeColumns = [];\n if ((index && index > 0) || index === 0) {\n removeColumns = table.columns.slice(index, index + 1);\n } else {\n removeColumns = table.columns.slice(columnsCount);\n }\n if (removeColumns.length) {\n const addWidth =\n removeColumns.reduce((totalWidth, cell) => {\n return (totalWidth += cell.width);\n }, 0) / columnsCount;\n return table.columns\n .filter(item => !removeColumns.includes(item))\n .map(item => {\n return { width: item.width + Math.round(addWidth) };\n });\n }\n }\n return table.columns;\n}\n","import { Editor, Element, Transforms } from 'slate';\nimport { TablePosition } from '../utils';\nimport { clearCell } from './clear-cell';\nimport { removeColumns } from '../utils/remove-columns';\nimport { TableOptions } from '../table.types';\nimport { TableCellElement } from '../../../custom-types';\n\nexport function removeColumn(opts: TableOptions, editor: Editor, selectColIndex?: number) {\n const { selection } = editor;\n const {\n anchor: { path }\n } = selection;\n\n const tablePosition = TablePosition.create(opts, editor, path);\n const {\n tableEntry,\n table,\n row,\n cellEntry: [cellNode, cellPath]\n } = tablePosition;\n\n const rows = tableEntry[0].children as Element[];\n\n selectColIndex = selectColIndex === undefined ? [...cellPath].pop() : selectColIndex;\n\n Editor.withoutNormalizing(editor, () => {\n table.children.map((row, rowIndex) => {\n const dirtyCell = row.children.find(\n (cell: TableCellElement, columnIndex: number) =>\n !cell.hidden && columnIndex < selectColIndex && cell.colspan && cell.colspan + columnIndex > selectColIndex\n ) as TableCellElement;\n if (dirtyCell) {\n const colspan = dirtyCell.colspan - 1 > 1 ? dirtyCell.colspan - 1 : null;\n Transforms.setNodes(\n editor,\n { colspan },\n {\n at: tablePosition.tableEntry[1].concat(rowIndex).concat(row.children.indexOf(dirtyCell))\n }\n );\n }\n const removeCell = row.children[selectColIndex] as TableCellElement;\n const nextCell = row.children[selectColIndex + 1] as TableCellElement;\n if (nextCell && nextCell.hidden && removeCell.colspan > 1) {\n const colspan = removeCell.colspan - 1 > 1 ? removeCell.colspan - 1 : null;\n Transforms.setNodes(\n editor,\n { colspan, rowspan: removeCell.rowspan || null, hidden: null },\n { at: tablePosition.tableEntry[1].concat(rowIndex).concat(row.children.indexOf(nextCell)) }\n );\n }\n });\n });\n\n // Remove the cell from every row\n Editor.withoutNormalizing(editor, () => {\n if (tablePosition.getWidth() > 1) {\n rows.forEach((row, rowIndex) => {\n const at = tableEntry[1].concat([rowIndex, selectColIndex]);\n Transforms.removeNodes(editor, { at });\n });\n if (table.columns) {\n Transforms.setNodes(\n editor,\n { columns: removeColumns(table, table.columns.length - 1, selectColIndex) },\n { at: tableEntry[1] }\n );\n }\n } else {\n // If last column, clear text in cells instead\n rows.forEach((row, rowIndex) => {\n row.children.forEach((cell, cellIndex) => {\n const at = tableEntry[1].concat([rowIndex, cellIndex]);\n clearCell(opts, editor, [cell as Element, at]);\n });\n });\n }\n });\n}\n","import { Editor, Element, Transforms } from 'slate';\nimport { TableCellElement, TableRowElement } from '../../../custom-types';\nimport { TableOptions } from '../table.types';\nimport { TablePosition } from '../utils';\nimport { clearCell } from './clear-cell';\n\nexport function removeRow(opts: TableOptions, editor: Editor, selectRowIndex?: number) {\n const { selection } = editor;\n const {\n anchor: { path }\n } = selection;\n\n const tablePosition = TablePosition.create(opts, editor, path);\n const {\n tableEntry,\n table,\n rowEntry: [rowNode, rowPath]\n } = tablePosition;\n\n selectRowIndex = selectRowIndex === undefined ? [...rowPath].pop() : selectRowIndex;\n const at = tableEntry[1].concat(selectRowIndex);\n\n Editor.withoutNormalizing(editor, () => {\n table.children.map((row, rowIndex) => {\n if (rowIndex < selectRowIndex) {\n const dirtyCells = row.children.filter(\n (cell: TableCellElement, columnIndex: number) =>\n !cell.hidden && cell.rowspan && cell.rowspan + rowIndex > selectRowIndex\n );\n if (dirtyCells.length) {\n dirtyCells.map((dirtyCell: TableCellElement) => {\n const rowspan = dirtyCell.rowspan - 1 > 1 ? dirtyCell.rowspan - 1 : null;\n Transforms.setNodes(\n editor,\n { rowspan },\n {\n at: tablePosition.tableEntry[1].concat(rowIndex).concat(row.children.indexOf(dirtyCell))\n }\n );\n });\n }\n }\n });\n const removeRow = table.children[selectRowIndex] as TableRowElement;\n const nextRow = table.children[selectRowIndex + 1] as TableRowElement;\n if (nextRow) {\n removeRow.children.map((cell: TableCellElement, cellIndex) => {\n const nextCell = nextRow.children[cellIndex];\n if (nextCell && cell.rowspan > 1 && nextCell.hidden) {\n const rowspan = cell.rowspan - 1 > 1 ? cell.rowspan - 1 : null;\n Transforms.setNodes(\n editor,\n { colspan: cell.colspan || null, rowspan, hidden: null },\n { at: tablePosition.tableEntry[1].concat(selectRowIndex + 1).concat(cellIndex) }\n );\n }\n });\n }\n });\n\n // Update table by removing the row\n if (tablePosition.getHeight() > 1) {\n Transforms.removeNodes(editor, { at });\n } else {\n // If last remaining row, clear it instead\n Editor.withoutNormalizing(editor, () => {\n (rowNode.children as Element[]).forEach((cell, cellIndex) => {\n clearCell(opts, editor, [cell, at.concat(cellIndex)]);\n });\n });\n }\n}\n","import { Path } from 'slate';\n\nexport const NextPath = (path: Path) => {\n const [last, ...rest] = [...path].reverse();\n return [...rest.reverse(), last + 1];\n};\n","import { Editor, Element, Path, Transforms, NodeEntry, Descendant } from 'slate';\nimport { createEmptyParagraph } from '../../../utils/create-empty-paragraph';\nimport { TableOptions } from '../table.types';\nimport { TablePosition } from '../utils';\nimport { NextPath } from '../utils/next-path';\n\nexport function removeTable(opts: TableOptions, editor: Editor) {\n const { selection } = editor;\n const {\n anchor: { path }\n } = selection;\n const pos = TablePosition.create(opts, editor, path);\n const {\n table,\n tableEntry: [, tablePath]\n } = pos;\n let nextFocusEntry: NodeEntry<Element> = null;\n let shouldCollapseToEnd = false;\n\n const nextEntry = Editor.next<Element>(editor, { at: tablePath });\n if (nextEntry) {\n nextFocusEntry = nextEntry;\n } else {\n const prevEntry = Editor.previous<Element>(editor, { at: tablePath });\n if (prevEntry) {\n nextFocusEntry = prevEntry;\n shouldCollapseToEnd = true;\n } else if (opts.exitBlockType) {\n nextFocusEntry = [\n {\n type: opts.exitBlockType,\n children: [{ text: '' }]\n } as Element,\n null\n ];\n nextFocusEntry[1] = NextPath(tablePath);\n Transforms.insertNodes(editor, nextFocusEntry[0], { at: nextFocusEntry[1] });\n }\n }\n\n Transforms.removeNodes(editor, { at: tablePath });\n Transforms.insertNodes(editor, createEmptyParagraph(), { at: tablePath });\n\n if (!nextFocusEntry) {\n return;\n }\n\n if (shouldCollapseToEnd) {\n const endPoint = Editor.end(editor, nextFocusEntry[1]);\n Transforms.select(editor, endPoint);\n } else {\n const previousPath = Path.previous(nextFocusEntry[1]);\n const startPoint = Editor.start(editor, previousPath);\n Transforms.select(editor, startPoint);\n }\n}\n","import { Editor, Element, NodeEntry, Transforms, Text, Path, Range, Node } from 'slate';\nimport { TableOptions } from './table.types';\nimport { Alignment, ALIGN_BLOCK_TYPES, ElementKinds, MarkProps, MarkTypes, VerticalAlignment } from '../../constants/node-types';\nimport { insertColumn } from './transforms/insert-column';\nimport { insertRow } from './transforms/insert-row';\nimport { insertTable } from './transforms/insert-table';\nimport { removeColumn } from './transforms/remove-column';\nimport { removeRow } from './transforms/remove-row';\nimport { removeTable } from './transforms/remove-table';\nimport { clearCell } from './transforms/clear-cell';\nimport { getAboveByType } from '../../queries/get-above-by-type';\nimport { ELEMENT_TO_COMPONENT } from 'slate-angular';\nimport type { TheTableComponent } from './components/table.component';\nimport { TheEditor } from '../../interfaces';\nimport { TableCellElement, TableRowElement } from '../../custom-types';\nimport * as TheTransforms from '../../transforms';\n\nexport const TableEditor = {\n insertTable(editor: Editor, optionsParam?: TableOptions) {\n const opts = new TableOptions(optionsParam);\n insertTable(opts, editor);\n },\n insertColumn(editor: Editor, count: number = 1, at?: number, optionsParam?: TableOptions) {\n const opts = new TableOptions(optionsParam);\n insertColumn(opts, editor, count, at);\n },\n insertRow(editor: Editor, count: number = 1, at?: number, optionsParam?: TableOptions) {\n const opts = new TableOptions(optionsParam);\n insertRow(opts, editor, count, at);\n },\n removeTable(editor: Editor, optionsParam?: TableOptions) {\n const opts = new TableOptions(optionsParam);\n removeTable(opts, editor);\n },\n removeRow(editor: Editor, rowIndex?: number, optionsParam?: TableOptions) {\n const opts = new TableOptions(optionsParam);\n removeRow(opts, editor, rowIndex);\n },\n removeColumn(editor: Editor, colIndex?: number, optionsParam?: TableOptions) {\n const opts = new TableOptions(optionsParam);\n removeColumn(opts, editor, colIndex);\n },\n clearCell(editor: Editor, nodeEntry?: NodeEntry<Element>, optionsParam?: TableOptions) {\n const opts = new TableOptions(optionsParam);\n clearCell(opts, editor, nodeEntry);\n },\n isActive(editor: Editor) {\n const [table] = Editor.nodes(editor, { match: n => Element.isElement(n) && n.type === ElementKinds.table });\n return !!table;\n },\n getSelectedCells(editor: Editor) {\n const tableNode = getAboveByType(editor, ElementKinds.table);\n if (tableNode) {\n const tableComponent = ELEMENT_TO_COMPONENT.get(tableNode[0]) as TheTableComponent;\n const cells = tableComponent.tableStore.selectedCells;\n if (cells.length > 0) {\n return cells;\n }\n }\n return null;\n },\n isAlignActive(editor: TheEditor, alignment: Alignment) {\n const cells = TableEditor.getSelectedCells(editor);\n if (cells) {\n const lastCell = cells[cells.length - 1];\n const tableNode = getAboveByType(editor, ElementKinds.table);\n const cellPath = [...tableNode[1], lastCell.row, lastCell.col];\n const cell = Node.get(editor, cellPath) as TableCellElement;\n const { align } = cell;\n if (!align && alignment === Alignment.left) {\n return true;\n }\n return align === alignment;\n }\n return null;\n },\n setAlign(editor: Editor, alignment: Alignment) {\n return TableEditor.handleSelectedCells(editor, (cellPath, cellRange) => {\n Transforms.setNodes(\n editor,\n { align: alignment },\n {\n at: cellPath\n }\n );\n Transforms.setNodes(\n editor,\n { align: undefined },\n {\n at: cellRange,\n match: (n: Element) => ALIGN_BLOCK_TYPES.includes(n.type)\n }\n );\n });\n },\n setVerticalAlign(editor: TheEditor, alignment: VerticalAlignment) {\n const isSelected = TableEditor.handleSelectedCells(editor, cellPath => {\n Transforms.setNodes(editor, { verticalAlign: alignment }, { at: cellPath });\n });\n if (!isSelected) {\n const cellEntry = getAboveByType(editor, ElementKinds.tableCell);\n if (cellEntry) {\n const [, cellPath] = cellEntry;\n Transforms.setNodes(\n editor,\n { verticalAlign: alignment },\n {\n at: cellPath,\n match: (n: Element) => n.type === ElementKinds.tableCell\n }\n );\n return true;\n }\n return false;\n }\n return true;\n },\n isVerticalAlignActive(editor: TheEditor, alignment: VerticalAlignment) {\n const cells = TableEditor.getSelectedCells(editor);\n if (cells) {\n const lastCell = cells[cells.length - 1];\n const tableNode = getAboveByType(editor, ElementKinds.table);\n const cellPath = [...tableNode[1], lastCell.row, lastCell.col];\n const cell = Node.get(editor, cellPath) as TableCellElement;\n const { verticalAlign } = cell;\n if (!verticalAlign && alignment === VerticalAlignment.top) {\n return true;\n }\n return verticalAlign === alignment;\n } else {\n const cellElement = getAboveByType(editor, ElementKinds.tableCell);\n if (cellElement) {\n const { verticalAlign } = cellElement[0];\n if (!verticalAlign && alignment === VerticalAlignment.top) {\n return true;\n }\n return verticalAlign === alignment;\n }\n }\n return null;\n },\n toggleMark(editor: TheEditor, isActive: boolean, format: string | string[], value: string | boolean = true) {\n return TableEditor.handleSelectedCells(editor, at => {\n if (isActive) {\n Transforms.unsetNodes(editor, format, {\n at,\n match: Text.isText,\n split: true\n });\n } else {\n Transforms.setNodes(\n editor,\n { [format as string]: value },\n {\n at,\n match: Text.isText,\n split: true\n }\n );\n }\n });\n },\n clearMark(editor: TheEditor) {\n return TableEditor.handleSelectedCells(editor, (cellPath, cellRange) => {\n const unsetMarks: { [key in MarkTypes]?: null | string } = {};\n MarkProps.forEach(key => {\n unsetMarks[key] = null;\n });\n TheTransforms.setMarks(editor, unsetMarks, cellRange);\n });\n },\n handleSelectedCells(editor: TheEditor, handle: (cellPath: Path, cellRange: Range) => void) {\n const cells = TableEditor.getSelectedCells(editor);\n if (cells) {\n const tableNode = getAboveByType(editor, ElementKinds.table);\n Editor.withoutNormalizing(editor, () => {\n for (const cell of cells) {\n const { row, col } = cell;\n const cellPath = [...tableNode[1], row, col];\n const cellRange = { anchor: Editor.start(editor, cellPath), focus: Editor.end(editor, cellPath) };\n handle(cellPath, cellRange);\n }\n });\n return true;\n }\n return false;\n },\n isActiveHeader(editor: TheEditor) {\n const [tableRowEntry] = Editor.nodes(editor, { match: (n: Element) => n.type === ElementKinds.tableRow });\n return tableRowEntry && tableRowEntry[0] && (tableRowEntry[0] as TableRowElement).header;\n }\n};\n","import { Editor, Text, Node } from 'slate';\nimport { TableEditor } from '../table/table.editor';\n\nexport interface MarkEditor extends Editor {\n removeMark: (key: string, shouldChange?: boolean) => void;\n}\n\nexport const MarkEditor = {\n isMarkActive(editor: Editor, format) {\n if (!editor?.selection) {\n return;\n }\n const node = Node.get(editor, editor?.selection?.anchor?.path);\n if (!Text.isText(node)) {\n return false;\n }\n const marks = Editor.marks(editor);\n return marks && marks[format] ? true : false;\n },\n toggleMark(editor, format) {\n const isActive = MarkEditor.isMarkActive(editor, format);\n if (TableEditor.toggleMark(editor, isActive, format)) {\n return;\n }\n if (isActive) {\n Editor.removeMark(editor, format);\n } else {\n Editor.addMark(editor, format, true);\n }\n }\n};\n","import { MarkTypes } from '../../constants/node-types';\nimport { ToolbarItem } from '../../interfaces';\nimport { MarkEditor } from './mark.editor';\n\nexport const MarkOptions: ToolbarItem[] = [\n {\n key: MarkTypes.bold,\n icon: 'bold',\n name: '加粗',\n execute: editor => MarkEditor.toggleMark(editor, MarkTypes.bold),\n active: editor => MarkEditor.isMarkActive(editor, MarkTypes.bold)\n },\n {\n key: MarkTypes.italic,\n icon: 'italic',\n name: '斜体',\n execute: editor => MarkEditor.toggleMark(editor, MarkTypes.italic),\n active: editor => MarkEditor.isMarkActive(editor, MarkTypes.italic)\n },\n {\n key: MarkTypes.strike,\n icon: 'strike',\n name: '删除线',\n execute: editor => MarkEditor.toggleMark(editor, MarkTypes.strike),\n active: editor => MarkEditor.isMarkActive(editor, MarkTypes.strike)\n },\n {\n key: MarkTypes.underline,\n icon: 'underline',\n name: '下划线',\n execute: editor => MarkEditor.toggleMark(editor, MarkTypes.underline),\n active: editor => MarkEditor.isMarkActive(editor, MarkTypes.underline)\n },\n {\n key: MarkTypes.codeLine,\n icon: 'code',\n name: '行内代码',\n execute: editor => MarkEditor.toggleMark(editor, MarkTypes.codeLine),\n active: editor => MarkEditor.isMarkActive(editor, MarkTypes.codeLine)\n }\n];\n","import { ElementKinds } from '../../constants/node-types';\nimport { ToolbarItem } from '../../interfaces';\nimport { ListEditor } from './list.editor';\n\nexport const ListOptions: ToolbarItem[] = [\n {\n key: ElementKinds.numberedList,\n icon: 'list-ordered',\n name: '有序列表',\n execute: editor => ListEditor.toggleList(editor, ElementKinds.numberedList),\n active: editor => ListEditor.isActive(editor, ElementKinds.numberedList)\n },\n {\n key: ElementKinds.bulletedList,\n icon: 'list-bullet',\n name: '无序列表',\n execute: editor => ListEditor.toggleList(editor, ElementKinds.bulletedList),\n active: editor => ListEditor.isActive(editor, ElementKinds.bulletedList)\n }\n];\n","import { ElementKinds } from '../../constants/node-types';\nimport { ToolbarItem } from '../../interfaces';\nimport { ImageEditor } from './image.editor';\n\nexport const ImageOptions: ToolbarItem[] = [\n {\n key: ElementKinds.image,\n icon: 'image',\n name: '图片',\n execute: editor => ImageEditor.openUpload(editor),\n active: editor => ImageEditor.isImageActive(editor)\n }\n];\n","import { Editor } from 'slate';\nimport { ElementKinds } from '../../constants/node-types';\nimport * as TheTransforms from '../../transforms';\n\nexport const HrEditor = {\n insertHr(editor: Editor) {\n TheTransforms.insertElement(editor, { type: ElementKinds.hr, children: [{ text: '' }] });\n }\n};\n","import { ElementKinds } from '../../constants/node-types';\nimport { ToolbarItem } from '../../interfaces';\nimport * as TheQueries from '../../queries';\nimport { HrEditor } from './hr.editor';\n\nexport const HrOptions: ToolbarItem[] = [\n {\n key: ElementKinds.hr,\n icon: 'horizontal-line',\n name: '分割线',\n active: editor => TheQueries.isBlockActive(editor, ElementKinds.hr),\n execute: editor => HrEditor.insertHr(editor)\n }\n];\n","import { Editor, Transforms, Element } from 'slate';\nimport { ElementKinds } from '../../constants/node-types';\nimport { HeadingElementKinds } from '../../public-api';\n\nexport const HeadingEditor = {\n setHeading(editor: Editor, heading: HeadingElementKinds) {\n Editor.withoutNormalizing(editor, () => {\n const types = [ElementKinds.bulletedList, ElementKinds.numberedList, ElementKinds.listItem];\n Transforms.unwrapNodes(editor, {\n at: editor.selection,\n match: n => Element.isElement(n) && types.includes(n.type as any),\n mode: 'all',\n split: true\n });\n Transforms.setNodes(editor, { type: heading });\n });\n },\n isHeadingActive(editor: Editor, heading: HeadingElementKinds) {\n const [match] = Editor.nodes(editor, {\n match: n => Element.isElement(n) && n.type === heading,\n universal: true\n });\n return !!match;\n }\n};\n","import { Transforms } from 'slate';\nimport { ElementKinds, STANDARD_HEADING_TYPES } from '../../constants/node-types';\nimport { ToolbarItem, ToolbarItemType } from '../../interfaces';\nimport * as TheQueries from '../../queries';\nimport { HeadingEditor } from './heading.editor';\n\nexport const HeadingOptions: ToolbarItem[] = [\n {\n name: '正文',\n key: ElementKinds.headingList,\n type: ToolbarItemType.toolDropdown,\n includes: [ElementKinds.paragraph, ...STANDARD_HEADING_TYPES]\n },\n {\n key: ElementKinds.paragraph,\n name: '正文',\n styles: { height: '40px' },\n execute: editor => Transforms.setNodes(editor, { type: ElementKinds.paragraph }),\n active: editor => TheQueries.isParagraph(editor)\n },\n {\n key: ElementKinds.heading_1,\n name: '标题1',\n icon: 'header-1',\n styles: { height: '40px', fontSize: '28px' },\n execute: editor => HeadingEditor.setHeading(editor, ElementKinds.heading_1),\n active: editor => HeadingEditor.isHeadingActive(editor, ElementKinds.heading_1)\n },\n {\n key: ElementKinds.heading_2,\n icon: 'header-2',\n name: '标题2',\n styles: { height: '38px', fontSize: '24px' },\n execute: editor => HeadingEditor.setHeading(editor, ElementKinds.heading_2),\n active: editor => HeadingEditor.isHeadingActive(editor, ElementKinds.heading_2)\n },\n {\n key: ElementKinds.heading_3,\n icon: 'header-3',\n name: '标题3',\n styles: { height: '34px', fontSize: '20px' },\n execute: editor => HeadingEditor.setHeading(editor, ElementKinds.heading_3),\n active: editor => HeadingEditor.isHeadingActive(editor, ElementKinds.heading_3)\n },\n {\n key: ElementKinds.heading_4,\n icon: 'header-4',\n name: '标题4',\n styles: { height: '30px', fontSize: '16px' },\n execute: editor => HeadingEditor.setHeading(editor, ElementKinds.heading_4),\n active: editor => HeadingEditor.isHeadingActive(editor, ElementKinds.heading_4)\n }\n];\n","import { ElementKinds } from '../../constants/node-types';\nimport { ToolbarItem } from '../../interfaces';\nimport * as TheQueries from '../../queries';\nimport { BlockquoteEditor } from './blockquote.editor';\n\nexport const BlockquoteOptions: ToolbarItem[] = [\n {\n key: ElementKinds.blockquote,\n icon: 'blockquote',\n name: '引用',\n active: editor => TheQueries.isBlockActive(editor, ElementKinds.blockquote),\n execute: editor => BlockquoteEditor.toggleBlockquote(editor)\n }\n];\n","import { Editor, Transforms, Element } from 'slate';\nimport * as TheQueries from '../../queries';\nimport { Alignment, ALIGN_BLOCK_TYPES, ElementKinds } from '../../constants/node-types';\nimport { TableEditor } from '../table/table.editor';\n\nexport const AlignEditor = {\n isActive(editor: Editor, alignment: Alignment) {\n if (!editor?.selection) {\n return;\n }\n const tableCellAlign = TableEditor.isAlignActive(editor, alignment);\n if (tableCellAlign !== null) {\n return tableCellAlign;\n }\n\n const blockElement = TheQueries.anchorBlock(editor);\n if (blockElement) {\n const { align } = blockElement;\n if (!align && alignment === Alignment.left) {\n return true;\n }\n return align === alignment;\n }\n if (alignment === Alignment.left) {\n return true;\n }\n return false;\n },\n setAlign(editor: Editor, alignment: Alignment) {\n if (TableEditor.setAlign(editor, alignment)) {\n return;\n }\n const props = {\n align: alignment\n };\n Transforms.setNodes(editor, props, {\n at: editor.selection,\n match: (n: Element) => ALIGN_BLOCK_TYPES.includes(n.type)\n });\n }\n};\n","import { DropdownMode } from '../../constants';\nimport { Alignment, ToolbarActionTypes } from '../../constants/node-types';\nimport { ToolbarItem, ToolbarItemType } from '../../interfaces';\nimport { AlignEditor } from './align.editor';\n\nexport const AlignOptions: ToolbarItem[] = [\n {\n key: ToolbarActionTypes.alignType,\n type: ToolbarItemType.toolDropdown,\n dropdownMode: DropdownMode.icon,\n includes: [ToolbarActionTypes.alignLeft, ToolbarActionTypes.alignCenter, ToolbarActionTypes.alignRight],\n name: '对齐方式'\n },\n {\n key: ToolbarActionTypes.alignLeft,\n icon: 'align-left',\n name: '左对齐',\n execute: editor => AlignEditor.setAlign(editor, Alignment.left),\n active: editor => AlignEditor.isActive(editor, Alignment.left)\n },\n {\n key: ToolbarActionTypes.alignCenter,\n icon: 'align-center',\n name: '居中',\n execute: editor => AlignEditor.setAlign(editor, Alignment.center),\n active: editor => AlignEditor.isActive(editor, Alignment.center)\n },\n {\n key: ToolbarActionTypes.alignRight,\n icon: 'align-right',\n name: '右对齐',\n execute: editor => AlignEditor.setAlign(editor, Alignment.right),\n active: editor => AlignEditor.isActive(editor, Alignment.right)\n }\n];\n","import { Component, ElementRef, ChangeDetectorRef } from '@angular/core';\nimport { Editor, Element } from 'slate';\nimport { TheBaseElementComponent } from '../../interfaces';\n\n@Component({\n selector: 'blockquote[theBlockquote]',\n template: `<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>`\n})\nexport class TheBlockquoteComponent extends TheBaseElementComponent<Element, Editor> {\n constructor(public elementRef: ElementRef, public cdr: ChangeDetectorRef) {\n super(elementRef, cdr);\n }\n}\n","import { Editor, Element, Transforms } from 'slate';\nimport * as TheQueries from '../../queries';\nimport * as TheTransforms from '../../transforms';\nimport { ElementKinds } from '../../constants/node-types';\nimport { TheBlockquoteComponent } from './blockquote.component';\nimport { createEmptyParagraph } from '../../utils';\n\nexport const withBlockquote = (editor: Editor): Editor => {\n const { renderElement, deleteBackward, insertBreak, isContainer } = editor;\n\n editor.renderElement = (element: Element) => {\n if (element.type === ElementKinds.blockquote) {\n return TheBlockquoteComponent;\n }\n return renderElement(element);\n };\n\n editor.deleteBackward = unit => {\n const aboveResult = Editor.above<Element>(editor, {\n match: n => Editor.isBlock(editor, n) && n.type === ElementKinds.blockquote\n });\n if (!aboveResult) {\n return deleteBackward(unit);\n }\n const hasHandled = TheTransforms.handleContinualDeleteBackward(editor, aboveResult, ElementKinds.blockquote);\n if (hasHandled) {\n return;\n }\n return deleteBackward(unit);\n };\n\n editor.insertBreak = () => {\n const lowestBlock = TheQueries.anchorBlock(editor);\n\n if (!lowestBlock) {\n insertBreak();\n return;\n }\n const hasHandled = TheTransforms.handleContinualInsertBreak(editor, lowestBlock, ElementKinds.blockquote);\n if (hasHandled) {\n return;\n }\n const voidEntry = Editor.above<Element>(editor, {\n match: n => Editor.isBlock(editor, n) && Editor.isVoid(editor, n)\n });\n if (voidEntry && voidEntry[0]) {\n Transforms.insertNodes(editor, createEmptyParagraph());\n return;\n }\n return insertBreak();\n };\n\n editor.isContainer = (element: Element) => {\n return element.type === ElementKinds.blockquote ? true : isContainer(element);\n };\n\n return editor;\n};\n","export type ColorType = string;\n\nexport const Colors = [\n '#FFFFFF',\n '#333333',\n '#FF0100',\n '#FFDA00',\n '#A4E143',\n '#38D9F0',\n '#4EA8EE',\n '#9570E7',\n '#F3F3F3',\n '#CCCCCC',\n '#FEF3F1',\n '#FEFCDA',\n '#EDF6E8',\n '#E6FBFA',\n '#EBF4FC',\n '#F1EDF7',\n '#DDDDDD',\n '#A5A5A5',\n '#FCD5D0',\n '#F9EDA6',\n '#D4E9D7',\n '#C8E6EA',\n '#CCE0F2',\n '#DAD6EA',\n '#888888',\n '#494949',\n '#EE7976',\n '#E7B323',\n '#99C191',\n '#79C6CE',\n '#6EAAD7',\n '#9D8EC2',\n '#41464C',\n '#000000',\n '#BF1A1E',\n '#AD720E',\n '#1C7232',\n '#1C7892',\n '#18439D',\n '#521B78'\n];\n\nexport const BackgroundColors = [\n '#FFFFFF',\n '#FACCCC',\n '#FFEBCC',\n '#FFFFCC',\n '#CDE8CC',\n '#CCE0F5',\n '#EBD6FF',\n '#F3F3F3',\n '#F06665',\n '#FFC266',\n '#FFFF66',\n '#66B966',\n '#66A3E0',\n '#C285FF'\n];\n\nexport const SpecialTextColor = '#333333';\n\nexport const SpecialBackgroundColor = '#FFFFFF';\n\nexport const TableHeaderBackgroundColor = '#F3F3F3';\n\nexport interface ColorSelectOption {\n showCustom?: boolean;\n perRowColorNumbers: number;\n rowOptions: {\n [rowNumber: number]: string; // 设置每行选中的颜色\n };\n specialColor?: string;\n}\n","import { Component, OnInit, Input, ChangeDetectionStrategy, HostListener } from '@angular/core';\nimport { ThyPopoverRef } from 'ngx-tethys/popover';\nimport { ColorType, ColorSelectOption } from '../../constants/color-select';\n\n@Component({\n selector: 'the-color-select',\n templateUrl: 'color-select.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TheColorSelectComponent implements OnInit {\n @Input() selectedColor: string;\n\n @Input() selectAction: (color: ColorType) => void;\n\n @Input() showCustom = true;\n\n @Input() colors: string[];\n\n @Input() option: ColorSelectOption;\n\n color: string;\n\n customColor: string;\n\n selectColors: { rowValue: { value: string; classMaps: object }[]; tickColor: string }[] = [];\n\n @HostListener('document: mousedown', ['$event'])\n handleDocumentMouseDown(event: MouseEvent) {\n if (!document.querySelector('.color-container').contains(event.target as HTMLElement)) {\n this.popoverRef.close();\n }\n }\n\n constructor(private popoverRef: ThyPopoverRef<TheColorSelectComponent>) {}\n\n ngOnInit() {\n if (this.selectedColor) {\n this.customColor = this.selectedColor.slice(1);\n }\n this.buildColors();\n }\n\n @HostListener('mousedown', ['$event'])\n handleMouseDown(event: MouseEvent) {\n event.stopPropagation();\n }\n\n @HostListener('keydown', ['$event'])\n handleKeydown(event: MouseEvent) {\n event.stopPropagation();\n }\n\n buildColors() {\n const rows = parseInt((this.colors.length / this.option.perRowColorNumbers).toFixed(0), 10);\n for (let i = 0; i < rows; i++) {\n this.selectColors.push({\n rowValue: [\n ...this.colors.slice(i * this.option.perRowColorNumbers, (i + 1) * this.option.perRowColorNumbers).map(color => {\n return {\n value: color,\n classMaps: {\n selected: color === this.selectedColor,\n white: color === '#FFFFFF',\n 'mr-0': i === this.option.perRowColorNumbers - 1,\n 'mb-0': i === this.selectColors.length - 1,\n 'special-color': color === this.option.specialColor\n }\n };\n })\n ],\n tickColor: this.option.rowOptions && this.option.rowOptions[i + 1]\n });\n }\n }\n\n _selectColor(event: MouseEvent, color: string) {\n event.preventDefault();\n event.stopPropagation();\n if (this.option.specialColor && color === this.option.specialColor) {\n color = '';\n }\n this.selectedColor = color;\n this.selectAction(this.selectedColor);\n this.popoverRef.close();\n }\n\n colorChange(isEnter: boolean) {\n this.customColor = this.customColor.toLocaleUpperCase();\n this.selectedColor = '#' + this.customColor;\n if (this.customColor.length === 3) {\n this.selectedColor = '#' + this.customColor.replace(/(.)/g, '$1$1');\n }\n if (this.selectedColor.length === 7 && this.selectedColor !== this.option.specialColor) {\n this.selectColors = [];\n this.buildColors();\n }\n if (isEnter) {\n this.selectAction(this.selectedColor);\n this.popoverRef.close();\n }\n }\n customInputColorEnter(event: KeyboardEvent) {\n event.stopPropagation();\n this.selectAction(this.selectedColor);\n this.popoverRef.close();\n }\n}\n","<div class=\"color-container\">\n <div class=\"colors\">\n <div *ngFor=\"let row of selectColors; let rowIndex = index\">\n <span\n class=\"color-item\"\n *ngFor=\"let _color of row.rowValue; let i = index\"\n [ngClass]=\"_color.classMaps\"\n (mousedown)=\"_selectColor($event, _color.value)\"\n >\n <span [ngStyle]=\"{ background: _color.value }\">\n <thy-icon thyIconName=\"check\" [ngStyle]=\"{ color: row.tickColor }\"></thy-icon>\n </span>\n </span>\n </div>\n </div>\n <div *ngIf=\"option.showCustom\" class=\"select-color\">\n <span class=\"color\" [ngStyle]=\"{ background: selectedColor }\"></span>\n #\n <input\n thyInput\n maxlength=\"6\"\n (keydown.enter)=\"customInputColorEnter($event)\"\n onkeyup=\"value=value.replace(/[^0-9A-Fa-f]/g,'')\"\n class=\"value\"\n [(ngModel)]=\"customColor\"\n (ngModelChange)=\"colorChange(false)\"\n />\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { ThyPlacement } from 'ngx-tethys/core';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys/popover';\nimport { TheColorSelectComponent } from '../components/color-select/color-select.component';\nimport { ColorType, ColorSelectOption } from '../constants/color-select';\n\n@Injectable()\nexport class TheColorSelectService {\n backdropClosable = false;\n\n hasBackdrop = false;\n\n insideClosable = false;\n\n placement: ThyPlacement = 'bottomLeft';\n\n offset = 10;\n\n colorSelectRef: ThyPopoverRef<TheColorSelectComponent>;\n\n get isOpenColorSelect() {\n return this.colorSelectRef && this.colorSelectRef.componentInstance;\n }\n\n constructor(private thyPopover: ThyPopover) {}\n\n toggleColorSelect(\n origin: HTMLElement,\n selectedColor: ColorType,\n colors: string[],\n option: ColorSelectOption,\n selectAction: (color: ColorType) => void,\n placement?: ThyPlacement,\n offset?: number\n ) {\n if (this.isOpenColorSelect) {\n this.colorSelectRef.close();\n }\n this.colorSelectRef = this.thyPopover.open(TheColorSelectComponent, {\n initialState: {\n selectedColor,\n selectAction,\n colors,\n option\n },\n origin,\n backdropClosable: this.backdropClosable,\n placement: placement || this.placement,\n offset: offset !== null ? offset : this.offset,\n hasBackdrop: this.hasBackdrop,\n insideClosable: this.insideClosable,\n panelClass: 'color-select-container'\n });\n return this.colorSelectRef;\n }\n\n closeColorSelect() {\n if (this.isOpenColorSelect) {\n this.colorSelectRef.close();\n }\n }\n}\n","import { Editor, Node, Text, Transforms } from 'slate';\nimport { Colors, ColorType, SpecialBackgroundColor, SpecialTextColor } from '../../constants/color-select';\nimport { MarkTypes } from '../../constants/node-types';\nimport { TheColorSelectService } from '../../services/color-select.service';\nimport { TableEditor } from '../table/table.editor';\n\nexport const ColorEditor = {\n getActiveColor(editor: Editor, type: MarkTypes.color | MarkTypes.backgroundColor): string {\n if (!editor?.selection) {\n return;\n }\n const node = Node.get(editor, editor.selection?.anchor.path);\n if (!Text.isText(node)) {\n return undefined;\n }\n const marks = Editor.marks(editor);\n return marks && marks[type];\n },\n setColor(editor: Editor, color: ColorType, type: MarkTypes.color | MarkTypes.backgroundColor) {\n if (TableEditor.toggleMark(editor, !color, type, color)) {\n return;\n }\n if (color) {\n Editor.addMark(editor, type, color);\n } else {\n Editor.removeMark(editor, type);\n }\n },\n selectColor(editor: Editor, type: MarkTypes.color | MarkTypes.backgroundColor) {\n const rangeRef = Editor.rangeRef(editor, editor.selection);\n const colorSelectService = editor.injector.get(TheColorSelectService);\n const element = (event.target as HTMLElement).closest('.thy-icon-nav-link');\n colorSelectService.toggleColorSelect(\n element as HTMLElement,\n ColorEditor.getActiveColor(editor, type),\n Colors,\n {\n showCustom: true,\n perRowColorNumbers: 8,\n rowOptions: { 2: '#aaa' },\n specialColor: type === MarkTypes.color ? SpecialTextColor : SpecialBackgroundColor\n },\n (newColor: ColorType) => {\n Transforms.select(editor, rangeRef.current);\n ColorEditor.setColor(editor, newColor, type);\n },\n 'bottomLeft',\n 0\n );\n }\n};\n","import { Directive } from '@angular/core';\nimport { Editor, Transforms } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { ToolbarItem } from '../../interfaces';\nimport * as TheQueries from '../../queries';\n\n@Directive()\nexport abstract class TheToolbarBaseItemComponent {\n editor: Editor;\n itemMousedownHandle: (item: ToolbarItem) => void;\n\n abstract statusChange(editor: Editor): void;\n\n execute(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.itemMousedownHandle && !this.editor?.selection) {\n const lastNode = TheQueries.getLastNode(this.editor, 1);\n const end = Editor.end(this.editor, lastNode[1]);\n Transforms.select(this.editor, end);\n AngularEditor.focus(this.editor);\n }\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { Editor, Transforms } from 'slate';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys/popover';\nimport { DefaultToolbarItem } from '../../interfaces';\nimport { ColorEditor } from './color.editor';\nimport { Colors, ColorType, SpecialBackgroundColor, SpecialTextColor } from '../../constants/color-select';\nimport { MarkTypes } from '../../constants/node-types';\nimport { TheColorSelectComponent } from '../../components/color-select/color-select.component';\nimport { TheToolbarBaseItemComponent } from '../../components/toolbar-base-item/toolbar-base-item.component';\n\n@Component({\n selector: 'the-color-toolbar-item',\n template: `\n <a\n class=\"link-width-down\"\n thyIconNavLink\n [ngStyle]=\"{\n width: item.key === 'color' ? '42px' : 'auto'\n }\"\n [thyTooltip]=\"item.name\"\n [thyIconNavLinkActive]=\"active\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"execute($event)\"\n >\n <thy-icon [thyIconName]=\"item.icon\" thyIconType=\"twotone\" [thyTwotoneColor]=\"active\"></thy-icon>\n <thy-icon\n [ngClass]=\"{\n 'link-down-icon': true,\n 'font-size-sm': true,\n 'text-desc': true\n }\"\n thyIconName=\"caret-down\"\n ></thy-icon>\n </a>\n `,\n host: {\n class: 'the-toolbar-item'\n }\n})\nexport class TheColorToolbarItemComponent extends TheToolbarBaseItemComponent {\n @Input() item: DefaultToolbarItem;\n\n @Input() editor: Editor;\n\n active: string | boolean = false;\n\n colorSelectRef: ThyPopoverRef<TheColorSelectComponent>;\n\n get isOpenColorSelect() {\n return this.colorSelectRef && this.colorSelectRef.componentInstance;\n }\n\n constructor(private thyPopover: ThyPopover) {\n super();\n }\n\n public statusChange(editor: Editor) {\n this.active = this.item?.active(editor);\n }\n\n execute(event: MouseEvent) {\n super.execute(event);\n if (this.editor?.disabled) {\n return;\n }\n const type = this.item.key as MarkTypes.color & MarkTypes.backgroundColor;\n this.toggleColorSelect(event, type);\n }\n\n toggleColorSelect(event: MouseEvent, type: MarkTypes.color | MarkTypes.backgroundColor) {\n if (this.isOpenColorSelect) {\n this.colorSelectRef.close();\n return;\n }\n this.colorSelectRef = this.thyPopover.open(TheColorSelectComponent, {\n initialState: {\n colors: Colors,\n selectedColor: ColorEditor.getActiveColor(this.editor, type),\n option: {\n showCustom: true,\n perRowColorNumbers: 8,\n rowOptions: { 2: '#aaa' },\n specialColor: type === MarkTypes.color ? SpecialTextColor : SpecialBackgroundColor\n },\n selectAction: (color: ColorType) => {\n Transforms.select(this.editor, this.editor.selection);\n ColorEditor.setColor(this.editor, color, type);\n }\n },\n origin: event.currentTarget as HTMLElement,\n backdropClosable: false,\n placement: 'bottomLeft',\n offset: 10,\n hasBackdrop: false,\n insideClosable: false,\n panelClass: 'color-select-container'\n });\n return this.colorSelectRef;\n }\n\n close() {\n if (this.isOpenColorSelect) {\n this.colorSelectRef.close();\n }\n }\n}\n","import { MarkTypes } from '../../constants/node-types';\nimport { ToolbarItem } from '../../interfaces';\nimport { ColorEditor } from './color.editor';\nimport { TheColorToolbarItemComponent } from './toolbar-item.component';\n\nexport const ColorOptions: ToolbarItem[] = [\n {\n key: MarkTypes.color,\n icon: 'color-tt',\n name: '字体颜色',\n iconComponent: TheColorToolbarItemComponent,\n active: editor => ColorEditor.getActiveColor(editor, MarkTypes.color)\n },\n {\n key: MarkTypes.backgroundColor,\n icon: 'background-tt',\n name: '背景颜色',\n iconComponent: TheColorToolbarItemComponent,\n active: editor => ColorEditor.getActiveColor(editor, MarkTypes.backgroundColor)\n }\n];\n","import { Editor, Path, Transforms } from 'slate';\nimport { HistoryEditor } from 'slate-history';\nimport { hotkeys } from 'slate-angular';\nimport * as TheQueries from '../../queries';\nimport { createEmptyParagraph } from '../../utils/create-empty-paragraph';\n\nexport const withRemoveVoid = <T extends Editor>(editor: T): T => {\n const { deleteBackward, deleteForward, onKeydown } = editor;\n\n const deleteBlockVoid = (e: Editor) => {\n const aboveEntry = TheQueries.getAbove(e);\n const canDelete = aboveEntry && Editor.isBlock(e, aboveEntry[0]) && Editor.isVoid(e, aboveEntry[0]);\n if (canDelete) {\n Transforms.insertNodes(e, createEmptyParagraph(), { at: Path.next(aboveEntry[1]) });\n Transforms.select(e, Path.next(aboveEntry[1]));\n Transforms.removeNodes(e, { at: aboveEntry[1] });\n }\n return canDelete;\n };\n\n editor.deleteBackward = unit => {\n if (deleteBlockVoid(editor)) {\n return;\n }\n deleteBackward(unit);\n };\n\n editor.onKeydown = event => {\n const aboveEntry = TheQueries.getAbove(editor);\n if (aboveEntry && Editor.isVoid(editor, aboveEntry[0]) && Editor.isInline(editor, aboveEntry[0])) {\n if (hotkeys.isDeleteBackward(event) || hotkeys.isDeleteForward(event)) {\n event.preventDefault();\n HistoryEditor.withoutMerging(editor, () => {\n Transforms.move(editor);\n });\n Transforms.delete(editor, { reverse: true });\n return;\n }\n if (hotkeys.isSplitBlock(event)) {\n event.preventDefault();\n Transforms.move(editor);\n return;\n }\n }\n onKeydown(event);\n };\n\n editor.deleteForward = unit => {\n if (deleteBlockVoid(editor)) {\n return;\n }\n deleteForward(unit);\n };\n return editor;\n};\n","import { Editor, Node, Range, Path, Transforms } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { CodeElement } from '../../custom-types';\nimport { ElementKinds } from '../../constants/node-types';\nimport * as TheTransforms from '../../transforms';\nimport { DEFAULT_LANGUAGE } from '../../constants/code';\n\nexport const CodeEditor = {\n setLanguage(editor: Editor, language: string, element: CodeElement) {\n const at = AngularEditor.findPath(editor, element);\n Transforms.setNodes(\n editor,\n { language },\n {\n at\n }\n );\n },\n setCodeContent(editor: Editor, content: string, element: CodeElement) {\n const at = AngularEditor.findPath(editor, element);\n Transforms.setNodes(\n editor,\n { content },\n {\n at\n }\n );\n },\n insertCode(editor: Editor) {\n const isSelectContent = Editor.string(editor, editor.selection);\n const [startPoint, endPoint] = Range.edges(editor.selection);\n const elementEntryIterator = Node.elements(editor, {\n from: startPoint.path,\n to: endPoint.path,\n pass: ([node, path]) => {\n return Editor.isBlock(editor, node);\n }\n });\n const elementEntrys = Array.from(elementEntryIterator);\n const isAllParagraph = elementEntrys.every(item => item[0].type === ElementKinds.paragraph);\n if (isSelectContent && editor.selection.anchor.path.length === 2 && isAllParagraph) {\n let content = elementEntrys.reduce((content, [element, path], index) => {\n const text = Node.string(element);\n return content + (elementEntrys.length - 1 === index ? `${text}` : `${text}\\n`);\n }, '');\n const codeElement: CodeElement = {\n type: ElementKinds.code,\n content,\n language: DEFAULT_LANGUAGE.value,\n children: [{ text: '' }]\n };\n Editor.withoutNormalizing(editor, () => {\n const lastPath = elementEntrys[elementEntrys.length - 1][1];\n Transforms.insertNodes(editor, codeElement, { at: Path.next(lastPath) });\n Transforms.select(editor, Path.next(lastPath));\n Transforms.removeNodes(editor, {\n at: {\n anchor: Editor.start(editor, elementEntrys[0][1]),\n focus: Editor.end(editor, lastPath)\n }\n });\n });\n } else {\n const codeElement: CodeElement = {\n type: ElementKinds.code,\n content: '',\n language: DEFAULT_LANGUAGE.value,\n children: [{ text: '' }]\n };\n TheTransforms.insertElement(editor, codeElement);\n }\n }\n};\n","import * as TheQueries from '../../queries';\nimport { ElementKinds } from '../../constants/node-types';\nimport { ToolbarItem } from '../../interfaces';\nimport { CodeEditor } from './code.editor';\n\nexport const CodeOptions: ToolbarItem[] = [\n {\n key: ElementKinds.code,\n icon: 'code-syntax',\n name: '代码块',\n active: editor => TheQueries.isBlockActive(editor, ElementKinds.code),\n execute: editor => CodeEditor.insertCode(editor)\n }\n];\n","import { Component, OnInit, ElementRef, Input, HostListener, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { ConnectedPosition, Overlay } from '@angular/cdk/overlay';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys/popover';\nimport { Editor } from 'slate';\nimport { DropdownMode } from '../../constants/toolbar';\nimport { DefaultToolbarItem, ToolbarItem } from '../../interfaces/toolbar';\nimport { TheToolbarBaseItemComponent } from '../toolbar-base-item/toolbar-base-item.component';\n\n@Component({\n selector: 'the-toolbar-dropdown',\n templateUrl: './toolbar-dropdown.component.html',\n host: {\n class: 'the-toolbar-dropdown-container'\n }\n})\nexport class TheToolbarDropdownComponent extends TheToolbarBaseItemComponent implements OnInit {\n private _item: DefaultToolbarItem;\n\n @Input() toolbarItem: ToolbarItem;\n\n @Input() menus: DefaultToolbarItem[];\n\n @Input() mode: DropdownMode = DropdownMode.text;\n\n @Input()\n set item(i: DefaultToolbarItem) {\n this._item = i;\n this.activeMenu = i;\n }\n get item() {\n return this._item;\n }\n\n @Input() itemMousedownHandle: (item: ToolbarItem) => void;\n\n editor: Editor;\n template: TemplateRef<any>;\n dropdownMode = DropdownMode;\n activeMenu: DefaultToolbarItem;\n dropdownPopoverRef: ThyPopoverRef<any>;\n\n get isOpen() {\n return this.dropdownPopoverRef && this.dropdownPopoverRef.getOverlayRef() && this.dropdownPopoverRef.getOverlayRef().hasAttached();\n }\n\n @ViewChild('iconModeTemplate', { static: true })\n iconModeTemplate: TemplateRef<any>;\n\n @ViewChild('textModeTemplate', { static: true })\n textModeTemplate: TemplateRef<any>;\n\n @ViewChild('dropdownTemplate', { static: true })\n dropdownTemplate: TemplateRef<any>;\n\n @HostListener('mousedown', ['$event'])\n toggleDropdown(event: MouseEvent) {\n super.execute(event);\n\n if (this.editor?.disabled) {\n return;\n }\n this.openDropdownPopover();\n }\n\n @HostListener('document: mousedown', ['$event'])\n handleDocumentMouseDown(event: MouseEvent) {\n if (!this.elementRef.nativeElement.contains(event.target as HTMLElement)) {\n this.closeDropdownPopover();\n }\n }\n\n constructor(\n public elementRef: ElementRef,\n private thyPopover: ThyPopover,\n private viewContainerRef: ViewContainerRef,\n private overlay: Overlay\n ) {\n super();\n }\n\n ngOnInit() {\n if (!this.template) {\n this.template = this.mode === this.dropdownMode.icon ? this.iconModeTemplate : this.textModeTemplate;\n }\n\n if (!this.activeMenu) {\n this.activeMenu = this.menus[0];\n }\n if (this.toolbarItem) {\n this.elementRef.nativeElement.classList.add(`${this.toolbarItem?.key}`);\n }\n }\n\n public statusChange(editor: Editor) {\n const activeItem = this.menus.find(i => {\n if (i?.active) {\n return i?.active(editor);\n }\n });\n this.activeMenu = activeItem ? activeItem : this.menus[0];\n }\n\n itemMousedown(event: MouseEvent, item: ToolbarItem) {\n super.execute(event);\n\n this.closeDropdownPopover();\n\n if (this.itemMousedownHandle) {\n this.itemMousedownHandle(item);\n return;\n }\n\n if (item?.execute) {\n item?.execute(this.editor);\n }\n }\n\n openDropdownPopover() {\n this.dropdownPopoverRef = this.thyPopover.open(this.dropdownTemplate, {\n origin: this.elementRef,\n panelClass: ['the-toolbar-dropdown-popover', this.toolbarItem?.key],\n placement: 'bottomLeft',\n insideClosable: false,\n backdropClosable: true,\n hasBackdrop: false,\n offset: 10,\n viewContainerRef: this.viewContainerRef,\n scrollStrategy: this.overlay.scrollStrategies.reposition()\n });\n this.dropdownPopoverRef?.getOverlayRef().updatePositionStrategy(this.createPositionStrategy());\n }\n\n closeDropdownPopover() {\n if (this.dropdownPopoverRef) {\n this.dropdownPopoverRef?.close();\n }\n }\n\n createPositionStrategy() {\n const topPosition: ConnectedPosition = {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n offsetX: 0,\n offsetY: -15\n };\n const bottomPosition: ConnectedPosition = {\n ...topPosition,\n overlayY: 'top',\n offsetY: 42\n };\n return this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withFlexibleDimensions(false)\n .withGrowAfterOpen(false)\n .withPush(false)\n .withPositions([bottomPosition, topPosition]);\n }\n}\n","<ng-template [ngTemplateOutlet]=\"template\"></ng-template>\n\n<ng-template #iconModeTemplate>\n <a thyIconNavLink class=\"icon-mode link-with-down\" [thyTooltip]=\"activeMenu?.name\" thyTooltipPlacement=\"top\">\n <thy-icon [thyIconName]=\"activeMenu?.icon\"></thy-icon>\n <thy-icon class=\"caret-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n</ng-template>\n\n<ng-template #textModeTemplate>\n <a thyIconNavLink class=\"text-mode\" [thyTooltip]=\"activeMenu?.name\" thyTooltipPlacement=\"top\">\n <span class=\"show-text\">{{ activeMenu?.name }}</span>\n <thy-icon class=\"text-caret-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n </a>\n</ng-template>\n\n<ng-template #dropdownTemplate>\n <thy-action-menu class=\"dropdown\">\n <ng-container *ngFor=\"let menu of menus\">\n <a\n *ngIf=\"menu.key !== 'split'\"\n thyActionMenuItem\n href=\"javascript:;\"\n [thyActionMenuItemActive]=\"menu.key === activeMenu.key\"\n (mousedown)=\"itemMousedown($event, menu)\"\n [ngStyle]=\"menu?.styles\"\n >\n <span *ngIf=\"menu.icon && mode === dropdownMode.icon\" thyActionMenuItemIcon>\n <thy-icon [thyIconName]=\"menu.icon\"></thy-icon>\n </span>\n <span *ngIf=\"menu.name\" thyActionMenuItemName>{{ menu.name }}</span>\n </a>\n <thy-action-menu-divider *ngIf=\"menu.key === 'split'\"></thy-action-menu-divider>\n </ng-container>\n </thy-action-menu>\n</ng-template>\n","import {\n Component,\n ElementRef,\n ChangeDetectorRef,\n ChangeDetectionStrategy,\n OnInit,\n ViewChild,\n AfterViewInit,\n NgZone,\n Inject\n} from '@angular/core';\nimport { ThyNotifyService } from 'ngx-tethys/notify';\nimport { Editor, Transforms } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { CodeMirrorComponent } from 'ng-codemirror';\nimport { CODEMIRROR_PADDING_TOP, CODE_MODES, DropdownMode, CodeMode, THE_CODE_MODE_TOKEN } from '../../constants';\nimport { DefaultToolbarItem, TheBaseElementComponent } from '../../interfaces';\nimport { CodeElement } from '../../custom-types';\nimport { CodeEditor } from './code.editor';\nimport * as TheTransforms from '../../transforms';\nimport { delay, take } from 'rxjs/operators';\n\n@Component({\n selector: 'div[theCode]',\n templateUrl: './code.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TheCodeComponent extends TheBaseElementComponent<CodeElement, Editor> implements OnInit, AfterViewInit {\n startRenderCodemirror = false;\n dropdownMode = DropdownMode;\n maxHeight = this.mode === CodeMode.default ? 350 - CODEMIRROR_PADDING_TOP * 2 : 0;\n codeMirrorFocused = false;\n\n menus = CODE_MODES.map(item => {\n return { key: item.value, name: item.showName };\n });\n\n options = {\n mode: this.menus[0].key,\n lineNumbers: false,\n readOnly: false,\n autofocus: false,\n lineWiseCopyCut: true,\n lineWrapping: this.mode === CodeMode.default ? false : true,\n cursorBlinkRate: 500\n };\n\n actives: DefaultToolbarItem = this.menus[0];\n\n get code() {\n return this.element.content;\n }\n\n @ViewChild('codemirror', { read: CodeMirrorComponent, static: false })\n codemirror: CodeMirrorComponent;\n\n onContextChange() {\n super.onContextChange();\n if (this.initialized) {\n if (this.options.readOnly !== this.readonly) {\n this.useReadonly();\n }\n if (this.options.mode !== this.element.language) {\n this.useMode();\n }\n }\n }\n\n constructor(\n public elementRef: ElementRef,\n public cdr: ChangeDetectorRef,\n private thyNotifyService: ThyNotifyService,\n private ngZone: NgZone,\n @Inject(THE_CODE_MODE_TOKEN)\n private mode: CodeMode\n ) {\n super(elementRef, cdr);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.elementRef.nativeElement.classList.add('the-code-container');\n }\n\n ngAfterViewInit() {\n if (this.readonly) {\n // delay 20ms\n // ccodemirror is too slow\n this.ngZone.onStable.pipe(take(1), delay(20)).subscribe(() => {\n this.renderCodemirror();\n });\n } else {\n // edit mode can not delay\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.renderCodemirror();\n this.initializeCodemirrorFocus();\n });\n }\n }\n\n renderCodemirror() {\n this.startRenderCodemirror = true;\n this.useReadonly();\n this.useMode();\n this.cdr.detectChanges();\n }\n\n initializeCodemirrorFocus() {\n if (this.isCollapsed) {\n setTimeout(() => {\n if (this.isCollapsed && this.codemirror && this.codemirror.editor && !this.codemirror.editor.hasFocus()) {\n AngularEditor.blur(this.editor);\n this.codemirror.editor.focus();\n this.codemirror.editor.refresh();\n }\n }, 200);\n }\n }\n\n codeChange($event) {\n CodeEditor.setCodeContent(this.editor, $event, this.element);\n }\n\n focusChange(codeMirrorFocused: boolean) {\n this.codeMirrorFocused = codeMirrorFocused;\n }\n\n onDelete(event: MouseEvent) {\n event.preventDefault();\n TheTransforms.deleteElement(this.editor, this.element);\n }\n\n onCopy(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n // remove codemorrir selection\n const selection = window.getSelection();\n if (selection.rangeCount > 0) {\n selection.removeAllRanges();\n }\n // focus the element\n setTimeout(() => {\n AngularEditor.focus(this.editor);\n Transforms.select(this.editor, AngularEditor.findPath(this.editor, this.element));\n });\n // copy the element\n setTimeout(() => {\n document.execCommand('copy');\n this.thyNotifyService.success('复制成功');\n }, 200);\n }\n\n onChangeLangulage = item => {\n this.options = { ...this.options, mode: item.key };\n this.actives = item;\n CodeEditor.setLanguage(this.editor, item.key, this.element);\n };\n\n useMode() {\n this.options = { ...this.options, mode: this.element.language };\n this.actives = this.menus.find(i => i.key === this.element.language);\n }\n\n useReadonly() {\n this.options = { ...this.options, readOnly: this.readonly, cursorBlinkRate: this.readonly ? -1 : 500 };\n }\n}\n","<div contenteditable=\"false\" class=\"the-block-operation\" *ngIf=\"codeMirrorFocused && !options.readOnly\">\n <thy-icon-nav>\n <the-toolbar-dropdown [menus]=\"menus\" [item]=\"actives\" [itemMousedownHandle]=\"onChangeLangulage\"></the-toolbar-dropdown>\n <a\n href=\"javascript:;\"\n thyIconNavLink\n thyIconNavLinkIcon=\"copy\"\n thyTooltip=\"复制\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"onCopy($event)\"\n ></a>\n <a\n href=\"javascript:;\"\n thyIconNavLink\n thyIconNavLinkIcon=\"trash\"\n thyTooltip=\"删除\"\n class=\"remove-link\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"onDelete($event)\"\n ></a>\n </thy-icon-nav>\n</div>\n\n<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n<ng-codemirror\n *ngIf=\"startRenderCodemirror\"\n #codemirror\n contenteditable=\"false\"\n class=\"ng-codemirror-wrapper\"\n [ngStyle]=\"{ maxHeight: maxHeight > 0 ? maxHeight + 'px' : 'auto' }\"\n [options]=\"options\"\n [ngModel]=\"code\"\n [delayRefreshTime]=\"300\"\n (ngModelChange)=\"codeChange($event)\"\n (focusChange)=\"focusChange($event)\"\n [autoMaxHeight]=\"maxHeight\"\n></ng-codemirror>\n","import { Editor, Element } from 'slate';\nimport { ElementKinds } from '../../constants/node-types';\nimport { TheCodeComponent } from './code.component';\n\nexport const withCode = (editor: Editor) => {\n const { isVoid, isBlockCard, renderElement } = editor;\n\n editor.isVoid = (element: Element) => {\n return element.type === ElementKinds.code ? true : isVoid(element);\n };\n\n editor.isBlockCard = (element: Element) => {\n if (element && element.type === ElementKinds.code) {\n return true;\n }\n return isBlockCard(element);\n };\n\n editor.renderElement = (element: Element) => {\n if (element.type === ElementKinds.code) {\n return TheCodeComponent;\n }\n return renderElement(element);\n };\n\n return editor;\n};\n","export enum LinkTags {\n insert = 'insert',\n edit = 'edit',\n selection = 'selection'\n}\nexport enum LinkCloseTypes {\n apply = 'apply',\n destroy = 'destroy'\n}\n","import { Range, Transforms, Editor, Element, Node } from 'slate';\nimport { ELEMENT_TO_COMPONENT } from 'slate-angular';\nimport { LinkElement } from '../../custom-types';\nimport { ElementKinds, LINK_DEFAULT_TEXT } from '../../constants';\nimport { getAboveByType } from '../../queries/get-above-by-type';\nimport { TheLinkComponent } from './link.component';\nimport { LinkTags } from './link.types';\n\nexport const LinkEditor = {\n insertLink(editor: Editor) {\n if (Range.isCollapsed(editor.selection)) {\n Promise.resolve()\n .then(() => {\n LinkEditor.wrapLink(editor, LINK_DEFAULT_TEXT, '');\n })\n .then(() => {\n const [linkNode] = getAboveByType(editor, ElementKinds.link);\n const linkComponent = ELEMENT_TO_COMPONENT.get(linkNode) as TheLinkComponent;\n linkComponent.openLinkEdit(LinkTags.insert);\n });\n } else {\n const isActive = LinkEditor.isLinkActive(editor);\n if (isActive) {\n LinkEditor.unwrapLink(editor);\n return;\n }\n\n const fragment = Node.fragment(editor, editor.selection)[0];\n const selectNode = Node.get(fragment, []);\n const selectText = Node.string(selectNode);\n\n Promise.resolve()\n .then(() => {\n LinkEditor.wrapLink(editor, selectText, '');\n })\n .then(() => {\n const [linkNode] = getAboveByType(editor, ElementKinds.link);\n const linkComponent = ELEMENT_TO_COMPONENT.get(linkNode) as TheLinkComponent;\n linkComponent.openLinkEdit(LinkTags.insert);\n });\n }\n },\n isLinkActive(editor: Editor) {\n const [link] = Editor.nodes(editor, { match: n => Element.isElement(n) && n.type === ElementKinds.link });\n return !!link;\n },\n wrapLink(editor: Editor, text: string, url: string) {\n if (LinkEditor.isLinkActive(editor)) {\n LinkEditor.unwrapLink(editor);\n }\n const { selection } = editor;\n const isCollapsed = selection && Range.isCollapsed(selection);\n const link: LinkElement = {\n type: ElementKinds.link,\n url,\n children: isCollapsed ? [{ text }] : []\n };\n if (isCollapsed) {\n Transforms.insertNodes(editor, link);\n } else {\n Transforms.wrapNodes(editor, link, { split: true });\n Transforms.collapse(editor, { edge: 'end' });\n }\n },\n unwrapLink(editor: Editor) {\n Transforms.unwrapNodes(editor, { match: n => Element.isElement(n) && n.type === ElementKinds.link });\n }\n};\n","import { ElementKinds } from '../../constants/node-types';\nimport { ToolbarItem } from '../../interfaces';\nimport { LinkEditor } from './link.editor';\n\nexport const LinkOptions: ToolbarItem[] = [\n {\n key: ElementKinds.link,\n icon: 'link-insert',\n name: '链接',\n execute: editor => LinkEditor.insertLink(editor),\n active: editor => LinkEditor.isLinkActive(editor)\n }\n];\n","import { Component, OnInit, Input } from '@angular/core';\nimport { A_TAG_REL_ATTR } from '../../../constants/default';\n\n@Component({\n selector: 'the-link-hover',\n templateUrl: './link-hover.component.html'\n})\nexport class TheLinkHoverComponent implements OnInit {\n @Input() link = '';\n\n @Input() dom: HTMLElement;\n\n @Input() editHandle: () => void;\n\n @Input() deleteHandle: () => void;\n\n aTagRelAttr = A_TAG_REL_ATTR;\n\n constructor() {}\n\n ngOnInit() {}\n\n editLink(event: MouseEvent) {\n event.preventDefault();\n this.editHandle();\n event.stopPropagation();\n }\n\n removeLink(event: MouseEvent) {\n event.preventDefault();\n this.deleteHandle();\n event.stopPropagation();\n }\n}\n","<div class=\"link-hover-card\">\n <a readonly href=\"{{ link }}\" target=\"_blank\" rel=\"{{ aTagRelAttr }}\" class=\"hover-control-plaintext text-truncate\">\n {{ link }}\n </a>\n <span class=\"operate-separator\"></span>\n <button thyButtonIcon=\"edit\" thySize=\"xs\" (mousedown)=\"editLink($event)\"></button>\n <span class=\"operate-separator\"></span>\n <button thyButtonIcon=\"unlink-insert\" thySize=\"xs\" (mousedown)=\"removeLink($event)\"></button>\n</div>\n","import { Component, OnInit, Input, HostBinding, HostListener } from '@angular/core';\nimport { ThyPopoverRef } from 'ngx-tethys/popover';\nimport { Transforms, Range, Node, Editor } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport * as TheQueries from '../../../queries';\nimport { TheEditor } from '../../../interfaces';\nimport { LinkCloseTypes, LinkTags } from '../link.types';\n\n@Component({\n selector: 'the-link-edit',\n templateUrl: './link-edit.component.html'\n})\nexport class TheLinkEditComponent implements OnInit {\n editor: Editor;\n\n @Input() tag: LinkTags;\n\n @Input() node: Node;\n\n @Input() link = '';\n\n @Input() text = '';\n\n @Input() originSelection: Range;\n\n originLink: string;\n\n @HostBinding('class')\n className = 'the-link-edit-container';\n\n originText: string;\n\n validatorConfig = {\n validationMessages: {\n link: {\n required: '链接不能为空',\n pattern: '请输入正确的链接'\n },\n text: {\n required: '文本不能为空'\n }\n }\n };\n\n @HostListener('document: mousedown', ['$event'])\n handleDocumentMouseDown(event: MouseEvent) {\n if (!document.querySelector('.the-link-edit-container').contains(event.target as HTMLElement)) {\n this.thyPopoverRef.close();\n }\n }\n\n constructor(public thyPopoverRef: ThyPopoverRef<any>) {}\n\n ngOnInit() {\n this.originText = this.text;\n this.originLink = this.link;\n this.thyPopoverRef.beforeClosed().subscribe(type => {\n switch (true) {\n case type === LinkCloseTypes.apply:\n break;\n case this.tag === LinkTags.insert:\n AngularEditor.focus(this.editor);\n Transforms.select(this.editor, this.originSelection);\n this.editor.undo();\n break;\n case this.tag === LinkTags.edit:\n AngularEditor.focus(this.editor);\n Transforms.select(this.editor, this.originSelection);\n break;\n }\n });\n }\n\n linkRegExp(val) {\n return /(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?/.test(val);\n }\n\n closePopover(type?: string) {\n this.thyPopoverRef.close(type);\n }\n\n applyLink(form) {\n const link = this.link.trim();\n if (this.linkRegExp(link)) {\n const linkPath = TheQueries.findPath(this.editor, this.node);\n if (this.originLink !== link) {\n Transforms.setNodes(this.editor, { url: link }, { at: linkPath });\n }\n if (this.originText !== this.text) {\n const [start, end] = Editor.edges(this.editor, linkPath);\n Transforms.insertText(this.editor, this.text, { at: { anchor: end, focus: end } });\n Transforms.delete(this.editor, { at: { anchor: start, focus: end } });\n }\n TheEditor.focus(this.editor);\n Transforms.select(this.editor, Editor.after(this.editor, linkPath));\n this.closePopover(LinkCloseTypes.apply);\n } else {\n form.validator.setElementErrorMessage(`link`, '请输入正确的链接');\n }\n }\n}\n","<form\n thyForm\n #linkForm=\"thyForm\"\n [thyFormValidatorConfig]=\"validatorConfig\"\n name=\"linkForm\"\n>\n <thy-form-group thyLabelText=\"文本\">\n <input\n thyInput\n placeholder=\"请输入文本\"\n required\n name=\"text\"\n [(ngModel)]=\"text\"\n thyAutofocus\n type=\"text\"\n />\n </thy-form-group>\n <thy-form-group thyLabelText=\"链接\">\n <input\n name=\"link\"\n thyInput\n placeholder=\"请输入链接\"\n required\n type=\"text\"\n #linkControl=\"ngModel\"\n [(ngModel)]=\"link\"\n />\n </thy-form-group>\n <thy-form-group-footer>\n <div class=\"btn-pair\">\n <button\n thyButton=\"link-secondary\"\n thySize=\"sm\"\n (click)=\"closePopover()\"\n >取消</button>\n <button\n thyButton=\"primary-square\"\n thySize=\"sm\"\n (thyFormSubmit)=\"applyLink(linkForm)\"\n >应用</button>\n </div>\n </thy-form-group-footer>\n</form>\n","import { Overlay } from '@angular/cdk/overlay';\nimport { Component, OnInit, ElementRef, OnDestroy, ChangeDetectorRef, ViewContainerRef, HostListener, NgZone } from '@angular/core';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys/popover';\nimport { Editor, Element, Node as SlateNode, Transforms, Text } from 'slate';\nimport { ElementKinds } from '../../constants';\nimport { LinkElement } from '../../custom-types';\nimport { TheBaseElementComponent } from '../../interfaces';\nimport { LinkCloseTypes, LinkTags } from './link.types';\nimport { TheLinkHoverComponent } from './hover/link-hover.component';\nimport { TheLinkEditComponent } from './edit/link-edit.component';\nimport { ThyClickDispatcher } from 'ngx-tethys';\nimport { SlateElementContext } from 'slate-angular';\n\n@Component({\n selector: '[TheBaseLinkComponent]',\n template: ''\n})\nexport class TheBaseLinkComponent extends TheBaseElementComponent<LinkElement, Editor> implements OnInit, OnDestroy {\n thyPopoverHoverRef: ThyPopoverRef<any>;\n thyPopoverEditRef: ThyPopoverRef<any>;\n\n get linkHoverOpened(): boolean {\n return this.thyPopoverHoverRef && this.thyPopoverHoverRef.componentInstance;\n }\n\n get linkEditOpened(): boolean {\n return this.thyPopoverEditRef && this.thyPopoverEditRef.componentInstance;\n }\n\n constructor(\n public elementRef: ElementRef,\n public cdr: ChangeDetectorRef,\n private thyPopover: ThyPopover,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private thyClickDispatcher: ThyClickDispatcher\n ) {\n super(elementRef, cdr);\n }\n\n ngOnInit() {\n super.ngOnInit();\n }\n\n closeHoverPopover() {\n if (this.linkHoverOpened) {\n this.thyPopoverHoverRef.close();\n }\n }\n\n beforeContextChange = (value: SlateElementContext) => {\n if (this.thyPopoverEditRef && this.thyPopoverEditRef.componentInstance) {\n let { originText } = this.thyPopoverEditRef.componentInstance;\n if (originText && originText !== (value.element.children[0] as Text).text) {\n this.thyPopoverEditRef.componentInstance.originText = (value.element.children[0] as Text).text;\n }\n }\n };\n\n @HostListener('click', ['$event'])\n mousedownHandle(event: MouseEvent) {\n this.openLinkHover();\n }\n\n openLinkEdit(tag: LinkTags) {\n if (this.linkHoverOpened) {\n this.thyPopoverHoverRef.afterClosed().subscribe(() => {\n this.internalOpenLinkEdit(tag);\n });\n this.thyPopover.close();\n } else {\n this.internalOpenLinkEdit(tag);\n }\n }\n\n isLinkEditOpenedByDom(dom: HTMLElement) {\n return this.linkEditOpened && this.thyPopoverEditRef.componentInstance.dom === dom;\n }\n\n closeEditPopover(type?: string) {\n if (this.linkEditOpened) {\n this.thyPopoverEditRef.close(type);\n }\n }\n\n openLinkHover() {\n const dom = this.nativeElement;\n const url = this.element.url;\n\n if (this.linkHoverOpened) {\n return;\n }\n this.thyPopoverHoverRef = this.thyPopover.open(TheLinkHoverComponent, {\n initialState: {\n link: url,\n dom: dom,\n editHandle: () => {\n this.openLinkEdit(LinkTags.edit);\n },\n deleteHandle: () => {\n Transforms.unwrapNodes(this.editor, { match: n => Element.isElement(n) && n.type === ElementKinds.link });\n this.closeHoverPopover();\n }\n },\n origin: dom,\n placement: 'bottomLeft',\n offset: 8,\n hasBackdrop: false,\n outsideClosable: true,\n viewContainerRef: this.viewContainerRef,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n panelClass: 'the-link-over'\n });\n }\n\n private internalOpenLinkEdit(tag: LinkTags) {\n const link = this.element.url;\n SlateNode.get(this.editor, this.editor.selection.focus.path);\n this.thyPopoverEditRef = this.thyPopover.open(TheLinkEditComponent, {\n initialState: {\n tag,\n editor: this.editor,\n node: this.element,\n text: SlateNode.string(this.element),\n link,\n originSelection: this.editor.selection\n },\n origin: this.elementRef.nativeElement,\n backdropClosable: true,\n placement: 'bottomLeft',\n offset: 8,\n hasBackdrop: false,\n originActiveClass: null,\n viewContainerRef: this.viewContainerRef,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n panelClass: 'the-link-edit'\n });\n this.cdr.markForCheck();\n }\n\n close(type?: string) {\n this.closeHoverPopover();\n this.closeEditPopover(type);\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n this.close(LinkCloseTypes.destroy);\n }\n}\n\n@Component({\n selector: 'span[theLink]',\n template: `<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>`\n})\nexport class TheLinkComponent extends TheBaseLinkComponent {}\n\n@Component({\n selector: 'a[theLink]',\n template: `<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>`,\n host: {\n '[attr.href]': 'element.url',\n target: '_blank'\n }\n})\nexport class TheReadonlyLinkComponent extends TheBaseLinkComponent {}\n","import { TheEditor } from '../../interfaces';\nimport { Node, NodeEntry, Transforms, Element } from 'slate';\nimport { castArray } from '../../utils/cast-array';\n\n/**\n * Remove nodes with empty text.\n */\nexport const withRemoveEmptyNodes = (options: { type: string | string[] }) => <T extends TheEditor>(editor: T) => {\n const types = castArray(options.type);\n\n const { normalizeNode } = editor;\n\n editor.normalizeNode = ([node, path]: NodeEntry<Element>) => {\n if (node.type && types.includes(node.type as string) && Node.string(node) === '') {\n\n Transforms.removeNodes(editor, { at: path });\n return;\n }\n\n normalizeNode([node, path]);\n };\n\n return editor;\n};\n","import isUrl from 'is-url';\nimport { Editor, Element } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { ElementKinds } from '../../constants/node-types';\nimport { LinkEditor } from './link.editor';\nimport { TheLinkComponent, TheReadonlyLinkComponent } from './link.component';\nimport { withRemoveEmptyNodes } from '../normalizers/remove-empty-nodes';\nimport { Transforms } from 'slate';\nimport { CLIPBOARD_FORMAT_KEY } from '../../constants/default';\n\nexport const withLink = (editor: Editor) => {\n const { insertData, insertText, isInline, renderElement } = editor;\n\n editor.isInline = (element: Element) => {\n return element.type === ElementKinds.link ? true : isInline(element);\n };\n\n editor.insertText = text => {\n if (text && isUrl(text)) {\n LinkEditor.wrapLink(editor, text, text);\n Transforms.move(editor, { distance: 1, unit: \"offset\" });\n } else {\n insertText(text);\n }\n };\n\n editor.insertData = data => {\n const text = data.getData('text/plain');\n const fragment = data.getData(`application/${CLIPBOARD_FORMAT_KEY}`);\n\n if (text && isUrl(text) && !fragment) {\n LinkEditor.wrapLink(editor, text, text);\n Transforms.move(editor, { distance: 1, unit: \"offset\" });\n } else {\n insertData(data);\n }\n };\n\n editor.renderElement = (element: Element) => {\n if (element.type === ElementKinds.link) {\n return AngularEditor.isReadonly(editor) ? TheReadonlyLinkComponent : TheLinkComponent;\n }\n return renderElement(element);\n };\n\n editor = withRemoveEmptyNodes({ type: ElementKinds.link })(editor);\n\n return editor;\n};\n","import { Component, Input, OnInit } from '@angular/core';\nimport { insertTable } from '../../plugins/table/transforms/insert-table';\nimport { HostListener } from '@angular/core';\nimport { ThyPopoverRef } from 'ngx-tethys';\nimport { TheEditor } from '../../interfaces';\nimport { TableOptions } from '../../plugins/table/table.types';\n\n@Component({\n selector: 'table-select',\n templateUrl: './table-select.component.html'\n})\nexport class TheTableSelectComponent implements OnInit {\n @Input() optionsParam: TableOptions;\n @Input() editor: TheEditor;\n\n tableData = new Array(10);\n maxRowIndex = -1;\n maxColIndex = -1;\n\n @HostListener('document: mousedown', ['$event'])\n handleDocumentMouseDown(event: MouseEvent) {\n if (!document.querySelector('.table-selector-container').contains(event.target as HTMLElement)) {\n this.popoverRef.close();\n }\n }\n\n constructor(private popoverRef: ThyPopoverRef<TheTableSelectComponent>) {}\n\n ngOnInit(): void {}\n\n onSelectCells(rowIndex, colIndex) {\n this.maxRowIndex = rowIndex;\n this.maxColIndex = colIndex;\n }\n\n executeTable(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n const opts = new TableOptions(this.optionsParam);\n insertTable(opts, this.editor, this.maxRowIndex + 1, this.maxColIndex + 1);\n if (this.popoverRef) {\n this.popoverRef.close();\n this.maxColIndex = -1;\n this.maxRowIndex = -1;\n }\n }\n}\n","<div class=\"table-selector-container\">\n <div\n *ngFor=\"let item of tableData, let rowIndex = index\"\n class=\"selector-row\"\n (mousedown)=\"executeTable($event)\"\n >\n <span\n *ngFor=\"let item of tableData, let colIndex = index\"\n [ngClass]=\"{'active-cell': rowIndex<= maxRowIndex && colIndex <= maxColIndex, 'selector-cell': true}\"\n (mouseenter)=\"onSelectCells(rowIndex, colIndex)\"\n >\n </span>\n </div>\n <span class=\"selector-text\">{{maxRowIndex+1}} x {{maxColIndex+1}}</span>\n</div>\n","import { Overlay } from '@angular/cdk/overlay';\nimport { Component, Input } from '@angular/core';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys';\nimport { Editor } from 'slate';\nimport { TheToolbarBaseItemComponent } from '../../components/toolbar-base-item/toolbar-base-item.component';\nimport { TheTableSelectComponent } from '../../components/table-select/table-select.component';\nimport { ElementKinds } from '../../constants';\nimport { DefaultToolbarItem } from '../../interfaces';\nimport { TableOptions } from './table.types';\n\n@Component({\n selector: 'the-table-toolbar-item',\n template: `\n <a\n thyIconNavLink\n class=\"link-with-down\"\n [thyTooltip]=\"item?.name\"\n thyTooltipPlacement=\"top\"\n [thyIconNavLinkActive]=\"active\"\n (mousedown)=\"execute($event)\"\n >\n <thy-icon [thyIconName]=\"item.icon\"></thy-icon>\n <thy-icon class=\"link-down-icon font-size-sm text-desc table-down-icon\" thyIconName=\"caret-down\"> </thy-icon>\n </a>\n `,\n host: {\n class: 'the-toolbar-dropdown-container'\n }\n})\nexport class TheTableToolbarItemComponent extends TheToolbarBaseItemComponent {\n @Input() item: DefaultToolbarItem;\n\n @Input() editor: Editor;\n\n active: string | boolean = false;\n\n tableSelectRef: ThyPopoverRef<TheTableSelectComponent>;\n\n get isOpenTableSelect() {\n return this.tableSelectRef && this.tableSelectRef.componentInstance;\n }\n\n constructor(private thyPopover: ThyPopover, private overlay: Overlay) {\n super();\n }\n\n public statusChange(editor: Editor) {\n this.active = this.item?.active(editor);\n }\n\n execute(event: MouseEvent) {\n super.execute(event);\n\n if (this.editor?.disabled) {\n return;\n }\n const type = this.item.key;\n this.toggleTableSelect(event);\n }\n\n toggleTableSelect(event: MouseEvent, optionsParam?: TableOptions) {\n if (this.isOpenTableSelect) {\n this.tableSelectRef.close();\n return;\n }\n this.tableSelectRef = this.thyPopover.open(TheTableSelectComponent, {\n origin: event.currentTarget as HTMLElement,\n initialState: {\n editor: this.editor,\n optionsParam\n },\n backdropClosable: false,\n hasBackdrop: false,\n insideClosable: false,\n placement: 'bottomLeft',\n offset: 10,\n panelClass: 'the-table-selector-pannel',\n scrollStrategy: this.overlay.scrollStrategies.reposition()\n });\n return this.tableSelectRef;\n }\n}\n","import { ElementKinds } from '../../constants/node-types';\nimport { ToolbarItem } from '../../interfaces';\nimport { TheTableToolbarItemComponent } from './toolbar-item.component';\nimport { TableEditor } from './table.editor';\n\nexport const TableOptions: ToolbarItem[] = [\n {\n key: ElementKinds.table,\n icon: 'table-border-all',\n name: '表格',\n iconComponent: TheTableToolbarItemComponent,\n execute: editor => TableEditor.insertTable(editor),\n active: editor => TableEditor.isActive(editor)\n }\n];\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n/** Indicates the width of a column. */\nexport interface ColumnSize {\n /** The ID/name of the column, as defined in CdkColumnDef. */\n readonly tableCell: HTMLElement;\n\n /** The width / height in pixels of the column / row. */\n readonly deltaSize?: number;\n\n /** The width / height in pixels of the column / row prior to this update, if known. */\n readonly previousSize?: number;\n}\n\n/** Interface describing column size changes. */\nexport interface ColumnSizeAction extends ColumnSize {\n /**\n * Whether the resize action should be applied instantaneously. False for events triggered during\n * a UI-triggered resize (such as with the mouse) until the mouse button is released. True\n * for all programatically triggered resizes.\n */\n readonly completeImmediately?: boolean;\n}\n\n/**\n * Originating source of column resize events within a table.\n * @docs-private\n */\n@Injectable()\nexport class ColumnResizeNotifierSource {\n /** Emits when an in-progress resize is canceled. */\n readonly resizeCanceled = new Subject<ColumnSizeAction>();\n\n /** Emits when a resize is applied. */\n readonly resizeCompleted = new Subject<ColumnSize>();\n\n readonly resizeStarted = new Subject<ColumnSize>();\n\n /** Triggers a resize action. */\n readonly triggerResize = new Subject<ColumnSizeAction>();\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { Subject, MonoTypeOperatorFunction, Observable, combineLatest } from 'rxjs';\nimport { distinctUntilChanged, share, map, startWith, skip, tap } from 'rxjs/operators';\n\nexport class HoveredCellInfo {\n cell: HTMLTableCellElement;\n position?: 'left' | 'right';\n}\n\n@Injectable()\nexport class TableCellEventDispatcher {\n readonly tableCellHovered = new Subject<HoveredCellInfo | null>();\n\n readonly overlayHandleActiveForCell = new Subject<HoveredCellInfo | null>();\n\n constructor(private readonly ngZone: NgZone) {}\n\n readonly tableCellHoveredOrActiveDistinct = combineLatest(\n this.tableCellHovered.pipe(startWith(null), distinctUntilChanged()),\n this.overlayHandleActiveForCell.pipe(startWith(null), distinctUntilChanged())\n ).pipe(\n skip(1), // Ignore initial [null, null] emission.\n map(([hovered, active]) => active || hovered),\n distinctUntilChanged(),\n share()\n );\n\n private readonly _tableCellHoveredDistinctReenterZone = this.tableCellHoveredOrActiveDistinct.pipe(this._enterZone(), share());\n\n private _lastSeenCell: Element | null = null;\n private _lastSeenCellHover: Observable<HoveredCellInfo> | null = null;\n\n /**\n * Emits whether the specified row should show its overlay controls.\n * Emission occurs within the NgZone.\n */\n resizeOverlayVisibleForTableCell(cell: Element): Observable<HoveredCellInfo> {\n if (cell !== this._lastSeenCell) {\n this._lastSeenCell = cell;\n this._lastSeenCellHover = this._tableCellHoveredDistinctReenterZone.pipe(\n map(hoveredCell => {\n if (hoveredCell && hoveredCell.cell === cell) {\n return hoveredCell;\n } else {\n return null;\n }\n }),\n distinctUntilChanged((x, y) => x === y || (x && y && x.cell === y.cell && x.position === y.position)),\n share()\n );\n }\n\n return this._lastSeenCellHover!;\n }\n\n private _enterZone<T>(): MonoTypeOperatorFunction<T> {\n return (source: Observable<T>) =>\n new Observable<T>(observer =>\n source.subscribe({\n next: value => this.ngZone.run(() => observer.next(value)),\n error: err => observer.error(err),\n complete: () => observer.complete()\n })\n );\n }\n}\n","import { Editor } from 'slate';\nimport { TablePosition } from '.';\nimport { SelectedCell, TableOptions } from '../table.types';\n\nexport function getSelectCellNode(editor: Editor, selectedCells: SelectedCell[]) {\n const { anchor } = editor.selection;\n const opts = new TableOptions();\n const pos = TablePosition.create(opts, editor, anchor.path);\n\n return selectedCells\n .map(item => {\n const node = pos.findCellByPath(item);\n if (node) {\n return {\n ...item,\n node: node\n };\n }\n })\n .filter(item => item);\n}\n","import { Transforms, Node, Path, Element, Editor } from 'slate';\nimport { TablePosition } from './table-position';\nimport { ElementKinds } from '../../../constants';\nimport { getSelectCellNode } from './get-select-cell-node';\nimport { TableCellElement } from '../../../custom-types';\nimport { SelectedCell, TableOptions } from '../table.types';\nimport * as TheQueries from '../../../queries';\n\nexport interface SelectedCellInfo {\n col: number;\n row: number;\n node: TableCellElement;\n maxRowSpan?: number;\n}\n\nexport function isSelectedCellMerged(editor: Editor): boolean {\n if (editor && editor.selection) {\n const opts = new TableOptions();\n const { anchor } = editor.selection;\n const { cell } = TablePosition.create(opts, editor, anchor.path);\n return (cell.colspan && cell.colspan !== 1) || (cell.rowspan && cell.rowspan !== 1);\n }\n return false;\n}\n\nexport function getLeftCellDict(selectCellNodes: SelectedCellInfo[]) {\n return selectCellNodes.reduce((dict, cell) => {\n if (!dict[cell.row]) {\n dict[cell.row] = cell;\n }\n return dict;\n }, {} as { [key: string]: SelectedCellInfo });\n}\n\nexport function calculateCellSpan(\n selectCellNodes: SelectedCellInfo[],\n leftCellDict: { [key: string]: SelectedCellInfo }\n): { rowspan: number; colspan: number } {\n let rowspan = 0,\n colspan = 0,\n crossCount = -1;\n selectCellNodes\n .filter(item => !item.node.hidden)\n .forEach(item => {\n const { row } = item;\n if (item.row === selectCellNodes[0].row) {\n colspan += item.node.colspan || 1;\n }\n const maxRowSpan = leftCellDict[row].maxRowSpan || 1;\n leftCellDict[row].maxRowSpan = (item.node.rowspan || 1) > maxRowSpan ? item.node.rowspan : maxRowSpan;\n });\n\n Object.values(leftCellDict).forEach((item: SelectedCellInfo) => {\n const { row, maxRowSpan } = item;\n if (crossCount < row) {\n rowspan += maxRowSpan;\n crossCount = row + maxRowSpan - 1;\n }\n });\n return { rowspan, colspan };\n}\n\nexport function mergeCell(editor: Editor, selectedCells: SelectedCell[]) {\n const selectCellNodes = getSelectCellNode(editor, selectedCells);\n Editor.withoutNormalizing(editor, () => {\n let leftTopCellPath: Path;\n const leftCellDict = getLeftCellDict(selectCellNodes);\n selectCellNodes.forEach((cell, index) => {\n const { row, node } = cell;\n if (node) {\n const cellPath = TheQueries.findPath(editor, node);\n if (index === 0) {\n leftTopCellPath = cellPath;\n } else {\n mergeCellContent(editor, leftTopCellPath, cellPath);\n Transforms.setNodes(editor, { colspan: null, rowspan: null, hidden: true }, { at: cellPath });\n }\n }\n });\n let { rowspan, colspan } = calculateCellSpan(selectCellNodes, leftCellDict);\n Transforms.setNodes(editor, { rowspan, colspan }, { at: leftTopCellPath });\n Transforms.select(editor, leftTopCellPath);\n Transforms.collapse(editor, { edge: 'end' });\n });\n}\n\nexport function mergeCellContent(editor: Editor, leftTopCellPath: Path, cellPath: Path) {\n Editor.withoutNormalizing(editor, () => {\n const { path } = Editor.end(editor, leftTopCellPath);\n const endRange = Editor.range(editor, Editor.start(editor, cellPath), Editor.end(editor, cellPath));\n let tableCell;\n\n path.pop();\n\n const nextPath = Path.next(path);\n\n Transforms.moveNodes(editor, {\n at: endRange,\n to: nextPath,\n match: node => {\n if (Element.isElement(node) && node.type === ElementKinds.tableCell) {\n tableCell = node;\n }\n if (Element.isElement(node) && node.type && tableCell && (tableCell.children as Node[]).includes(node)) {\n const isSingleEmptyParagraph =\n tableCell.children.length === 1 && Editor.isEmpty(editor, node) && node.type === ElementKinds.default;\n return !isSingleEmptyParagraph && true;\n }\n }\n });\n });\n}\n","import { Injectable } from '@angular/core';\nimport { Subject, Observable, BehaviorSubject, merge } from 'rxjs';\nimport { skip } from 'rxjs/operators';\nimport { Transforms, Node, Editor } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { TablePosition } from './utils';\nimport { _ } from '../../utils/lodash';\nimport { mergeCell } from './utils/merge-cell';\nimport { ColorType } from '../../constants/color-select';\nimport { SelectedCell, TableOptions } from './table.types';\nimport { TableCellElement, TableElement } from '../../custom-types';\nimport { TableEditor } from './table.editor';\n\n@Injectable()\nexport class TableStore {\n private selectedCells$: BehaviorSubject<SelectedCell[]> = new BehaviorSubject([]);\n private dangerousCells$: BehaviorSubject<SelectedCell[]> = new BehaviorSubject([]);\n private cellsChangeObject$: Subject<object> = new Subject();\n private tableChange$: Subject<object> = new Subject();\n\n selectedColumnsIndex: number[] = [];\n selectedRowsIndex: number[] = [];\n\n dangerousColumnsIndex: number[] = [];\n dangerousRowsIndex: number[] = [];\n\n isSelectedTable: boolean;\n\n editor: Editor;\n\n public anchorCellPath: number[];\n public focusCellPath: number[];\n public preFocusCellPath: number[];\n\n public focusCellElement: HTMLTableCellElement;\n\n public isPrepareSelecting = false;\n public isCellSelecting = false;\n public isRightClicking = false;\n\n public maxCol: number;\n\n get selectedCells() {\n return this.selectedCells$.getValue();\n }\n\n get dangerousCells() {\n return this.dangerousCells$.getValue();\n }\n\n constructor() {}\n\n getTablePath(editor: Editor) {\n const { selection } = editor;\n const {\n anchor: { path }\n } = selection;\n const opts = new TableOptions();\n return TablePosition.create(opts, editor, path).tableEntry[1];\n }\n\n getTablePosition(editor: Editor) {\n const { selection } = editor;\n const {\n anchor: { path }\n } = selection;\n const opts = new TableOptions();\n return TablePosition.create(opts, editor, path);\n }\n\n setSelectedCells(cells: SelectedCell[], pos: TablePosition) {\n const rowGroup = _.groupBy(cells, ({ row, col }) => row);\n const colGroup = _.groupBy(cells, ({ row, col }) => col);\n this.selectedRowsIndex = [];\n this.selectedColumnsIndex = [];\n for (const row in rowGroup) {\n if (rowGroup[row].length === pos.getWidth()) {\n this.selectedRowsIndex.push(parseInt(row, 10));\n }\n }\n for (const col in colGroup) {\n if (colGroup[col].length === pos.getHeight()) {\n this.selectedColumnsIndex.push(parseInt(col, 10));\n }\n }\n this.selectedRowsIndex = _.uniq(this.selectedRowsIndex);\n this.selectedColumnsIndex = _.uniq(this.selectedColumnsIndex);\n if (this.selectedRowsIndex.length === pos.getHeight() && this.selectedColumnsIndex.length === pos.getWidth()) {\n this.isSelectedTable = true;\n } else {\n this.isSelectedTable = false;\n }\n this.selectedCells$.next(cells);\n }\n\n initEditor(editor: Editor) {\n this.editor = editor;\n }\n\n selectRow(editor: Editor, index: number) {\n this.selectedRowsIndex = [index];\n this.selectedColumnsIndex = [];\n\n const { selection } = editor;\n const {\n anchor: { path }\n } = selection;\n const opts = new TableOptions();\n const pos = TablePosition.create(opts, editor, path);\n const result = [];\n for (let i = 0; i < pos.getWidth(); i++) {\n result.push({\n row: index,\n col: i\n });\n }\n this.setSelectedCells(result, pos);\n this.focusCell(editor, pos.tableEntry[1].concat([index, 0]));\n }\n\n selectColumn(editor: Editor, index: number) {\n this.selectedColumnsIndex = [index];\n this.selectedRowsIndex = [];\n\n const { selection } = editor;\n const {\n anchor: { path }\n } = selection;\n const opts = new TableOptions();\n const pos = TablePosition.create(opts, editor, path);\n const result = [];\n for (let i = 0; i < pos.getHeight(); i++) {\n result.push({\n row: i,\n col: index\n });\n }\n this.setSelectedCells(result, pos);\n this.focusCell(editor, pos.tableEntry[1].concat([0, index]));\n }\n\n selectTable(editor: Editor) {\n this.isSelectedTable = true;\n const { cells, pos } = this.getTableCellsAndPosition(editor);\n this.setSelectedCells(cells, pos);\n this.focusCell(editor, pos.tableEntry[1].concat([0, 0]));\n }\n\n private getTableCellsAndPosition(editor: Editor): { cells: SelectedCell[]; pos: TablePosition } {\n const pos = this.createTablePosition();\n const result = [];\n for (let i = 0; i < pos.getHeight(); i++) {\n for (let j = 0; j < pos.getWidth(); j++) {\n result.push({\n row: i,\n col: j\n });\n }\n }\n return { cells: result, pos };\n }\n\n selectCells(editor: Editor) {\n const opts = new TableOptions();\n const { anchor, focus } = editor.selection;\n const pos = TablePosition.create(opts, editor, anchor.path);\n const anchorPath = this.anchorCellPath.slice(-2);\n const focusPath = this.focusCellPath.slice(-2);\n\n const rows = [anchorPath[0], focusPath[0]].sort((m, n) => m - n);\n const columns = [anchorPath[1], focusPath[1]].sort((m, n) => m - n);\n\n const { colspan: anchorColspanCount, rowspan: anchorRowspanCount } = Editor.node(\n editor,\n this.anchorCellPath\n )[0] as TableCellElement;\n const { colspan: focusColspanCount, rowspan: focusRowspanCount } = Editor.node(editor, this.focusCellPath)[0] as TableCellElement;\n\n const anchorRow = anchorPath[0] + (anchorRowspanCount || 1) - 1;\n const focusRow = focusPath[0] + (focusRowspanCount || 1) - 1;\n const anchorCol = anchorPath[1] + (anchorColspanCount || 1) - 1;\n const focusCol = focusPath[1] + (focusColspanCount || 1) - 1;\n\n let initMaxCol = Math.max(anchorCol, focusCol);\n let initMaxRow = Math.max(anchorRow, focusRow);\n const { minRow, maxRow, minCol, maxCol } = this.getMinAndMaxCellIndex(initMaxRow, initMaxCol, rows[0], columns[0], pos.table);\n const result = [];\n for (let i = minRow; i < maxRow + 1; i++) {\n for (let j = minCol; j < maxCol + 1; j++) {\n result.push({\n row: i,\n col: j\n });\n }\n }\n this.setSelectedCells(result, pos);\n }\n\n getMinAndMaxCellIndex(maxRow: number, maxCol: number, minRow: number, minCol: number, table: TableElement) {\n const beforeCols = [];\n const beforeRows = [];\n let spanSelectedCells = [];\n if (this.selectedCells.length) {\n spanSelectedCells = this.selectedCells\n .map(item => {\n const { row, col } = item;\n const node = table.children[row].children[col] as TableCellElement;\n if (!node.hidden) {\n return {\n ...item,\n colspan: node.colspan || 1,\n rowspan: node.rowspan || 1\n };\n }\n })\n .filter(item => item);\n }\n table.children.map((row, rowIndex) => {\n if (rowIndex <= maxRow) {\n row.children.map((cell: TableCellElement, colIndex) => {\n if (colIndex <= maxCol) {\n const cellRowIndex = rowIndex + (cell.rowspan || 1) - 1;\n const cellColIndex = colIndex + (cell.colspan || 1) - 1;\n\n if (spanSelectedCells.length) {\n const { row: selectRow, col: selectCol, rowspan: selectRowspan, colspan: selectColspan } = spanSelectedCells[0];\n if (selectRow + selectRowspan - 1 >= minRow && selectCol + selectColspan - 1 >= minCol) {\n minRow = Math.min(spanSelectedCells[0].row, minRow);\n minCol = Math.min(spanSelectedCells[0].col, minCol);\n }\n }\n\n if (cell.colspan && cell.colspan > 1) {\n beforeCols.push({ rowIndex, colIndex, cellColIndex });\n if (cellColIndex >= minCol && cellRowIndex >= minRow) {\n maxCol = Math.max(maxCol, cellColIndex);\n minCol = Math.min(minCol, colIndex);\n }\n }\n\n if (cell.rowspan && cell.rowspan > 1) {\n beforeRows.push({ rowIndex, colIndex, cellRowIndex });\n if (cellColIndex >= minCol && cellRowIndex >= minRow) {\n minRow = Math.min(minRow, rowIndex);\n maxRow = Math.max(maxRow, cellRowIndex);\n }\n }\n }\n });\n }\n });\n\n // 判断选区范围内之前的单元格 如果存在cellColIndex === minCol,表示当前获取的minCol并不是最小的,重新获取minCol\n const colNode = beforeCols.filter(\n item => item.rowIndex <= maxRow && item.colIndex <= maxCol && item.rowIndex >= minRow && item.cellColIndex === minCol\n );\n const rowNode = beforeRows.filter(\n item => item.rowIndex <= maxRow && item.colIndex <= maxCol && item.colIndex >= minCol && item.cellRowIndex === minRow\n );\n if (colNode.length || rowNode.length) {\n return this.getMinAndMaxCellIndex(maxRow, maxCol, minRow, minCol, table);\n }\n return {\n minRow,\n maxRow,\n minCol,\n maxCol\n };\n }\n\n selectCell(cell: HTMLTableCellElement, editor: Editor) {\n if (!editor.selection) {\n return;\n }\n const node = AngularEditor.toSlateNode(editor, cell);\n const path = AngularEditor.findPath(editor, node);\n this.anchorCellPath = path;\n this.focusCellPath = path;\n this.focusCellElement = cell;\n const [row, col] = path.slice(-2);\n const opts = new TableOptions();\n const { anchor } = editor.selection;\n const pos = TablePosition.create(opts, editor, anchor.path);\n this.setSelectedCells([{ row, col }], pos);\n }\n\n selectedCellsChange(): Observable<SelectedCell[]> {\n return this.selectedCells$.asObservable().pipe(skip(1));\n }\n\n cellsPositionChange() {\n return this.cellsChangeObject$.asObservable();\n }\n\n changeCells() {\n this.cellsChangeObject$.next();\n }\n\n emitTableChange() {\n this.tableChange$.next();\n }\n\n tableChange() {\n return this.tableChange$.asObservable();\n }\n\n clearSelectedCells() {\n this.selectedColumnsIndex = [];\n this.selectedRowsIndex = [];\n this.isSelectedTable = false;\n this.isCellSelecting = false;\n this.isRightClicking = false;\n this.selectedCells$.next([]);\n }\n\n selectCellStart(cell: HTMLTableCellElement, editor: Editor) {\n this.isPrepareSelecting = true;\n const node = AngularEditor.toSlateNode(editor, cell);\n const path = AngularEditor.findPath(editor, node);\n this.anchorCellPath = path;\n this.focusCellPath = null;\n if (!this.preFocusCellPath) {\n this.preFocusCellPath = this.anchorCellPath;\n }\n }\n\n selectCellOngoing(cell: HTMLTableCellElement, editor: Editor) {\n if (AngularEditor.isReadonly(editor)) {\n return;\n }\n if (!editor.selection) {\n return;\n }\n let isChanged: boolean;\n if (cell) {\n const node = AngularEditor.toSlateNode(editor, cell);\n const path = AngularEditor.findPath(editor, node);\n isChanged = !this.focusCellPath || this.focusCellPath.toString() !== path.toString();\n this.focusCellPath = path;\n this.focusCellElement = cell;\n } else {\n isChanged =\n !this.focusCellPath ||\n (this.focusCellPath.toString() === this.anchorCellPath.toString() && this.selectedCells.length === 0);\n }\n if (this.isPrepareSelecting && isChanged) {\n if (JSON.stringify(this.preFocusCellPath) !== JSON.stringify(this.focusCellPath)) {\n this.isCellSelecting = true;\n this.selectCells(editor);\n this.preFocusCellPath = this.focusCellPath;\n }\n }\n }\n\n selectCellEnd(editor: Editor) {\n if (this.isCellSelecting) {\n this.focusCell(editor, this.focusCellPath);\n }\n this.isPrepareSelecting = false;\n this.preFocusCellPath = null;\n }\n\n focusCell(editor: Editor, path: number[]) {\n const at = Editor.start(editor, path);\n Transforms.select(editor, at);\n }\n\n dangerousCellsChange(): Observable<SelectedCell[]> {\n return this.dangerousCells$.asObservable().pipe(skip(1));\n }\n\n setDangerousCells() {\n this.dangerousRowsIndex = this.selectedRowsIndex;\n this.dangerousColumnsIndex = this.selectedColumnsIndex;\n this.dangerousCells$.next(this.selectedCells);\n }\n\n clearDangerousCells() {\n this.dangerousRowsIndex = [];\n this.dangerousColumnsIndex = [];\n this.dangerousCells$.next([]);\n const pos = this.createTablePosition();\n if (pos.table) {\n this.isSelectedTable = this.selectedRowsIndex.length === pos.getHeight() && this.selectedColumnsIndex.length === pos.getWidth();\n }\n }\n\n dangerousOrSelectedCellsChange(): Observable<SelectedCell[]> {\n return merge(this.dangerousCells$.asObservable().pipe(skip(1)), this.selectedCells$.asObservable().pipe(skip(1)));\n }\n\n setDangerousRows() {\n const cells = this.selectedCells;\n const rows = _(cells).map('row').uniq().valueOf();\n const pos = this.createTablePosition();\n const result = [];\n\n this.dangerousRowsIndex = rows;\n this.isSelectedTable = rows.length === pos.getHeight();\n if (this.isSelectedTable) {\n this.dangerousColumnsIndex = [...Array(pos.getWidth())].map((v, i) => i);\n }\n\n for (const rowIndex of rows) {\n for (let i = 0; i < pos.getWidth(); i++) {\n result.push({\n row: rowIndex,\n col: i\n });\n }\n }\n this.dangerousCells$.next(result);\n }\n\n setDangerousColumns() {\n const cells = this.selectedCells;\n const cols = _(cells).map('col').uniq().valueOf();\n const pos = this.createTablePosition();\n const result = [];\n\n this.dangerousColumnsIndex = cols;\n this.isSelectedTable = cols.length === pos.getWidth();\n if (this.isSelectedTable) {\n this.dangerousRowsIndex = [...Array(pos.getHeight())].map((v, i) => i);\n }\n\n for (const colIndex of cols) {\n for (let i = 0; i < pos.getHeight(); i++) {\n result.push({\n row: i,\n col: colIndex\n });\n }\n }\n this.dangerousCells$.next(result);\n }\n\n setDangerousTable() {\n this.isSelectedTable = true;\n const { cells, pos } = this.getTableCellsAndPosition(this.editor);\n this.dangerousRowsIndex = [...Array(pos.getHeight())].map((v, i) => i);\n this.dangerousColumnsIndex = [...Array(pos.getWidth())].map((v, i) => i);\n this.dangerousCells$.next(cells);\n }\n\n selectFirstCell() {\n const { row, col } = this.selectedCells[0];\n const tablePath = this.getTablePath(this.editor);\n const path = Editor.start(this.editor, [...tablePath, row, col]);\n Transforms.select(this.editor, path);\n }\n\n setSelectedCellsBackgroundColor(backgroundColor: ColorType) {\n const cells = this.selectedCells;\n const tablePath = this.getTablePath(this.editor);\n Editor.withoutNormalizing(this.editor, () => {\n for (const cell of cells) {\n const { row, col } = cell;\n const cellPath = [...tablePath, row, col];\n Transforms.setNodes(this.editor, { backgroundColor }, { at: cellPath });\n }\n });\n }\n\n getSelectedCellBackgroundColor(): string {\n if (this.editor && this.editor.selection) {\n const {\n anchor: { path }\n } = this.editor.selection;\n const opts = new TableOptions();\n const { cell } = TablePosition.create(opts, this.editor, path);\n return cell && cell.backgroundColor;\n }\n return '';\n }\n\n clearSelectedCellsContent() {\n const cells = this.selectedCells;\n const tablePosition = this.getTablePosition(this.editor);\n if (tablePosition.isInTable()) {\n Editor.withoutNormalizing(this.editor, () => {\n for (const cell of cells) {\n const { row, col } = cell;\n const cellPath = [...tablePosition.tableEntry[1], row, col];\n const node = Node.get(this.editor, cellPath) as TableCellElement;\n TableEditor.clearCell(this.editor, [node, cellPath]);\n }\n });\n Transforms.select(this.editor, Editor.start(this.editor, tablePosition.cellEntry[1]));\n }\n }\n\n mergeCell(editor: Editor) {\n mergeCell(editor, this.selectedCells);\n }\n\n removeDangerousColumns() {\n const { dangerousColumnsIndex, isSelectedTable } = this;\n if (isSelectedTable) {\n TableEditor.removeTable(this.editor);\n return;\n }\n dangerousColumnsIndex\n .sort((a, b) => b - a)\n .forEach(index => {\n TableEditor.removeColumn(this.editor, index);\n });\n this.changeCells();\n }\n\n removeDangerousRows() {\n const { dangerousRowsIndex, isSelectedTable } = this;\n if (isSelectedTable) {\n TableEditor.removeTable(this.editor);\n return;\n }\n dangerousRowsIndex\n .sort((a, b) => b - a)\n .forEach(index => {\n TableEditor.removeRow(this.editor, index);\n });\n this.changeCells();\n }\n\n createTablePosition(): TablePosition {\n const {\n anchor: { path }\n } = this.editor.selection;\n const opts = new TableOptions();\n return TablePosition.create(opts, this.editor, path);\n }\n\n removeColumnOrRows() {\n const { selectedRowsIndex, selectedColumnsIndex, isSelectedTable } = this;\n if (isSelectedTable) {\n TableEditor.removeTable(this.editor);\n return;\n }\n if (selectedRowsIndex.length > 0 && selectedColumnsIndex.length === 0) {\n selectedRowsIndex\n .sort((a, b) => b - a)\n .forEach(index => {\n TableEditor.removeRow(this.editor, index);\n });\n this.changeCells();\n }\n if (selectedColumnsIndex.length > 0 && selectedRowsIndex.length === 0) {\n selectedColumnsIndex\n .sort((a, b) => b - a)\n .forEach(index => {\n TableEditor.removeColumn(this.editor, index);\n });\n this.changeCells();\n }\n }\n}\n","import { Editor, Transforms } from 'slate';\nimport { TableCellElement, TableElement } from '../../../custom-types';\nimport { TableOptions } from '../table.types';\nimport { TablePosition } from './table-position';\nimport * as TheQueries from '../../../queries';\n\nexport function splitCell(editor: Editor) {\n const opts = new TableOptions();\n const { anchor } = editor.selection;\n const tablePosition = TablePosition.create(opts, editor, anchor.path);\n const { cell, table, cellEntry } = tablePosition;\n if ((!cell.rowspan && !cell.colspan) || (cell.rowspan === 1 && cell.colspan === 1)) return editor;\n const cellRow = tablePosition.getRowIndex();\n const cellCol = tablePosition.getColumnIndex();\n resetTableCell(editor, table, cell, cellRow, cellCol);\n Transforms.select(editor, cellEntry[1]);\n Transforms.collapse(editor, { edge: 'end' });\n}\n\nexport function resetTableCell(editor: Editor, table: TableElement, cell: TableCellElement, cellRow: number, cellCol: number) {\n const rowSpanIndex = cellRow + (cell.rowspan || 1) - 1;\n const colSpanIndex = cellCol + (cell.colspan || 1) - 1;\n Editor.withoutNormalizing(editor, () => {\n table.children.map((row, rowIndex) => {\n row.children.map((col, colIndex) => {\n if (rowIndex >= cellRow && rowIndex <= rowSpanIndex && colIndex >= cellCol && colIndex <= colSpanIndex) {\n const path = TheQueries.findPath(editor, col);\n Transforms.setNodes(editor, { colspan: null, rowspan: null, hidden: null }, { at: path });\n }\n });\n });\n });\n}\n","import { Editor } from 'slate';\nimport { isSelectedCellMerged } from './merge-cell';\nimport { getSelectCellNode } from './get-select-cell-node';\nimport { MenuEntity, SelectedCell } from '../table.types';\n\nexport function setCellMenuInvisibility(editor: Editor, menuList: MenuEntity[], selectedCells: SelectedCell[], isActiveSelect?: boolean) {\n const isCellMerged = isSelectedCellMerged(editor);\n const selectCellNodes = getSelectCellNode(editor, selectedCells).filter(item => !item.node.hidden);\n menuList.forEach(item => {\n if (item.key === 'merge-cells') {\n item.invisibility = !(selectCellNodes && selectCellNodes.length > 1 && !isActiveSelect);\n }\n if (item.key === 'split-cells') {\n item.invisibility = !(selectCellNodes && selectCellNodes.length === 1 && isCellMerged && !isActiveSelect);\n }\n });\n}\n","import { Component, HostBinding, Input, OnInit } from '@angular/core';\nimport { ToolbarItemMode } from '../../constants/toolbar';\n\n@Component({\n selector: 'nav-split-line',\n template: ''\n})\nexport class NavSplitLineComponent implements OnInit {\n @Input() mode: ToolbarItemMode = ToolbarItemMode.vertical;\n\n @HostBinding('class.the-nav-split-line')\n theNavSplitLine = true;\n\n @HostBinding('class.horizontal') get horizontal() {\n return this.mode === ToolbarItemMode.horizontal;\n }\n\n @HostBinding('class.vertical') get vertical() {\n return this.mode === ToolbarItemMode.vertical;\n }\n\n constructor() {}\n\n ngOnInit(): void {}\n}\n","import { Component, OnInit, Input, NgZone, OnDestroy } from '@angular/core';\nimport { ThyPopoverRef } from 'ngx-tethys/popover';\nimport { Editor } from 'slate';\nimport { TableStore } from '../../table.store';\nimport { ColorType, BackgroundColors, TableHeaderBackgroundColor, SpecialBackgroundColor } from '../../../../constants/color-select';\nimport { TheColorSelectService } from '../../../../services/color-select.service';\nimport { splitCell } from '../../utils/split-cell';\nimport { setCellMenuInvisibility } from '../../utils/set-menu-cell-invisibility';\nimport { MenuEntity } from '../../table.types';\nimport { TableEditor } from '../../table.editor';\n\n@Component({\n selector: 'the-table-toolbar',\n templateUrl: 'table-toolbar.component.html'\n})\nexport class TheTableToolbarComponent implements OnInit, OnDestroy {\n selectedColor: string;\n\n deleteIcon: string;\n\n iconName: string;\n\n @Input() tableStore: TableStore;\n\n @Input() isActiveSelect: boolean;\n\n get editor(): Editor {\n return this.tableStore && this.tableStore.editor;\n }\n\n cellMenuList: MenuEntity[] = [\n {\n key: 'merge-cells',\n name: '合并单元格',\n invisibility: false,\n icon: 'table-merge-cells',\n actionHandle: () => {\n event.preventDefault();\n event.stopPropagation();\n this.tableStore.mergeCell(this.editor);\n this.popoverRef.close();\n this.tableStore.clearSelectedCells();\n }\n },\n {\n key: 'split-cells',\n name: '拆分单元格',\n invisibility: false,\n icon: 'table-unmerge-cells',\n actionHandle: () => {\n event.preventDefault();\n event.stopPropagation();\n splitCell(this.editor);\n this.popoverRef.close();\n this.tableStore.clearSelectedCells();\n }\n }\n ];\n\n get isShowSplitLine() {\n return this.cellMenuList.filter(item => !item.invisibility).length > 1;\n }\n\n constructor(\n private ngZone: NgZone,\n private colorSelectService: TheColorSelectService,\n private popoverRef: ThyPopoverRef<TheTableToolbarComponent>\n ) {}\n\n ngOnInit() {\n this.deleteIcon = DeleteIcon[this.getDeleteIcon()];\n this.getIconName(this.deleteIcon);\n setCellMenuInvisibility(this.editor, this.cellMenuList, this.tableStore.selectedCells, this.isActiveSelect);\n this.selectedColor = this.tableStore.getSelectedCellBackgroundColor();\n }\n\n ngOnDestroy() {\n this.colorSelectService.closeColorSelect();\n }\n\n getIconName(key: string) {\n switch (key) {\n case 'trash':\n this.iconName = '删除表格';\n break;\n case 'table-delete-columns':\n this.iconName = '删除整列';\n break;\n case 'table-delete-rows':\n this.iconName = '删除整行';\n break;\n }\n }\n\n getDeleteIcon() {\n if (this.tableStore.isSelectedTable) {\n return DeleteIcon.trash;\n }\n if (this.tableStore.selectedRowsIndex.length > 0) {\n return DeleteIcon['table-delete-rows'];\n }\n if (this.tableStore.selectedColumnsIndex.length > 0) {\n return DeleteIcon['table-delete-columns'];\n }\n return null;\n }\n\n onDelete(event: MouseEvent) {\n event.preventDefault();\n this.tableStore.removeColumnOrRows();\n this.tableStore.clearDangerousCells();\n this.tableStore.clearSelectedCells();\n this.popoverRef.close();\n }\n\n onEnterDelete(event: MouseEvent) {\n this.tableStore.setDangerousCells();\n }\n\n onLeaveDelete(event: MouseEvent) {\n this.tableStore.clearDangerousCells();\n }\n\n openSelectColor(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n const element = (event.target as HTMLElement).closest('.thy-icon-nav-link');\n const isHeader = TableEditor.isActiveHeader(this.editor);\n this.ngZone.run(() => {\n this.colorSelectService.toggleColorSelect(\n element as HTMLElement,\n this.selectedColor,\n BackgroundColors,\n {\n perRowColorNumbers: 7,\n rowOptions: { 1: '#bbb', 2: '#bbb' },\n specialColor: isHeader ? TableHeaderBackgroundColor : SpecialBackgroundColor\n },\n (newColor: ColorType) => {\n if ((newColor === TableHeaderBackgroundColor && isHeader) || (newColor === SpecialBackgroundColor && !isHeader)) {\n this.tableStore.setSelectedCellsBackgroundColor(null);\n } else {\n this.tableStore.setSelectedCellsBackgroundColor(newColor);\n }\n this.selectedColor = newColor;\n }\n );\n });\n }\n}\n\nexport enum DeleteIcon {\n 'table-delete-rows',\n 'table-delete-columns',\n 'trash'\n}\n","<thy-icon-nav>\n <ng-container *ngFor=\"let item of cellMenuList\">\n <a href=\"javascript:;\" thyIconNavLink *ngIf=\"!item.invisibility\" [thyTooltip]=\"item.name\" (mousedown)=\"item.actionHandle()\">\n <thy-icon [thyIconName]=\"item.icon\"></thy-icon>\n </a>\n </ng-container>\n <nav-split-line *ngIf=\"!isActiveSelect && isShowSplitLine\"></nav-split-line>\n <a href=\"javascript:;\" thyIconNavLink thyTooltip=\"单元格背景\" (mousedown)=\"openSelectColor($event)\">\n <thy-icon thyIconName=\"background-tt\" thyIconType=\"twotone\" [thyTwotoneColor]=\"selectedColor\"></thy-icon>\n </a>\n <nav-split-line *ngIf=\"deleteIcon\"></nav-split-line>\n <a\n *ngIf=\"deleteIcon\"\n href=\"javascript:;\"\n thyIconNavLink\n [thyTooltip]=\"iconName\"\n class=\"danger\"\n [thyIconNavLinkIcon]=\"deleteIcon\"\n (mousedown)=\"onDelete($event)\"\n (mouseenter)=\"onEnterDelete($event)\"\n (mouseleave)=\"onLeaveDelete($event)\"\n ></a>\n</thy-icon-nav>\n","import isHotkey from 'is-hotkey';\n\nexport function isVirtualKey(e: KeyboardEvent) {\n const isMod = e.ctrlKey || e.metaKey;\n const isAlt = isHotkey('alt', e);\n const isShift = isHotkey('shift', e);\n const isCapsLock = e.key.includes('CapsLock');\n const isTab = e.key.includes('Tab');\n const isEsc = e.key.includes('Escape');\n const isF = e.key.startsWith('F');\n const isArrow = e.key.includes('Arrow') ? true : false;\n return isCapsLock || isMod || isAlt || isArrow || isShift || isTab || isEsc || isF;\n}\n","import { OnInit, Component, Input, HostBinding, HostListener, ElementRef } from '@angular/core';\nimport { ThyPopoverRef } from 'ngx-tethys/popover';\nimport { MenuEntity } from '../../plugins/table/table.types';\n\n@Component({\n selector: 'the-contextmenu',\n templateUrl: 'contextmenu.component.html'\n})\nexport class TheContextMenuComponent implements OnInit {\n @Input()\n menuEntities: MenuEntity[] = [];\n\n @Input()\n actionHandle: (entity: MenuEntity) => void;\n\n @Input()\n activeHandle: (event: MouseEvent, entity: MenuEntity) => void;\n\n @Input()\n deactiveHandle: (event: MouseEvent, entity: MenuEntity) => void;\n\n @HostBinding('class.the-overlay-menu-wrap')\n wrap = true;\n\n @HostListener('document: mousedown', ['$event'])\n handleDocumentMouseDown(event: MouseEvent) {\n if (!this.elementRef.nativeElement.contains(event.target as HTMLElement) && event.button !== 2) {\n this.thyPopoverRef.close();\n }\n }\n\n @HostListener('mousedown', ['$event'])\n handleMouseDown(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n itemMousedown(event: MouseEvent, entity: MenuEntity) {\n event.preventDefault();\n this.actionHandle(entity);\n this.thyPopoverRef.close();\n }\n\n itemMouseleave(event: MouseEvent, entity: MenuEntity) {\n event.preventDefault();\n this.deactiveHandle(event, entity);\n }\n\n itemMouseenter(event: MouseEvent, entity: MenuEntity) {\n event.preventDefault();\n this.activeHandle(event, entity);\n }\n\n constructor(public elementRef: ElementRef, private thyPopoverRef: ThyPopoverRef<TheContextMenuComponent>) {}\n\n ngOnInit() {}\n}\n","<thy-action-menu>\n <ng-container *ngFor=\"let menuItem of menuEntities\">\n <a\n thyActionMenuItem\n href=\"javascript:;\"\n *ngIf=\"!menuItem.invisibility\"\n (mousedown)=\"itemMousedown($event, menuItem)\"\n (mouseenter)=\"itemMouseenter($event, menuItem)\"\n (mouseleave)=\"itemMouseleave($event, menuItem)\"\n >\n <span thyActionMenuItemIcon>\n <thy-icon\n *ngIf=\"menuItem.backgroundColor; else elseIcon\"\n [thyIconName]=\"menuItem.icon\"\n thyIconType=\"twotone\"\n [thyTwotoneColor]=\"menuItem.backgroundColor\"\n ></thy-icon>\n <ng-template #elseIcon>\n <thy-icon [thyIconName]=\"menuItem.icon\"></thy-icon>\n </ng-template>\n </span>\n <span thyActionMenuItemName>{{ menuItem.name }}</span>\n <span *ngIf=\"menuItem.extendIcon\" thyActionMenuItemExtendIcon>\n <thy-icon thyIconName=\"{{ menuItem.extendIcon }}\"></thy-icon>\n </span>\n </a>\n <thy-action-menu-divider *ngIf=\"menuItem.divider\"></thy-action-menu-divider>\n </ng-container>\n</thy-action-menu>\n","import { Injectable, NgZone } from '@angular/core';\nimport { BackgroundColors, ColorType, SpecialBackgroundColor, TableHeaderBackgroundColor } from '../constants/color-select';\nimport { TableStore } from '../plugins/table/table.store';\nimport { TheColorSelectService } from './color-select.service';\nimport { TableEditor } from '../plugins/table/table.editor';\nimport { ThyPopoverRef, ThyPopover } from 'ngx-tethys/popover';\nimport { TheContextMenuComponent } from '../components/contextmenu/contextmenu.component';\nimport { TheContextService } from './context.service';\nimport { splitCell } from '../plugins/table/utils/split-cell';\nimport { setCellMenuInvisibility } from '../plugins/table/utils/set-menu-cell-invisibility';\nimport { MenuEntity } from '../plugins/table/table.types';\n\n@Injectable()\nexport class TheTableContextMenuService {\n menuRef: ThyPopoverRef<TheContextMenuComponent>;\n\n get isOpened() {\n return this.menuRef && this.menuRef.componentInstance;\n }\n\n get editor() {\n return this.tableStore && this.tableStore.editor;\n }\n\n get backgroundColor() {\n return this.tableStore.getSelectedCellBackgroundColor();\n }\n\n constructor(\n private colorSelectService: TheColorSelectService,\n private tableStore: TableStore,\n private thyPopover: ThyPopover,\n private ngZone: NgZone,\n private theContextService: TheContextService\n ) {}\n\n menuEntities: MenuEntity[] = [\n {\n key: 'background-color',\n icon: 'background-tt',\n divider: true,\n name: '单元格背景',\n extendIcon: 'angle-right',\n actionHandle: () => {},\n activeHandle: (event: MouseEvent) => {\n if (this.colorSelectService.isOpenColorSelect) {\n return;\n }\n const isHeader = TableEditor.isActiveHeader(this.editor);\n this.colorSelectService.toggleColorSelect(\n event.target as HTMLElement,\n this.backgroundColor,\n BackgroundColors,\n {\n perRowColorNumbers: 7,\n rowOptions: { 1: '#bbb', 2: '#bbb' },\n specialColor: isHeader ? TableHeaderBackgroundColor : SpecialBackgroundColor\n },\n (newColor: ColorType) => {\n if ((newColor === TableHeaderBackgroundColor && isHeader) || (newColor === SpecialBackgroundColor && !isHeader)) {\n this.tableStore.setSelectedCellsBackgroundColor(null);\n } else {\n this.tableStore.setSelectedCellsBackgroundColor(newColor);\n }\n this.tableStore.selectFirstCell();\n },\n 'rightTop',\n 0\n );\n },\n deactiveHandle: (event: MouseEvent) => {\n if (event.relatedTarget instanceof HTMLElement) {\n if (event.relatedTarget.classList.contains('color-container')) {\n return;\n }\n }\n if (this.colorSelectService.isOpenColorSelect) {\n this.colorSelectService.closeColorSelect();\n }\n }\n },\n {\n key: 'clear-selection',\n icon: 'sweep',\n divider: true,\n name: '清空选中区域',\n actionHandle: () => {\n this.tableStore.clearSelectedCellsContent();\n this.tableStore.selectFirstCell();\n }\n },\n {\n key: 'merge-cells',\n icon: 'table-merge-cells',\n name: '合并单元格',\n actionHandle: () => {\n this.tableStore.mergeCell(this.editor);\n }\n },\n {\n key: 'split-cells',\n icon: 'table-unmerge-cells',\n name: '拆分单元格',\n divider: true,\n actionHandle: () => {\n splitCell(this.editor);\n }\n },\n {\n key: 'delete-selection-rows',\n icon: 'table-delete-rows',\n name: '删除所在行',\n actionHandle: () => {\n this.tableStore.removeDangerousRows();\n this.tableStore.clearDangerousCells();\n },\n activeHandle: () => {\n this.tableStore.setDangerousRows();\n }\n },\n {\n key: 'delete-selection-columns',\n icon: 'table-delete-columns',\n divider: true,\n name: '删除所在列',\n actionHandle: () => {\n this.tableStore.removeDangerousColumns();\n this.tableStore.clearDangerousCells();\n },\n activeHandle: () => {\n this.tableStore.setDangerousColumns();\n }\n },\n {\n key: 'delete-table',\n icon: 'trash',\n name: '删除表格',\n actionHandle: () => {\n TableEditor.removeTable(this.editor);\n this.tableStore.clearDangerousCells();\n },\n activeHandle: () => {\n this.tableStore.setDangerousTable();\n }\n }\n ];\n\n openMenuList(event: MouseEvent) {\n this.ngZone.run(() => {\n setCellMenuInvisibility(this.editor, this.menuEntities, this.tableStore.selectedCells);\n this.menuEntities.forEach(item => {\n if (item.key === 'background-color') {\n item.backgroundColor = this.tableStore.getSelectedCellBackgroundColor();\n }\n });\n this.menuRef = this.thyPopover.open(TheContextMenuComponent, {\n origin: event.target as HTMLElement,\n initialState: {\n menuEntities: this.menuEntities,\n actionHandle: (entity: MenuEntity) => {\n entity.actionHandle(entity);\n },\n activeHandle: (menuEvent: MouseEvent, entity: MenuEntity) => {\n if (entity.activeHandle) {\n entity.activeHandle(menuEvent);\n }\n },\n deactiveHandle: (menuEvent: MouseEvent, entity: MenuEntity) => {\n if (entity.key.indexOf('delete') >= 0) {\n this.tableStore.clearDangerousCells();\n }\n if (entity.deactiveHandle) {\n entity.deactiveHandle(menuEvent);\n }\n }\n },\n originPosition: {\n x: event.x + 30,\n y: event.y\n },\n hasBackdrop: false,\n placement: 'bottomLeft',\n viewContainerRef: this.theContextService.getOptions().viewContainerRef,\n manualClosure: true,\n insideClosable: false,\n backdropClosable: false\n });\n this.menuRef.afterClosed().subscribe(() => {\n this.tableStore.clearSelectedCells();\n });\n });\n }\n\n closeContextMenu() {\n if (this.isOpened) {\n this.menuRef.close();\n return this.menuRef.afterClosed();\n }\n }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { ThyPlacement } from 'ngx-tethys/core';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys/popover';\nimport { TheTableToolbarComponent } from './components/toolbar/table-toolbar.component';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { TableStore } from './table.store';\nimport { TheTableContextMenuService } from '../../services/table-contextmenu.service';\nimport { TheContextService } from '../../services/context.service';\nimport { fromEvent, merge } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { isVirtualKey } from './utils/is-virtual-key';\n\n@Injectable()\nexport class TableService {\n backdropClosable = false;\n\n hasBackdrop = false;\n\n insideClosable = false;\n\n placement: ThyPlacement = 'topLeft';\n\n offset = 8;\n\n toolbarRef: ThyPopoverRef<any>;\n\n get isOpened() {\n return this.toolbarRef && this.toolbarRef.componentInstance;\n }\n\n constructor(\n private thyPopover: ThyPopover,\n private overlay: Overlay,\n private tableStore: TableStore,\n private theTableContextMenuService: TheTableContextMenuService,\n private ngZone: NgZone,\n private theContextService: TheContextService\n ) {}\n\n openToolbar(origin: HTMLElement, isActiveSelect?: boolean) {\n this.theTableContextMenuService.closeContextMenu();\n\n if (this.isOpened) {\n if (this.toolbarRef.containerInstance.config.origin === origin) {\n return;\n }\n this.toolbarRef.close();\n }\n this.toolbarRef = this.thyPopover.open(TheTableToolbarComponent, {\n initialState: {\n tableStore: this.tableStore,\n isActiveSelect\n },\n viewContainerRef: this.theContextService.getOptions().viewContainerRef,\n origin: this.getOrigin(origin),\n backdropClosable: this.backdropClosable,\n placement: this.placement,\n offset: this.offset,\n hasBackdrop: this.hasBackdrop,\n insideClosable: this.insideClosable,\n panelClass: 'the-table-toolbar-wrap',\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n manualClosure: true\n });\n this._listenCellClearEvent();\n }\n\n getOrigin(origin: HTMLElement): HTMLElement {\n if (origin instanceof HTMLTableCellElement && origin.tagName !== 'TH') {\n const { selectedRowsIndex, selectedColumnsIndex, focusCellPath, isSelectedTable, focusCellElement } = this.tableStore;\n const [row, col] = focusCellPath.slice(-2);\n const tableElement = focusCellElement.closest('.the-table-container') as HTMLElement;\n if (isSelectedTable && col === 0 && row === 0) {\n return tableElement.querySelector('.the-table-corner-controls');\n }\n if (selectedColumnsIndex.length > 0 && row === 0) {\n return tableElement.querySelectorAll('.the-table-col-controls-inner')[col] as HTMLElement;\n }\n if (selectedRowsIndex.length > 0 && col === 0) {\n return tableElement.querySelectorAll('.the-table-row-controls-button-wrap')[row] as HTMLElement;\n }\n }\n return origin;\n }\n\n closeToolbar() {\n if (this.isOpened) {\n this.ngZone.run(() => {\n this.toolbarRef.close();\n });\n return this.toolbarRef.afterClosed();\n }\n }\n\n _listenCellClearEvent() {\n const onMouseObservable = merge(\n fromEvent<MouseEvent>(document, 'mousedown').pipe(filter((e: MouseEvent) => e.button !== 2)),\n fromEvent<KeyboardEvent>(document, 'keydown').pipe(\n filter((e: KeyboardEvent) => {\n return !isVirtualKey(e);\n })\n )\n )\n .pipe(take(1))\n .subscribe((e: MouseEvent) => {\n if (this.tableStore.selectedCells && this.tableStore.selectedCells.length > 0) {\n if (e.type === 'keydown') {\n this.tableStore.clearSelectedCellsContent();\n }\n this.tableStore.clearSelectedCells();\n this.closeToolbar();\n onMouseObservable.unsubscribe();\n }\n });\n }\n}\n","export const SLA_TABLE_SELECTOR = '.slate-element-table';\n\nexport const SLA_TABLE_CELL_SELECTOR = '.slate-element-table-cell';\n","import { Component, OnInit, OnDestroy, Input, ChangeDetectorRef } from '@angular/core';\nimport { Editor, Range, Transforms } from 'slate';\nimport { ELEMENT_TO_COMPONENT } from 'slate-angular';\nimport { TableEditor } from '../../table.editor';\nimport { TablePosition } from '../../utils/table-position';\nimport { TableStore } from '../../table.store';\nimport type { TheTableComponent } from '../table.component';\nimport { TableOptions } from '../../table.types';\n\n@Component({\n selector: 'the-table-insert-mark',\n templateUrl: './insert-mark.component.html'\n})\nexport class TheInsertMarkComponent implements OnInit, OnDestroy {\n @Input() type: 'row' | 'column';\n @Input() at: number;\n @Input() tableStore: TableStore;\n\n public insertLength: string;\n\n public dotWrapperHovered: boolean;\n\n tooltipContent = '';\n\n get disabled(): boolean {\n return this.tableStore && !!this.tableStore.selectedCells.length;\n }\n\n get editor(): Editor {\n return this.tableStore && this.tableStore.editor;\n }\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n ngOnInit() {\n this.tooltipContent = this.type === 'row' ? '插入行' : '插入列';\n }\n\n onMouseDown(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n if (this.disabled) {\n return;\n }\n const fun = this.type === 'row' ? TableEditor.insertRow : TableEditor.insertColumn;\n fun(this.editor, 1, this.at);\n // update header\n if (this.type === 'row' && this.at === 0) {\n const { selection } = this.editor;\n const opts = new TableOptions();\n const table = TablePosition.create(opts, this.editor, selection.anchor.path);\n Transforms.setNodes(this.editor, { header: true }, { at: table.tableEntry[1].concat(0) });\n Transforms.setNodes(this.editor, { header: null }, { at: table.tableEntry[1].concat(1) });\n }\n this.tableStore.changeCells();\n }\n\n onMouseEnter(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n if (this.disabled) {\n return;\n }\n this.dotWrapperHovered = true;\n this.insertLength = this.getLength();\n this.cdr.detectChanges();\n }\n\n onMouseLeave(event: MouseEvent) {\n event.preventDefault();\n event.stopPropagation();\n if (this.disabled) {\n return;\n }\n this.dotWrapperHovered = false;\n this.cdr.detectChanges();\n }\n\n getLength() {\n const { selection } = this.editor;\n if (selection && Range.isCollapsed(selection)) {\n const { table } = TablePosition.create(new TableOptions(), this.editor, selection.anchor.path);\n if (!table) {\n return;\n }\n const tableComponent = ELEMENT_TO_COMPONENT.get(table) as TheTableComponent;\n const tableWrapper = tableComponent.tableWrapper.nativeElement as HTMLElement;\n const tableElement = tableComponent.theTableElement.nativeElement as HTMLElement;\n let result = 0;\n if (this.type === 'row') {\n result = tableWrapper.offsetWidth + 11;\n } else {\n result = tableElement.offsetHeight - 1;\n }\n return result + 'px';\n }\n }\n\n ngOnDestroy() {}\n}\n","<div\n [thyTooltip]=\"!disabled && tooltipContent\"\n class=\"the-table-controls-insert-wrapper\"\n [ngClass]=\"{ disabled: disabled }\"\n contenteditable=\"false\"\n (mousedown)=\"onMouseDown($event)\"\n (mouseenter)=\"onMouseEnter($event)\"\n (mouseleave)=\"onMouseLeave($event)\"\n>\n <div\n class=\"the-table-controls-insert-line\"\n *ngIf=\"dotWrapperHovered\"\n [attr.data-dot-type]=\"type\"\n [ngStyle]=\"{ height: type === 'column' && insertLength, width: type === 'row' && insertLength }\"\n ></div>\n</div>\n","export const TABLE_SELECTOR = '.the-table';\n\nexport const TABLE_WRAPPER_SELECTOR = '.the-table-wrapper';\n\nexport const RESIZE_OVERLAY_SELECTOR = '.the-table-resize-overlay-thumb';\n","import { Directive, OnDestroy, AfterViewInit, ElementRef, ViewContainerRef, ChangeDetectorRef, NgZone, Inject } from '@angular/core';\nimport { fromEvent, ReplaySubject } from 'rxjs';\nimport { map, takeUntil, filter, mapTo, throttleTime } from 'rxjs/operators';\nimport { HoveredCellInfo, TableCellEventDispatcher } from './event-dispatcher';\nimport { RESIZE_OVERLAY_SELECTOR } from './selectors';\nimport { ColumnResizeNotifierSource } from './column-resize-notifier';\nimport { SLA_TABLE_CELL_SELECTOR } from '../../constants/selector';\nimport { TheTableToken } from '../../plugins/table/table.types';\nimport type { TheTableComponent } from '../../plugins/table/components/table.component';\n\n@Directive({\n selector: 'div[theColumnResize]'\n})\nexport class TheColumnResizeDirective implements AfterViewInit, OnDestroy {\n protected readonly destroyed = new ReplaySubject<void>();\n protected isXAxis: boolean;\n\n constructor(\n public elementRef: ElementRef,\n public viewContainerRef: ViewContainerRef,\n public cdr: ChangeDetectorRef,\n public ngZone: NgZone,\n public eventDispatcher: TableCellEventDispatcher,\n public resizeNotifier: ColumnResizeNotifierSource,\n @Inject(TheTableToken)\n public theTableComponent: TheTableComponent\n ) {}\n\n ngAfterViewInit() {\n this._listenForCellEdgeHoverEvents();\n this._listenStartDrag();\n this._listenEndDrag();\n }\n\n _listenForCellEdgeHoverEvents() {\n this.ngZone.runOutsideAngular(() => {\n const element = this.elementRef.nativeElement!;\n let previous: { x: number; y: number } = { x: 0, y: 0 };\n fromEvent<MouseEvent>(element, 'mousemove') // mouseover to mousemove 增加灵敏性\n .pipe(\n throttleTime(300), // 防抖\n map(event => {\n if (!this.theTableComponent.isCollapsed) {\n return null;\n }\n const cell = (event.target as HTMLElement).closest(SLA_TABLE_CELL_SELECTOR) as HTMLTableCellElement;\n let hoveredInfo: HoveredCellInfo;\n let position;\n if (cell) {\n if (previous.x > 0) {\n const rectCell = cell.getBoundingClientRect();\n const deltaX = previous.x - event.clientX;\n const deltaY = previous.y - event.clientY;\n if (Math.abs(deltaX) > Math.abs(deltaY) && deltaX !== 0) {\n const centerCellX = rectCell.x + rectCell.width / 2;\n position = event.x > centerCellX ? 'right' : 'left';\n this.isXAxis = true;\n }\n if (Math.abs(deltaY) > Math.abs(deltaX) && deltaY !== 0) {\n this.isXAxis = false;\n const centerCellY = rectCell.y + rectCell.height / 2;\n position = event.y > centerCellY ? 'top' : 'bottom';\n }\n hoveredInfo = {\n cell,\n position\n };\n }\n previous = {\n x: event.clientX,\n y: event.clientY\n };\n return position ? hoveredInfo : null;\n }\n return null;\n }),\n takeUntil(this.destroyed)\n )\n .subscribe(this.eventDispatcher.tableCellHovered);\n fromEvent<MouseEvent>(element, 'mouseleave')\n .pipe(\n filter(event => {\n return !!event.relatedTarget && !(event.relatedTarget as Element).matches(RESIZE_OVERLAY_SELECTOR);\n }),\n mapTo(null),\n takeUntil(this.destroyed)\n )\n .subscribe(this.eventDispatcher.tableCellHovered);\n });\n }\n\n _listenStartDrag() {\n this.resizeNotifier.resizeStarted.pipe(takeUntil(this.destroyed)).subscribe(() => {\n this.isXAxis ? this.theTableComponent.initializeColumns() : this.theTableComponent.initializeRows();\n });\n }\n\n _listenEndDrag() {\n this.resizeNotifier.resizeCompleted.pipe(takeUntil(this.destroyed)).subscribe(() => {\n this.isXAxis ? this.theTableComponent.transformColumnsWidth() : this.theTableComponent.transformRowHeight();\n });\n }\n\n ngOnDestroy() {\n this.destroyed.next();\n this.destroyed.complete();\n }\n}\n","import { Component, OnInit, ElementRef, OnDestroy, ChangeDetectorRef, NgZone, AfterViewInit, ViewChild, HostListener } from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { take, takeUntil, debounceTime } from 'rxjs/operators';\nimport { Editor, Transforms } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { TablePosition } from '../utils';\nimport { ColumnResizeNotifierSource } from '../../../components/column-resize/column-resize-notifier';\nimport { TableCellEventDispatcher } from '../../../components/column-resize/event-dispatcher';\nimport { TableStore } from '../table.store';\nimport { getElementHeight, getElementWidth } from '../../../utils/dom';\nimport { TableService } from '../table.service';\nimport { TheTableContextMenuService } from '../../../services/table-contextmenu.service';\nimport { TheContextService } from '../../../services/context.service';\nimport { TheBaseElementComponent } from '../../../interfaces/view-base';\nimport { TableCellElement, TableElement, TableRowElement } from '../../../custom-types';\nimport { TableOptions, TheTableColumn, TheTableToken } from '../table.types';\nimport { TheEditor } from '../../../interfaces/editor';\nimport { SLA_TABLE_CELL_SELECTOR } from '../../../constants/selector';\nimport * as TheTransforms from '../../../transforms';\n\n@Component({\n selector: 'the-table, [theTable]',\n templateUrl: './table.component.html',\n providers: [\n TableStore,\n TableService,\n TheTableContextMenuService,\n TableCellEventDispatcher,\n ColumnResizeNotifierSource,\n {\n provide: TheTableToken,\n useExisting: TheTableComponent\n }\n ]\n})\nexport class TheTableComponent extends TheBaseElementComponent<TableElement, Editor> implements OnInit, AfterViewInit, OnDestroy {\n destroy$: Subject<any> = new Subject();\n theTableWrapperWidth: number;\n\n rowControls: { height: number; rowIndex: number }[] = [];\n\n colControls = [];\n\n normalizedColumns: TheTableColumn[];\n\n isInTable: boolean;\n\n get columns(): TheTableColumn[] {\n return this.normalizedColumns || (this.element && this.element.columns);\n }\n\n get nativeElement(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n get tbodyNativeElement(): HTMLElement {\n return this.tbodyElement?.nativeElement;\n }\n\n get isSelectedAllCell() {\n return (\n this.tableStore.selectedRowsIndex.length === this.rowControls.length &&\n this.tableStore.selectedColumnsIndex.length === this.colControls.length\n );\n }\n\n @ViewChild('tableWrapper', { read: ElementRef, static: true })\n tableWrapper: ElementRef;\n\n @ViewChild('theTable', { read: ElementRef, static: true })\n theTableElement: ElementRef;\n\n @ViewChild('tbody', { read: ElementRef, static: true })\n tbodyElement: ElementRef;\n\n @HostListener('mousedown', ['$event'])\n handleMousedown(event: MouseEvent) {\n if (event.target instanceof Element && this.tbodyNativeElement.contains(event.target)) {\n return;\n }\n if (!TheEditor.isFocused(this.editor)) {\n TheEditor.focus(this.editor);\n }\n AngularEditor.moveBlockCard(this.editor, this.element, { direction: 'left' });\n event.preventDefault();\n }\n\n onContextChange() {\n super.onContextChange();\n if (this.initialized) {\n Promise.resolve().then(() => {\n this.tableStore.emitTableChange();\n this.useRowControls();\n });\n this.getIsInTable();\n this.getColControls();\n if (this.normalizedColumns) {\n this.normalizeShowColumns();\n }\n }\n }\n\n constructor(\n elementRef: ElementRef,\n public eventDispatcher: TableCellEventDispatcher,\n public resizeNotifier: ColumnResizeNotifierSource,\n public tableStore: TableStore,\n public cdr: ChangeDetectorRef,\n public ngZone: NgZone,\n public tableService: TableService,\n private theContextService: TheContextService,\n private theTableContextMenuService: TheTableContextMenuService\n ) {\n super(elementRef, cdr);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.getColControls();\n this.getIsInTable();\n }\n\n ngAfterViewInit() {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n const blockCardElement = this.nativeElement.closest('slate-block-card');\n if (blockCardElement) {\n blockCardElement.classList.add(`slate-block-card-${this.element.type}`);\n }\n this.tableStore.initEditor(this.editor);\n this.subscribeCellsChange();\n this.subscribeCellPositionChange();\n this.listenTableContextMenuEvent();\n this.useTableWrapperWidth();\n // need view render complete\n this.useRowControls();\n });\n }\n\n subscribeCellPositionChange() {\n this.tableStore\n .cellsPositionChange()\n .pipe(debounceTime(100), takeUntil(this.destroy$))\n .subscribe(x => {\n this.cdr.detectChanges();\n });\n }\n\n useTableWrapperWidth() {\n const rootWidth = this.theContextService.getOptions().width;\n const tablePath = TheEditor.findPath(this.editor, this.element);\n if (tablePath.length > 1) {\n // 解决table不在顶层时,拖动单元格宽度计算问题\n this.theTableWrapperWidth = this.tableWrapper.nativeElement.offsetWidth;\n } else {\n this.theTableWrapperWidth = rootWidth;\n }\n }\n\n subscribeCellsChange() {\n this.tableStore\n .dangerousOrSelectedCellsChange()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.cdr.detectChanges();\n });\n }\n\n useRowControls() {\n if (this.selection) {\n this.rowControls = this.calculateRowControls();\n this.cdr.markForCheck();\n }\n }\n\n detectChanges() {\n this.cdr.detectChanges();\n }\n\n calculateMinRowSpanCellForRows(): { cell?: TableCellElement; rowIndex: number }[] {\n const table = this.element;\n const cells = table.children.map((row, index) => {\n const noHiddenCells = row.children.filter(cell => !cell.hidden);\n if (noHiddenCells.length > 0) {\n const minRowspan = Math.min.apply(\n Math,\n noHiddenCells.map(cell => {\n return cell.rowspan || 1;\n })\n );\n\n const cell = row.children.find(item => !item.hidden && (item.rowspan || 1) === minRowspan);\n return {\n cell,\n rowIndex: index\n };\n } else {\n return {\n rowIndex: index\n };\n }\n });\n return cells;\n }\n\n calculateRowControls() {\n const minRowSpanCellForRows = this.calculateMinRowSpanCellForRows();\n\n const rowControls = [];\n let previousRowIndex = 0;\n let previousCombineRowIndex = 0;\n minRowSpanCellForRows.forEach((cellInfo, index) => {\n if (!cellInfo.cell) {\n rowControls.push({\n height: 0,\n rowIndex: index\n });\n previousCombineRowIndex = index;\n if (index === minRowSpanCellForRows.length - 1) {\n this.calculateRowControlsAvgHeight(previousCombineRowIndex, previousRowIndex, rowControls);\n }\n return;\n }\n\n // calculate combine row height\n if (previousCombineRowIndex > previousRowIndex) {\n this.calculateRowControlsAvgHeight(previousCombineRowIndex, previousRowIndex, rowControls);\n previousCombineRowIndex = 0;\n }\n\n const cellDom = AngularEditor.toDOMNode(this.editor, cellInfo.cell);\n let height = getElementHeight(cellDom);\n // 当cell为合并的单元格(rowspan > 1),计算其实际高度(当前单元格的高度 - 下方合并单元格的高度)\n if (cellInfo.cell.rowspan > 1) {\n const calcHeight = height - this.getBelowRowHeight(minRowSpanCellForRows, index, cellInfo.rowIndex, cellInfo.cell.rowspan);\n rowControls.push({\n height: calcHeight,\n rowIndex: cellInfo.rowIndex\n });\n } else {\n rowControls.push({\n height,\n rowIndex: cellInfo.rowIndex\n });\n }\n previousRowIndex = index;\n });\n return rowControls;\n }\n\n calculateRowControlsAvgHeight(\n previousCombineRowIndex: number,\n previousRowIndex: number,\n rowControls: { height: number; rowIndex: number }[]\n ) {\n const rowControl = rowControls[previousRowIndex];\n const count = previousCombineRowIndex - previousRowIndex;\n const avgHeight = Math.floor(rowControl.height / (count + 1));\n const firstHeight = rowControl.height - avgHeight * count;\n rowControl.height = firstHeight;\n rowControls\n .filter((item, _index) => _index > previousRowIndex && _index <= previousCombineRowIndex)\n .forEach(rowControl => {\n rowControl.height = avgHeight;\n });\n }\n\n getBelowRowHeight(\n cells: {\n cell?: TableCellElement;\n rowIndex: number;\n }[],\n index: number,\n rowIndex: number,\n rowspan: number\n ) {\n let belowRowlHeight = 0;\n cells.slice(index + 1, cells.length).map(item => {\n if (!item.cell) {\n return;\n }\n if (rowIndex + rowspan > item.rowIndex) {\n const cellDom = AngularEditor.toDOMNode(this.editor, item.cell);\n if (item.cell.rowspan > 1) {\n // 如果下方单元格的rowspan > 1,递归计算\n const height = this.getBelowRowHeight(\n cells,\n cells.findIndex(cell => cell.rowIndex === item.rowIndex),\n item.rowIndex,\n item.cell.rowspan\n );\n belowRowlHeight += getElementHeight(cellDom) - height;\n } else {\n belowRowlHeight += getElementHeight(cellDom);\n }\n }\n });\n return belowRowlHeight;\n }\n\n getColControls() {\n this.colControls = this.element?.children[0]?.children || [];\n }\n\n onColMouseDown(event: MouseEvent, index: number) {\n event.stopPropagation();\n event.preventDefault();\n if (!!this.selection && this.isInTable) {\n this.tableStore.clearDangerousCells();\n this.tableStore.selectColumn(this.editor, index);\n this.tableService.openToolbar(event.target as HTMLElement, true);\n }\n }\n\n getIsInTable() {\n if (this.selection) {\n const opts = new TableOptions();\n const selection = this.editor.selection;\n const startPosition = TablePosition.create(opts, this.editor, selection.anchor.path);\n const endPosition = TablePosition.create(opts, this.editor, selection.focus.path);\n this.isInTable = startPosition.isInTable() && endPosition.isInTable();\n } else {\n this.isInTable = false;\n }\n }\n\n normalizeShowColumns() {\n const table = this.element;\n const tr = table.children[0];\n if (this.element.columns) {\n let isGood = true;\n this.normalizedColumns = table.columns.map(item => {\n return { ...item };\n });\n if (this.element.columns.length !== tr.children.length) {\n this.normalizedColumns = tr.children.map((item, i) => this.columns[i] || { width: 200 });\n isGood = false;\n }\n const totalWidth = this.normalizedColumns.reduce((pre, cur) => {\n return pre + cur.width;\n }, 0);\n if (totalWidth < this.theTableWrapperWidth) {\n const lastColumnWidth =\n this.theTableWrapperWidth - totalWidth + this.normalizedColumns[this.normalizedColumns.length - 1].width;\n this.normalizedColumns[this.normalizedColumns.length - 1] = { width: lastColumnWidth };\n isGood = false;\n }\n if (isGood) {\n this.normalizedColumns = null;\n }\n }\n }\n\n initializeColumns() {\n if (!this.element.columns) {\n const tr = this.element.children[0] as TableRowElement;\n const tableWidth = AngularEditor.toDOMNode(this.editor, tr).offsetWidth;\n const columns = tr.children.map(cell => {\n return { width: Math.round(tableWidth / tr.children.length) - tr.children.length };\n });\n TheTransforms.setNode(this.editor, { columns }, this.element);\n }\n }\n\n initializeRows() {\n this.element.children.map(row => {\n if (!row.height) {\n const element = TheEditor.toDOMNode(this.editor, row);\n TheTransforms.setNode(this.editor, { height: getElementHeight(element) }, row);\n }\n });\n }\n\n transformRowHeight() {\n const rowElements = this.nativeElement.querySelector('tbody').children;\n if (rowElements) {\n ([...rowElements] as HTMLTableRowElement[]).map((row, index) => {\n const height = getElementHeight(row);\n TheTransforms.setNode(this.editor, { height }, this.element.children[index]);\n });\n }\n }\n\n transformColumnsWidth() {\n const cols = [...this.nativeElement.querySelector('colgroup').children] as HTMLTableColElement[];\n const columns: TheTableColumn[] = cols.map(col => {\n return { width: getElementWidth(col) };\n });\n TheTransforms.setNode(this.editor, { columns }, this.element);\n }\n\n onRowMouseDown(event: MouseEvent, index: number) {\n event.stopPropagation();\n event.preventDefault();\n this.tableStore.selectRow(this.editor, index);\n this.tableService.openToolbar(event.target as HTMLElement, true);\n }\n\n onSelectTable(event: MouseEvent) {\n event.stopPropagation();\n event.preventDefault();\n this.tableStore.selectTable(this.editor);\n this.tableService.openToolbar(event.target as HTMLElement);\n }\n\n listenTableContextMenuEvent() {\n this.ngZone.runOutsideAngular(() => {\n fromEvent<MouseEvent>(this.theTableElement.nativeElement, 'contextmenu')\n .pipe(takeUntil(this.destroy$))\n .subscribe(event => {\n if (this.readonly) {\n return;\n }\n event.preventDefault();\n this.tableStore.isRightClicking = true;\n const cell = (event.target as HTMLElement).closest(SLA_TABLE_CELL_SELECTOR) as HTMLTableCellElement;\n if (!cell) {\n return;\n } else {\n if (!cell.classList.contains('selected-cell')) {\n this.tableStore.selectCell(cell, this.editor);\n }\n }\n if (this.theTableContextMenuService.isOpened) {\n this.theTableContextMenuService\n .closeContextMenu()\n .pipe(take(1))\n .subscribe(() => {\n this.theTableContextMenuService.openMenuList(event);\n });\n } else if (this.tableService.isOpened) {\n this.tableService\n .closeToolbar()\n .pipe(take(1))\n .subscribe(() => {\n this.theTableContextMenuService.openMenuList(event);\n });\n } else {\n this.cdr.markForCheck();\n this.theTableContextMenuService.openMenuList(event);\n }\n\n // patch for right click select next cell\n setTimeout(() => {\n Transforms.select(this.editor, this.editor.selection.anchor.path);\n });\n });\n });\n }\n\n trackByFnRowCotrols(index: number) {\n return index;\n }\n\n trackByFnColCotrols(index: number) {\n return index;\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<div\n class=\"the-table-container\"\n theColumnResize\n [ngClass]=\"{\n 'the-table-with-controls': isInTable,\n 'the-table-selection-hide': tableStore.isCellSelecting || tableStore.isRightClicking\n }\"\n>\n <div class=\"the-table-row-controls-wrapper\" *ngIf=\"!readonly && isInTable\">\n <div>\n <div\n class=\"the-table-corner-controls\"\n [ngClass]=\"{ active: isSelectedAllCell, dangerous: tableStore.isSelectedTable && tableStore.dangerousCells.length > 0 }\"\n >\n <button type=\"button\" class=\"the-table-corner-button\" (mousedown)=\"onSelectTable($event)\"></button>\n <div class=\"the-table-corner-controls-insert-row-marker\">\n <the-table-insert-mark type=\"row\" [at]=\"0\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n <div class=\"the-table-corner-controls-insert-column-marker\">\n <the-table-insert-mark type=\"column\" [at]=\"0\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n </div>\n <div class=\"the-table-row-controls\">\n <div class=\"the-table-row-controls-inner\">\n <div\n class=\"the-table-row-controls-button-wrap\"\n *ngFor=\"let control of rowControls; let i = index; trackBy: trackByFnRowCotrols\"\n [ngClass]=\"{\n active: tableStore.selectedRowsIndex.includes(control.rowIndex),\n dangerous: tableStore.dangerousRowsIndex.includes(control.rowIndex) && tableStore.dangerousCells.length > 0\n }\"\n >\n <button\n (mousedown)=\"onRowMouseDown($event, control.rowIndex)\"\n type=\"button\"\n [ngStyle]=\"{ height: control.height + 1 + 'px' }\"\n class=\"the-table-row-controls-button the-table-controls-button\"\n ></button>\n <the-table-insert-mark type=\"row\" [at]=\"control.rowIndex + 1\" [tableStore]=\"tableStore\"></the-table-insert-mark>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"the-table-wrapper\" #tableWrapper>\n <table class=\"the-table\" #theTable [ngClass]=\"{ 'the-table-with-controls': isInTable }\">\n <colgroup *ngIf=\"columns\">\n <col *ngFor=\"let col of columns\" [ngStyle]=\"{ width: col.width + 'px' }\" />\n </colgroup>\n <thead>\n <tr class=\"the-table-col-controls-wrapper\">\n <th\n class=\"the-table-col-controls\"\n (mousedown)=\"onColMouseDown($event, i)\"\n *ngFor=\"let control of colControls; let i = index; trackBy: trackByFnColCotrols\"\n >\n <the-table-insert-mark\n *ngIf=\"isInTable\"\n type=\"column\"\n [at]=\"i + 1\"\n [tableStore]=\"tableStore\"\n ></the-table-insert-mark>\n <div\n class=\"the-table-col-controls-inner\"\n [ngClass]=\"{\n active: tableStore.selectedColumnsIndex.includes(i),\n dangerous: tableStore.dangerousColumnsIndex.includes(i) && tableStore.dangerousCells.length > 0\n }\"\n ></div>\n </th>\n </tr>\n </thead>\n <tbody #tbody>\n <slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"> </slate-children>\n </tbody>\n </table>\n </div>\n</div>\n","import { Editor, Transforms, Range } from 'slate';\nimport { createCell } from '../utils/create-cell';\nimport { TablePosition } from '../utils';\nimport { TableOptions } from '../table.types';\n\n/**\n * Clear the content of the given node\n */\nexport function clearTableNode(opts: TableOptions, editor: Editor, isTopToBot?: boolean) {\n const { selection } = editor;\n const element = TablePosition.create(opts, editor, selection.focus.path);\n const rowIndex = element.getRowIndex();\n const colIndex = element.getColumnIndex();\n const removeRow = isTopToBot ? 0 : rowIndex + 1;\n for (let i = 0; i < element.getWidth(); i++) {\n const inColRange = Range.includes(selection, [...element.tableEntry[1], rowIndex, i]);\n if (inColRange && i !== colIndex) {\n Transforms.removeNodes(editor, { at: [...element.tableEntry[1], rowIndex, i] });\n Transforms.insertNodes(editor, createCell(opts), { at: [...element.tableEntry[1], rowIndex, i] });\n }\n }\n for (let i = 0; i < element.getHeight(); i++) {\n const inRowRange = Range.includes(selection, [...element.tableEntry[1], i]);\n if (inRowRange && i !== rowIndex) {\n Transforms.removeNodes(editor, { at: [...element.tableEntry[1], removeRow] });\n }\n }\n}\n","import { Editor } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport * as TheQueries from '../../../queries';\n\nexport function calculateAnchorPositionInCell(editor: Editor) {\n let isFirstLine = false;\n let isLastLine = false;\n const anchorBlock = TheQueries.anchorBlock(editor);\n const anchorBlockPath = TheQueries.findPath(editor, anchorBlock);\n const anchorBlockDom = AngularEditor.toDOMNode(editor, anchorBlock);\n const valueRangeRect = anchorBlockDom.getBoundingClientRect();\n const anchorBlockHeight = window.getComputedStyle(anchorBlockDom).lineHeight;\n const nativeSelection = window.getSelection();\n const nativeRange = nativeSelection && nativeSelection.getRangeAt(0);\n const nativeRangeRect = nativeRange && nativeRange.getBoundingClientRect();\n if (valueRangeRect && nativeRangeRect && anchorBlockHeight) {\n const lineHeight = parseInt(anchorBlockHeight, 10);\n isFirstLine = nativeRangeRect.top - valueRangeRect.top < lineHeight;\n isLastLine = valueRangeRect.bottom - nativeRangeRect.bottom < lineHeight;\n }\n return {\n isFirstLine,\n isLastLine,\n anchorBlockPath\n };\n}\n","import { Component, HostBinding, OnInit } from '@angular/core';\nimport { TableRowElement } from '../../../../custom-types';\nimport { TheBaseElementComponent } from '../../../../interfaces/view-base';\n\n@Component({\n selector: 'tr[theTableRow]',\n template: '<slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>'\n})\nexport class TheTableRowComponent extends TheBaseElementComponent<TableRowElement> implements OnInit {\n @HostBinding('style.backgroundColor') backgroundColor: string;\n @HostBinding('style.height') height: string;\n\n onContextChange() {\n super.onContextChange();\n if (this.initialized) {\n this.useBackground();\n this.useHeight();\n }\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.useBackground();\n this.useHeight();\n }\n\n useBackground() {\n if (this.element.header && !this.backgroundColor) {\n this.backgroundColor = '#F3F3F3';\n }\n if (!this.element.header && this.backgroundColor) {\n this.backgroundColor = null;\n }\n }\n\n useHeight() {\n if (this.element.height) {\n this.height = this.element.height + 'px';\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { getElementWidth, coercePixelsFromCssValue, getColsTotalWidth, getElementHeight, getRowsTotalHeight } from '../../utils/dom';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\n\n@Injectable()\nexport class ColumnResizingStore {\n constructor() {\n this.resizeCols = [];\n this.resizeRows = [];\n }\n private direction: 'left' | 'right' | 'top' | 'bottom';\n private resizeCols: { colElement: HTMLTableColElement; baseWidth: number }[];\n private resizeRows: { rowElement: HTMLTableRowElement; baseHeight: number }[];\n private tableCols: { cols: HTMLTableColElement[]; baseWidth: number };\n private tableRows: { rows: HTMLTableRowElement[]; baseHeight: number };\n\n storeResizingCol(colElement: HTMLTableColElement) {\n if (this.resizeCols.some(cache => cache.colElement === colElement)) {\n return;\n }\n this.resizeCols.push({ colElement, baseWidth: getElementWidth(colElement) });\n }\n\n storeResizingRow(rowElement: HTMLTableRowElement) {\n if (this.resizeRows.some(cache => cache.rowElement === rowElement)) {\n return;\n }\n this.resizeRows.push({ rowElement, baseHeight: getElementHeight(rowElement) });\n }\n\n storeTableWidth(cols: HTMLTableColElement[]) {\n if (!this.tableCols) {\n this.tableCols = { cols, baseWidth: getColsTotalWidth(cols) };\n }\n }\n\n storeTableHeight(rows: HTMLTableRowElement[]) {\n if (!this.tableRows) {\n this.tableRows = { rows, baseHeight: getRowsTotalHeight(rows) };\n }\n }\n\n cleanResizing() {\n this.tableCols = null;\n this.tableRows = null;\n this.resizeCols = [];\n this.resizeRows = [];\n this.direction = null;\n }\n\n restoreLeftCols(deltaX: number) {\n let index = this.resizeCols.length - 1;\n while (index >= 0 && deltaX > 0) {\n const currentWidth = coercePixelsFromCssValue(this.resizeCols[index].colElement.style.width);\n if (this.resizeCols[index].baseWidth > currentWidth) {\n if (this.resizeCols[index].baseWidth > currentWidth + deltaX) {\n this.resizeCols[index].colElement.style.width = coerceCssPixelValue(currentWidth + deltaX);\n deltaX = 0;\n } else {\n deltaX -= this.resizeCols[index].baseWidth - currentWidth;\n this.resizeCols[index].colElement.style.width = coerceCssPixelValue(this.resizeCols[index].baseWidth);\n this.popCol();\n }\n }\n index--;\n }\n return deltaX;\n }\n\n restoreTopRows(deltaY: number) {\n let index = this.resizeRows.length - 1;\n while (index >= 0 && deltaY > 0) {\n const currentHeight = coercePixelsFromCssValue(this.resizeRows[index].rowElement.style.height);\n if (this.resizeRows[index].baseHeight > currentHeight) {\n if (this.resizeRows[index].baseHeight > currentHeight + deltaY) {\n this.resizeRows[index].rowElement.style.height = coerceCssPixelValue(currentHeight + deltaY);\n deltaY = 0;\n } else {\n deltaY -= this.resizeRows[index].baseHeight - currentHeight;\n this.resizeRows[index].rowElement.style.height = coerceCssPixelValue(this.resizeRows[index].baseHeight);\n this.popRow();\n }\n }\n index--;\n }\n return deltaY;\n }\n\n restoreBottomRows(deltaY: number) {\n let index = this.resizeRows.length - 1;\n while (index >= 0 && deltaY < 0) {\n const currentHeight = coercePixelsFromCssValue(this.resizeRows[index].rowElement.style.height);\n if (this.resizeRows[index].baseHeight > currentHeight) {\n if (this.resizeRows[index].baseHeight > currentHeight + Math.abs(deltaY)) {\n this.resizeRows[index].rowElement.style.height = coerceCssPixelValue(currentHeight + Math.abs(deltaY));\n deltaY = 0;\n } else {\n deltaY += this.resizeRows[index].baseHeight - currentHeight;\n this.resizeRows[index].rowElement.style.height = coerceCssPixelValue(this.resizeRows[index].baseHeight);\n this.popRow();\n }\n }\n index--;\n }\n return deltaY;\n }\n\n restoreRightCols(deltaX: number) {\n let index = this.resizeCols.length - 1;\n while (index >= 0 && deltaX < 0) {\n const currentWidth = coercePixelsFromCssValue(this.resizeCols[index].colElement.style.width);\n if (this.resizeCols[index].baseWidth > currentWidth) {\n if (this.resizeCols[index].baseWidth > currentWidth + Math.abs(deltaX)) {\n this.resizeCols[index].colElement.style.width = coerceCssPixelValue(currentWidth + Math.abs(deltaX));\n deltaX = 0;\n } else {\n deltaX += this.resizeCols[index].baseWidth - currentWidth;\n this.resizeCols[index].colElement.style.width = coerceCssPixelValue(this.resizeCols[index].baseWidth);\n this.popCol();\n }\n }\n index--;\n }\n return deltaX;\n }\n\n getScrollWidth(deltaX: number) {\n if (this.tableCols) {\n return getColsTotalWidth(this.tableCols.cols) - this.tableCols.baseWidth - Math.abs(deltaX);\n }\n }\n\n getAddTableHeight(deltaY: number) {\n if (this.tableRows) {\n return getRowsTotalHeight(this.tableRows.rows) - this.tableRows.baseHeight - Math.abs(deltaY);\n }\n }\n\n isRestoring(deltaValue, isXAxis = true) {\n return !this.isResizing(deltaValue, isXAxis);\n }\n\n isResizing(deltaValue, isXAxis = true) {\n return this.direction === this.getDirection(deltaValue, isXAxis);\n }\n\n initDirection(deltaValue: number, isXAxis = true) {\n if (this.resizeCols.length > 0) {\n return;\n }\n if (this.resizeRows.length > 0) {\n return;\n }\n this.direction = this.getDirection(deltaValue, isXAxis);\n }\n\n private getDirection(deltaValue, isXAxis = true) {\n return isXAxis ? (deltaValue > 0 ? 'right' : 'left') : deltaValue > 0 ? 'bottom' : 'top';\n }\n\n private popCol() {\n this.resizeCols.pop();\n }\n\n private popRow() {\n this.resizeRows.pop();\n }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\nimport { ElementRef } from '@angular/core';\nimport { OverlayRef } from '@angular/cdk/overlay';\n\n/** Tracks state of resize events in progress. */\nexport class ResizeRef {\n direction: 'X' | 'Y';\n constructor(\n readonly origin: ElementRef,\n readonly overlayRef: OverlayRef,\n readonly minWidthPx: number,\n readonly maxWidthPx: number,\n readonly minHeightPx: number,\n readonly maxHeightPx: number,\n readonly updateSizeAndOffset: () => void\n ) {}\n\n setDirection(direction: 'X' | 'Y') {\n this.direction = direction;\n }\n}\n","import {\n Component,\n OnDestroy,\n ElementRef,\n AfterViewInit,\n ChangeDetectionStrategy,\n ViewContainerRef,\n ChangeDetectorRef,\n NgZone,\n Inject\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { fromEvent, ReplaySubject } from 'rxjs';\nimport { takeUntil, mapTo, map, filter, startWith, pairwise, distinctUntilChanged } from 'rxjs/operators';\nimport { ResizeRef } from './resize-ref';\nimport { TableCellEventDispatcher } from './event-dispatcher';\nimport { ColumnResizeNotifierSource } from './column-resize-notifier';\n\n@Component({\n host: { class: 'the-table-resize-overlay-thumb' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: ''\n})\nexport class TheColumnResizeOverlayHandleComponent implements AfterViewInit, OnDestroy {\n protected readonly destroyed = new ReplaySubject<void>();\n\n constructor(\n public elementRef: ElementRef,\n public viewContainerRef: ViewContainerRef,\n public cdr: ChangeDetectorRef,\n public ngZone: NgZone,\n public resizeRef: ResizeRef,\n public eventDispatcher: TableCellEventDispatcher,\n @Inject(DOCUMENT) public document: any,\n public resizeNotifier: ColumnResizeNotifierSource\n ) {}\n\n ngAfterViewInit() {\n this._listenForMouseEvents();\n }\n\n private _listenForMouseEvents() {\n this.ngZone.runOutsideAngular(() => {\n const takeUntilDestroyed = takeUntil<MouseEvent>(this.destroyed);\n fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mouseenter')\n .pipe(takeUntilDestroyed, mapTo(this.resizeRef.origin.nativeElement))\n .subscribe(cell => {\n this.eventDispatcher.tableCellHovered.next({ cell });\n this.resizeRef.updateSizeAndOffset();\n });\n\n fromEvent<MouseEvent>(this.elementRef.nativeElement, 'mousedown')\n .pipe(takeUntilDestroyed)\n .subscribe(mousedownEvent => {\n mousedownEvent.preventDefault();\n this._dragStarted(mousedownEvent);\n });\n });\n }\n\n private _dragStarted(mousedownEvent: MouseEvent) {\n if (mousedownEvent.button !== 0) {\n return;\n }\n const mouseup = fromEvent<MouseEvent>(this.document, 'mouseup');\n const mousemove = fromEvent<MouseEvent>(this.document, 'mousemove');\n const escape = fromEvent<KeyboardEvent>(this.document, 'keyup').pipe(filter((event: KeyboardEvent) => event.key === 'Escape'));\n\n const startX = mousedownEvent.clientX;\n const startY = mousedownEvent.clientY;\n\n const initialWidthSize = this._getOriginWidth();\n const initialHeightSize = this._getOriginHeight();\n const isXAxis = this._isXAxis();\n let overlayOffset = this._getOverlayOffset();\n let originOffset = this._getOriginOffset();\n let size = isXAxis ? initialWidthSize : initialHeightSize;\n this.updateResizeActive(true);\n this._notifyResizeStarted();\n\n mouseup.pipe(takeUntil(escape), takeUntil(this.destroyed)).subscribe(({ clientX, clientY }) => {\n this._notifyResizeEnded(size, isXAxis ? clientX !== startX : clientY !== startY);\n });\n\n escape.pipe(takeUntil(mouseup), takeUntil(this.destroyed)).subscribe(() => {\n this._notifyResizeEnded(size);\n });\n\n mousemove\n .pipe(\n map(({ clientX, clientY }) => {\n return {\n clientX,\n clientY\n };\n }),\n startWith({\n clientX: startX,\n clientY: startY\n }),\n distinctUntilChanged(),\n pairwise(),\n takeUntil(mouseup),\n takeUntil(escape),\n takeUntil(this.destroyed)\n )\n .subscribe(([prev, curr]) => {\n let deltaSize = isXAxis ? curr.clientX - prev.clientX : curr.clientY - prev.clientY;\n this.resizeNotifier.triggerResize.next({\n tableCell: this.resizeRef.origin.nativeElement,\n deltaSize,\n previousSize: size\n });\n });\n }\n\n protected updateResizeActive(active: boolean): void {\n this.eventDispatcher.overlayHandleActiveForCell.next(active ? { cell: this.resizeRef.origin.nativeElement! } : null);\n }\n\n private _isXAxis(): boolean {\n return this.resizeRef.direction === 'X';\n }\n\n private _getOriginHeight(): number {\n return this.resizeRef.origin.nativeElement!.offsetHeight;\n }\n\n private _getOriginWidth(): number {\n return this.resizeRef.origin.nativeElement!.offsetWidth;\n }\n\n private _getOriginOffset(): number {\n return this.resizeRef.origin.nativeElement!.offsetLeft;\n }\n\n private _getOverlayOffset(): number {\n return parseInt(this.resizeRef.overlayRef.overlayElement.style.left!, 10);\n }\n\n private _isLtr(): boolean {\n return true;\n }\n\n private _notifyResizeEnded(size: number, completedSuccessfully = false): void {\n this.updateResizeActive(false);\n\n this.ngZone.run(() => {\n const sizeMessage = { tableCell: this.resizeRef.origin.nativeElement };\n if (completedSuccessfully) {\n this.resizeNotifier.resizeCompleted.next(sizeMessage);\n } else {\n this.resizeNotifier.resizeCanceled.next(sizeMessage);\n }\n });\n }\n\n private _notifyResizeStarted(): void {\n this.ngZone.run(() => {\n const sizeMessage = { tableCell: this.resizeRef.origin.nativeElement };\n this.resizeNotifier.resizeStarted.next(sizeMessage);\n });\n }\n\n ngOnDestroy() {\n this.destroyed.next();\n this.destroyed.complete();\n }\n}\n","import { Editor } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { TableElement } from '../../../custom-types';\nimport { BASE_CELL_HEIGHT } from '../table.types';\n\n/**\n * 计算每一行的基础高度(不包含隐藏或者跨行的单元格)\n * @param editor\n * @param table\n * @returns\n */\nexport function getBaseHeightForRows(editor: Editor, table: TableElement) {\n const baseHeightForRows = table.children.map((row, index) => {\n const baseCells = row.children.filter(cell => !cell.hidden && (!cell.rowspan || cell.rowspan <= 1));\n if (baseCells.length > 0) {\n const cellDom = AngularEditor.toDOMNode(editor, baseCells[0]);\n return cellDom.offsetHeight;\n } else {\n return BASE_CELL_HEIGHT;\n }\n });\n return baseHeightForRows;\n}\n","import {\n Component,\n OnInit,\n ElementRef,\n OnDestroy,\n ChangeDetectorRef,\n NgZone,\n HostBinding,\n Renderer2,\n ViewContainerRef,\n AfterViewInit,\n Injector,\n ViewChild\n} from '@angular/core';\nimport { filter, map, take, takeUntil } from 'rxjs/operators';\nimport { Editor } from 'slate';\nimport { ELEMENT_TO_COMPONENT } from 'slate-angular';\nimport { SLA_TABLE_CELL_SELECTOR } from '../../../../constants/selector';\nimport { TheTableComponent } from '../table.component';\nimport { TablePosition } from '../../utils/table-position';\nimport { fromEvent, merge, Subject } from 'rxjs';\nimport { ColumnResizingStore } from '../../../../components/column-resize/resizing.store';\nimport { TableCellEventDispatcher } from '../../../../components/column-resize/event-dispatcher';\nimport { ColumnResizeNotifierSource, ColumnSizeAction } from '../../../../components/column-resize/column-resize-notifier';\nimport { ConnectedPosition, Overlay, OverlayRef, ScrollDispatcher } from '@angular/cdk/overlay';\nimport { ComponentPortal, PortalInjector } from '@angular/cdk/portal';\nimport { TheColumnResizeOverlayHandleComponent } from '../../../../components/column-resize/overlay-handle.component';\nimport { ResizeRef } from '../../../../components/column-resize/resize-ref';\nimport { coerceCssPixelValue } from '@angular/cdk/coercion';\nimport { coercePixelsFromCssValue, getElementHeight, getElementWidth, useElementStyle } from '../../../../utils/dom';\nimport { TheBaseElementComponent } from '../../../../interfaces/view-base';\nimport { BASE_FILL_HEIGHT, TableOptions } from '../../table.types';\nimport { TheEditor } from '../../../../interfaces/editor';\nimport { TableCellElement } from '../../../../custom-types';\nimport { getBaseHeightForRows } from '../../utils/get-base-height';\n\nconst OVERLAY_ACTIVE_CLASS = 'the-resizable-overlay-thumb-active';\nconst OVERLAY_INIT_SIZE = 16;\nexport const POSITION_MAP: { [key: string]: ConnectedPosition } = {\n top: {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'center'\n },\n bottom: {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'center'\n },\n right: {\n originX: 'end',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'top'\n },\n left: {\n originX: 'start',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'top'\n }\n};\n\n@Component({\n selector: 'td[theTd]',\n templateUrl: './td.component.html',\n providers: [ColumnResizingStore]\n})\nexport class TheTdComponent extends TheBaseElementComponent<TableCellElement, Editor> implements OnInit, AfterViewInit, OnDestroy {\n destroy$: Subject<any> = new Subject();\n public tablePosition: TablePosition;\n public tableComponent: TheTableComponent;\n protected overlayRef?: OverlayRef;\n public hoverdDirection: 'left' | 'right' | 'top' | 'bottom';\n public tableOptions: TableOptions = new TableOptions();\n public cellInnerMinHeight: number = null;\n\n get tableStore() {\n return this.tableComponent.tableStore;\n }\n\n get tableService() {\n return this.tableComponent.tableService;\n }\n\n get eventDispatcher() {\n return this.tableComponent.eventDispatcher;\n }\n\n get resizeNotifier() {\n return this.tableComponent.resizeNotifier;\n }\n\n get theTableWrapperWidth() {\n return this.tableComponent.theTableWrapperWidth;\n }\n\n get tableElement(): HTMLElement {\n return this.tableComponent.theTableElement.nativeElement;\n }\n\n get scrollableElementTop() {\n const cdkscrollable: HTMLElement = this.elementRef.nativeElement.closest('[cdkscrollable]');\n if (cdkscrollable) {\n return cdkscrollable.getBoundingClientRect().top;\n }\n return -window.scrollY;\n }\n\n get scrollableElementLeft() {\n return this.tableComponent.tableWrapper.nativeElement.scrollLeft;\n }\n\n get isXAxisHover() {\n return ['left', 'right'].includes(this.hoverdDirection);\n }\n\n public dotWrapperHovered: boolean;\n\n public resizeRef: ResizeRef;\n\n @HostBinding('style.backgroundColor') backgroundColor: string;\n\n @HostBinding('attr.colspan') colspan: number;\n\n @HostBinding('attr.rowspan') rowspan: number;\n\n @HostBinding('style.display') display: string;\n\n @ViewChild('cellInner', { static: true })\n cellInner: ElementRef;\n\n get cellInnerNativeElement(): HTMLElement {\n return this.cellInner.nativeElement;\n }\n\n onContextChange() {\n super.onContextChange();\n if (this.initialized) {\n this.useState();\n }\n }\n\n constructor(\n public elementRef: ElementRef,\n public cdr: ChangeDetectorRef,\n private renderer: Renderer2,\n private viewContainerRef: ViewContainerRef,\n private ngZone: NgZone,\n public injector: Injector,\n public overlay: Overlay,\n public resizingStore: ColumnResizingStore,\n public scrollDispatcher: ScrollDispatcher\n ) {\n super(elementRef, cdr);\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.useBackground();\n this.useSpan();\n this.useDisplay();\n this.useFocus();\n useElementStyle(this.elementRef.nativeElement, this.element);\n }\n\n ngAfterViewInit() {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => {\n this.useTablePosition();\n this.getInjectionService();\n this.subscribeSelectedCellsChange();\n this.subscribeDangerousCellsChange();\n this.subscribeTableChange();\n this.listenCellSelectEvents();\n this.listenForCellHoverEvents();\n this.listenForResizeEvents();\n // const height = this.calculateCellInnerMinHeight();\n // this.useMinHeight(height);\n });\n }\n\n getInjectionService() {\n this.tableComponent = ELEMENT_TO_COMPONENT.get(this.tablePosition.table) as TheTableComponent;\n }\n\n subscribeSelectedCellsChange() {\n this.tableStore\n .selectedCellsChange()\n .pipe(takeUntil(this.destroy$))\n .subscribe(x => {\n if (x.length === 0) {\n this.renderer.removeClass(this.elementRef.nativeElement, 'selected-cell');\n } else {\n const isSelectedCell = x.some(\n ({ row, col }) => row === this.tablePosition.getRowIndex() && col === this.tablePosition.getColumnIndex()\n );\n if (isSelectedCell) {\n this.renderer.addClass(this.elementRef.nativeElement, 'selected-cell');\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'selected-cell');\n }\n }\n this.cdr.detectChanges();\n });\n }\n\n subscribeDangerousCellsChange() {\n this.tableStore\n .dangerousCellsChange()\n .pipe(takeUntil(this.destroy$))\n .subscribe(x => {\n if (x.length === 0) {\n this.renderer.removeClass(this.elementRef.nativeElement, 'dangerous-cell');\n } else {\n const isSelectedCell = x.some(\n ({ row, col }) => row === this.tablePosition.getRowIndex() && col === this.tablePosition.getColumnIndex()\n );\n if (isSelectedCell) {\n this.renderer.addClass(this.elementRef.nativeElement, 'dangerous-cell');\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'dangerous-cell');\n }\n }\n this.cdr.detectChanges();\n });\n }\n\n subscribeTableChange() {\n this.tableStore\n .tableChange()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.useTablePosition();\n // const height = this.calculateCellInnerMinHeight();\n // this.useMinHeight(height);\n });\n }\n\n useState() {\n this.useBackground();\n this.useSpan();\n this.useDisplay();\n this.useFocus();\n useElementStyle(this.elementRef.nativeElement, this.element);\n }\n\n useTablePosition() {\n const opts = new TableOptions();\n const path = TheEditor.findPath(this.editor, this.element);\n // must be path of cell's children\n this.tablePosition = TablePosition.create(opts, this.editor, path.concat(0));\n }\n\n useBackground() {\n if (this.element.backgroundColor !== this.backgroundColor) {\n this.backgroundColor = this.element.backgroundColor as string;\n }\n }\n\n useSpan() {\n this.colspan = undefined;\n this.rowspan = undefined;\n if (this.element.colspan) {\n this.colspan = this.element.colspan;\n }\n if (this.element.rowspan) {\n this.rowspan = this.element.rowspan;\n }\n }\n\n calculateCellInnerMinHeight() {\n if (this.element.colspan) {\n const rowIndex = this.tablePosition.getRowIndex();\n if (this.calculateCombinedRows().length > 0) {\n let height = 0;\n const heights = getBaseHeightForRows(this.editor, this.tableComponent.element);\n for (let index = rowIndex; index < this.element.rowspan + rowIndex; index++) {\n height += heights[index];\n }\n height = height - BASE_FILL_HEIGHT;\n return height;\n }\n }\n return undefined;\n }\n\n calculateCombinedRows() {\n const rowIndex = this.tablePosition.getRowIndex();\n const combinedRows: number[] = [];\n const table = this.tablePosition.table;\n table.children.forEach((row, _rowIndex) => {\n if (_rowIndex > rowIndex && _rowIndex <= rowIndex + this.element.rowspan) {\n const isCombined = row.children.every(cell => cell.hidden || cell.rowspan > 1);\n if (isCombined) {\n combinedRows.push(_rowIndex);\n }\n }\n });\n return combinedRows;\n }\n\n useDisplay() {\n this.display = this.element.hidden ? 'none' : '';\n }\n\n useFocus() {\n if (this.isCollapsed) {\n this.renderer.addClass(this.elementRef.nativeElement, 'focused-cell');\n } else {\n this.renderer.removeClass(this.elementRef.nativeElement, 'focused-cell');\n }\n }\n\n useMinHeight(minHeight: number) {\n if (this.cellInnerMinHeight === minHeight) {\n return;\n }\n this.cellInnerMinHeight = minHeight;\n // if (this.cellInnerMinHeight) {\n // this.cellInnerNativeElement.style.minHeight = `${this.cellInnerMinHeight}px`;\n // } else {\n // this.cellInnerNativeElement.style.removeProperty('min-height');\n // }\n }\n\n //#region cell-select\n listenCellSelectEvents() {\n this.ngZone.runOutsideAngular(() => {\n const element = this.elementRef.nativeElement!;\n fromEvent<MouseEvent>(element, 'mousedown')\n .pipe(\n takeUntil(this.destroy$),\n filter((e: MouseEvent) => e.button !== 2),\n map(event => {\n const cell = (event.target as HTMLElement).closest(SLA_TABLE_CELL_SELECTOR);\n return cell;\n }),\n filter(cell => !!cell)\n )\n .subscribe((cell: HTMLTableCellElement) => {\n this.tableStore.selectCellStart(cell, this.editor);\n if (this.overlayRef) {\n this.overlayRef.detach();\n }\n this.listenCellMouseEvents();\n });\n });\n }\n\n listenCellMouseEvents() {\n const mouseoverObservable = fromEvent<MouseEvent>(document, 'mouseover')\n .pipe(\n takeUntil(this.destroy$),\n map(event => {\n event.preventDefault();\n const cell = (event.target as HTMLElement).closest(SLA_TABLE_CELL_SELECTOR);\n return cell;\n }),\n filter((cell: HTMLTableCellElement) => !!cell)\n )\n .subscribe((cell: HTMLTableCellElement) => {\n this.tableStore.selectCellOngoing(cell, this.editor);\n });\n fromEvent<MouseEvent>(document, 'mouseup')\n .pipe(take(1))\n .subscribe(() => {\n this.tableStore.selectCellEnd(this.editor);\n if (this.tableStore.isCellSelecting) {\n this.ngZone.run(() => {\n this.tableComponent.tableService.openToolbar(this.tableStore.focusCellElement);\n });\n }\n mouseoverObservable.unsubscribe();\n });\n }\n\n //#region resizable\n private listenForCellHoverEvents() {\n const element = this.elementRef.nativeElement!;\n this.eventDispatcher\n .resizeOverlayVisibleForTableCell(element)\n .pipe(takeUntil(this.destroy$))\n .subscribe(hoveredCellInfo => {\n if (hoveredCellInfo && hoveredCellInfo.position) {\n this.hoverdDirection = hoveredCellInfo.position;\n }\n // first column should not have left resize handle\n if (this.isXAxisHover && this.hoverdDirection === 'left' && this.tablePosition.getColumnIndex() === 0) {\n return;\n }\n if (!this.isXAxisHover && this.hoverdDirection === 'bottom' && this.tablePosition.getRowIndex() === 0) {\n return;\n }\n if (hoveredCellInfo) {\n if (!this.overlayRef) {\n this.overlayRef = this._createOverlayForHandle();\n this._showHandleOverlay();\n } else {\n this.resizeRef.setDirection(this.isXAxisHover ? 'X' : 'Y');\n this.updateOverlayHandleSizeAndOffset();\n }\n } else if (this.overlayRef) {\n this.overlayRef.detach();\n this.overlayRef = null;\n }\n });\n }\n\n private listenForResizeEvents() {\n const takeUntilDestroyed = takeUntil<ColumnSizeAction>(this.destroy$);\n\n merge(this.resizeNotifier.resizeCanceled, this.resizeNotifier.triggerResize)\n .pipe(\n takeUntilDestroyed,\n filter(columnSize => columnSize.tableCell === this.elementRef.nativeElement)\n )\n .subscribe(({ deltaSize, previousSize, completeImmediately }) => {\n this.elementRef.nativeElement!.classList.add(OVERLAY_ACTIVE_CLASS);\n this.applySize(deltaSize, previousSize);\n if (completeImmediately) {\n this._completeResizeOperation();\n }\n });\n\n merge(this.resizeNotifier.resizeCanceled, this.resizeNotifier.resizeCompleted)\n .pipe(takeUntilDestroyed)\n .subscribe(columnSize => {\n this._cleanUpAfterResize(columnSize);\n this.resizingStore.cleanResizing();\n });\n }\n\n private _completeResizeOperation(): void {\n this.ngZone.run(() => {\n this.resizeNotifier.resizeCompleted.next({\n tableCell: this.elementRef.nativeElement\n });\n });\n }\n\n private _cleanUpAfterResize(columnSize: ColumnSizeAction): void {\n this.elementRef.nativeElement!.classList.remove(OVERLAY_ACTIVE_CLASS);\n }\n\n private _createHandlePortal(): ComponentPortal<TheColumnResizeOverlayHandleComponent> {\n const customTokens = new WeakMap();\n this.resizeRef = new ResizeRef(\n this.elementRef,\n this.overlayRef!,\n this.tableOptions.minWidthPx,\n this.tableOptions.maxWidthPx,\n this.tableOptions.minHeightPx,\n this.tableOptions.maxHeightPx,\n () => {\n this.updateOverlayHandleSizeAndOffset();\n }\n );\n this.resizeRef.setDirection(this.isXAxisHover ? 'X' : 'Y');\n customTokens.set(ResizeRef, this.resizeRef);\n customTokens.set(TableCellEventDispatcher, this.eventDispatcher);\n customTokens.set(ColumnResizeNotifierSource, this.resizeNotifier);\n const injector = new PortalInjector(this.injector, customTokens);\n return new ComponentPortal(TheColumnResizeOverlayHandleComponent, this.viewContainerRef, injector);\n }\n\n private _showHandleOverlay(): void {\n this.overlayRef!.attach(this._createHandlePortal()).changeDetectorRef.markForCheck();\n this.updateOverlayHandleSizeAndOffset();\n }\n\n private updateOverlayHandleSizeAndOffset() {\n this.overlayRef?.removePanelClass(['the-column-resize-handle-panel', 'the-row-resize-handle-panel']);\n this.isXAxisHover ? this.updateOverlayHandleColumnSize() : this.updateOverlayHandleRowSize();\n this.overlayRef?.updatePositionStrategy(this.createPositionStrategy());\n }\n\n private updateOverlayHandleColumnSize() {\n let height = 0;\n const tableElementTop = this.tableElement.getBoundingClientRect().top;\n if (tableElementTop < this.scrollableElementTop) {\n height = this.tableElement.offsetHeight - (this.scrollableElementTop - tableElementTop);\n } else {\n height = this.tableElement.offsetHeight;\n }\n this.overlayRef!.addPanelClass('the-column-resize-handle-panel');\n this.overlayRef!.updateSize({ height, width: OVERLAY_INIT_SIZE });\n }\n\n private updateOverlayHandleRowSize() {\n const width = this.tableComponent.tableWrapper.nativeElement.offsetWidth + 11;\n this.overlayRef!.addPanelClass('the-row-resize-handle-panel');\n this.overlayRef!.updateSize({ width, height: OVERLAY_INIT_SIZE });\n }\n\n private applySize(deltaSize: number, previousSize?: number): void {\n // update col width and table width\n if (this.isXAxisHover) {\n this.applyColumnSize(deltaSize);\n } else {\n this.applyRowSize(deltaSize);\n }\n this.tableComponent.useRowControls();\n this.tableComponent.detectChanges();\n this.updateOverlayHandleSizeAndOffset();\n }\n\n private _createOverlayForHandle(): OverlayRef {\n // Use of overlays allows us to properly capture click events spanning parts\n // of two table cells and is also useful for displaying a resize thumb\n // over both cells and extending it down the table as needed.\n const overlayOption = this.isXAxisHover\n ? {\n width: OVERLAY_INIT_SIZE + 'px',\n panelClass: 'the-column-resize-handle-panel'\n }\n : {\n height: OVERLAY_INIT_SIZE + 'px',\n panelClass: 'the-row-resize-handle-panel'\n };\n return this.overlay.create({\n // Always position the overlay based on left-indexed coordinates.\n disposeOnNavigation: true,\n positionStrategy: this.createPositionStrategy(),\n ...overlayOption\n });\n }\n\n private createPositionStrategy() {\n let offsetY = this.calculateOverlayHandleOffsetY();\n let offsetX = this.calculateOverlayHandleOffsetX();\n const position: ConnectedPosition = this.isXAxisHover\n ? { ...POSITION_MAP[this.hoverdDirection], offsetY }\n : { ...POSITION_MAP[this.hoverdDirection], offsetX };\n return this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef.nativeElement)\n .withFlexibleDimensions(false)\n .withGrowAfterOpen(false)\n .withPush(false)\n .withPositions([position]);\n }\n\n private calculateOverlayHandleOffsetY() {\n const tableElementTop = this.tableElement.getBoundingClientRect().top;\n if (tableElementTop < this.scrollableElementTop) {\n return this.scrollableElementTop - this.elementRef.nativeElement.getBoundingClientRect().top;\n } else {\n return tableElementTop - this.elementRef.nativeElement.getBoundingClientRect().top;\n }\n }\n\n private calculateOverlayHandleOffsetX() {\n const cellElementLeft = this.elementRef.nativeElement.getBoundingClientRect().left;\n const tableElementLeft = this.tableElement.getBoundingClientRect().left;\n return tableElementLeft - cellElementLeft + this.scrollableElementLeft;\n }\n\n applyColumnSize(deltaX: number): void {\n const cols = [...this.tableElement.querySelector('colgroup').children] as HTMLTableColElement[];\n this.resizingStore.storeTableWidth(cols);\n this.resizingStore.initDirection(deltaX);\n let cellIndex = this.elementRef.nativeElement.cellIndex;\n if (this.hoverdDirection === 'left') {\n cellIndex = cellIndex - 1;\n }\n const colspan = (this.elementRef.nativeElement as HTMLElement).getAttribute('colspan') || 1;\n cellIndex = cellIndex + (colspan as number) / 1 - 1;\n if (deltaX > 0) {\n this.applyRightCols(cols, deltaX, cellIndex + 1);\n if (this.resizingStore.isRestoring(deltaX)) {\n deltaX = this.resizingStore.restoreLeftCols(deltaX);\n }\n if (deltaX > 0) {\n cols[cellIndex].style.width = coerceCssPixelValue(coercePixelsFromCssValue(cols[cellIndex].style.width) + deltaX);\n }\n } else {\n const nextCol = cols[cellIndex + 1];\n if (nextCol) {\n let leftDeltaX = this.resizingStore.getScrollWidth(deltaX);\n const _delta = this.applyLeftCols(cols, deltaX, cellIndex);\n if (_delta === deltaX) {\n // can not resize\n return;\n }\n deltaX = deltaX - _delta;\n if (this.resizingStore.isRestoring(deltaX)) {\n if (leftDeltaX < 0) {\n leftDeltaX = this.resizingStore.restoreRightCols(leftDeltaX);\n }\n if (leftDeltaX < 0) {\n nextCol.style.width = coerceCssPixelValue(getElementWidth(nextCol) + Math.abs(leftDeltaX));\n }\n } else {\n nextCol.style.width = coerceCssPixelValue(getElementWidth(nextCol) + Math.abs(deltaX));\n }\n } else {\n const scrollWidth = getElementWidth(this.tableElement) - this.theTableWrapperWidth;\n if (scrollWidth > 0) {\n if (scrollWidth > Math.abs(deltaX)) {\n this.applyLeftCols(cols, deltaX, cellIndex);\n } else {\n this.applyLeftCols(cols, -scrollWidth, cellIndex);\n }\n }\n }\n }\n }\n\n applyLeftCols(cols: HTMLTableColElement[], deltaX: number, colIndex: number): number {\n while (deltaX < 0 && cols[colIndex]) {\n const currentWidth = getElementWidth(cols[colIndex]);\n if (currentWidth > this.tableOptions.minWidthPx) {\n if (this.resizingStore.isResizing(deltaX)) {\n this.resizingStore.storeResizingCol(cols[colIndex]);\n }\n if (currentWidth > this.tableOptions.minWidthPx + Math.abs(deltaX)) {\n cols[colIndex].style.width = coerceCssPixelValue(currentWidth - Math.abs(deltaX));\n deltaX = 0;\n } else {\n deltaX += currentWidth - this.tableOptions.minWidthPx;\n cols[colIndex].style.width = coerceCssPixelValue(this.tableOptions.minWidthPx);\n }\n }\n colIndex--;\n }\n return deltaX;\n }\n\n applyRightCols(cols: HTMLTableColElement[], deltaX: number, colIndex: number) {\n while (deltaX > 0 && cols[colIndex]) {\n const currentWidth = getElementWidth(cols[colIndex]);\n if (currentWidth > this.tableOptions.minWidthPx) {\n if (this.resizingStore.isResizing(deltaX)) {\n this.resizingStore.storeResizingCol(cols[colIndex]);\n }\n if (currentWidth > deltaX + this.tableOptions.minWidthPx) {\n cols[colIndex].style.width = coerceCssPixelValue(currentWidth - deltaX);\n deltaX = 0;\n } else {\n deltaX -= currentWidth - this.tableOptions.minWidthPx;\n cols[colIndex].style.width = coerceCssPixelValue(this.tableOptions.minWidthPx);\n }\n }\n colIndex++;\n }\n return deltaX;\n }\n\n applyRowSize(deltaY: number): void {\n const rows = [...this.tableElement.querySelector('tbody').children] as HTMLTableRowElement[];\n this.resizingStore.storeTableHeight(rows);\n this.resizingStore.initDirection(deltaY, this.isXAxisHover);\n let rowIndex = this.elementRef.nativeElement.parentElement.rowIndex - 1; // subtract thead's tr\n\n if (this.hoverdDirection === 'bottom') {\n rowIndex = rowIndex - 1;\n } else {\n const cellRowpsan = (this.elementRef.nativeElement as HTMLTableCellElement).rowSpan;\n rowIndex = rowIndex + cellRowpsan - 1;\n }\n if (deltaY > 0) {\n this.applyBottomRows(rows, deltaY, rowIndex + 1);\n if (this.resizingStore.isRestoring(deltaY, this.isXAxisHover)) {\n deltaY = this.resizingStore.restoreTopRows(deltaY);\n }\n if (deltaY > 0) {\n let initHeight = getElementHeight(rows[rowIndex]);\n rows[rowIndex].style.height = coerceCssPixelValue(initHeight + deltaY);\n }\n } else {\n let addDeltaY = this.resizingStore.getAddTableHeight(deltaY);\n const _delta = this.applyTopRows(rows, deltaY, rowIndex);\n if (_delta === deltaY) {\n // can not resize\n return;\n }\n deltaY = deltaY - _delta;\n if (this.resizingStore.isRestoring(deltaY, this.isXAxisHover)) {\n if (addDeltaY < 0) {\n deltaY = this.resizingStore.restoreBottomRows(deltaY);\n }\n }\n }\n }\n\n applyTopRows(rows: HTMLTableRowElement[], deltaY: number, rowIndex: number): number {\n while (deltaY < 0 && rows[rowIndex]) {\n const rowOffsetHeight = getElementHeight(rows[rowIndex]);\n const rowStyleHeight = coercePixelsFromCssValue(rows[rowIndex].style.height);\n if (rowOffsetHeight > this.tableOptions.minHeightPx && rowOffsetHeight === rowStyleHeight) {\n if (this.resizingStore.isResizing(deltaY, this.isXAxisHover)) {\n this.resizingStore.storeResizingRow(rows[rowIndex]);\n }\n if (rowOffsetHeight > this.tableOptions.minHeightPx + Math.abs(deltaY)) {\n rows[rowIndex].style.height = coerceCssPixelValue(rowOffsetHeight - Math.abs(deltaY));\n deltaY = 0;\n } else {\n deltaY += rowOffsetHeight - this.tableOptions.minHeightPx;\n rows[rowIndex].style.height = coerceCssPixelValue(this.tableOptions.minHeightPx);\n }\n }\n rowIndex--;\n }\n return deltaY;\n }\n\n applyBottomRows(rows: HTMLTableRowElement[], deltaY: number, rowIndex: number): number {\n while (rows[rowIndex] && deltaY > 0) {\n const rowOffsetHeight = getElementHeight(rows[rowIndex]);\n const rowStyleHeight = coercePixelsFromCssValue(rows[rowIndex].style.height);\n if (rowOffsetHeight > this.tableOptions.minHeightPx && rowOffsetHeight === rowStyleHeight) {\n if (this.resizingStore.isResizing(deltaY, this.isXAxisHover)) {\n this.resizingStore.storeResizingRow(rows[rowIndex]);\n }\n if (rowOffsetHeight > deltaY + this.tableOptions.minHeightPx) {\n rows[rowIndex].style.height = coerceCssPixelValue(rowOffsetHeight - deltaY);\n deltaY = 0;\n } else {\n deltaY -= rowOffsetHeight - this.tableOptions.minHeightPx;\n rows[rowIndex].style.height = coerceCssPixelValue(this.tableOptions.minHeightPx);\n }\n }\n rowIndex++;\n }\n return deltaY;\n }\n\n //#region\n\n ngOnDestroy() {\n super.ngOnDestroy();\n if (this.overlayRef) {\n this.overlayRef.detach();\n }\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","<div #cellInner>\n <slate-children [children]=\"children\" [context]=\"childrenContext\" [viewContext]=\"viewContext\"></slate-children>\n</div>\n","import { Transforms, Point, Node, Range, Editor, NodeEntry, Element } from 'slate';\nimport { AngularEditor, ELEMENT_TO_COMPONENT, hotkeys, getPlainText } from 'slate-angular';\nimport { TableOptions } from './table.types';\nimport { isRangeInTable, isSelectionInTable, TablePosition } from './utils';\nimport { TheBlockElement, TheEditor } from '../../interfaces';\nimport { ElementKinds } from '../../constants/node-types';\nimport { TableCellElement, TableElement } from '../../custom-types';\nimport { TheTableComponent } from './components/table.component';\nimport { TableEditor } from './table.editor';\nimport { clearTableNode } from './transforms/clear-table-node';\nimport { isVirtualKey } from './utils/is-virtual-key';\nimport { insertColumnAtRow } from './transforms/insert-column';\nimport { calculateAnchorPositionInCell } from './utils/calc-anchor-position';\nimport { CLIPBOARD_FORMAT_KEY, ELEMENT_UNIQUE_ID } from '../../constants/default';\nimport { calcOriginSpan } from './utils/calc-span';\nimport { resetTableCell } from './utils/split-cell';\nimport { removeColumns } from './utils/remove-columns';\nimport { addColumns } from './utils/add-columns';\nimport { getSelectCellNode } from './utils/get-select-cell-node';\nimport { TheTableRowComponent } from './components/row/row.component';\nimport { TheTdComponent } from './components/td/td.component';\nimport { extractFragment } from '../../utils/fragment';\nimport * as TheQueries from '../../queries';\n\nexport const withTable = (editor: Editor) => {\n const {\n deleteBackward,\n deleteForward,\n onKeydown,\n setFragmentData,\n insertData,\n normalizeNode,\n isBlockCard,\n renderElement,\n deleteCutData,\n isContainer\n } = editor;\n\n editor.deleteBackward = unit => {\n const opts = new TableOptions();\n if (!isSelectionInTable(opts, editor)) {\n deleteBackward(unit);\n return;\n }\n const { selection } = editor;\n\n const [, startBlockPath] = Editor.above<Element>(editor, {\n match: n => Editor.isBlock(editor, n)\n });\n const startPosition = TablePosition.create(opts, editor, selection.anchor.path);\n if (\n startBlockPath.length <= startPosition.cellEntry[1].length + 1 &&\n startBlockPath.pop() === 0 &&\n selection.anchor.offset === 0 &&\n TheQueries.isStart(editor, selection.anchor, startBlockPath) &&\n !Editor.isVoid(editor, TheQueries.anchorBlock(editor))\n ) {\n return;\n }\n deleteBackward(unit);\n };\n\n editor.deleteForward = unit => {\n const opts = new TableOptions();\n const afterPoint = Editor.after(editor, editor.selection);\n if (afterPoint && isRangeInTable(opts, editor, { anchor: afterPoint, focus: afterPoint })) {\n const beforePosition = TablePosition.create(opts, editor, editor.selection.anchor.path);\n const afterPosition = TablePosition.create(opts, editor, afterPoint.path);\n if (beforePosition.cell && beforePosition.cell !== afterPosition.cell) {\n return;\n }\n }\n deleteForward(unit);\n };\n\n editor.onKeydown = (event: KeyboardEvent) => {\n const opts = new TableOptions();\n const isMoveUp = hotkeys.isMoveUp(event);\n const isMoveDown = hotkeys.isMoveDown(event);\n const isMoveBackward = hotkeys.isMoveBackward(event);\n const isMoveForward = hotkeys.isMoveForward(event);\n const { selection } = editor;\n if (!selection || !selection.anchor || !selection.focus) {\n onKeydown(event);\n return;\n }\n const startPosition = TablePosition.create(opts, editor, selection.anchor.path);\n const endPosition = TablePosition.create(opts, editor, selection.focus.path);\n const isCollapsed = Range.isCollapsed(selection);\n if (startPosition && endPosition && endPosition.isInTable()) {\n // for keyboard up and down key in the table\n if (isMoveUp || isMoveDown) {\n const cellPath = endPosition.cellEntry[1];\n const startPath = Editor.start(editor, cellPath).path;\n const endPath = Editor.end(editor, cellPath).path;\n const { isFirstLine, isLastLine } = calculateAnchorPositionInCell(editor);\n startPath.pop();\n endPath.pop();\n\n if ((TheQueries.anchorBlockEntry(editor)[1].toString() !== startPath.toString() || !isFirstLine) && isMoveUp) {\n onKeydown(event);\n return;\n }\n\n if ((TheQueries.anchorBlockEntry(editor)[1].toString() !== endPath.toString() || !isLastLine) && isMoveDown) {\n onKeydown(event);\n return;\n }\n\n event.preventDefault();\n let at: Point;\n if (isMoveUp) {\n const aboveRow = startPosition.table.children[startPosition.getRowIndex() - 1];\n const aboveCell = aboveRow && aboveRow.children[startPosition.getColumnIndex()];\n if (aboveCell) {\n if (aboveCell.hidden) {\n const originSpan = calcOriginSpan(\n endPosition.table,\n startPosition.getRowIndex() - 1,\n startPosition.getColumnIndex()\n );\n if (originSpan) {\n at = Editor.start(editor, TheEditor.findPath(editor, originSpan));\n }\n } else {\n at = Editor.start(editor, TheEditor.findPath(editor, aboveCell));\n }\n } else {\n const previousNodeEntry = Editor.previous(editor, { at: startPosition.tableEntry[1] });\n const beforePoint = Editor.before(editor, startPosition.tableEntry[1]);\n Editor.next(editor, { at: startPosition.tableEntry[1] });\n\n if (previousNodeEntry) {\n at = Editor.end(editor, previousNodeEntry[1]);\n }\n\n if (!previousNodeEntry && beforePoint) {\n at = Editor.end(editor, beforePoint.path);\n }\n\n if (!previousNodeEntry && !beforePoint) {\n AngularEditor.moveBlockCard(editor, startPosition.tableEntry[0], { direction: 'left' });\n return;\n }\n }\n Transforms.select(editor, at);\n } else {\n let belowRowIndex = startPosition.getRowIndex() + 1;\n if (startPosition.cell.rowspan > 1) {\n belowRowIndex = startPosition.getRowIndex() + startPosition.cell.rowspan;\n }\n const belowRow = startPosition.table.children[belowRowIndex];\n const belowCell = belowRow && belowRow.children[startPosition.getColumnIndex()];\n if (belowCell) {\n if (belowCell.hidden) {\n const originSpan = calcOriginSpan(endPosition.table, belowRowIndex, startPosition.getColumnIndex());\n if (originSpan) {\n at = Editor.start(editor, TheEditor.findPath(editor, originSpan));\n }\n } else {\n at = Editor.start(editor, TheEditor.findPath(editor, belowCell));\n }\n } else {\n const nextNodeEntry = Editor.next(editor, { at: startPosition.tableEntry[1] });\n const movePath = nextNodeEntry ? nextNodeEntry[1] : Editor.after(editor, startPosition.tableEntry[1]).path;\n at = Editor.start(editor, movePath);\n }\n Transforms.select(editor, at);\n }\n return;\n }\n\n if (isMoveBackward) {\n const beforePoint = Editor.before(editor, editor.selection);\n const beforePosition = beforePoint && TablePosition.create(opts, editor, beforePoint.path);\n if (beforePosition && beforePosition.cell && beforePosition.cell.hidden) {\n const at = Editor.end(editor, TheEditor.findPath(editor, beforePosition.findPrevious()));\n Transforms.select(editor, at);\n event.preventDefault();\n }\n }\n\n if (isMoveForward) {\n const afterPoint = Editor.after(editor, editor.selection);\n const afterPosition = afterPoint && TablePosition.create(opts, editor, afterPoint.path);\n if (afterPosition.cell && afterPosition.cell.hidden) {\n const at = Editor.start(editor, TheEditor.findPath(editor, afterPosition.findNext()));\n Transforms.select(editor, at);\n event.preventDefault();\n }\n }\n\n // Prevent deleting cells in the table\n if (!isCollapsed && !startPosition.isInTable() && !isVirtualKey(event)) {\n event.preventDefault();\n let tableOutPath: Point;\n Editor.withoutNormalizing(editor, () => {\n if (Range.isForward(selection)) {\n tableOutPath = Editor.end(editor, [selection.focus.path[0] - 1]);\n clearTableNode(opts, editor, true);\n } else {\n tableOutPath = Editor.start(editor, [selection.focus.path[0] + 1]);\n clearTableNode(opts, editor);\n }\n const tableOutRange = Editor.range(editor, selection.anchor, tableOutPath);\n Transforms.delete(editor, { at: tableOutRange });\n });\n // new range\n const cellRange = Editor.range(editor, editor.selection.focus.path.slice(0, 3));\n const focusRange = Range.intersection(editor.selection, cellRange);\n Transforms.select(editor, focusRange);\n Editor.deleteFragment(editor);\n return;\n }\n }\n onKeydown(event);\n return;\n };\n\n editor.setFragmentData = unit => {\n const opts = new TableOptions();\n if (!isSelectionInTable(opts, editor)) {\n setFragmentData(unit);\n return;\n }\n const { selection } = editor;\n const element = TablePosition.create(opts, editor, selection.anchor.path);\n const tableComponent = ELEMENT_TO_COMPONENT.get(element.table) as TheTableComponent;\n const cells = tableComponent.tableStore.selectedCells;\n const tableContent = {};\n let contents: DocumentFragment;\n let cellNode: TableCellElement;\n let fragment:\n | TheBlockElement[]\n | {\n type: ElementKinds;\n children: {\n type: ElementKinds;\n children: TheBlockElement[];\n }[];\n };\n if (cells.length > 0) {\n const selectNodes = getSelectCellNode(editor, cells);\n const selectedColumnsIndex = tableComponent.tableStore.selectedColumnsIndex || [];\n const selectedRowsIndex = tableComponent.tableStore.selectedRowsIndex || [];\n for (const cell of cells) {\n const { row, col } = cell;\n const cellPath = [...element.tableEntry[1], row, col];\n cellNode = Node.get(editor, cellPath) as TableCellElement;\n const cellRange = Editor.range(editor, cellPath);\n const domRange = AngularEditor.toDOMRange(editor, cellRange);\n if (!contents) {\n contents = domRange.cloneContents();\n } else {\n contents.append(domRange.cloneContents());\n }\n\n if (\n (selectedColumnsIndex.length === 1 && cellNode.colspan > 1) ||\n (selectedRowsIndex.length === 1 && cellNode.rowspan > 1)\n ) {\n cellNode = {\n ...cellNode,\n colspan: selectedColumnsIndex.length === 1 ? null : cellNode.colspan,\n rowspan: selectedRowsIndex.length === 1 ? null : cellNode.rowspan\n };\n }\n\n if (cellNode.hidden) {\n const origin = calcOriginSpan(element.table, row, col);\n const selectedOrigin = origin && selectNodes.filter(item => (item.node as Element).key === (origin as Element).key);\n if (!selectedOrigin || !selectedOrigin.length) {\n cellNode = {\n ...cellNode,\n hidden: null\n };\n }\n }\n\n if (!tableContent[row]) {\n tableContent[row] = [];\n }\n tableContent[row].push(cellNode);\n }\n const tableFragment = [\n {\n type: ElementKinds.table,\n children: Object.values(tableContent).map((item: Node) => {\n return {\n type: ElementKinds.tableRow,\n children: item\n };\n })\n }\n ];\n fragment = tableFragment as unknown as TheBlockElement[];\n const stringObj = JSON.stringify(fragment);\n const encoded = window.btoa(encodeURIComponent(stringObj));\n unit.setData(`application/${CLIPBOARD_FORMAT_KEY}`, encoded);\n const div = document.createElement('div');\n div.appendChild(contents);\n div.setAttribute('hidden', 'true');\n document.body.appendChild(div);\n unit.setData('text/html', div.innerHTML);\n unit.setData('text/plain', getPlainText(div));\n document.body.removeChild(div);\n return;\n }\n setFragmentData(unit);\n };\n\n editor.insertData = data => {\n const fragment = extractFragment(data);\n if (fragment) {\n const opts = new TableOptions();\n const { selection } = editor;\n if (\n isSelectionInTable(opts, editor) &&\n fragment.length === 1 &&\n Element.isElement(fragment[0]) &&\n fragment[0].type === ElementKinds.table\n ) {\n const tablePosition = TablePosition.create(opts, editor, selection.anchor.path);\n const clipboardTable = fragment[0].children as Node[];\n const clipboardRow = (clipboardTable[0] as Element).children;\n const selectRowIndex = tablePosition.getRowIndex();\n const selectColIndex = tablePosition.getColumnIndex();\n const lastRowIndex = selectRowIndex + clipboardTable.length - 1;\n const lastColIndex = selectColIndex + clipboardRow.length - 1;\n\n for (let i = selectRowIndex; i <= lastRowIndex; i++) {\n for (let j = selectColIndex; j <= lastColIndex; j++) {\n const row = tablePosition.table.children[i];\n if (row && row.children[j]) {\n const originCell = calcOriginSpan(tablePosition.table, i, j);\n if (originCell && (originCell.colspan || originCell.rowspan)) {\n const path = TheEditor.findPath(editor, originCell).slice(-2);\n resetTableCell(editor, tablePosition.table, originCell, path[0], path[1]);\n }\n }\n }\n }\n\n Editor.withoutNormalizing(editor, () => {\n if (lastColIndex > tablePosition.getWidth() - 1) {\n const addColCount = lastColIndex - (tablePosition.getWidth() - 1);\n TableEditor.insertColumn(editor, addColCount, tablePosition.getWidth());\n }\n if (lastRowIndex > tablePosition.getHeight() - 1) {\n const addRowCount = lastRowIndex - (tablePosition.getHeight() - 1);\n TableEditor.insertRow(editor, addRowCount, tablePosition.getHeight());\n }\n clipboardTable.forEach((row: TableElement, i: number) => {\n row.children.forEach((col: Node, j: number) => {\n const at = [...tablePosition.tableEntry[1], selectRowIndex + i, selectColIndex + j];\n Transforms.removeNodes(editor, { at });\n Transforms.insertNodes(editor, col, { at });\n });\n });\n });\n const target = Editor.start(editor, [...tablePosition.tableEntry[1], selectRowIndex, selectColIndex]);\n Transforms.select(editor, target);\n return;\n }\n }\n insertData(data);\n };\n\n editor.normalizeNode = (entry: NodeEntry<Node>) => {\n if (Element.isElement(entry[0]) && entry[0].type === ElementKinds.table) {\n const table = entry[0] as TableElement;\n const maxWidth = Math.max(...table.children.map(row => row.children.length));\n const invalidRows = table.children.filter(row => row.children.length < maxWidth);\n if (invalidRows.length > 0) {\n const opts = new TableOptions();\n Editor.withoutNormalizing(editor, () => {\n table.children.map((row, rowIndex) => {\n row.children.map((cell, cellIndex) => {\n if (cell.hidden || cell.colspan || cell.rowspan) {\n Transforms.setNodes(\n editor,\n { hidden: null, colspan: null, rowspan: null },\n { at: [...entry[1], rowIndex, cellIndex] }\n );\n }\n });\n });\n invalidRows.forEach(row => {\n const count = maxWidth - row.children.length;\n insertColumnAtRow(\n opts,\n editor,\n count,\n entry as NodeEntry<TableElement>,\n table.children.indexOf(row),\n row.children.length\n );\n });\n });\n }\n if (table.columns && table.columns.length !== maxWidth) {\n const columns = table.columns.length > maxWidth ? removeColumns(table, maxWidth) : addColumns(table, maxWidth);\n Transforms.setNodes(editor, { columns }, { at: entry[1] });\n }\n }\n normalizeNode(entry);\n };\n\n editor.isBlockCard = (element: Element) => {\n if (element && element.type === ElementKinds.table) {\n return true;\n }\n return isBlockCard(element);\n };\n\n editor.renderElement = (element: Element) => {\n if (element.type === ElementKinds.table) {\n return TheTableComponent;\n }\n if (element.type === ElementKinds.tableRow) {\n return TheTableRowComponent;\n }\n if (element.type === ElementKinds.tableCell) {\n return TheTdComponent;\n }\n return renderElement(element);\n };\n\n editor.deleteCutData = () => {\n const opts = new TableOptions();\n if (!isSelectionInTable(opts, editor)) {\n deleteCutData();\n return;\n }\n const { selection } = editor;\n const element = TablePosition.create(opts, editor, selection.anchor.path);\n const tableComponent = ELEMENT_TO_COMPONENT.get(element.table) as TheTableComponent;\n const cells = tableComponent.tableStore.selectedCells;\n if (cells.length > 0) {\n Editor.withoutNormalizing(editor, () => {\n if (tableComponent.tableStore.isSelectedTable) {\n TableEditor.removeTable(editor);\n } else {\n tableComponent.tableStore.clearSelectedCellsContent();\n }\n tableComponent.tableService.closeToolbar();\n });\n return;\n }\n deleteCutData();\n };\n\n editor.isContainer = (element: Element) => {\n return element.type === ElementKinds.tableCell ? true : isContainer(element);\n };\n\n return editor;\n};\n","import { Transforms, Element, Text, Editor } from 'slate';\nimport { createEmptyParagraph } from '../../utils/create-empty-paragraph';\nimport { ElementKinds } from '../../constants';\nimport { TransformEditor } from '../common/transforms.plugin';\nimport * as TheQueries from '../../queries';\nimport { CustomElementKinds } from '../../custom-types';\n\nexport const withInsertParagraphNodes =\n (types: CustomElementKinds[] = []) =>\n <T extends Editor & TransformEditor>(editor: T) => {\n const { normalizeNode } = editor;\n editor.normalizeNode = ([currentNode, currentPath]) => {\n if (Text.isText(currentNode) && currentPath.length) {\n const [node] = Editor.parent(editor, currentPath);\n const containerBlocks = [...types, ...TheQueries.getContainerBlocks(editor)];\n if (Element.isElement(node) && containerBlocks.includes(node.type)) {\n const paragraph = createEmptyParagraph();\n (paragraph.children[0] as Text).text = currentNode.text;\n Transforms.insertNodes(editor, paragraph, { at: currentPath });\n return;\n }\n }\n return normalizeNode([currentNode, currentPath]);\n };\n\n return editor;\n };\n","import { TheiaConverter } from '@atinc/selene';\nimport { CLIPBOARD_FORMAT_KEY } from '../../constants/default';\nimport { Editor } from 'slate';\nimport * as TheTransforms from '../../transforms';\nimport { ElementKinds } from '../../constants/node-types';\n\nexport const withDeserializeHMTL = (editor: Editor) => {\n const { insertData } = editor;\n\n editor.insertData = (data: DataTransfer) => {\n const html = data.getData(`text/html`);\n const slateFragment = data.getData(`application/${CLIPBOARD_FORMAT_KEY}`);\n\n if (html && !slateFragment) {\n const htmlDom = new DOMParser().parseFromString(html, 'text/html');\n const fragment = TheiaConverter.convertToTheia(Array.from(htmlDom.body.children));\n // 无法识别HTML内容时后退一下:识别纯文本\n if (fragment.length === 1 && Editor.isEmpty(editor, fragment[0]) && fragment[0].type === ElementKinds.paragraph) {\n insertData(data);\n return;\n }\n TheTransforms.insertTheElements(editor, fragment);\n return;\n }\n\n insertData(data);\n };\n return editor;\n};\n","import { VerticalAlignment } from '../../constants';\nimport { TheEditor } from '../../interfaces';\nimport { TableEditor } from '../table/table.editor';\n\nexport const VerticalAlignEditor = {\n isVerticalActive(editor: TheEditor, alignment: VerticalAlignment) {\n const tableCellAlign = TableEditor.isVerticalAlignActive(editor, alignment);\n if (tableCellAlign !== null) {\n return tableCellAlign;\n }\n return false;\n },\n setVerticalAlign(editor: TheEditor, alignment: VerticalAlignment) {\n if (TableEditor.setVerticalAlign(editor, alignment)) {\n return;\n }\n }\n};\n","import { Component, ElementRef, HostListener, Input, OnInit, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys';\nimport { Editor } from 'slate';\nimport { TheToolbarBaseItemComponent } from '../../components/toolbar-base-item/toolbar-base-item.component';\nimport { CustomEditor } from '../../custom-types';\nimport { DefaultToolbarItem, ToolbarItem } from '../../interfaces';\n\n@Component({\n selector: 'the-toolbar-vertical-align-item',\n templateUrl: './toolbar-item.component.html',\n host: {\n class: 'the-toolbar-dropdown-container verticalAlign',\n '[class.hide]': '!active'\n }\n})\nexport class TheVerticalToolbarItemComponent extends TheToolbarBaseItemComponent implements OnInit {\n isHide = true;\n active: boolean | string = false;\n activeMenu: ToolbarItem;\n dropdownPopoverRef: ThyPopoverRef<any>;\n\n @Input() item: DefaultToolbarItem;\n\n @Input() menus: DefaultToolbarItem[];\n\n @Input() editor: CustomEditor;\n\n @Input() toolbarItem: ToolbarItem;\n\n @ViewChild('VerticalAlignItems', { read: TemplateRef, static: true })\n template: TemplateRef<any>;\n\n get isOpened() {\n return this.dropdownPopoverRef && this.dropdownPopoverRef.getOverlayRef() && this.dropdownPopoverRef.getOverlayRef().hasAttached();\n }\n\n @HostListener('document: mousedown', ['$event'])\n handleDocumentMouseDown(event: MouseEvent) {\n if (!this.elementRef.nativeElement.contains(event.target as HTMLElement)) {\n this.close();\n }\n }\n\n constructor(public elementRef: ElementRef, private thyPopover: ThyPopover, private viewContainerRef: ViewContainerRef) {\n super();\n }\n\n ngOnInit(): void {}\n\n public statusChange(editor: Editor) {\n this.active = this.toolbarItem?.active ? this.toolbarItem?.active(editor) : false;\n this.activeMenu = this.menusActive(editor);\n }\n\n menusActive(editor: Editor) {\n return this.menus.find(i => {\n if (this.editor?.selection && i?.active) {\n return i?.active(editor);\n }\n });\n }\n\n execute(event: MouseEvent) {\n super.execute(event);\n\n if (!this.item?.execute || this.editor?.disabled) {\n return;\n }\n this.openPopover();\n }\n\n itemMousedown(event: MouseEvent, item: ToolbarItem) {\n event.preventDefault();\n event.stopPropagation();\n\n this.close();\n\n if (item?.execute) {\n item?.execute(this.editor);\n }\n }\n\n openPopover() {\n this.dropdownPopoverRef = this.thyPopover.open(this.template, {\n origin: this.elementRef,\n panelClass: ['the-toolbar-dropdown-popover', this.toolbarItem?.key],\n placement: 'bottomLeft',\n offset: 10,\n viewContainerRef: this.viewContainerRef,\n insideClosable: false,\n backdropClosable: false,\n hasBackdrop: false\n });\n }\n\n close() {\n if (this.dropdownPopoverRef) {\n this.dropdownPopoverRef.close();\n }\n }\n}\n","<a\n thyIconNavLink\n class=\"icon-mode link-with-down\"\n [thyTooltip]=\"toolbarItem?.name\"\n [thyIconNavLinkActive]=\"isOpened\"\n thyTooltipPlacement=\"top\"\n (mousedown)=\"execute($event)\"\n>\n <thy-icon [thyIconName]=\"activeMenu?.icon\"></thy-icon>\n <thy-icon class=\"caret-down-icon font-size-sm text-desc\" thyIconName=\"caret-down\"></thy-icon>\n</a>\n\n<ng-template #VerticalAlignItems>\n <thy-action-menu class=\"dropdown\">\n <ng-container *ngFor=\"let menu of toolbarItem?.includes\">\n <a\n thyActionMenuItem\n href=\"javascript:;\"\n [thyActionMenuItemActive]=\"menu.key === activeMenu?.key\"\n [ngStyle]=\"menu?.styles\"\n (mousedown)=\"itemMousedown($event, menu)\"\n >\n <span *ngIf=\"menu.icon\" thyActionMenuItemIcon>\n <thy-icon [thyIconName]=\"menu?.icon\"></thy-icon>\n </span>\n <span thyActionMenuItemName>{{ menu.name }}</span>\n </a>\n </ng-container>\n </thy-action-menu>\n</ng-template>\n","import { DropdownMode } from '../../constants';\nimport { ToolbarActionTypes, VerticalAlignment } from '../../constants/node-types';\nimport { ToolbarItem, ToolbarItemType } from '../../interfaces';\nimport { TableEditor } from '../table/table.editor';\nimport { VerticalAlignEditor } from './vertical-align.editor';\nimport { TheVerticalToolbarItemComponent } from './toolbar-item.component';\n\nexport const VerticalAlignOptions: ToolbarItem[] = [\n {\n key: ToolbarActionTypes.verticalAlign,\n name: '垂直对齐',\n type: ToolbarItemType.toolDropdown,\n dropdownMode: DropdownMode.icon,\n iconComponent: TheVerticalToolbarItemComponent,\n includes: [ToolbarActionTypes.verticalAlignTop, ToolbarActionTypes.verticalAlignMiddle, ToolbarActionTypes.verticalAlignBottom],\n active: editor => TableEditor.isActive(editor)\n },\n {\n key: ToolbarActionTypes.verticalAlignTop,\n icon: 'align-top',\n name: '顶部对齐',\n execute: editor => VerticalAlignEditor.setVerticalAlign(editor, VerticalAlignment.top),\n active: editor => VerticalAlignEditor.isVerticalActive(editor, VerticalAlignment.top)\n },\n {\n key: ToolbarActionTypes.verticalAlignMiddle,\n icon: 'align-middle',\n name: '垂直居中',\n execute: editor => VerticalAlignEditor.setVerticalAlign(editor, VerticalAlignment.middle),\n active: editor => VerticalAlignEditor.isVerticalActive(editor, VerticalAlignment.middle)\n },\n {\n key: ToolbarActionTypes.verticalAlignBottom,\n icon: 'align-bottom',\n name: '底部对齐',\n execute: editor => VerticalAlignEditor.setVerticalAlign(editor, VerticalAlignment.bottom),\n active: editor => VerticalAlignEditor.isVerticalActive(editor, VerticalAlignment.bottom)\n }\n];\n","import { take, skip, filter } from 'rxjs/operators';\nimport { Range } from 'slate';\nimport { HistoryEditor } from 'slate-history';\nimport { EDITOR_TO_ELEMENT } from 'slate-angular';\nimport { TheEditor } from '../../interfaces';\nimport { TheContextService } from '../../services/context.service';\nimport { MarkProps } from '../../constants/node-types';\nimport * as TheQueries from '../../queries';\nimport * as TheTransforms from '../../transforms';\n\nexport const PaintFormatEditor = {\n formatBrush(editor: TheEditor) {\n const contextService = editor.injector.get(TheContextService);\n const obj = {};\n for (const key of MarkProps) {\n const k = contextService.paintFormatStatus.marks[key];\n obj[key] = k || null;\n }\n const block = TheQueries.anchorBlock(editor);\n if (block && Range.isCollapsed(editor.selection)) {\n // TODO:: 在撤销时有bug, 临时使用withoutSaving处理\n HistoryEditor.withoutSaving(editor, () => {\n const path = TheEditor.findPath(editor, block);\n TheTransforms.setMarks(editor, obj, path);\n });\n } else {\n TheTransforms.setMarks(editor, obj);\n }\n PaintFormatEditor.cancelFormatBrushStatus(editor);\n },\n isActive(editor: TheEditor) {\n const contextService = editor.injector.get(TheContextService);\n const res = contextService.paintFormatStatus.isActive;\n return res;\n },\n enableFormatBrush(editor: TheEditor) {\n const contextService = editor.injector.get(TheContextService);\n if (contextService.paintFormatStatus.isActive) {\n return PaintFormatEditor.cancelFormatBrushStatus(editor);\n }\n contextService.paintFormatStatus = {\n isActive: true,\n marks: TheQueries.getSelectionMarks(editor)\n };\n const element = EDITOR_TO_ELEMENT.get(editor);\n element.classList.add('pointer-paint');\n contextService.onMouseUp$\n .pipe(\n skip(1),\n filter(event => element.contains(event.target as Element)),\n take(1)\n )\n .subscribe((event: MouseEvent) => {\n if (contextService.paintFormatStatus.isActive) {\n PaintFormatEditor.formatBrush(editor);\n }\n });\n editor.onChange();\n },\n cancelFormatBrushStatus(editor: TheEditor) {\n const contextService = editor.injector.get(TheContextService);\n contextService.paintFormatStatus = {\n isActive: false,\n marks: {}\n };\n const element = EDITOR_TO_ELEMENT.get(editor);\n element.classList.remove('pointer-paint');\n editor.onChange();\n }\n};\n","import { Editor, Range } from 'slate';\nimport { MarkProps, MarkTypes, ToolbarActionTypes } from '../../constants';\nimport { TheEditor, ToolbarItem } from '../../interfaces';\nimport { TableEditor } from '../table/table.editor';\nimport { PaintFormatEditor } from './paint-format.editor';\nimport * as TheTransforms from '../../transforms';\n\nexport const PaintFormatOptions: ToolbarItem[] = [\n {\n key: ToolbarActionTypes.undo,\n icon: 'undo',\n name: '撤销',\n execute: (editor: TheEditor) => editor.undo()\n },\n {\n key: ToolbarActionTypes.redo,\n icon: 'redo',\n name: '重做',\n execute: (editor: TheEditor) => editor.redo()\n },\n {\n key: ToolbarActionTypes.paintformat,\n icon: 'paintformat',\n name: '格式刷',\n execute: PaintFormatEditor.enableFormatBrush,\n active: PaintFormatEditor.isActive\n },\n {\n key: ToolbarActionTypes.clean,\n icon: 'clean',\n name: '清除格式',\n execute: (editor: TheEditor) => {\n const { selection } = editor;\n if (!selection) {\n return;\n }\n\n if (TableEditor.clearMark(editor)) {\n return;\n }\n\n if (Range.isCollapsed(selection)) {\n const marks = Editor.marks(editor);\n for (const key of Object.keys(marks)) {\n Editor.removeMark(editor, key);\n }\n } else {\n const unsetMarks: { [key in MarkTypes]?: null | string } = {};\n MarkProps.forEach(key => {\n unsetMarks[key] = null;\n });\n TheTransforms.setMarks(editor, unsetMarks);\n }\n }\n }\n];\n","import { Editor, Node, Text, Element, Range } from 'slate';\nimport { TheEditor } from '../interfaces';\nimport { ElementKinds } from '../constants/node-types';\n\n/**\n * whether the current node is a clean paragraph\n * @param editor\n * @param text\n * @returns boolean\n */\nexport const isCleanEmptyParagraph = (editor: Editor) => {\n const isCollapsedCursor = TheEditor.isFocused(editor) && editor.selection && Range.isCollapsed(editor.selection);\n\n if (!isCollapsedCursor) {\n return false;\n }\n\n const block = Node.ancestor(editor, [editor.selection.anchor.path[0]]) as Element;\n const textIndent = 'textIndent';\n const align = 'align';\n const hasTextIndent = block[textIndent];\n const hasAlign = block[align];\n\n if (\n Node.string(block) === '' &&\n Element.isElement(block) &&\n block.type === ElementKinds.paragraph &&\n block.children.length === 1 &&\n Text.isText(block.children[0]) &&\n !Editor.isVoid(editor, block) &&\n !hasTextIndent &&\n !hasAlign\n ) {\n return true;\n }\n return false;\n};\n","import { Component, ComponentFactoryResolver, Input, NgZone, OnInit, ViewChild, ViewContainerRef } from '@angular/core';\nimport { Editor } from 'slate';\nimport { ToolbarItem } from '../../interfaces';\nimport { CustomEditor } from '../../custom-types';\nimport { TheToolbarBaseItemComponent } from '../toolbar-base-item/toolbar-base-item.component';\nimport { ToolbarItemMode } from '../../constants/toolbar';\nimport { isComponentType } from 'slate-angular';\n\n@Component({\n selector: 'the-toolbar-item',\n template: `\n <ng-container *ngIf=\"itemMode === ToolbarItemMode.horizontal; else selectionItem\">\n <a\n thyIconNavLink\n [thyIconNavLinkIcon]=\"item.icon\"\n [thyTooltip]=\"item.name\"\n thyTooltipPlacement=\"top\"\n [thyIconNavLinkActive]=\"active\"\n (mousedown)=\"execute($event)\"\n ></a>\n </ng-container>\n <ng-template #selectionItem>\n <ng-container *ngIf=\"!item?.quickItemComponent\">\n <thy-icon [thyIconName]=\"item?.icon\" [thyIconRotate]=\"0\" class=\"quick-toolbar-icon\"></thy-icon>\n <span class=\"quick-toolbar-name\">{{ item?.name }}</span>\n </ng-container>\n </ng-template>\n <ng-container #toolbarContainer></ng-container>\n `,\n host: {\n class: 'the-toolbar-item'\n }\n})\nexport class TheToolbarItemComponent extends TheToolbarBaseItemComponent implements OnInit {\n @Input() item: ToolbarItem;\n\n @Input() editor: CustomEditor;\n\n @Input() itemMode: ToolbarItemMode = ToolbarItemMode.horizontal;\n\n ToolbarItemMode = ToolbarItemMode;\n\n active: string | boolean = false;\n\n @ViewChild('toolbarContainer', { read: ViewContainerRef, static: true })\n toolbarContainer: ViewContainerRef;\n\n constructor(private ngZone: NgZone, private cfr: ComponentFactoryResolver) {\n super();\n }\n\n ngOnInit() {\n if (this.item?.quickItemComponent && isComponentType(this.item?.quickItemComponent)) {\n this.renderToolbarItem();\n }\n }\n\n public statusChange(editor: Editor) {\n this.active = this.item?.active ? this.item?.active(editor) : false;\n }\n\n execute(event: MouseEvent) {\n super.execute(event);\n\n if (!this.item?.execute || this.editor?.disabled) {\n return;\n }\n\n this.item?.execute(this.editor);\n }\n\n renderToolbarItem() {\n this.ngZone.run(() => {\n const toolbarItemFactory = this.cfr.resolveComponentFactory(this.item.quickItemComponent);\n const tollbarItemRef = this.toolbarContainer.createComponent(toolbarItemFactory);\n tollbarItemRef.instance.editor = this.editor;\n tollbarItemRef.instance.item = this.item;\n tollbarItemRef.instance.itemMode = ToolbarItemMode.vertical;\n });\n }\n}\n","import { Component, OnInit, Input, HostListener, OnDestroy, ElementRef } from '@angular/core';\nimport { mixinUnsubscribe, MixinBase } from 'ngx-tethys/core';\nimport { ThyPopoverRef } from 'ngx-tethys/popover';\nimport { Editor, Text, Node } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { ToolbarItem } from '../../../../interfaces/toolbar';\nimport { ToolbarActionTypes } from '../../../../constants/node-types';\nimport { QUICK_TOOLBAR_HOTKEY, ToolbarItemMode } from '../../../../constants/toolbar';\n\n@Component({\n selector: 'the-quick-toolbar',\n templateUrl: 'quick-toolbar.component.html'\n})\nexport class TheQuickToolbarComponent extends mixinUnsubscribe(MixinBase) implements OnInit, OnDestroy {\n @Input() editor: Editor;\n @Input() quickToolbarItems: ToolbarItem[];\n\n editorElement: HTMLElement;\n ToolbarItemMode = ToolbarItemMode;\n ToolbarActionTypes = ToolbarActionTypes;\n\n @HostListener('document: mousedown', ['$event'])\n handleMouseDown(event: MouseEvent) {\n if (!this.elementRef.nativeElement.contains(event.target as HTMLElement)) {\n this.popoverRef.close();\n } else {\n event.preventDefault();\n }\n }\n\n @HostListener('document: keydown.enter')\n handleEnter() {\n this.popoverRef.close();\n }\n\n constructor(private popoverRef: ThyPopoverRef<TheQuickToolbarComponent>, public elementRef: ElementRef) {\n super();\n }\n\n ngOnInit() {\n this.editorElement = AngularEditor.toDOMNode(this.editor, this.editor);\n }\n\n stopPropagation(event) {\n event.preventDefault();\n }\n\n selectionChange(event) {\n this.removeHotKey();\n const toolbarItem = this.quickToolbarItems.find(item => item.key === event.value);\n if (toolbarItem?.execute) {\n toolbarItem.execute(this.editor);\n }\n }\n\n removeHotKey() {\n const node = Node.get(this.editor, this.editor.selection.anchor.path) as Text;\n if (node && Text.equals({ text: QUICK_TOOLBAR_HOTKEY }, node)) {\n Editor.deleteBackward(this.editor);\n }\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n}\n","<thy-selection-list\n class=\"the-quick-toolbar\"\n [thyBindKeyEventContainer]=\"editorElement\"\n (thySelectionChange)=\"selectionChange($event)\"\n [thyMultiple]=\"false\"\n>\n <ng-container *ngFor=\"let item of quickToolbarItems\">\n <ng-container *ngIf=\"item.key !== ToolbarActionTypes.split; else splitLine\">\n <thy-list-option [thyValue]=\"item?.key\" (mousedown)=\"stopPropagation($event)\">\n <the-toolbar-item [editor]=\"editor\" [item]=\"item\" [itemMode]=\"ToolbarItemMode.vertical\"></the-toolbar-item>\n </thy-list-option>\n </ng-container>\n </ng-container>\n</thy-selection-list>\n\n<ng-template #splitLine>\n <nav-split-line [mode]=\"ToolbarItemMode.horizontal\"></nav-split-line>\n</ng-template>\n","import { Overlay } from '@angular/cdk/overlay';\nimport { ElementRef, ViewContainerRef } from '@angular/core';\nimport { ThyPopover } from 'ngx-tethys/popover';\nimport { Editor, Node, Element, Range, InsertTextOperation } from 'slate';\nimport { THE_EDITOR_QUICK_TOOLBAR_REF } from '../../utils/weak-maps';\nimport { TheQuickToolbarComponent } from './components/quick-toolbar/quick-toolbar.component';\nimport { TheEditor } from '../../interfaces/editor';\nimport { ElementKinds } from '../../constants/node-types';\nimport { QUICK_TOOLBAR_HOTKEY } from '../../constants/toolbar';\nimport { ToolbarItem } from '../../interfaces/toolbar';\n\nconst OperationTypes = ['insert_text', 'remove_node', 'merge_node'];\n\nexport const QuickInsertEditor = {\n openQuickToolbar(editor: Editor, toolbarItems: ToolbarItem[], origin: HTMLElement | ElementRef) {\n const overlay = editor.injector.get(Overlay);\n const viewContainerRef = editor.injector.get(ViewContainerRef);\n const thyPopover = editor.injector.get(ThyPopover);\n\n const quickToolbarRef = thyPopover.open(TheQuickToolbarComponent, {\n initialState: {\n editor,\n quickToolbarItems: toolbarItems\n },\n origin,\n viewContainerRef: viewContainerRef,\n backdropClosable: true,\n placement: 'bottomLeft',\n offset: 4,\n hasBackdrop: false,\n insideClosable: true,\n panelClass: 'the-quick-toolbar-container',\n scrollStrategy: overlay.scrollStrategies.reposition(),\n manualClosure: true\n });\n THE_EDITOR_QUICK_TOOLBAR_REF.set(editor, quickToolbarRef);\n },\n closeQuickToolbar(editor: Editor) {\n const quickToolbarRef = THE_EDITOR_QUICK_TOOLBAR_REF.get(editor);\n if (quickToolbarRef) {\n quickToolbarRef.close();\n THE_EDITOR_QUICK_TOOLBAR_REF.set(editor, null);\n }\n },\n isOpenToolbar(editor: Editor, opTypes = OperationTypes) {\n const isCollapsedCursor = TheEditor.isFocused(editor) && editor.selection && Range.isCollapsed(editor.selection);\n\n if (!isCollapsedCursor) {\n return false;\n }\n\n const block = Node.ancestor(editor, [editor.selection.anchor.path[0]]) as Element;\n const { undos } = editor.history;\n const lastBatch = undos[undos.length - 1];\n const lastOp = lastBatch && lastBatch[lastBatch.length - 1];\n\n if (\n lastOp &&\n block.children.length === 1 &&\n block.type === ElementKinds.paragraph &&\n Node.string(block) === QUICK_TOOLBAR_HOTKEY &&\n opTypes.includes(lastOp.type) &&\n ((lastOp as InsertTextOperation).text === QUICK_TOOLBAR_HOTKEY || (lastOp as InsertTextOperation).text === undefined)\n ) {\n return true;\n }\n return false;\n }\n};\n","import { Editor, Node, Element } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { TheEditorComponent } from '../../editor.component';\nimport { QUICK_TOOLBAR_HOTKEY } from '../../constants';\nimport { isCleanEmptyParagraph } from '../../utils/is-clean-empty-paragraph';\nimport { QuickInsertEditor } from './quick-insert.editor';\n\nexport const withQuickInsert = (editor: Editor) => {\n const { onKeydown, deleteBackward, onChange } = editor;\n\n editor.onKeydown = (event: KeyboardEvent) => {\n if (event.key === QUICK_TOOLBAR_HOTKEY && isCleanEmptyParagraph(editor)) {\n const rootNode = AngularEditor.toDOMNode(editor, Node.ancestor(editor, [editor.selection.anchor.path[0]]));\n const theEditorComponent = editor.injector.get(TheEditorComponent);\n const quickToolbars = theEditorComponent.quickToolbarItems;\n QuickInsertEditor.openQuickToolbar(editor, quickToolbars, rootNode);\n }\n\n onKeydown(event);\n };\n\n editor.deleteBackward = unit => {\n if (!QuickInsertEditor.isOpenToolbar(editor, ['remove_text'])) {\n QuickInsertEditor.closeQuickToolbar(editor);\n }\n deleteBackward(unit);\n };\n\n editor.onChange = () => {\n onChange();\n\n if (editor.selection) {\n const editorComponent = editor.injector.get(TheEditorComponent);\n editorComponent.quickInsertInstance.checkStatus();\n\n const block = Node.ancestor(editor, [editor.selection.anchor.path[0]]) as Element;\n if (!isCleanEmptyParagraph(editor) && Node.string(block) !== QUICK_TOOLBAR_HOTKEY) {\n QuickInsertEditor.closeQuickToolbar(editor);\n }\n }\n };\n\n return editor;\n};\n","import { Editor, Element, Text } from 'slate';\nimport { AngularEditor, ViewType } from 'slate-angular';\nimport * as Types from '../types';\nimport { TheEditor, ThePlugin, ToolbarItem } from '../interfaces';\nimport { ElementKinds, ELEMENT_UNIQUE_ID, HEADING_TYPES } from '../constants';\nimport { idCreator } from '../utils/id-creator';\nimport { autoFormatRules } from '../constants/auto-format-rules';\nimport { withTheHistory } from './common/history.plugin';\nimport { withDeserializeMd } from './deserializers/deserialize-md.plugin';\nimport { withAutoInsertData } from './common/auto-insert-data.';\nimport { withRemoveEmpty } from './common/remove-empty.plugin';\nimport { withResetType } from './common/reset-type.plugin';\nimport { withImage } from './image/image.plugin';\nimport { withIndent } from './indent/indent.plugin';\nimport { withList } from './list/list.plugin';\nimport { withTodoItem } from './todo-item/todo-item.plugin';\nimport { withHr } from './hr/hr.plugin';\nimport { withAlign } from './align/align.plugin';\nimport { withHeading } from './heading/heading.plugin';\nimport { withMark } from './mark/mark.plugin';\nimport { withNodeID } from './node-id/node-id.plugin';\nimport { withAutoFormat } from './autoformat/autoformat.plugin';\nimport { withTransforms } from './common/transforms.plugin';\nimport { withTrailingNode } from './normalizers/trailing-node.plugin';\nimport { withBlockCard } from './common/block-card.plugin';\nimport { withMoveSelection } from './common/move-selection.plugin';\nimport { withGetFragment } from './common/get-fragment.plugin';\nimport { TodoItemOptions } from './todo-item/options';\nimport { MarkOptions } from './mark/options';\nimport { ListOptions } from './list/options';\nimport { ImageOptions } from './image/options';\nimport { HrOptions } from './hr/options';\nimport { HeadingOptions } from './heading/options';\nimport { BlockquoteOptions } from './blockquote/options';\nimport { AlignOptions } from './align/options';\nimport { withBlockquote } from './blockquote/blockquote.plugin';\nimport { HistoryEditor } from 'slate-history';\nimport { ColorOptions } from './color/options';\nimport { withRemoveVoid } from './common/remove-void.plugin';\nimport { CodeOptions } from './code/options';\nimport { withCode } from './code/code.plugin';\nimport { LinkOptions } from './link/options';\nimport { withLink } from './link/link.plugin';\nimport { TableOptions } from './table/options';\nimport { withTable } from './table/table.plugin';\nimport { withInsertParagraphNodes } from './normalizers/insert-paragraph-nodes';\nimport { withDeserializeHMTL } from './deserializers/deserialize-html.plugin';\nimport { VerticalAlignOptions } from './vertical-align/options';\nimport { PaintFormatOptions } from './paint-format/options';\nimport * as TheTransforms from '../transforms';\nimport { withQuickInsert } from './quick-insert/quick-insert.plugint';\n\nconst internalPlugins: ((editor: Editor) => Editor)[] = [\n withTheHistory,\n withAutoInsertData(),\n withRemoveEmpty,\n withRemoveVoid,\n withBlockCard, // should in the front of list、resettype、todo、deserialize-html\n withResetType,\n withIndent([ElementKinds.checkItem, ElementKinds.numberedList, ElementKinds.bulletedList, ElementKinds.paragraph, ...HEADING_TYPES]), // should in the front of list\n withList({ validLiChildrenTypes: [ElementKinds.image] }),\n withLink,\n withTable,\n withTodoItem,\n withHr,\n withAlign,\n withCode,\n withHeading,\n withMark(),\n withBlockquote,\n withNodeID({ idKey: ELEMENT_UNIQUE_ID, idCreator }),\n withAutoFormat({ rules: autoFormatRules }),\n withTransforms(),\n withTrailingNode({ type: ElementKinds.paragraph, level: 0 }),\n withMoveSelection,\n withInsertParagraphNodes(),\n withGetFragment(),\n withDeserializeHMTL,\n withDeserializeMd(),\n withImage, // must be after withDeserializeHMTL\n withQuickInsert\n];\n\nconst internalToolbarItems: ToolbarItem[] = [\n ...AlignOptions,\n ...MarkOptions,\n ...ColorOptions,\n ...HeadingOptions,\n ...TodoItemOptions,\n ...ListOptions,\n ...ImageOptions,\n ...HrOptions,\n ...BlockquoteOptions,\n ...CodeOptions,\n ...LinkOptions,\n ...TableOptions,\n ...VerticalAlignOptions,\n ...PaintFormatOptions\n];\n\nexport const toolbarCompose = (toolbarItems: ToolbarItem[] = []) => {\n return [...internalToolbarItems, ...toolbarItems];\n};\n\nexport const withTheEditor = <T extends AngularEditor & HistoryEditor>(plugins: ThePlugin[], editor: T) => {\n const e = editor as T & TheEditor;\n\n e.renderElement = (element: Element): ViewType => null;\n e.renderLeaf = (text: Text): ViewType => null;\n e.insertElement = (element: Element) => TheTransforms.insertElementNext(e, element);\n e.isContainer = (value: Element) => false;\n e.extraElementOptions = [];\n e.disabled = false;\n\n const pluginList = [...internalPlugins, ...plugins];\n\n pluginList.reduce((prevEditor, nextEditor) => nextEditor(prevEditor), e);\n\n return e;\n};\n","import isHotkey from 'is-hotkey';\nimport { Editor } from 'slate';\nimport { MarkTypes } from '../constants/node-types';\nimport { MarkEditor } from '../plugins/mark/mark.editor';\n\nconst HOTKEYS = {\n 'mod+b': MarkTypes.bold,\n 'mod+i': MarkTypes.italic,\n 'mod+u': MarkTypes.underline,\n 'mod+e': MarkTypes.codeLine\n};\nexport const markShortcuts = (editor: Editor, event: KeyboardEvent) => {\n for (const hotkey in HOTKEYS) {\n if (isHotkey(hotkey, event)) {\n event.preventDefault();\n const mark = HOTKEYS[hotkey];\n MarkEditor.toggleMark(editor, mark);\n }\n }\n};\n","import { Editor } from 'slate';\nimport { markShortcuts } from './mark';\n\nexport const shortcuts = (editor: Editor, event: KeyboardEvent) => {\n markShortcuts(editor, event);\n};\n","import { Injectable } from '@angular/core';\nimport { DefaultQuickToolbarDefinition, DefaultGlobalToolbarDefinition, DefaultInlineToolbarDefinition } from '../constants';\nimport { ToolbarKey, ToolbarItem, ToolbarDefinition, ToolbarEntity, ToolbarInitOption } from '../interfaces';\n\n@Injectable()\nexport class TheToolbarService {\n initialize(\n toolbarItems: ToolbarItem[],\n global: string[] = DefaultGlobalToolbarDefinition,\n inline: string[] = DefaultInlineToolbarDefinition,\n quick: string[] = DefaultQuickToolbarDefinition\n ): ToolbarInitOption {\n const toolbarDefinition = {\n global,\n inline,\n quick\n };\n\n const toolbarOperations: Map<string, ToolbarItem> = new Map<string, ToolbarItem>();\n toolbarItems.forEach(i => toolbarOperations.set(i.key, i));\n\n const toolbarEntity = this.nextToolbarEntity(toolbarDefinition, toolbarOperations);\n\n return {\n toolbarDefinition,\n toolbarOperations,\n toolbarEntity\n };\n }\n\n nextToolbarEntity(toolbarDefinition: ToolbarDefinition, toolbarItems: Map<string, ToolbarItem>): ToolbarEntity {\n const entity: ToolbarEntity = {};\n for (const defKey in toolbarDefinition) {\n entity[defKey] = this.getToolbarItemByKeys(toolbarDefinition[defKey], toolbarItems);\n }\n return entity;\n }\n\n getToolbarItemByKeys(keys: ToolbarKey[], toolbarItems: Map<string, ToolbarItem>): ToolbarItem[] {\n return keys.map(key => {\n if (key === `split`) {\n return { key: `split` };\n }\n const item = toolbarItems.get(key);\n if (!item) {\n throw new Error(`Read a non-existent toolbar key`);\n }\n if (item.includes) {\n return { ...item, includes: this.getToolbarItemByKeys(item.includes as ToolbarKey[], toolbarItems) };\n }\n return item;\n });\n }\n}\n","import { Editor, Transforms } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { HistoryEditor } from 'slate-history';\n\nexport const autoFocus = (editor: Editor, isFocus: boolean) => {\n setTimeout(() => {\n if (editor && editor.children.length > 0 && isFocus) {\n HistoryEditor.withoutMerging(editor, () => {\n AngularEditor.focus(editor);\n Transforms.select(editor, Editor.start(editor, [0]));\n });\n }\n });\n};\n","import { Editor } from 'slate';\nimport { AngularEditor } from 'slate-angular';\n\nexport const getEditableElementHeight = (editor: Editor) => {\n const editable = AngularEditor.toDOMNode(editor, editor);\n return editable.clientHeight;\n};\n","import { Editor } from 'slate';\nimport { getEditableElementHeight } from './get-editable-element-height';\n\nlet previousHeight = 0;\n\n/**\n * reset the sliding distance when the viewport position of the sliding\n * container coincides with the viewport position of the focus element\n */\nexport const autoScrollViewHandle = (editor: Editor, scrollContainer: string) => {\n const currentHeight = getEditableElementHeight(editor);\n const currentNodeElement = window.getSelection().focusNode.parentElement;\n const scrollContainerElement = currentNodeElement.closest(scrollContainer);\n\n // the added sliding distance is the height of the\n // current editing area minus the height of the last editing area\n const scrollHeight = currentHeight - previousHeight;\n\n if (scrollContainerElement && previousHeight !== 0 && scrollHeight > 0) {\n const focusBlockRect = currentNodeElement.getBoundingClientRect();\n const scrollContainerRect = scrollContainerElement.getBoundingClientRect();\n const bottom = scrollContainerRect.bottom - focusBlockRect.bottom;\n if (bottom < 30) {\n scrollContainerElement.scrollTop = scrollContainerElement.scrollTop + scrollHeight;\n }\n }\n previousHeight = currentHeight;\n};\n","import {\n Component,\n Input,\n OnInit,\n ViewChild,\n ViewContainerRef,\n ComponentFactoryResolver,\n OnChanges,\n SimpleChanges,\n ComponentRef,\n ElementRef,\n OnDestroy,\n NgZone,\n Inject,\n TemplateRef\n} from '@angular/core';\nimport { Editor } from 'slate';\nimport { ComponentType } from 'slate-angular';\nimport { ToolbarAlignment, ToolbarItem, ToolbarItemsComposeReturn, ToolbarItemType } from '../../interfaces/toolbar';\nimport { TheToolbarGroupToken, ToolbarMoreGroup } from '../../constants/toolbar';\nimport { ElementKinds, ToolbarActionTypes } from '../../constants/node-types';\nimport { TheToolbarItemComponent } from '../toolbar-item/toolbar-item.component';\nimport { NavSplitLineComponent } from '../nav-split-line/nav-split-line.component';\nimport { TheToolbarDropdownComponent } from '../toolbar-dropdown/toolbar-dropdown.component';\nimport type { TheToolbarGroupComponent } from '../toolbar-group/toolbar-group.component';\nimport { getToolbarClass } from '../../utils';\n\n@Component({\n selector: 'the-toolbar',\n templateUrl: 'toolbar.component.html',\n host: {\n class: 'the-toolbar-container'\n }\n})\nexport class TheToolbarComponent implements OnInit, OnChanges, OnDestroy {\n @Input() editor: Editor;\n\n @Input() toolbarItems: ToolbarItem[] = [];\n\n @Input() align: ToolbarAlignment;\n\n @Input() isMore = true;\n\n @Input() afterTemplate: TemplateRef<any>;\n\n @ViewChild('toolbarContainer', { read: ViewContainerRef, static: true }) toolbarContainer: ViewContainerRef;\n\n components: Map<string, ComponentRef<any>> = new Map<string, ComponentRef<any>>();\n moreGroupMenu = ToolbarMoreGroup;\n resizeObserver;\n elementWidth = 0;\n\n constructor(\n private cfr: ComponentFactoryResolver,\n private elementRef: ElementRef,\n private ngZone: NgZone,\n @Inject(TheToolbarGroupToken) private toolbarGroupComponent: ComponentType<TheToolbarGroupComponent>\n ) {}\n\n ngOnInit(): void {\n this.setToolbarClass();\n this.renderToolbarView();\n this.statusChange(this.editor);\n\n if (this.isMore) {\n this.resizeElement();\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n const toolbarItems = changes.toolbarItems;\n if (toolbarItems && !toolbarItems.firstChange) {\n this.renderToolbarView();\n }\n }\n\n ngOnDestroy(): void {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n\n public setToolbarClass() {\n if (this.editor) {\n const toolbarClass = getToolbarClass(this.editor);\n this.elementRef.nativeElement.classList.add(toolbarClass);\n }\n }\n\n private resizeElement() {\n const editableElement = this.elementRef.nativeElement;\n // @ts-ignore\n this.resizeObserver = new ResizeObserver(entries => {\n for (let entry of entries) {\n const { width } = entry.contentRect;\n if (this.isMore && this.elementWidth !== width) {\n this.elementWidth = width;\n this.renderToolbarView();\n }\n }\n });\n this.resizeObserver.observe(editableElement);\n }\n\n public statusChange(editor: Editor) {\n const toolbarItems = [...this.toolbarItems, this.moreGroupMenu];\n for (const item of toolbarItems) {\n if (item.key !== ToolbarActionTypes.split) {\n const itemComponent = this.components.get(item.key);\n if (itemComponent) {\n itemComponent.instance.statusChange(editor);\n }\n }\n }\n }\n\n public renderToolbarView(): void {\n this.components.clear();\n this.toolbarContainer.clear();\n const toolbarItems = this.toolbarItemsCompose();\n const { items, group } = toolbarItems;\n\n this.ngZone.run(() => {\n for (const item of items) {\n if (item.key === ToolbarActionTypes.split) {\n this.createToolbarSplit();\n continue;\n }\n this.createToolbarItem(item);\n }\n this.createMoreGroup(group);\n });\n }\n\n /**\n * calculation display toolbar and more grouped toolbars\n *\n *\t┌──────────────────────────────────────── GoolbarToolbarView ───────────────────────────────────┐\n *\t| ┌─────────────────────────────────────── #children ─────────────────────────────────────────┐ |\n *\t| | ┌─────── #itemsView ────────┐ ┌──────────────────────┐ ┌── #groupedItemsDropdown ───┐ | |\n *\t| | | #ungroupedItems | | ToolbarSeparatorView | | #groupedItems | | |\n *\t| | └──────────────────────────-┘ └──────────────────────┘ └────────────────────────────┘ | |\n *\t| | \\---------- only when toolbar items overflow --------/ | |\n *\t| └───────────────────────────────────────────────────────────────────────────────────────────┘ |\n *\t└───────────────────────────────────────────────────────────────────────────────────────────────┘\n * split width: 6px\n * item width: default item: 35px; dropdown item: 50px\n * set aside 50px\n */\n private toolbarItemsCompose(): ToolbarItemsComposeReturn {\n let elementWidth = this.isMore ? this.elementWidth : null;\n const maxItemWidth = 50;\n const defaultItemWidth = 35;\n const splitWidth = 6;\n // special type\n const headingWidth = 70;\n const items: ToolbarItem[] = [];\n const group: ToolbarItem[] = [];\n\n for (const item of this.toolbarItems) {\n if (!this.isMore) {\n items.push(item);\n continue;\n }\n\n // not enough free space\n const allowRender = elementWidth && elementWidth > maxItemWidth;\n if (allowRender && item.key === ToolbarActionTypes.split) {\n items.push(item);\n elementWidth -= splitWidth;\n continue;\n }\n\n if (allowRender) {\n items.push(item);\n } else {\n group.push(item);\n }\n\n if (item.key === ElementKinds.headingList) {\n elementWidth -= headingWidth;\n continue;\n }\n const isCustomComponent = item?.type === ToolbarItemType.toolDropdown || !!item?.iconComponent;\n elementWidth -= isCustomComponent ? maxItemWidth : defaultItemWidth;\n }\n\n return {\n items: this.pureToolbarItems(items),\n group\n };\n }\n\n /**\n * externally designated more group\n */\n private toolbarItemsAndMoreCompose() {\n const items = [];\n const group = [];\n\n for (const item of this.toolbarItems) {\n if (item.key === ToolbarActionTypes.split) {\n items.push(item);\n continue;\n }\n items.push(item);\n }\n\n return {\n items: this.pureToolbarItems(items),\n group\n };\n }\n\n /**\n * filter adjacent repeated dividers\n * @param {ToolbarItem[]} items\n * @returns\n * @memberof TheToolbarComponent\n */\n pureToolbarItems(items: ToolbarItem[]) {\n if (!Array.isArray(items)) {\n return [];\n }\n return items.filter((a, i) => {\n if (i > 0 && items[i - 1].key !== ToolbarActionTypes.split) {\n return true;\n }\n return a.key !== ToolbarActionTypes.split;\n });\n }\n\n private createToolbarItem(item: ToolbarItem) {\n const { iconComponent, type, dropdownMode, ...args } = item;\n const viewComponent = this.viewComponentType(type);\n const factory = this.cfr.resolveComponentFactory(iconComponent ? iconComponent : viewComponent);\n const compRef = this.toolbarContainer.createComponent(factory);\n compRef.instance.editor = this.editor;\n compRef.instance.toolbarItem = item;\n compRef.instance.menus = args.includes;\n compRef.instance.item = args?.includes && args.includes.length > 0 ? args.includes[0] : args;\n compRef.instance.mode = dropdownMode;\n this.components.set(item.key, compRef);\n }\n\n private createToolbarSplit() {\n const navSplitLineFactory = this.cfr.resolveComponentFactory(NavSplitLineComponent);\n this.toolbarContainer.createComponent(navSplitLineFactory);\n }\n\n private createMoreGroup(group: ToolbarItem[]) {\n if (group.length > 0) {\n const moreGroupFactory = this.cfr.resolveComponentFactory(this.toolbarGroupComponent);\n const compRef = this.toolbarContainer.createComponent(moreGroupFactory);\n compRef.instance.editor = this.editor;\n compRef.instance.menus = group;\n compRef.instance.item = this.moreGroupMenu;\n this.components.set(this.moreGroupMenu.key, compRef);\n }\n }\n\n private viewComponentType(type: ToolbarItemType) {\n if (type === ToolbarItemType.default) {\n return TheToolbarItemComponent;\n }\n if (type === ToolbarItemType.toolDropdown) {\n return TheToolbarDropdownComponent;\n }\n return TheToolbarItemComponent;\n }\n}\n","<thy-icon-nav [style.justifyContent]=\"align\">\n <ng-container #toolbarContainer></ng-container>\n <ng-content></ng-content>\n <ng-template *ngIf=\"afterTemplate\" [ngTemplateOutlet]=\"afterTemplate\"></ng-template>\n</thy-icon-nav>\n","import {\n Component,\n OnInit,\n OnDestroy,\n ChangeDetectorRef,\n Input,\n ElementRef,\n NgZone,\n ChangeDetectionStrategy,\n ViewChild\n} from '@angular/core';\nimport { ScrollDispatcher } from '@angular/cdk/overlay';\nimport { merge, fromEvent, Subject } from 'rxjs';\nimport { takeUntil, filter, debounceTime } from 'rxjs/operators';\nimport { Range as slateRange, Editor } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport * as TheQueries from '../../queries';\nimport { THE_INLINE_TOOLBAR_TYPES } from '../../constants';\nimport { ToolbarItem } from '../../interfaces';\nimport { TheToolbarComponent } from '../toolbar/toolbar.component';\n\n@Component({\n selector: 'the-inline-toolbar',\n template: `<the-toolbar\n #inlineToolbar\n class=\"the-inline-toolbar\"\n [editor]=\"editor\"\n [toolbarItems]=\"toolbarItems\"\n [isMore]=\"false\"\n ></the-toolbar> `,\n host: {\n '[class.hide]': 'toolbarItems.length === 0'\n },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TheInlineToolbarComponent implements OnInit, OnDestroy {\n @Input() editor: Editor;\n @Input() toolbarItems: ToolbarItem[];\n @ViewChild('inlineToolbar') inlineToolbar: TheToolbarComponent;\n\n destroy$ = new Subject();\n\n constructor(\n private elementRef: ElementRef<any>,\n private scrollDispatcher: ScrollDispatcher,\n private cdr: ChangeDetectorRef,\n private ngZone: NgZone\n ) {}\n\n ngOnInit() {\n this.scrollDispatcher\n .scrolled()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n this.updateInlineToolbar();\n this.cdr.detectChanges();\n });\n this.ngZone.runOutsideAngular(() => {\n merge(\n fromEvent(document, 'mouseup').pipe(filter((e: MouseEvent) => e.button !== 2)),\n fromEvent(document, 'keyup').pipe(filter((e: KeyboardEvent) => !e.shiftKey))\n )\n .pipe(debounceTime(200), takeUntil(this.destroy$))\n .subscribe(() => {\n this.updateInlineToolbar();\n this.inlineToolbar?.statusChange(this.editor);\n this.cdr.detectChanges();\n });\n });\n }\n\n updateInlineToolbar() {\n const inlineToolbar = this.elementRef.nativeElement.firstElementChild;\n\n if (!this.editor.selection) {\n inlineToolbar.removeAttribute('style');\n return;\n }\n const anchorBlock = TheQueries.anchorBlock(this.editor);\n if (!inlineToolbar || !anchorBlock) {\n return;\n }\n const { editor } = this;\n const { selection } = editor;\n\n if (\n !selection ||\n !AngularEditor.isFocused(editor) ||\n slateRange.isCollapsed(selection) ||\n Editor.string(editor, selection) === ''\n ) {\n inlineToolbar.removeAttribute('style');\n return;\n }\n\n if (!THE_INLINE_TOOLBAR_TYPES.includes(anchorBlock.type)) {\n return;\n }\n const native = window.getSelection();\n if (native.type !== 'None') {\n const range = native.getRangeAt(0);\n this.updatePosition(inlineToolbar, range);\n }\n }\n\n updatePosition(toolbarElement: HTMLElement, range) {\n let boundary = range.getBoundingClientRect();\n\n if (!boundary || (boundary.height === 0 && boundary.width === 0 && range.startContainer === range.endContainer)) {\n if (range.startContainer.nodeType === 1 && range.startContainer.querySelector('img')) {\n boundary = range.startContainer.querySelector('img').getBoundingClientRect();\n } else {\n boundary = range.startContainer.getBoundingClientRect();\n }\n }\n const editableRect = document.querySelector('.the-editor-typo').getBoundingClientRect();\n const toolbarHeight = toolbarElement.offsetHeight;\n const toolbarWidth = toolbarElement.offsetWidth;\n const halfOffsetWidth = toolbarWidth / 2;\n const defaultLeft = -halfOffsetWidth;\n const offsetLeft = boundary.left - editableRect.left;\n const isTopLeft = offsetLeft - 30 > halfOffsetWidth; // 30: editable padding left\n const isTopRight = editableRect.width - offsetLeft - boundary.width / 2 < halfOffsetWidth;\n const positions: any = {};\n\n positions.top = boundary.top - toolbarHeight;\n positions.right = 'initial';\n positions.left = boundary.left;\n\n if (isTopLeft) {\n positions.left = boundary.left + boundary.width / 2 + defaultLeft;\n }\n\n if (isTopRight) {\n positions.left = boundary.right - toolbarWidth;\n }\n\n for (let key of Object.keys(positions)) {\n toolbarElement.style[key] = positions[key] + (isNaN(positions[key]) ? '' : 'px');\n }\n toolbarElement.style.opacity = '1';\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n}\n","import { Component, ElementRef, Input, HostListener, Renderer2, ChangeDetectorRef, ViewChild } from '@angular/core';\nimport { Editor, Node } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { ToolbarItem } from '../../../interfaces/toolbar';\nimport { isCleanEmptyParagraph } from '../../../utils/is-clean-empty-paragraph';\nimport { QuickInsertEditor } from '../quick-insert.editor';\n\n@Component({\n selector: '[theQuickInsert]',\n templateUrl: './quick-insert.component.html',\n host: {\n class: 'the-quick-insert',\n '[class.hide]': 'isHide'\n }\n})\nexport class TheQuickInsertComponent {\n @Input() editor: Editor;\n @Input() quickToolbarItems: ToolbarItem[];\n\n isHide = true;\n defaultIconName = 'plus-circle-thin';\n iconNameFill = 'plus-circle-thin-fill';\n displayIconName = this.defaultIconName;\n\n @ViewChild('iconElement', { read: ElementRef, static: false })\n iconElement: ElementRef<any>;\n\n @HostListener('mousedown', ['$event'])\n handleMousedownNativeElement(event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n constructor(private renderer: Renderer2, private elementRef: ElementRef, private cdr: ChangeDetectorRef) {}\n\n public checkStatus() {\n const { editor } = this;\n if (isCleanEmptyParagraph(editor)) {\n const block = Node.ancestor(editor, [editor?.selection?.anchor.path[0]]);\n const rootNode: HTMLElement = AngularEditor.toDOMNode(editor, block);\n\n this.isHide = false;\n this.updatePosition(rootNode.offsetLeft, rootNode.offsetTop);\n return;\n }\n this.isHide = true;\n }\n\n private updatePosition(left: number, top?: number) {\n this.isHide = false;\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', `${top}px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', `${left}px`);\n }\n\n mouseEnter(event: MouseEvent) {\n this.displayIconName = this.iconNameFill;\n this.cdr.markForCheck();\n }\n\n mouseLeave(event: MouseEvent) {\n this.displayIconName = this.defaultIconName;\n this.cdr.markForCheck();\n }\n\n handleClick(event: MouseEvent) {\n event.stopPropagation();\n event.preventDefault();\n QuickInsertEditor.openQuickToolbar(this.editor, this.quickToolbarItems, this.iconElement.nativeElement);\n }\n}\n","<thy-icon\n #iconElement\n [thyIconName]=\"displayIconName\"\n class=\"quick-insert-icon text-desc font-size-xlg\"\n (mouseenter)=\"mouseEnter($event)\"\n (mouseleave)=\"mouseLeave($event)\"\n (mousedown)=\"handleClick($event)\"\n></thy-icon>\n","import { Component, ElementRef, Input, HostListener, Renderer2 } from '@angular/core';\nimport { Editor, Node } from 'slate';\nimport { AngularEditor } from 'slate-angular';\nimport { TheOptions } from '../../interfaces';\nimport { isCleanEmptyParagraph } from '../../utils/is-clean-empty-paragraph';\nimport * as TheQueries from '../../queries';\n\n@Component({\n selector: 'div[thePlaceholder]',\n template: `{{ options?.placeholder }}`,\n host: {\n class: 'the-placeholder',\n '[class.hide]': 'isHide'\n }\n})\nexport class ThePlaceholderComponent {\n @Input() editor: Editor;\n @Input() options: TheOptions;\n\n isHide = true;\n\n @HostListener('document:compositionstart')\n handleCompositionStart() {\n if (this.editor?.selection) {\n this.hide();\n }\n }\n\n @HostListener('document:compositionend', ['$event'])\n handleCompositionEnd(event) {\n if (!event.data) {\n this.checkStatus();\n }\n }\n\n constructor(private renderer: Renderer2, private elementRef: ElementRef) {}\n\n public checkStatus() {\n const { editor } = this;\n\n // empty content and no selection processing\n if (this.options?.autoFocus && !editor?.selection && TheQueries.isEmptyContent(editor.children)) {\n // normal top is 28, but margin-top: -41px is set when maxHeight is set, so top is 69\n const firstTop = this.options?.maxHeight ? 69 : 28;\n this.updatePosition(30, firstTop);\n return;\n }\n\n if (isCleanEmptyParagraph(editor)) {\n const block = Node.ancestor(editor, [editor?.selection?.anchor.path[0]]);\n const rootNode: HTMLElement = AngularEditor.toDOMNode(editor, block);\n\n this.isHide = false;\n this.updatePosition(rootNode.offsetLeft, rootNode.offsetTop);\n return;\n }\n this.isHide = true;\n }\n\n private updatePosition(left: number, top?: number) {\n this.isHide = false;\n this.renderer.setStyle(this.elementRef.nativeElement, 'top', `${top}px`);\n this.renderer.setStyle(this.elementRef.nativeElement, 'left', `${left}px`);\n }\n\n private hide() {\n this.isHide = true;\n }\n}\n","import { Component, ChangeDetectionStrategy, ViewChild, TemplateRef } from '@angular/core';\nimport { Element } from 'slate';\nimport { ElementKinds } from '../../constants';\n\n@Component({\n selector: 'the-template,[theTemplate]',\n templateUrl: 'template.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TheTemplateComponent {\n @ViewChild('paragraph', { read: TemplateRef, static: true })\n paragraphTemplate: TemplateRef<any>;\n\n @ViewChild('headingOne', { read: TemplateRef, static: true })\n headingOneTemplate: TemplateRef<any>;\n\n @ViewChild('headingTwo', { read: TemplateRef, static: true })\n headingTwoTemplate: TemplateRef<any>;\n\n @ViewChild('headingThree', { read: TemplateRef, static: true })\n headingThreeTemplate: TemplateRef<any>;\n\n @ViewChild('headingFour', { read: TemplateRef, static: true })\n headingFourTemplate: TemplateRef<any>;\n\n @ViewChild('headingFive', { read: TemplateRef, static: true })\n headingFiveTemplate: TemplateRef<any>;\n\n @ViewChild('headingSix', { read: TemplateRef, static: true })\n headingSixTemplate: TemplateRef<any>;\n\n public renderElement = (element: Element) => {\n if (element.type === ElementKinds.default) {\n return this.paragraphTemplate;\n }\n if (element.type === ElementKinds.heading_1) {\n return this.headingOneTemplate;\n }\n if (element.type === ElementKinds.heading_2) {\n return this.headingTwoTemplate;\n }\n if (element.type === ElementKinds.heading_3) {\n return this.headingThreeTemplate;\n }\n if (element.type === ElementKinds.heading_4) {\n return this.headingFourTemplate;\n }\n if (element.type === ElementKinds.heading_5) {\n return this.headingFiveTemplate;\n }\n if (element.type === ElementKinds.heading_6) {\n return this.headingSixTemplate;\n }\n return null;\n };\n}\n","<ng-template #paragraph let-context=\"context\" let-viewContext=\"viewContext\">\n <div theDefaultElement [context]=\"context\" [viewContext]=\"viewContext\" [ngStyle]=\"context.element | elementStyle\"></div>\n</ng-template>\n<ng-template #headingOne let-context=\"context\" let-viewContext=\"viewContext\">\n <h1\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h1>\n</ng-template>\n<ng-template #headingTwo let-context=\"context\" let-viewContext=\"viewContext\">\n <h2\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h2>\n</ng-template>\n<ng-template #headingThree let-context=\"context\" let-viewContext=\"viewContext\">\n <h3\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h3>\n</ng-template>\n<ng-template #headingFour let-context=\"context\" let-viewContext=\"viewContext\">\n <h4\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h4>\n</ng-template>\n<ng-template #headingFive let-context=\"context\" let-viewContext=\"viewContext\">\n <h5\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h5>\n</ng-template>\n<ng-template #headingSix let-context=\"context\" let-viewContext=\"viewContext\">\n <h6\n theDefaultElement\n [context]=\"context\"\n [viewContext]=\"viewContext\"\n [attr.id]=\"context.element.key\"\n [ngStyle]=\"context.element | elementStyle\"\n ></h6>\n</ng-template>\n","import {\n OnInit,\n OnDestroy,\n Component,\n Input,\n ViewContainerRef,\n ViewChild,\n ElementRef,\n forwardRef,\n Output,\n EventEmitter,\n OnChanges,\n SimpleChanges,\n NgZone\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { mixinUnsubscribe, MixinBase } from 'ngx-tethys/core';\nimport isHotkey from 'is-hotkey';\nimport { Editor, Text, Transforms, createEditor, Element, Descendant, Range, Path, NodeEntry } from 'slate';\nimport { withHistory } from 'slate-history';\nimport { AngularEditor, SlateError, withAngular, DOMElement } from 'slate-angular';\nimport { ThePlugin, TheOptions, DomEventDataInfo, TheEditor, TheDataMode, ToolbarEntity } from './interfaces';\nimport { MarkTypes } from './constants';\nimport { withTheEditor, toolbarCompose } from './plugins/index';\nimport { TheTemplateComponent } from './components/template/template.component';\nimport { shortcuts } from './shortcuts';\nimport { TheToolbarComponent } from './components/toolbar/toolbar.component';\nimport { TheToolbarService } from './services/toolbar.service';\nimport { TheContextService } from './services/context.service';\nimport { TheTextComponent } from './components/text/text.component';\nimport { CLIPBOARD_FORMAT_KEY, DEFAULT_SCROLL_CONTAINER } from './constants/default';\nimport { TheColorSelectService } from './services/color-select.service';\nimport * as TheTransforms from './transforms';\nimport * as TheQueries from './queries';\nimport { autoFocus } from './utils/auto-focus';\nimport { autoScrollViewHandle } from './utils/auto-scroll-view';\nimport { _ } from './utils/lodash';\nimport { dataDeserialize, dataSerializing } from './utils/data-transform';\nimport { setEditorUUID } from './utils/editor-uuid';\nimport { idCreator } from './utils/id-creator';\nimport { TheQuickInsertComponent } from './plugins/quick-insert/components/quick-insert.component';\nimport { ThePlaceholderComponent } from './plugins/placeholder/placeholder.component';\n\n@Component({\n selector: 'the-editor, theEditor',\n templateUrl: 'editor.component.html',\n providers: [\n TheToolbarService,\n TheContextService,\n TheColorSelectService,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TheEditorComponent),\n multi: true\n }\n ],\n host: {\n class: 'the-editor',\n '[class.the-editor-readonly]': 'theOptions?.readonly'\n }\n})\nexport class TheEditorComponent extends mixinUnsubscribe(MixinBase) implements OnInit, OnChanges, OnDestroy {\n @Input() theOptions: TheOptions;\n\n @Input() thePlugins: ThePlugin[] = [];\n\n @Input() theGlobalToolbar?: TheToolbarComponent;\n\n @Input() theDecorate: (editor: TheEditor, nodeEntry: NodeEntry) => Range[];\n\n @Input() theOnError?: (error: SlateError) => void;\n\n @Output() theOnSave: EventEmitter<Descendant[]> = new EventEmitter<Descendant[]>();\n\n @Output() theOnDOMEvent: EventEmitter<{ nativeEvent: Event; data?: DomEventDataInfo }> = new EventEmitter();\n\n @Output() theEditorCreated: EventEmitter<Editor> = new EventEmitter();\n\n @ViewChild('templateInstance', { static: true })\n templateInstance: TheTemplateComponent;\n\n @ViewChild('globalToolbar')\n globalToolbarInstance: TheToolbarComponent;\n\n @ViewChild('quickInsert')\n quickInsertInstance: TheQuickInsertComponent;\n\n @ViewChild('placeholder')\n placeholderInstance: ThePlaceholderComponent;\n\n _plugins: ThePlugin[] = [];\n\n toolbarEntity: ToolbarEntity;\n\n editor: TheEditor;\n\n editorValue: Descendant[];\n\n decorate: (nodeEntry: NodeEntry) => Range[];\n\n get theGlobalToolbarInstance(): TheToolbarComponent {\n return this.theGlobalToolbar ? this.theGlobalToolbar : this.globalToolbarInstance;\n }\n\n get maxHeight() {\n return this.theOptions?.maxHeight ? `${this.theOptions?.maxHeight}px` : null;\n }\n\n get quickToolbarItems() {\n return this.toolbarEntity?.quick;\n }\n\n autoScrollView = _.debounce(function (editor: Editor, scrollContainer: string) {\n return autoScrollViewHandle(editor, scrollContainer);\n }, 80);\n\n elementToHtml: WeakMap<Element, string> = new WeakMap();\n\n private onChangeCallback: (_: any) => void = () => {};\n\n private onTouchedCallback: () => void = () => {};\n\n constructor(\n private toolbarService: TheToolbarService,\n private theContextService: TheContextService,\n private viewContainerRef: ViewContainerRef,\n private elementRef: ElementRef,\n private ngZone: NgZone\n ) {\n super();\n }\n\n ngOnInit() {\n this.initialize();\n this.onErrorHandler();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const options = changes.theOptions;\n\n if (options) {\n this.initializeOptions();\n }\n if (changes['theDecorate']) {\n this.generateDecorate();\n }\n if (this.editor?.selection && (options?.currentValue?.readonly || options?.currentValue?.disabled)) {\n Transforms.deselect(this.editor);\n }\n }\n\n ngOnDestroy() {\n super.ngOnDestroy();\n }\n\n initialize() {\n this.editor = withTheEditor<TheEditor>(this.thePlugins, withHistory(withAngular(createEditor(), CLIPBOARD_FORMAT_KEY)));\n this.generateDecorate();\n this.editor.disabled = this.theOptions?.disabled;\n this.editor.extraElementOptions = this.theOptions?.extraElementOptions;\n setEditorUUID(this.editor, idCreator());\n this.theContextService.initialize({ nativeElement: this.elementRef.nativeElement, viewContainerRef: this.viewContainerRef });\n this.toolbarCalculate();\n setTimeout(() => {\n this.theEditorCreated.emit(this.editor);\n this.applyAutoFocus();\n });\n }\n\n initializeOptions() {\n if (!this.theOptions) {\n this.theOptions = {\n readonly: false,\n mode: TheDataMode.html\n };\n }\n if (!this.theOptions.mode) {\n this.theOptions = {\n ...this.theOptions,\n mode: TheDataMode.html\n };\n }\n }\n\n applyAutoFocus() {\n if (this.theOptions?.autoFocus && !this.theOptions?.readonly && !this.theOptions?.disabled) {\n autoFocus(this.editor, this.theOptions?.autoFocus);\n }\n }\n\n toolbarCalculate() {\n const toolbar = this?.theOptions?.toolbar;\n const toolbarItems = toolbarCompose(toolbar?.toolbarItems);\n const toolbarOption = this.toolbarService.initialize(toolbarItems, toolbar?.global, toolbar?.inline, toolbar?.quick);\n this.toolbarEntity = toolbarOption.toolbarEntity;\n\n if (this.theGlobalToolbar) {\n this.theGlobalToolbarInstance.editor = this.editor;\n this.theGlobalToolbarInstance.toolbarItems = toolbarOption.toolbarEntity.global;\n this.theGlobalToolbarInstance.align = toolbar?.align;\n this.theGlobalToolbarInstance.setToolbarClass();\n this.theGlobalToolbarInstance.renderToolbarView();\n }\n }\n\n writeValue(value: string | Descendant[]) {\n const data = dataDeserialize(this.theOptions?.mode, value);\n // data-deserialize\n this.editorValue = data;\n }\n\n registerOnChange(fn: any) {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouchedCallback = fn;\n }\n\n valueChange(value: Descendant[]) {\n this.theGlobalToolbarInstance?.statusChange(this.editor);\n this.quickInsertInstance.checkStatus();\n this.placeholderInstance.checkStatus();\n // auto scroll view\n const scrollContainer = this.theOptions?.scrollContainer;\n const maxHeight = this.theOptions?.maxHeight;\n if (!this.theOptions?.readonly && (scrollContainer || maxHeight)) {\n const container = maxHeight ? DEFAULT_SCROLL_CONTAINER : scrollContainer;\n this.autoScrollView(this.editor, container);\n }\n\n if (this.editorValue === value) {\n return;\n }\n this.editorValue = value;\n\n // serializing\n let newValue = this.serializingValue(value);\n this.onChangeCallback(newValue);\n }\n\n serializingValue(value: Descendant[]): string | Descendant[] {\n if (this.theOptions?.mode === TheDataMode.html) {\n let htmlValue = '';\n value.forEach((element: Element) => {\n let elementHtml = this.elementToHtml.get(element);\n if (elementHtml === undefined) {\n // serializing\n elementHtml = dataSerializing(this.theOptions?.mode, [element]) as string;\n htmlValue += elementHtml;\n this.elementToHtml.set(element, elementHtml);\n return;\n }\n htmlValue += elementHtml;\n });\n return htmlValue;\n }\n return value;\n }\n\n onErrorHandler() {\n this.editor.onError = (errorData: SlateError) => {\n if (this.theOnError) {\n this.theOnError(errorData);\n return;\n }\n if (errorData.nativeError) {\n console.error(errorData.nativeError);\n }\n };\n }\n\n renderElement = (element: Element) => {\n const template = this.templateInstance.renderElement(element);\n const component = this.editor.renderElement(element);\n return component ? component : template;\n };\n\n renderLeaf = (text: Text) => {\n const leaf = this.editor.renderLeaf(text);\n return leaf ? leaf : null;\n };\n\n renderText = (text: Text) => {\n if (text.text.length === 0) {\n return;\n }\n for (const key in MarkTypes) {\n if (text[MarkTypes[key]]) {\n return TheTextComponent;\n }\n }\n };\n\n generateDecorate() {\n this.decorate = (nodeEntry: NodeEntry) => {\n const decorations = [];\n\n if (this.theDecorate) {\n decorations.push(...this.theDecorate(this.editor, nodeEntry));\n }\n\n return decorations;\n };\n }\n\n onKeyDown = (event: KeyboardEvent) => {\n shortcuts(this.editor, event);\n this.theOnDOMEvent.emit({\n nativeEvent: event,\n data: {\n key: event.key\n }\n });\n if (isHotkey('mod+s', event)) {\n this.ngZone.run(() => {\n this.theOnSave.emit(this.editorValue);\n });\n event.preventDefault();\n return;\n }\n if (isHotkey('mod+a', event)) {\n this.handleSelectAll();\n }\n AngularEditor.onKeydown(this.editor, event);\n };\n\n mousedown(event: MouseEvent) {\n const editableElement = AngularEditor.toDOMNode(this.editor, this.editor);\n if (event.target === editableElement) {\n const rectEditable = editableElement.getBoundingClientRect();\n const centerX = rectEditable.x + rectEditable.width / 2;\n const relativeElement = document.elementFromPoint(centerX, event.y);\n const relativeBlockCardElement: DOMElement = relativeElement.closest('.slate-block-card');\n if (relativeBlockCardElement) {\n const blockCardEntry = AngularEditor.toSlateCardEntry(this.editor, relativeBlockCardElement.firstElementChild);\n if (blockCardEntry && blockCardEntry[1]) {\n const rootNodePath = blockCardEntry[1].slice(0, 1);\n const rootNode = TheQueries.getNode(this.editor, rootNodePath);\n if (this.editor.isBlockCard(rootNode)) {\n event.preventDefault();\n AngularEditor.moveBlockCard(this.editor, rootNode, { direction: event.x < centerX ? 'left' : 'right' });\n }\n }\n }\n }\n }\n\n handleSelectAll() {\n let node;\n if (!this.editor.selection) {\n TheTransforms.setEndSelection(this.editor);\n }\n const [start, end] = Range.edges(this.editor.selection);\n const selectionRange = Editor.range(this.editor, start, end);\n const containerBlocks = TheQueries.getContainerBlocks(this.editor);\n for (let i = 0; i < containerBlocks.length; i++) {\n [node] = TheQueries.getNodesByType(this.editor, containerBlocks[i]);\n if (node) {\n const [, path] = node;\n const isStartParent = Path.equals(path, start.path.slice(0, path.length));\n const isEndParent = Path.equals(path, end.path.slice(0, path.length));\n if (isStartParent && isEndParent) {\n const nodeRange = Editor.range(this.editor, path);\n if (!Range.equals(nodeRange, selectionRange)) {\n Transforms.select(this.editor, nodeRange);\n break;\n }\n node = null;\n }\n }\n }\n if (!node) {\n Transforms.select(this.editor, []);\n }\n event.preventDefault();\n return;\n }\n\n onClick = (event: MouseEvent) => {\n AngularEditor.onClick(this.editor, event);\n this.theOnDOMEvent.emit({\n nativeEvent: event\n });\n };\n\n onSlaPaste = (event: ClipboardEvent) => {\n this.theOnDOMEvent.emit({\n data: {\n ...this.getTextAndJSON(event.clipboardData)\n },\n nativeEvent: event\n });\n };\n\n onSlaBeforeInput = (\n event: Event & {\n inputType: string;\n data: string | null;\n dataTransfer: DataTransfer | null;\n }\n ) => {\n let data = {\n inputType: event.inputType,\n text: (event.data || event.dataTransfer) as string\n };\n if (event.inputType === 'insertFromPaste') {\n data = {\n ...data,\n ...this.getTextAndJSON((event.data || event.dataTransfer) as DataTransfer)\n };\n }\n this.theOnDOMEvent.emit({\n data,\n nativeEvent: event\n });\n };\n\n onSlaBlur = (event: FocusEvent) => {\n this.theOnDOMEvent.emit({\n nativeEvent: event\n });\n };\n\n onSlaFocus = (event: Event) => {\n this.theOnDOMEvent.emit({\n nativeEvent: event\n });\n };\n\n onSlaCut = (event: ClipboardEvent) => {\n this.theOnDOMEvent.emit({\n nativeEvent: event\n });\n };\n\n onSlaCopy = (event: ClipboardEvent) => {};\n\n onSlaCompositionStart = (event: CompositionEvent) => {};\n\n onSlaCompositionEnd = (event: CompositionEvent) => {};\n\n onSlaDragStart = (event: DragEvent) => {};\n\n onSlaDragOver = (event: DragEvent) => {};\n\n getTextAndJSON(data: DataTransfer) {\n const fragment = data.getData(`application/${CLIPBOARD_FORMAT_KEY}`);\n let json = [];\n if (fragment) {\n json = JSON.parse(decodeURIComponent(window.atob(fragment)));\n }\n const text = data.getData('text/plain');\n return {\n json,\n text\n };\n }\n}\n","<the-toolbar\n *ngIf=\"!theOptions?.readonly && !theGlobalToolbar\"\n class=\"the-global-toolbar\"\n [ngClass]=\"{\n 'the-toolbar-disabled': theOptions?.disabled\n }\"\n #globalToolbar\n [editor]=\"editor\"\n [toolbarItems]=\"toolbarEntity.global\"\n [align]=\"theOptions?.toolbar?.align\"\n></the-toolbar>\n\n<div\n class=\"the-editable-container\"\n [ngClass]=\"{\n 'the-editor-disabled': theOptions?.disabled,\n 'max-height': maxHeight\n }\"\n [ngStyle]=\"{ 'max-height': maxHeight }\"\n>\n <slate-editable\n class=\"the-editor-typo\"\n [editor]=\"editor\"\n [ngModel]=\"editorValue\"\n (ngModelChange)=\"valueChange($event)\"\n [decorate]=\"decorate\"\n [renderElement]=\"renderElement\"\n [renderText]=\"renderText\"\n [renderLeaf]=\"renderLeaf\"\n [readonly]=\"theOptions?.readonly || theOptions?.disabled\"\n [keydown]=\"onKeyDown\"\n [click]=\"onClick\"\n [paste]=\"onSlaPaste\"\n [beforeInput]=\"onSlaBeforeInput\"\n [blur]=\"onSlaBlur\"\n [focus]=\"onSlaFocus\"\n [copy]=\"onSlaCopy\"\n [cut]=\"onSlaCut\"\n [isStrictDecorate]=\"false\"\n [compositionStart]=\"onSlaCompositionStart\"\n [compositionEnd]=\"onSlaCompositionEnd\"\n [dragStart]=\"onSlaDragStart\"\n [dragOver]=\"onSlaDragOver\"\n (mousedown)=\"mousedown($event)\"\n ></slate-editable>\n <the-inline-toolbar *ngIf=\"!theOptions.readonly\" [editor]=\"editor\" [toolbarItems]=\"toolbarEntity.inline\"></the-inline-toolbar>\n <div #quickInsert theQuickInsert [editor]=\"editor\" [quickToolbarItems]=\"quickToolbarItems\"></div>\n <div #placeholder thePlaceholder [editor]=\"editor\" [options]=\"theOptions\"></div>\n <the-template #templateInstance></the-template>\n</div>\n","import { NgModule } from '@angular/core';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { TheColumnResizeOverlayHandleComponent } from './overlay-handle.component';\nimport { TheColumnResizeDirective } from './column-resize.directive';\n\nconst ENTRY_COMMON_COMPONENTS = [TheColumnResizeOverlayHandleComponent];\nconst DIRECTIVES = [TheColumnResizeDirective];\n\n@NgModule({\n declarations: ENTRY_COMMON_COMPONENTS,\n exports: ENTRY_COMMON_COMPONENTS,\n entryComponents: ENTRY_COMMON_COMPONENTS\n})\nexport class TheColumnResizeCommonModule {}\n\n@NgModule({\n imports: [OverlayModule, TheColumnResizeCommonModule],\n declarations: DIRECTIVES,\n exports: DIRECTIVES\n})\nexport class TheColumnSizeModule {}\n","import { Component, OnInit, ElementRef, Input, ViewChild, TemplateRef, ViewContainerRef, OnDestroy, HostListener } from '@angular/core';\nimport { ThyPopover, ThyPopoverRef } from 'ngx-tethys/popover';\nimport { Editor } from 'slate';\nimport { DefaultToolbarItem } from '../../interfaces';\n\n@Component({\n selector: 'the-toolbar-group',\n templateUrl: './toolbar-group.component.html',\n host: {\n class: 'the-toolbar-group'\n }\n})\nexport class TheToolbarGroupComponent implements OnInit, OnDestroy {\n private _item: DefaultToolbarItem;\n\n @Input() menus: DefaultToolbarItem[];\n\n @Input()\n set item(i: DefaultToolbarItem) {\n this._item = i;\n this.activeMenu = i;\n }\n\n get item() {\n return this._item;\n }\n\n get isOpened() {\n return this.groupPopoverRef && this.groupPopoverRef.getOverlayRef() && this.groupPopoverRef.getOverlayRef().hasAttached();\n }\n\n editor: Editor;\n active = false;\n activeMenu: DefaultToolbarItem;\n groupPopoverRef: ThyPopoverRef<any>;\n\n @ViewChild('groupTemplate', { read: TemplateRef, static: true })\n groupTemplate: TemplateRef<any>;\n\n @HostListener('mousedown', ['$event'])\n mousedownHandler(event) {\n event.preventDefault();\n this.toggleGroupMenus(event);\n }\n\n @HostListener('click', ['$event'])\n clickHandle(event) {\n event.stopPropagation();\n }\n\n constructor(public elementRef: ElementRef, private thyPopover: ThyPopover, private viewContainerRef: ViewContainerRef) {}\n\n ngOnInit() {}\n\n ngOnDestroy(): void {\n this.colseGroup();\n }\n\n toggleGroupMenus(event: MouseEvent) {\n if (this.editor?.disabled) {\n return;\n }\n if (this.isOpened) {\n this.colseGroup();\n } else {\n this.openGroup(event);\n }\n }\n\n public statusChange(editor: Editor) {\n const activeItem = this.menusActive(editor);\n this.activeMenu = activeItem ? activeItem : null;\n this.activeChange();\n this.colseGroup();\n }\n\n menusActive(editor: Editor) {\n return this.menus.find(i => {\n if (this.editor?.selection && i?.active) {\n return i?.active(editor);\n }\n });\n }\n\n activeChange() {\n const activeItem = this.menusActive(this.editor);\n if (this.isOpened && !activeItem) {\n this.active = false;\n return;\n }\n this.active = activeItem ? true : false;\n }\n\n openGroup(event: MouseEvent) {\n this.active = true;\n this.groupPopoverRef = this.thyPopover.open(this.groupTemplate, {\n panelClass: 'the-toolbar-group-container',\n offset: 10,\n placement: 'bottomRight',\n origin: event.currentTarget as HTMLElement,\n viewContainerRef: this.viewContainerRef,\n hasBackdrop: false,\n outsideClosable: true\n });\n this.groupPopoverRef.afterClosed().subscribe(() => {\n this.activeChange();\n });\n }\n\n colseGroup() {\n if (this.isOpened) {\n this.groupPopoverRef.close();\n }\n }\n}\n","<a thyIconNavLink [thyIconNavLinkIcon]=\"item.icon\" [thyTooltip]=\"item?.name\" thyTooltipPlacement=\"top\" [thyIconNavLinkActive]=\"active\"></a>\n\n<ng-template #groupTemplate>\n <the-toolbar class=\"group\" [editor]=\"editor\" [toolbarItems]=\"menus\" [isMore]=\"false\"></the-toolbar>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { SlateModule } from 'slate-angular';\nimport { TheTextComponent } from './components/text/text.component';\nimport { TheDefaultElementComponent } from './components/element/element.component';\nimport { TheEditorComponent } from './editor.component';\nimport { TheImageComponent } from './plugins/image/image.component';\nimport { TheToolbarComponent } from './components/toolbar/toolbar.component';\nimport { TheToolbarDropdownComponent } from './components/toolbar-dropdown/toolbar-dropdown.component';\nimport { TheToolbarItemComponent } from './components/toolbar-item/toolbar-item.component';\nimport { NavSplitLineComponent } from './components/nav-split-line/nav-split-line.component';\nimport { TheTemplateComponent } from './components/template/template.component';\nimport { TheHrComponent } from './plugins/hr/hr.component';\nimport { TheBlockquoteComponent } from './plugins/blockquote/blockquote.component';\nimport { TheTodoItemComponent } from './plugins/todo-item/todo-item.component';\nimport { TheListItemComponent } from './plugins/list/components/list-item.component';\nimport { TheBulletedListComponent } from './plugins/list/components/bulleted-list.component';\nimport { TheNumberedListComponent } from './plugins/list/components/numbered-list.component';\nimport { ElementStylePipe, ElementClassPipe } from './pipes';\n\nimport { ThyNavModule } from 'ngx-tethys/nav';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyProgressModule } from 'ngx-tethys/progress';\nimport { ThyFormModule } from 'ngx-tethys/form';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\nimport { ThyAutocompleteModule } from 'ngx-tethys/autocomplete';\nimport { ThyAvatarModule } from 'ngx-tethys/avatar';\nimport { ThySharedModule } from 'ngx-tethys/shared';\nimport { ThyListModule } from 'ngx-tethys/list';\nimport { ThyActionMenuModule } from 'ngx-tethys/action-menu';\nimport { ThyInputModule } from 'ngx-tethys/input';\nimport { ThySelectModule } from 'ngx-tethys/select';\nimport { ThyButtonModule } from 'ngx-tethys/button';\nimport { ThyNotifyModule } from 'ngx-tethys/notify';\nimport { ThyAlertModule } from 'ngx-tethys/alert';\nimport { TheColorSelectComponent } from './components/color-select/color-select.component';\nimport { TheColorToolbarItemComponent } from './plugins/color/toolbar-item.component';\nimport { TheCodeComponent } from './plugins/code/code.component';\nimport { CodemirrorModule } from 'ng-codemirror';\nimport { TheLinkComponent, TheReadonlyLinkComponent } from './plugins/link/link.component';\nimport { TheLinkEditComponent } from './plugins/link/edit/link-edit.component';\nimport { TheLinkHoverComponent } from './plugins/link/hover/link-hover.component';\nimport { TheTableToolbarComponent } from './plugins/table/components/toolbar/table-toolbar.component';\nimport { TheTableComponent } from './plugins/table/components/table.component';\nimport { TheTableRowComponent } from './plugins/table/components/row/row.component';\nimport { TheTdComponent } from './plugins/table/components/td/td.component';\nimport { TheContextMenuComponent } from './components/contextmenu/contextmenu.component';\nimport { TheColumnSizeModule } from './components/column-resize/column-resize.module';\nimport { TheInsertMarkComponent } from './plugins/table/components/insert-mark/insert-mark.component';\nimport { TheToolbarGroupComponent } from './components/toolbar-group/toolbar-group.component';\nimport { TheToolbarGroupToken } from './constants/toolbar';\nimport { TheTableSelectComponent } from './components/table-select/table-select.component';\nimport { TheTableToolbarItemComponent } from './plugins/table/toolbar-item.component';\nimport { TheConversionHintComponent } from './components/conversion-hint/conversion-hint.component';\nimport { TheVerticalToolbarItemComponent } from './plugins/vertical-align/toolbar-item.component';\nimport { THE_CODE_MODE_PROVIDER } from './constants';\nimport { TheInlineToolbarComponent } from './components/inline-toolbar/inline-toolbar.component';\nimport { TheQuickToolbarComponent } from './plugins/quick-insert/components/quick-toolbar/quick-toolbar.component';\nimport { TheQuickInsertComponent } from './plugins/quick-insert/components/quick-insert.component';\nimport { ThePlaceholderComponent } from './plugins/placeholder/placeholder.component';\n\nconst TETHYS = [\n ThyIconModule,\n ThyAvatarModule,\n ThyNavModule,\n ThyFormModule,\n ThySharedModule,\n ThyListModule,\n ThyTooltipModule,\n ThyProgressModule,\n ThyAutocompleteModule,\n ThyActionMenuModule,\n ThyInputModule,\n ThySelectModule,\n ThyButtonModule,\n ThyNotifyModule,\n ThyAlertModule\n];\n\nexport const COMPONENTS = [\n TheToolbarComponent,\n TheToolbarDropdownComponent,\n TheToolbarGroupComponent,\n TheToolbarItemComponent,\n TheInlineToolbarComponent,\n NavSplitLineComponent,\n TheTextComponent,\n TheDefaultElementComponent,\n TheQuickInsertComponent,\n TheQuickToolbarComponent,\n TheColorSelectComponent,\n TheColorToolbarItemComponent,\n TheContextMenuComponent,\n TheInsertMarkComponent,\n TheTableSelectComponent,\n TheTableToolbarItemComponent,\n TheConversionHintComponent,\n TheVerticalToolbarItemComponent\n];\n\nexport const PLUGIN_COMPONENTS = [\n TheImageComponent,\n TheTemplateComponent,\n TheHrComponent,\n TheBlockquoteComponent,\n TheTodoItemComponent,\n TheListItemComponent,\n TheBulletedListComponent,\n TheNumberedListComponent,\n TheCodeComponent,\n TheLinkComponent,\n TheReadonlyLinkComponent,\n TheLinkEditComponent,\n TheLinkHoverComponent,\n TheTableToolbarComponent,\n TheTableComponent,\n TheTableRowComponent,\n TheTdComponent,\n ThePlaceholderComponent\n];\n\nconst PIPES = [ElementStylePipe, ElementClassPipe];\n\n@NgModule({\n declarations: [TheEditorComponent, ...PIPES, ...COMPONENTS, ...PLUGIN_COMPONENTS],\n imports: [CommonModule, SlateModule, FormsModule, ...TETHYS, CodemirrorModule, TheColumnSizeModule],\n exports: [TheEditorComponent, TheToolbarComponent, TheToolbarDropdownComponent, TheToolbarItemComponent, TheDefaultElementComponent],\n entryComponents: [...COMPONENTS, ...PLUGIN_COMPONENTS],\n providers: [\n {\n provide: TheToolbarGroupToken,\n useValue: TheToolbarGroupComponent\n },\n THE_CODE_MODE_PROVIDER\n ]\n})\nexport class TheEditorModule {}\n","/*\n * Public API Surface of editor\n */\nexport * from './editor.module';\nexport * from './interfaces';\nexport * from './constants';\nexport * from './plugins';\nexport * from './plugins/public-api';\nexport * from './custom-types';\nexport * from './plugins/image/image.component';\nexport * from './services/toolbar.service';\nexport * from './editor.component';\nexport * from './components/toolbar/toolbar.component';\nexport * from './components/toolbar-base-item/toolbar-base-item.component';\nexport * from './components/toolbar-dropdown/toolbar-dropdown.component';\nexport * from './components/toolbar-group/toolbar-group.component';\nexport * from './components/toolbar-item/toolbar-item.component';\nexport * from './components/element/element.component';\nexport * as TheQueries from './queries/index';\nexport * as TheTransforms from './transforms/index';\nexport * from './utils/index';\nexport * from './services/context.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["TheMode","ElementKinds","Alignment","VerticalAlignment","MarkTypes","ToolbarActionTypes","InjectionToken","DropdownMode","ToolbarItemMode","ErrorCodes","BaseTextComponent","Component","BaseElementComponent","ChangeDetectionStrategy","AngularEditor","TheDataMode","ToolbarItemType","ToolbarAlignment","Element","Editor","getLastChild","Range","Node","NODE_TO_PARENT","NODE_TO_INDEX","Span","Path","Text","_lodash","Point","Transforms","TheQueries.anchorBlockEntry","TheQueries.isEmptyParagraph","TheQueries.findPath","isHotkey","TheQueries.isNodeTypeIn","TheQueries.getNode","TheQueries.isNodeType","TheQueries.isAncestor","TheQueries.getAboveByType","TheQueries.getNodesByType","isEmptyParagraph","TheQueries.anchorBlock","TheTransforms.unwrapNodesByType","TheQueries.isParagraph","TheQueries.isBlockActive","TheTransforms.closeConversionHint","Input","HostListener","TheiaConverter","ThyPopover","ViewContainerRef","ChangeDetectorRef","Overlay","marked","TheTransforms.insertTheElements","TheQueries.isAcrossBlocks","TheTransforms.splitNode","anchorBlock","anchorBlockEntry","TheQueries.isAncestorEmpty","HistoryEditor","IS_SAFARI","hotkeys","fromEvent","Injectable","map","ThyUploadStatus","Inject","ViewChild","TheQueries.isCollapsed","TheQueries.getParent","TheQueries.isStart","TheQueries.isRangeAtRoot","TheQueries.isBlockTextEmptyAfterSelection","TheQueries.getLastChildPath","TheTransforms.moveChildren","TheQueries.findDescendant","TheQueries.isFirstChild","Pipe","HostBinding","TheQueries.isBlockAboveEmpty","TheTransforms.onKeyDownResetBlockType","getPlainText","TheQueries.getPreviousPath","TheTransforms.setNode","TheQueries.getAnchorBlockEntry","TheQueries.isDescendant","TheTransforms.mergeDeepToNodes","TheQueries.getPointBefore","TheQueries.getText","TheQueries.getRangeFromBlockStart","TheQueries.someNode","TheQueries.getRangeBefore","TheQueries.getBlockAbove","TheQueries.getLastNode","hasBlockCard","isCardLeft","TheTransforms.insertParagraph","TheQueries.isEmptyParagraphByPath","TheQueries.getBlockCardAbove","FAKE_RIGHT_BLOCK_CARD_OFFSET","timer","TheQueries.getContainerBlocks","TheQueries.getSelectionNodesByType","TableOptions","TheTransforms.insertElement","ELEMENT_TO_COMPONENT","TheTransforms.setMarks","TheTransforms.handleContinualDeleteBackward","TheTransforms.handleContinualInsertBreak","Directive","TheQueries.getAbove","take","delay","TheTransforms.deleteElement","CodeMirrorComponent","SlateNode","isUrl","Subject","combineLatest","startWith","distinctUntilChanged","skip","share","Observable","BehaviorSubject","merge","filter","ReplaySubject","throttleTime","takeUntil","mapTo","debounceTime","index","ElementRef","coerceCssPixelValue","pairwise","DOCUMENT","PortalInjector","ComponentPortal","TemplateRef","TheQueries.getSelectionMarks","EDITOR_TO_ELEMENT","isComponentType","mixinUnsubscribe","MixinBase","TheTransforms.insertElementNext","slateRange","TheQueries.isEmptyContent","EventEmitter","withHistory","withAngular","createEditor","TheTransforms.setEndSelection","NG_VALUE_ACCESSOR","forwardRef","Output","NgModule","OverlayModule","ThyIconModule","ThyAvatarModule","ThyNavModule","ThyFormModule","ThySharedModule","ThyListModule","ThyTooltipModule","ThyProgressModule","ThyAutocompleteModule","ThyActionMenuModule","ThyInputModule","ThySelectModule","ThyButtonModule","ThyNotifyModule","ThyAlertModule","CommonModule","SlateModule","FormsModule","CodemirrorModule"],"mappings":"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"}
|